// JavaScript Document
/*

	Validate function checks which field called it via losing focus 
	and then validates its content in realtime by displaying a
	red x (with a msg beside relevant field)
	depending on the result of the content validaton

*/

function validate(a,b,c)
{
	
	var error1 = true;
	var error2 = true;
	var error3 = true;
	var error4 = true;
	//must not be empty
	if(a == "phrase")
	{
		if(b.length == "0")
		{
			document.getElementById('redcross1').style.display = 'block';
			document.getElementById('span1').innerHTML = 'Target Phrase is required';

			error1=true;
		}
		else
		{
			document.getElementById('redcross1').style.display = 'none';
			document.getElementById('span1').innerHTML = '';

			error1=false;
		}
	
	}
	
	//must not be empty and must be well formed
	if(a == "url")
	{
		//alert(b);
		if(isUrl(b))
		{
			document.getElementById('redcross2').style.display = 'none';
			document.getElementById('span2').innerHTML = '';

			error2=false;
		}
		else
		{
			document.getElementById('redcross2').style.display = 'block';
			document.getElementById('span2').innerHTML = 'URL is incorrectly formatted';
			
			error2=true;
		}
	}
	
	
	if(a == "name")
	{
		if(b.length == "0")
		{
			document.getElementById('redcross3').style.display = 'block';
			document.getElementById('span3').innerHTML = 'Name is required';

			error3=true;
		}
		else
		{
			document.getElementById('redcross3').style.display = 'none';
			document.getElementById('span3').innerHTML = '';

			error3=false;
		}
	}
	
	
	//must not be empty and must be well formed
	if(a == "email")
	{
		//alert(b);
		if(validateEmail(b))
		{
			document.getElementById('redcross4').style.display = 'none';
			document.getElementById('span4').innerHTML = '';

			error4=false;
		}
		else
		{
			document.getElementById('redcross4').style.display = 'block';
			document.getElementById('span4').innerHTML = 'Email is incorrectly formatted';

			error4=true;
		}
	}

	//must not be empty and must be well formed
	if(a == "answer")
	{
		//alert(b);
		if(b == 4)
		{
			document.getElementById('redcross5').style.display = 'none';
			document.getElementById('span5').innerHTML = '';

			error5=false;
		}
		else
		{
			document.getElementById('redcross5').style.display = 'block';
			document.getElementById('span5').innerHTML = 'Answer is incorrect';

			error5=true;
		}
	}


	

	
}


function overallValidate()
{

	validate('phrase',document.forms[0].phrase.value,'dummy');
	validate('url',document.forms[0].url.value,'dummy');
	validate('name',document.forms[0].name.value,'dummy');
	validate('email',document.forms[0].email.value,'dummy');
	validate('answer',document.forms[0].answer.value,'dummy');


	if(document.getElementById('redcross1').style.display == 'block' || document.getElementById('redcross2').style.display == 'block' || document.getElementById('redcross3').style.display == 'block' || document.getElementById('redcross4').style.display == 'block' || document.getElementById('redcross5').style.display == 'block')
	{
		
	}
	else
	{
		if(document.forms[0].remember.checked == true)
		{
			createCookie('details','dummy','365');
		}
		else
		{
			eraseCookie('details');
		}	
		
		document.forms[0].submit();
	}
}



//worker functions - used by the overal validate function above
function isUrl(s)
{
	var regexp = /(http|https):\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{2,}/;
 	return regexp.test(s);
}

function validateEmail(email) 
{
	//alphanum,RFC822 chars,@-sign,alphanumbs dashes & dots,2-4 letter suffix,no more no less,case insensitive
	return /^[a-z0-9][^\(\)\<\>\@\,\;\:\\\"\[\]]*\@[a-z0-9][a-z0-9\-\.]*\.[a-z]{2,4}$/i.test(email);
} 

//when the check rankings button is pressed
//and everything is valid store cookie so user
//will not have to retype in again and again

function createCookie(name,value,days) {
	
	value = document.forms[0].market.selectedIndex + '|' + document.forms[0].url.value + '|' + document.forms[0].name.value + '|' + document.forms[0].email.value;
	value = document.forms[0].name.value + '|' + document.forms[0].email.value;
	
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}



function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) {
			//alert(c.substring(nameEQ.length,c.length));
		return c.substring(nameEQ.length,c.length);}
	}
	return null;
}


function prePopulate()
{
	//document.forms[0].phrase.focus();
	var details = readCookie('details');

	if(details != null) //if there is a cookie
	{
		temp = details.split('|',4);
		//document.forms[0].market.selectedIndex = temp[0];
		//document.forms[0].url.value = temp[1];
		document.forms[0].name.value = temp[0];
		document.forms[0].email.value = temp[1];

		document.forms[0].remember.checked = true;
	}
}


function eraseCookie(name)
{
	createCookie(name,"",-1);
}


/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
//////////////  AJAX FUNCTIONS ////////////////////////////////////////

function getText(urlToCall, functionToCallBack, divToUpdate, thequery)
{ 
	//alert(urlToCall);
	//document.write(urlToCall);
	
	//only run if at least 2 chars enter (to avoid delays) 
	if(thequery.length >= 2 || thequery.length == 0)
	{	  
		  var XMLHttpRequestObject = false; 

		  if (window.XMLHttpRequest) {
			XMLHttpRequestObject = new XMLHttpRequest();
		  } else if (window.ActiveXObject) {
			XMLHttpRequestObject = new 
			 ActiveXObject("Microsoft.XMLHTTP");
		  }

		  if(XMLHttpRequestObject) {
			XMLHttpRequestObject.open("GET", urlToCall); 

			XMLHttpRequestObject.onreadystatechange = function() 
			{ 
			  if (XMLHttpRequestObject.readyState == 4 && 
				XMLHttpRequestObject.status == 200) { 
				  functionToCallBack(XMLHttpRequestObject.responseText,divToUpdate); 
				  delete XMLHttpRequestObject;
				  XMLHttpRequestObject = null;
			  } 
			}

			XMLHttpRequestObject.send(null); 
		  }
	}
}

//

function updateSPAN(text, spanToUpdate)
{
	//alert(divToUpdate);
	//alert(text);
	document.getElementById(spanToUpdate).innerHTML = text;
}
