/* ----------------------------------------------------------------------
	TOOL BOX
---------------------------------------------------------------------- */
function calendarAjax()
{
	var next = document.getElementById("calendar_next");
	var prev = document.getElementById("calendar_prev");
	
	if(!next)
		return;

	next.onclick = getResults;
	prev.onclick = getResults;
}

function setOpacity(el, o)
{
	el.style.opacity = o/100;
	el.style.filter = "alpha(opacity="+o+")";
}

function getResults()
{
	var url  = "/portlets/calendar.xml" + this.search + "&media=ajax";
	var calendar = document.getElementById("calendar");
	
	// ajax object
	var req;
	if(window.XMLHttpRequest)
	{
		req = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	// if browser doesn't support ajax send normal request
	if(!req)
	{
		return true;
	}
	
	var timeout = setTimeout(function() { setOpacity(calendar,80) }, 100 );
	
	req.open("GET", url , true );
	
	// process function
 	req.onreadystatechange=function()
 	{
  		if (req.readyState == 4) 
  		{
  			if(req.status == 200)
  			{
  				clearTimeout(timeout);
				calendar.innerHTML = req.responseText;
				setOpacity(calendar,100);
				calendarAjax();
			}
		}
	}
	
	// send request
	req.send(null);
	
	return false;
}

function tollBoxVisibility()
{
	if(!window.getCookie)
		return;

	if(getCookie("showToolBox")=="none")
	{
		var tollBox = document.getElementById("toolBox");
		if(tollBox)
		{
			tollBox.style.display = "none";
		}
	}
}

function changeToolBoxVisiblity()
{
	var tollBox = document.getElementById("toolBox");
	if(!tollBox)
		return false;
	tollBox.style.display = ( tollBox.style.display == "none" ) ? "block" : "none";
	setCookie("showToolBox", tollBox.style.display, "/");
	
	return false;
}


function Preload()
{
	var imagesArray = new Array();
	var imagesCount = 0;

	this.add = function(imagePath)
	{
		imagesArray[imagesCount] = new Image();
		imagesArray[imagesCount++].src = imagePath;
	}
}

function preloadImages()
{
	var p = new Preload();
	p.add("/images/buttons/start_point_1_o.gif");
	p.add("/images/buttons/start_point_2_o.gif");
	p.add("/images/buttons/start_point_3_o.gif");
	
	for( var i = 0; i < buttonsMenu.length; i++ )
		p.add(buttonsMenu[i]);
}

preloadImages();

/* ----------------------------------------------------------------------
	NL AJAX
---------------------------------------------------------------------- */
function nlAjax(form)
{
	if(!checkNewsletterForm(form))
		return false;
	
	// ajax object
	var req;
	if(window.XMLHttpRequest)
	{
		req = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	// if browser doesn't support ajax send form normally
	if(!req)
	{
		return true;
	}

	// prepare url
	var inputs = form.getElementsByTagName("input");
	var url = "";
	
	for( var i = 0; i < inputs.length; i++ )
	{
		url +=  inputs[i].getAttribute("name") +  "=" + inputs[i].value;
		if( i < inputs.length - 1 )
		{
			url += "&";
		}
	}
	
	req.open("GET", "/nl.xml?media=ajax&" + url , true );
	
	// process function
 	req.onreadystatechange=function()
 	{
  		if (req.readyState == 4)
  		{
  			if(req.status == 200)
  			{
				var result = req.responseXML.getElementsByTagName("result").item(0).firstChild.data;
				if(result.toLowerCase() == "subscriber_exists")
				{
					alert(nlLocale.exists);
				}
				else if(result.toLowerCase() == "subscription_succes" )
				{
					alert(nlLocale.saved);
					form.email.value = "";
					
				}
				else
				{
					alert(nlLocale.error);
				}
			}
		}
	}
	
	// send request
	req.send(null);

	return false;
}

function checkNewsletterForm(form)
{	
	return checkEmail("nl_form_email",nlLocale.correctEmail);
}

function checkContactForm(form)
{
	return checkInput("form_contact_first_name",formLocale.firstName) && 
		checkInput("form_contact_last_name",formLocale.lastName) &&
		checkEmail("form_contact_email",formLocale.email) &&
		checkTextarea("form_contact_message",formLocale.message);
}

function fixClick(label)
{
	label.nextSibling.click();
	return false;
}

/* ----------------------------------------------------------------------
	DEFAULT VALIDATION FORMS
---------------------------------------------------------------------- */
function checkInput(inputId, errorMessage)
{
	var input = document.getElementById(inputId);
	if(!input)
	{
		alert( "Input " + inputId + " not found!");
		return false;
	}

	if( input.value == "" )
    	return focusFailedInput(inputId,errorMessage);
     
    return true;
}

function compareFields(fieldId1, fieldId2, errorMessage)
{
	var field1 = document.getElementById(fieldId1);
	if(!field1)
	{
		alert( "Element " + fieldId1 + " not found!");		
		return false;
	}

	var field2 = document.getElementById(fieldId2);
	if(!field2)
	{
		alert( "Element " + fieldId2 + " not found!");		
		return false;
	}

	if( field1.value != field2.value )
    	return focusFailedInput(fieldId2,errorMessage);
     
    return true;
}

function checkTextarea(inputId, errorMessage)
{
	var input = document.getElementById(inputId);
	if(!input)
	{
		alert( "Textarea " + inputId + " not found!");		
		return false;
	}

	if( input.value.length <= 3 )
    	return focusFailedInput(inputId,errorMessage);
     
    return true;
}

function checkEmail(inputId,errorMessage)
{
	var input = document.getElementById(inputId);
	if(!input)
	{
		alert( "Input " + inputId + " not found!");
		return false;
	}

    if (!isValidEmail(input.value)) 
    {
        focusFailedInput(inputId,errorMessage);
        return false;
    }

    return true;
}

function isValidEmail(email)
{
 	var template = /^[0-9a-z]+[0-9a-z._-]*\@[0-9a-z]+[0-9a-z._-]*\.[0-9a-z]{2,}$/i;
  	if (template.test(email) == false) return false;
	return true;
}

function clearError()
{
	var labels = document.getElementsByTagName("label");
	
	for(var i = 0; i < labels.length; i++ )
	{
		var label = labels[i];
		label.className = label.className.replace("error", "");
	}
	return true;
}

function focusFailedInput(inputId, errorMessage)
{
	var labels = document.getElementsByTagName("label");

	var tmplabel;
	// set error class to correct label and remove error class from others
	for(var i = 0; i < labels.length; i++ )
	{
		var label = labels[i];
		label.className = label.className.replace("error", "");
		// if anything will be wrong, remove break statement
		if( label.htmlFor == inputId ) { label.className += " error"; break; }
	}
	
	if(errorMessage)
		alert(errorMessage);
		
	var element = document.getElementById(inputId);
	if(element)
	{
		element.onchange = clearError;
		element.focus();
	}
	
	return false;
}

function goTo(url)
{
	location.href = url;
	return false;
}

function run()
{
	window.setTimeout("tollBoxVisibility()", 5);
	calendarAjax();
}

window.onload = run;