// JavaScript Document
/* 
* Author: Er. Rajan Maharjan
* Date : 8th June, 2009
* Reason : Implementing of jquery and stylish error display

*/	

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function displayStyleErr(idTodisplay, errorMsg){		
	if(errorMsg!=''){		
		inlineMsg(idTodisplay,errorMsg,2);				//alert(errorMsg);
		$(idTodisplay).focus();
		$(idTodisplay).select();
		return false;
	}
	else
		return true;
	}


function isValidPhone(phoneString){	
	phoneString=trim(phoneString);	
	if(phoneString=='')
		return false;
	if(isNaN(phoneString) || phoneString<0){
		var plusSign=phoneString.substring(0,1);
		var numbers='';
		var returnValue=1;
		if(plusSign=="+"){
			numbers=trim(phoneString.substring(1,phoneString.length));
			}
		else
			numbers=phoneString;
		
		
		
		for(var i=0;i<numbers.length;i++){			
				if((isNaN(numbers[i]) && trim(numbers[i])!='') || numbers[i]<0 || numbers[i]=='+'){
					returnValue=0;
					break;
				}				
			}
		
		if(returnValue==0)
			return false;
	}
	return true;
	}
	
	
function isNumber(myNumber){
	if(myNumber=='' || isNaN(myNumber))
		return false;
	else
		return true;
}

function isValidURL(theurl) {	
    var urlMatchOne= /(http|https):\/\/www\.[A-Za-z0-9\.-]{3,}\.[A-Za-z]{2,}/;	
	if(urlMatchOne.test(theurl)){     
         return true;     
		}
     else      
         return false;  
}


function isValidEmail(strEmail){	
	strEmail=strEmail.toLowerCase();
	var myregEmail=/^([_a-z0-9-])+(\.[a-z0-9-]+)*@([a-z0-9-])+(\.[a-z0-9-]{1,})*\.([a-z]{2,}){1}/;
	return myregEmail.test(strEmail);
 
}


function validate(field,form)
{
	
	try
	{
	valiclass=field.getAttribute("valiclass");	
	valimessage=field.getAttribute("valimessage");
	idOfField=field.getAttribute("id");	
	if(valiclass=="required"){
	req=field.getAttribute("req");
	pattern="\\w{"+req+",}";
	if(!field.value.match(pattern)){			
		return displayStyleErr(idOfField,valimessage);	
		}
	}
	
	else if(valiclass=="txtarea" && field.value==''){		
		return displayStyleErr(idOfField,valimessage);	
		}	
	else if(valiclass=="urllink")
	{
		req=field.getAttribute("req");
		if(req==1){
		if(!isValidURL(field.value))
		{
		return displayStyleErr(idOfField,valimessage);	
		}
		}
		else{
			if(!isValidURL(field.value) && trim(document.getElementById(idOfField).value)!='')
				return displayStyleErr(idOfField,valimessage);	
			}
	}
	
	else if(valiclass=="email")
	{
		
		if(isValidEmail(field.value)==0)
		{
		return displayStyleErr(idOfField,valimessage);	
		}
	}
	
	else if(valiclass=="dePhone")
	{
		
		if(isValidPhone(field.value)==false)
		{
		return displayStyleErr(idOfField,valimessage);	
		}
	}
	
	
	else if(valiclass=="checkbox")
	{
		//!document.frmsignup.chkAccept.checked
		if(!field.checked)
		{
			return displayStyleErr(idOfField,valimessage);	
		}
	
	}
	else if(valiclass=="number")
	{
		
	if(isNumber(field.value)==false)
	{
	return displayStyleErr(idOfField,valimessage);	
	}
		
	}

	else if(valiclass=="PIN")
	{
	pattern="[0-9]{13}$";
	if((field.value.length!=13) || (!field.value.match(pattern)))
	{
	return displayStyleErr(idOfField,valimessage);	
	}
	
	}
	else if(valiclass=="zip")
	{
	pattern="[0-9]{5}$";
	//if(!field.value.match(pattern))
	if((field.value.length!=5) || (!field.value.match(pattern)))
	{
		return displayStyleErr(idOfField,valimessage);	
	}
	
	}
	
	else if(valiclass == "pass")
	{	
	if((field.value.length<5))
	{
	return displayStyleErr(idOfField,valimessage);	
	}
	}
	else if(valiclass == "cpass")
	{	
		
		if(form.password.value != form.cpassword.value)
			{
				return displayStyleErr(idOfField,valimessage);	
			}
	}
	else if(valiclass == "cemail")
	{	
		if(form.email.value != form.cemail.value)
			{
				return displayStyleErr(idOfField,valimessage);				
			}
	}
	
	
	else if(valiclass=="select")
	{
	if(field.value=="0")
	{
	return displayStyleErr(idOfField,valimessage);				
	}
	}
return true;
}
catch(ex)
{
alert(ex.message);
return true;
}
}

function call_validate(form,from,to)
{

for(counter=from;counter<to;counter++)
{
bool=validate(form[counter],form);
if(!bool)
{
return false;
break;
}
}
return true;
//form.submit();
}