function winW(){if(window.innerWidth)return window.innerWidth;else return document.body.clientWidth;}
function winH(){if(window.innerHeight)return window.innerHeight;else return document.body.clientHeight;}

function getScrollXY() {
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement &&
	( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return [ scrOfX, scrOfY ];
}

function closePopup() {
	var popup = $('ajax-popup');
	if (popup) {
		popup.remove();
	}
	return false;
}

function getData(url, section) {
	closePopup();
	
	var rozmery = getScrollXY();

	var popup = document.createElement('DIV');
	popup.id = 'ajax-popup';
	Element.setStyle(popup, {
		'position': "absolute",
		'left'    : Math.floor( ((winW() - 300) / 2) + rozmery[0]) + "px",
		'top'     : Math.floor( ((winH() - 20) / 2) + rozmery[1]) + "px",
		'width'   : "300px",
		'height'  : "4em"
	});
	new Insertion.Bottom(popup, '<div id="ajax-preloader">chvilku strpeni...</div>');
	document.body.appendChild(popup);

	var ajax = new Ajax.Request(
		url,
		{
			method: 'get',
			onComplete: function(transport) {

				var response = transport.responseText.strip();
				response = response.split('\r\n').join(' ');
				try {
					var data = response.evalJSON();
					var rozmery = getScrollXY();

					var popup = $('ajax-popup');
					Element.setStyle(popup, {
						'left'  : Math.floor( ((winW() - 300) / 2) + rozmery[0]) + "px",
						'top'   : Math.floor( ((winH() - 250) / 2) + rozmery[1]) + "px",
						'width' : "300px",
						'height': "auto"
					});
					
					popup.childElements().each(function(elm) {elm.remove()});
					new Insertion.Bottom(popup, data.popup);
					
					if (data.info) {
						var info = $(section + '-info');
						if(info){
							info.childElements().each(function(elm) {elm.remove()});
							new Insertion.Bottom(info, data.info);
							new Effect.Highlight(info, {duration: 0.5});
						}
					} else {
						initValidation();
					}
					
				} catch (e) {
					alert(e);
					if (e != 'TypeError: info is null') {
						closePopup();
						if (console) {
							console.log(e);
						} else {
							alert(e);
						}
					}
				}
			},
			onFailure: function() {
				closePopup();
				alert('Error: problem with AJAX request: ' + section + 'AJAXupdate');
			},
			requestHeaders: ['cache-control', 'no-cache', 'pragma', 'no-cache']
		}
	);
	return false;	
}

function addToCart(url) {
	return getData(url, 'cart');
}
function addToWishlist(url) {
	return getData(url, 'wishlist');
}
function editNotifications(url) {
	return getData(url, 'notification');
}
function informFriend(url) {
	return getData(url, 'send2Friend');
}
function send2Friend(e) {
	Event.stop(e);
	var form = Event.element(e);
	var url = form.action + '?' + form.serialize();
	return getData(url, 'send2Friend');
}