/**
 * All rights reserved
 * 
 * @author Kozicki Jakub <kuba.kozicki@gmail.com>
 */

/**
 * Open new window
 * 
 * @param event Click event
 * @return void
 */
function openNewWindow(event) {
	event = Event.extend(event);
	element = event.findElement();
	element = element.nodeName.toLowerCase() != "a" ? element.up("a") : element;
	window.open(element.getAttribute("href"));
	event.stop();
}

/**
 * Write e-mail
 * 
 * @return void
 */
function email(container) {
	var name = 'ofni';
	var domain = 'lp.yalpsinnet';
	name = name.reverse();
	domain = domain.reverse();
	$(container).update('<a href="mailto:' + name + '@' + domain + '">' + name + '@' + domain + '</a>');
}

/**
 * Reverse string
 * 
 * @return String
 */
String.prototype.reverse = function(){
	splitext = this.split("");
	text = splitext.reverse();
	reversed = text.join("");
	return reversed;
};

/**
 * Ajax content
 */
var AjaxContent = Class.create({
	defaultOptions : {
		id : {
			content : "content",
			contendLoading: "contentLoading",
			breadcrump: "breadcrump",
			topMenu: "topMenu"
		},
		pageTitle: " - Szkoła tenisa i obozy tenisowe Tennisplay.pl"
	},
	
	initialize : function() {
		Object.extend(this, arguments[0] || this.defaultOptions);
		Insertion.After($(this.id.content), '<div style="display: none" class="load" id="' + this.id.contendLoading + '"></div>');
		this.addEvents(document);
		
		var url = History.get("url");
		if(typeof url == "string" && url.empty() == false) {
			this.updateContent(url, false);
		}
	},
	
	click: function(event) {
		var anchor = event.element();
		this.updateContent(anchor.getAttribute("href"), true);
		event.stop();
	},
	
	updateContent : function(url, sound) {
		if(sound && soundManager.supported()) {
			var sound = soundManager.getSoundById('ball');
			sound.play({volume: 10});
		}
		
		url = this.getPath(url);
		
		new Ajax.History.Request(url + "?format=json", {
					history : {
		            id    : 'url',
		            state : url,
		            cache : true
		        },
				method: 'get',
				onCreate: function(transport) {
					var content = $(this.id.content);
					var contentLoading = $(this.id.contendLoading);
					
					var max = content.getHeight();
					content.childElements().each(function(child) {
						max = Math.max(max, child.getHeight());
					});
					contentLoading.setStyle({'height' : max + 'px' });
					
					content.hide();
					contentLoading.show();
				}.bind(this),
				onComplete: function(transport) {
					var json = transport.responseText.evalJSON(true);
					
					var content = $(this.id.content);
					var contendLoading = $(this.id.contendLoading);
					var breadcrump = $(this.id.breadcrump);
					var topMenu = $(this.id.topMenu);
					
					History.setTitle(json.title + this.pageTitle);
					content.update(json.content);
					
					$(this.id.contendLoading).hide();
					$(this.id.content).show();
					
					topMenu.update(json.topMenu);
					breadcrump.update(json.breadcrump);
					
					this.addEvents(content);
					this.addEvents(topMenu);
					this.addEvents(breadcrump);
					
					if(typeof json.jsCode != "undefined") {
						eval(json.jsCode);
					};
				}.bind(this)
			}
		);
	},
	
	getPath: function(url) {
		return url.replace("http://" + document.domain, "");
	},
	
	addEvents : function(container) {
		$A(container.getElementsByTagName('a')).map(Element.extend).each(function(anchor) {
			if(anchor.getAttribute('href') != null && !anchor.getAttribute('href').include('jpg') && !anchor.getAttribute('href').include('pdf') && !anchor.getAttribute('href').include('@') && !anchor.getAttribute('href').include('www.idealsoft.pl')) {
				Event.observe(anchor, 'click', this.click.bindAsEventListener(this));
			}
		}.bind(this));
	}
});

/**
 * Logo rotator
 */
var LogoRotator = Class.create(PeriodicalExecuter, {
	initialize: function($super) {
		this.body = Element.extend(document.body);
		this.headerBlank = $$('.header-blank').first();
		this.preload();
		
    	$super(this.changeLogo, 30);
  	},
  	
  	preload: function() {
  		var headers = ['header-blank.jpg', 'header-kid.jpg', 'header-women.jpg'];
  		
  		headers.each(function(header) {
  			var image = new Image();
  			image.src = 'http://' + window.location.hostname + '/images/' + header;
  		});
  	},
  	
  	changeLogo: function(pe) {
  		
  		this.headerBlank.appear();
  		
  		setTimeout(function() {
  			this.changeClassName();
  			this.headerBlank.fade();
  		}.bind(this), 1500);
  	},
  	
  	changeClassName: function() {
  		if(this.body.hasClassName('kid')) {
  			this.body.removeClassName('kid');  			
  		}
  		else {
  			this.body.addClassName('kid');
  		}
  	}
});
