var ajaxWindow          = false;
var ajaxWindowWidth     = '570px';
var ajaxWindowHelpWidth = '750px';

function initAjaxWindow() {
	ajaxWindow = new YAHOO.widget.Panel("wait", {
				width: ajaxWindowWidth,
				fixedcenter: true,
				draggable: true,
				constraintoviewport: true,
				zindex: 12,
				modal: true,
				visible: false,
				iframe: true
			}
	);
	ajaxWindow.setHeader("Nahrávám...");
	ajaxWindow.setBody(''); 
	ajaxWindow.render(document.body); 

	ajaxWindow.start = function(text) {
		if (text) {
			ajaxWindow.setHeader(text);
		} else {
			ajaxWindow.setHeader("Nahrávám...");
		}
		ajaxWindow.setBody('');
		YAHOO.util.Dom.addClass(ajaxWindow.body, 'ajax-loading');
		ajaxWindow.show();
	}

	ajaxWindow.end = function() {
		YAHOO.util.Dom.removeClass(ajaxWindow.body, 'ajax-loading');
	}
}

function ajaxCall(anchor) {
	this.anchor = anchor;
	this.isHelp = YAHOO.util.Dom.hasClass(this.anchor, 'ajax-help');
	this.init();
}

ajaxCall.prototype = {
	init : function() {
		YAHOO.util.Event.on(this.anchor, 'click', this.click, false, this);
	},

	prepare : function() {
		YAHOO.util.Dom.removeClass(ajaxWindow.body, 'ajax-loading');
		if (this.isHelp) {
			ajaxWindow.cfg.setProperty("width", ajaxWindowHelpWidth);
			YAHOO.util.Dom.addClass(ajaxWindow.body, 'ajax-help-body');
		} else {
			ajaxWindow.cfg.setProperty("width", ajaxWindowWidth);
		}
		if (this.anchor.title) {
			ajaxWindow.setHeader(this.anchor.title);
		} else {
			ajaxWindow.setHeader('Výsledek akce');
		}
	},

	failure : function(o) {
		this.prepare();
		ajaxWindow.setBody('<div class="msg warning"><div class="container">Bohužel došlo k neočekávané chybě, úkon nemohl být dokončen: ' + o.statusText + '<\/div><\/div>');		
	},

	success : function(o) {
		this.prepare();
		ajaxWindow.setBody(o.responseText);
		ajaxWindow.center();

		/* execute inline scripts */
		var body = ajaxWindow.body.getElementsByTagName('script'); 
		for(var i = 0; i < body.length; i++) {
			eval(body[i].text);
		}
	},

	click : function(e) {
		hideAllBDContextMenus();
		YAHOO.util.Dom.removeClass(ajaxWindow.body, 'ajax-help-body');
		ajaxWindow.cfg.setProperty("width", ajaxWindowWidth);
		ajaxWindow.setHeader("Nahrávám..."); 
		ajaxWindow.setBody(''); 
		YAHOO.util.Dom.addClass(ajaxWindow.body, 'ajax-loading');
		ajaxWindow.show();
		var callback = {
			success: this.success,
			failure: this.failure,
			scope: this
		}
		var url = this.anchor.href.replace(".html",".ajax");
		var request = YAHOO.util.Connect.asyncRequest('GET', url, callback);
		YAHOO.util.Event.stopEvent(e);
	}
}

function initAjaxCall() {
	var anchors = YAHOO.util.Dom.getElementsByClassName('ajax-call', 'A');
	for (var i = 0; i < anchors.length; i++) {
		var anchor = new ajaxCall(anchors[i]);
	}
}

YAHOO.util.Event.onDOMReady(function() {
	initAjaxWindow();
	initAjaxCall();
});