/*
 ****************Validation begins here...*********************
 */

function validate(field, msg, elementType)
{
	with (field)
	{
		//For text or textareas...
		if(elementType=='text' || elementType=='textarea'|| elementType=='password' || elementType=='file')
		{
			if (value==null||value=="")
			{
				alert(msg);
				return false;
			}
		}
		//For drop downs...
		else if(elementType=='select-one')
		{
			if (selectedIndex==0)
			{
				alert(msg);
				return false;
			}
		}
		else if(elementType=='checkbox')
		{
			if(checkboxIsChecked == 0)
				if (checked == false)
				{
					alert(msg);
					return false;
				}
		}
		else 
		{
			return true;
		}
	}
}
//E mail validation function.
function validateEmail(field, msg)
{
	with (field)
	{
		apos=value.indexOf("@")
		dotpos=value.lastIndexOf(".")
		
		if (apos<1||dotpos-apos<2) 
		{
			alert(msg);
			value='';
			return false;
		}
		else 
		{
			return true;
		}
	}
}


//----------------------------------validation-------------------------------------------
/**
 * validateForm(string form element[, string tag ids[, string flag]])
 * thisForm = Form name.
 * elementIds = Should be an element ID seperated by commas. ( Eg:'name,address' ).
 * flag = 'email' -> Validates email format.
 *		  'password' -> Validates password confirmation format.
 *		  'email+password' -> Validates email format & password confirmation.
 * Usage : validateForm(this, 'name,address', 'All fields need to be complete in full.') -> Validates only the 'name' & 'address'.
 *		   validateForm(this,'*','All fields need to be complete in full.') -> Validates all the fields. Same as validateForm(this).
 *		   validateForm(this,'*','All fields need to be complete in full.','email+password') -> Validates email format & password confirmation.
 **/
var checkboxIsChecked = 0;
var emailFieldName = 'email';	//should give the name of the email field.
function validateForm(thisForm, elementIds, warnMsg, flag)
{
	var alertText = warnMsg;
	with (thisForm)
		{
			//Checks whether the Ids were given.
			if(typeof elementIds != 'undefined' && elementIds!='*')
			{
				var tempElementIdArray = new Array();
				var tempElementsArray = new Array();
				var i;
				
				tempElementIdArray = elementIds.split(',');
				
				for(i in tempElementIdArray)
				{
					if(typeof elements[tempElementIdArray[i]] != 'undefined')
					tempElementsArray[i] = elements[tempElementIdArray[i]];
				}
				
				if(validateThis(tempElementsArray, alertText, flag) == false)
					return false;
			}
			//Else validates all the fields.
			else
			{
				if(validateThis(elements, alertText, flag) == false)
					return false;
			}
		}
}



/**
validateThis(elementObj,alertText[,Array confirm(elem1,elem2,'confirmation msg')])
last element of confirm contains the message to be displayed
**/
function validateThis(elementObj, alertText, confirm)
{
	for (i=0;i<elementObj.length;i++) 
	{
		//Text field validation done here...
		if(elementObj[i].type=='text')
		{
			//Checks whether text fields are empty...
			if (validate(elementObj[i], alertText, elementObj[i].type)==false)
				{
					elementObj[i].focus();
					return false;
				}
	 			
			//E mail validation is done here...	
			else if(elementObj[i].name == emailFieldName)
			{
				if(typeof confirm != 'undefined' && confirm.indexOf("email")!=-1)
					if (validateEmail(elementObj[i], "Invalid e-mail address format.", elementObj[i].type)==false)
					{
						elementObj[i].focus();
						return false;
					}
			}
		}
		//Drop down validation done here...
		else if(elementObj[i].type=='select-one')
		{
			if (validate(elementObj[i], alertText, elementObj[i].type)==false)
				{
					elementObj[i].focus();
					return false;
				}
		}
		//Textarea validation done here...
		else if(elementObj[i].type=='textarea')
		{
			if (validate(elementObj[i], alertText, elementObj[i].type)==false)
			{
				elementObj[i].focus();
				return false;
			}
		}
		else if(elementObj[i].type=='password')
		{
			if (validate(elementObj[i], alertText, elementObj[i].type)==false)
			{
				elementObj[i].focus();
				return false;
			}
		}
		else if(elementObj[i].type=='checkbox')
		{
			if (validate(elementObj[i], alertText, elementObj[i].type)==false)
			{
				elementObj[i].focus();
				return false;
			}
		}
		else if(elementObj[i].type=='file')
		{
			
			if(!elementObj[i].disabled)
			if (validate(elementObj[i],alertText,elementObj[i].type)==false)
			{
				
				elementObj[i].focus();
				return false;
			}
		}
		
	}
	if(typeof confirm != 'undefined' &&  confirm.indexOf('password') != -1)
	{
		
		for(i=0;i<(confirm.length-2);i++)
		{
			if(confirm[i]!=confirm[i+1])
			{
			lastIndex=confirm.length-1;	
			
			alert('New Password and Confirmation and need to be identical.')
			for(j=0;j<elementObj.length;j++)
			 if(elementObj[j].name==confirm[i+1])
			 {
			 elementObj[j].focus();
			 elementObj[j].value="";
			 
			 }
			
		    
			return false;
			}
			
		}
		
	}
		
}
function createCookie(name,value,days) 
{
	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) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

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

function enquire()
{
	var yourName, telephone, email, address ='';
	
	var yourName =  document.getElementById('name').value.replace(/^\s+|\s+$/g, '');
	var telephone =  document.getElementById('voice').value.replace(/^\s+|\s+$/g, '');
	var fax =  document.getElementById('fax').value.replace(/^\s+|\s+$/g, '');
	var email = document.getElementById('email').value.replace(/^\s+|\s+$/g, '');
	var address =  document.getElementById('address').value.replace(/^\s+|\s+$/g, '');
	var comments =  document.getElementById('comments').value.replace(/^\s+|\s+$/g, '');

	var isValidEmailAddress = isValidEmail(email);
	
	isFocused = false;
	
	if(yourName=='')
	{
		showErrMsg('nameErrMsg','Required field','name');
	}	
	else
	{
		hideErrMsg('nameErrMsg');
	}
	if(telephone=='')
	{
		showErrMsg('voiceErrMsg','Required field','voice');
	}		
	else
	{
		hideErrMsg('voiceErrMsg');
	}		
	if(!isValidEmailAddress)
	{
		showErrMsg('emailErrMsg','Invalid E-mail Address','email');
	}	
	else
	{
		hideErrMsg('emailErrMsg');
	}
	if(address=='')
	{
		showErrMsg('addressErrMsg','Required field','address');
	}	
	else
	{
		hideErrMsg('addressErrMsg');
	}
	if(!isFocused)
	{
		ajx=new AJAXHandler();
		ajx.setTarget('enquireAjx.php');
		ajx.sendRequest("yName="+yourName+"&voice="+telephone+"&email="+email+"&address="+address+"&fax="+fax+"&comments="+comments+"&pName="+readCookie('pName')+"&pCode="+readCookie('pCode'),'POST',1,"enquire");
	}
}
function resetEnquire()
{
	document.getElementById('name').value = "";
	document.getElementById('voice').value = "";
	document.getElementById('fax').value = "";
	document.getElementById('email').value = "";
	document.getElementById('address').value = "";
	document.getElementById('comments').value = "";
	hideErrMsg('nameErrMsg');
	hideErrMsg('voiceErrMsg');
	hideErrMsg('emailErrMsg');
	hideErrMsg('addressErrMsg');
}
function showErrMsg(val1,val2,val3)
{
	document.getElementById(val1).innerHTML = val2;
	document.getElementById(val1).className = "msgFieldOn";
	if(!isFocused)
	{
		document.getElementById(val3).focus();
		isFocused = true;
	}
}
function hideErrMsg(val)
{
	document.getElementById(val).className = "msgField";
}
function isValidEmail(val)
{
	var emailVal = val;
	apos=emailVal.indexOf("@");
	dotpos=emailVal.lastIndexOf(".");
	
	if(val == "")
	{
		return false;
	}
	else if (apos<1||dotpos-apos<2 || !(emailVal.match(/^[\w\d!#$%&'*+-\/=?^`{|}~]+(\.[\w\d!#$%&'*+-\/=?^`{|}~]+)*@([a-z\d][-a-z\d]*[a-z\d]\.)*[a-z][-a-z\d]*[a-z]$/))) 
	{
		return false;
	}
	else
	{
		return true;
	}
}

function AJAXHandler()
{
	var target=null;
	var respVal=null;
	        	
	this.setTarget=function(target)
	{
		this.target=target;
	}
	 	
	this.createRequestObject=function(){
	 		
		var httpRequest=false;
		if(window.XMLHttpRequest){
			httpRequest=new XMLHttpRequest();
		}
		else if(window.ActiveXObject){
			httpRequest=new ActiveXObject("Microsoft.XMLHTTP");
		}
		else{
			alert("This page will not work as desired, lack of support from browser");
		}
			
		return httpRequest;
	}

	var xmlhttp=this.createRequestObject();
	var flag=null;
	var div=null;

	this.sendRequest=function(paramslist,method,flagPrm,divId)
	{
		params=paramslist; 		
		flag=flagPrm; 		
		div = divId;
		
		if(method=='POST')
		{
			xmlhttp.open("POST",this.target,true);
			xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			xmlhttp.setRequestHeader("Content-length", params.length);
			xmlhttp.setRequestHeader("Connection", "close");
			xmlhttp.onreadystatechange=this.handleResponce;
			xmlhttp.send(params);
		}
		else if(method=='GET')
		{
			xmlhttp.open("GET",this.target+params,true);
			xmlhttp.onreadystatechange=this.handleResponce;
			xmlhttp.send(null);
		}
			 		    
	}

	this.handleResponce=function()
	{
		if(xmlhttp.readyState==4)
		{
			responce=xmlhttp.responseText;
		
			if(flag==1)
			{
				if(responce==1)
				{
					document.getElementById(div).innerHTML = '<div class="message">Thank you for your query someone will be in contact very shortly.</div>';
				}
				else if(responce==0)
				{
					mailingFaild = true;
					document.getElementById(div).innerHTML = '<div class="message">There seems to be a problem in the system. Please retry later.</div>';
				}
				
				window.setTimeout("parent.$.prettyPhoto.close();", 5000);
			}			
	   }
	   else
	   {
		  if(flag == 1)
		  {
			   document.getElementById(div).innerHTML ='<div id="windowTop"><!-- --></div><div id="window"><div class="message">Sending email...</div></div><div id="windowBottom"><!-- --></div>';
		  }
	   }
 	}
}
