/**
 * Funkce pro otevirani novych oken
 * @author Petr Sobotka
 */
function otevriOkno(url, jmeno, w, h) {  
    popupWin = window.open(url, jmeno, 'resizable=1,top=50,left=50,menubar=0,scrollbars=yes,width=' + w + ',height=' + h);
}

/**
 * Function which replaces all boxes of class EMAIL with 
 * a MAILTO link
 * 
 * @author Vlada Kobetic
 * @see Prototype Framework for dependencies
 */
function processEmailAddresses() {
	var spans = $$(".email");
	var	pattern = /(.+)\(zavinac\)(.+)\(tecka\)(.+)/;
	spans.each(function(elem) {
		elem.replace(elem.innerHTML.gsub(pattern,function(match) {
			var email = match[1]+'@'+match[2]+'.'+match[3];
			return '<a href="mailto:'+email+'">'+email+'</a>';
		}));
	});
}


/**
 * Function which adds special functionality to links with Help topics
 * 
 * @author Vlada Kobetic
 * @see Prototype Framework
 */
function assignHelp(className,urlParam) {
	$$("." + className).each(function(link) {
		Event.observe(link, 'click', function(event) {
			Event.stop(event);
			otevriOkno(link.href+urlParam, '_blank',450,350);
		});
	});
}


/**
 * Funkce, ktera zobrazi overlay pro prekryvne hlasky. Pripravi tak potemnele pozdai, ale 
 * nezobrazuje konkretni hlasku. Tuto fci vyuzivaji konkretni funkce zobrazujici konkretni hlasky.
 * @return
 */
function showOverlay()
{
	$('overlay').setStyle({
		  display: 'block'
		});
	$('overlay-content').setStyle({
		  display: 'block'
		});
}

/**
 * Funkce, ktera odstrani overlay pro prekryvne hlasky. Zrusi tak potemnele pozdai, ale 
 * nezrusi konkretni hlasku. Tuto fci vyuzivaji konkretni funkce skryvajici konkretni hlasky.
 * @return
 */
function hideOverlay()
{
	$('overlay').setStyle({
		  display: 'none'
		});
	$('overlay-content').setStyle({
		  display: 'none'
		});
}


/**
 * Funkce zobrazi prekryvnou hlasku pro opousteni serveru pomoci tabu CK/CV.  
 * @return
 */
function showLeavingWarning() 
{
	showOverlay();
	$('warning-on-leave').setStyle({
		  display: 'block'
		});
}

/**
 * Funkce skryje prekryvnou hlasku pro opousteni serveru pomoci tabu CK/CV.  
 * @return
 */
function hideLeavingWarning() 
{
	hideOverlay();
	$('warning-on-leave').setStyle({
		  display: 'none'
		});
}

/**
 * Funkce zobrazi prekryvnou hlasku pro vkladani zbozi do kosiku.  
 * @return
 */
function showAddedToCartOverlay() 
{
	showOverlay();
	$('choice-on-addtocart').setStyle({
		  display: 'block'
		});
}

/**
 * Funkce skryje prekryvnou hlasku pro pro vkladani zbozi do kosiku.  
 * @return
 */
function hideAddedToCartOverlay() 
{
	hideOverlay();
	$('choice-on-addtocart').setStyle({
		  display: 'none'
		});
}


/**
 * Prida zbozi do kosiku pomoci ajaxoveho callu
 * @return
 */
function ajaxAddToCart(form)
{
	new Ajax.Request('/kosik-ajax', {
		  parameters: $(form).serialize(true),
		  onSuccess:function() {
				updateCartOverview();
				showAddedToCartOverlay();
		  }
	});
}


/**
 * Prida zbozi do kosiku pomoci ajaxoveho callu
 * @return
 */
function ajaxAddToCartFromCategory(productId)
{
	new Ajax.Request('/kosik-ajax', {
		  parameters: {zbozi: productId, action: 'insert'},
		  onSuccess:function() {
				updateCartOverview();
				showAddedToCartOverlay();
		  }
	});
}

/**
 * Prida zbozi do kosiku pomoci ajaxoveho callu
 * @return
 */
function ajaxAddToCartWithMassage()
{
	new Ajax.Request('/kosik-ajax', {
		  parameters: $('add-to-cart-massage-form').serialize(true),
		  onSuccess:function() {
				updateCartOverview();
				showAddedToCartOverlay();
		  }
	});
}

function updateCartOverview()
{
	new Ajax.Updater( $('kosik'), '/kosik-ajax', {
		asynchronous:true,
		  method: 'post',
		  parameters: {action: 'view'}
	});
}

function submitProductFilter( form )
{
	var myForm = $(form);
	var selects = myForm.getElements();
	selects.each(function(select){
		if(select.tagName == 'SELECT' && select.getValue() == '')
		{
			select.disable();
		}
	});
	myForm.submit();
}