/*
 * This page provide set of utility methods for the form object validation using the javascript langauge.
 +--------------------------------------------------------------------------------------------------------+
 +   Form Validator Version 3.0                                                                           +
 +--------------------------------------------------------------------------------------------------------+
 +   validator.js                                                                                         +
 +--------------------------------------------------------------------------------------------------------+
 +   @Author   :   Nimit Patel <nimit@rightwaysolution.com> or <nimit_104@yahoo.com>                      +
 +   @Company  :   Copyright (c) 2007, Rightway Solution Pvt Ltd, Ahmedabad	                              +
 +                 All rights reserved.                                                                   +
 +--------------------------------------------------------------------------------------------------------+
 +   @Creted Date     :   22/01/2007              		    											  +
 +   @Last Modified Date     :   24/01/2007              		    									  +
 +--------------------------------------------------------------------------------------------------------+
*/
// JavaScript Document

//-- Function to get the URL for domain issue --//
function getHost() {
	 var fullurl="";
	fullurl =String(window.location); 
	//alert(fullurl);
	var nohttp = fullurl.split('//')[1];
	var hostPort = nohttp.split('/')[0];
	//alert(hostPort);
	//var fullurl="https://"+hostPort+"/";
	var fullurl="http://"+hostPort+"/";
	return fullurl;
}


//validate the non empty text field in the form.
function LTrim(value) {
	
	//alert(value);
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

// Removes ending whitespaces
function RTrim( value ) {
	//alert(value);
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}

// Removes leading and ending whitespaces
function trim( value ) {
	return LTrim(RTrim(value));
	
}
function empty(frmObject) 
{  
	
	//alert(frmObject.value);
	//frmObject.value = frmObject.value.trim(); 
	var str = frmObject.value.trim();
	var re = /.+/; 
	if(!str.match(re)) 
	{ 
		return false; 
	}	
	return true; 
}
//Alphabatic characters and blank space are allow by this validator function.
function alpha(frmObject) 
{ 
	//alert(frmObject);return false;
	frmObject.value = frmObject.value.trim(); 
	var str= frmObject.value; 
	//alert(str);
	var re = /^[A-Za-z\s]*$/; 
	if (!str.match(re)) 
	{  
		return false; 
	} 
	return true;
}
function alphaspecial(frmObject) 
{ 
	//alert(frmObject);return false;
	frmObject.value = frmObject.value.trim(); 
	var str= frmObject.value; 
	//alert(str);
	var re = /^[A-Za-z\'\-\s]*$/; 
	if (!str.match(re)) 
	{  
		return false; 
	} 
	return true;
}
function alphaspecialname(frmObject) 
{ 
	//alert("alpha");return false;
	frmObject.value = frmObject.value.trim(); 
	var str= frmObject.value; 
	//alert(str);
	var re = /^[A-Za-z\'\-]*$/; 
	if (! str.match(re)) 
	{  
		return false; 
	} 
	return true;
}
function alphaspecialnamedes(frmObject) 
{ 
	//alert("alpha");return false;
	frmObject.value = frmObject.value.trim(); 
	var str= frmObject.value; 
	//alert(str);
	var re = /^[A-Za-z\'\-]*$/; 
	if (! str.match(re)) 
	{  
		return false; 
	} 
	return true;
}
function alphaspecialusername(frmObject) 
{ 
	//alert("alpha");return false;
	frmObject.value = frmObject.value.trim(); 
	var str= frmObject.value; 
	//alert(str);
	var re = /^[A-Za-z0-9\_]*$/; 
	if (! str.match(re)) 
	{  
		return false; 
	} 
	return true;
}

//Alphabetic and numeric values are allowed by alphanumeric function.
function alphaNumeric(frmObject)
{ 
	frmObject.value = frmObject.value.trim(); 
	var str= frmObject.value; 
	var re = /^[A-Za-z0-9\s]*$/; 
	if (! str.match(re)) 
	{ 
		alert(lang[2]); 
		frmObject.focus();  
		return false; 
	} 
	return true; 
}
function alphaNumericNoSpace(frmObject)
{ 
	frmObject.value = frmObject.value.trim(); 
	var str= frmObject.value; 
	var re = /^[A-Za-z0-9]*$/; 
	if (! str.match(re)) 
	{ 
		return false; 
	} 
	return true; 
}


//intNumber function is used for the numeric value either integer or decimal.
// if you have pass digit = 0 then it is round to zero decimal value if value > 0 then round for that decimal point.
function intNumber(frmObject,digit)
{ 
	frmObject.value = frmObject.value.trim(); 
	var str= frmObject.value; 
	if( digit == 0 ) 
	{	
		var re = /^[0-9]*$/; 
	} 
	else 
	{ 
		var re = /^[0-9\.]*$/; 
	} 
	if (! str.match(re)) 
	{ 
		if( digit == 0) 
		{	
			alert(lang[3]);
 		} 
		else 
		{ 
			alert(lang[4]); 
		} 
		frmObject.focus();  
		return false; 
	} 
	if (digit > 0 ) 
	{ 	
		var pos = frmObject.value.indexOf("."); 
		var len = frmObject.value.length; 
		var place = parseInt(len) - (parseInt(pos)+1); 
		if(place != digit) 
		{ 
			alert(digit +lang[5]); 
			frmObject.focus();  
			return false; 
		} 
	}	
	return true; 
} 
 
//validate the emailaddress.
function emailValidation(frmObject)
{ 
	//alert(frmObject.value);
	//frmObject.value = frmObject.value.trim(); 
	var str = frmObject.value.trim(); 
	var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/; 
	if (!str.match(re)) 
	{ 
		return false; 
	} 
	return true; 
} 
//Alphanumeric with special character values are allowed by this function.
function alphaNumericSpecial(frmObject)
{
	frmObject.value = frmObject.value.trim();
	var str= frmObject.value;
	var re = /^[A-Za-z0-9\!\@\#\$\%\^\&\*\(\)\_\+\-\~\?\>\<\,\.\`\s]*$/;
	if (! str.match(re)) 
	{ 
		return false;
	}
	return true;
}
function alphaNumericSpecialNoSapce(frmObject)
{
	frmObject.value = frmObject.value.trim();
	var str= frmObject.value;
	var re = /^[A-Za-z0-9\!\@\#\$\%\^\&\*\(\)\_\+\-\~\?\>\<\,\.\`]*$/;
	if (! str.match(re)) 
	{ 
		return false;
	}
	return true;
}

function myusername(frmObject)
{
	frmObject.value = frmObject.value.trim(); 
	
	if (frmObject.value.match(/[\s]/))
	{
		return false;
	}
	else
	{
		
		return true;
	} 
}

//trim function truncat the leadin and trailing space of string.
String.prototype.trim = function() { a = this.replace(/^\s+/, ''); return a.replace(/\s+$/, ''); }; 

//Telehpone function allow numeric value from 0 to 9 and few character like -,+,(,) and blank space.
function telephone(frmObject) 
{ 
	frmObject.value = frmObject.value.trim(); 
	var str = frmObject.value; 
	var re = /^[0-9\-\+\(\)\s]*$/; 		
	if(! str.match(re)) 
	{ 
		return false;  
	}  
	return true; 
}

//checkCC function validate the 16 digit credit card number with format like XXXX XXXX XXXX XXXX
function checkCC(frmObject) 
{ 
	frmObject.value = frmObject.value.trim(); 
	var str = frmObject.value;  
	var re = /^\d{4} ?\d{4} ?\d{4} ?\d{4}$/; 
	if(!str.match(re)) 
	{  	
		alert(lang[9]); 
		frmObject.focus();  
		return false; 
	} 	
	return true; 
}

//checkCC4 function validate the 4 digit credit card number with format like XXXX
function checkCC4(frmObject) 
{ 
	frmObject.value = frmObject.value.trim(); 
	var str = frmObject.value;  
	var re = /^\d{4}$/; 
	if(!str.match(re)) 
	{  	
		alert(lang[10]); 
		frmObject.focus();  
		return false; 
	} 	
	return true; 
}

//This function validate the date value using MM/DD/YYYY  or MM-DD-YYYY format.
function checkDate(frmObject) 
{  
	frmObject.value = frmObject.value.trim(); 
	var str =frmObject.value;  
	var re = /^(\d{1,2})(-)(\d{1,2})(-)(\d{4})$/;  
	if (! str.match(re))  
	{  
		alert(lang[11]); 
		frmObject.focus();   
		return false;  
	}  	
	mm = parseInt(str.substring(0,1));
	dd = parseInt(str.substring(3,4)); 
	yy = parseInt(str.substring(6,9));  
	if(mm < 1 || mm > 12) 
	{  
		alert(lang[12]);  
		frmObject.focus();    	
		return false;  
	}  	
	if((mm == 1 || mm == 3 || mm == 5 || mm == 7 || mm == 8 || mm == 10 || mm == 12   ) && (dd < 1 && dd > 31))   
	{  
		alert(lang[13]);  
		frmObject.focus();     
		return false;  
	}   
	if((mm ==4 || mm == 6 || mm == 9 || mm == 11) && (dd < 1 && dd > 30 ))   
	{   
		alert(lang[14]);  
		frmObject.focus();      
		return false;  
	}   
	if (mm == 2) 
	{  
		var isleap = (yy % 4 == 0 && (yy % 100 != 0 || yy % 400 == 0));  
		if(isleap && (dd < 1 && dd > 29))   
		{   
			alert(lang[15]);   
			frmObject.focus();     
			return false;	}  if(!isleap && (dd < 1 && dd > 28))  {   alert(lang[16]);   }   }   return true; }



/* Old function */

function checkUrl(frmObject)
{
	frmObject.value = frmObject.value.trim(); 
	newarray = frmObject.value.split("://");
	//alert(newarray[0].trim())
	if(newarray[0].trim() != "http")
	{
		return false; 
	}
	
	var str = frmObject.value;
	var v = new RegExp();
	v.compile("^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$");
	if (!v.test(str)) 
	{
		return false; 
	}
	return true; 
}


//function checkUrl(frmObject)
//{
	/*frmObject.value = frmObject.value.trim(); 
	//alert(httpcheck);
	newarray = frmObject.value.split(".");
	//alert(newarray[0].trim())
	//alert(newarray[0]); return false;
	if(newarray[0] == "WWW" || newarray[0] == "www")
	{
		return false;
	}
	
	if(newarray[0].trim() == "http://www" || newarray[0].trim() == "http://WWW" || newarray[0].trim() == "HTTP://www" || newarray[0].trim() == "HTTP://WWW")
	{
		var str = '';
		for(var j=1;j<newarray.length;j++)
		{
			if(j==1)
			{
				str += newarray[j];
			}
			else
			{
				str += "."+newarray[j];
			}
		}
	}
	else
	{
		var str = frmObject.value;
	}

	//alert(str)
	var v = new RegExp();
	//v.compile("^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$");
	var re = /^([\w-]+\.)+[a-zA-Z]{2,7}$/; 
	//v.compile("^([\w-]+\.)+[a-zA-Z]{2,7}+$");
	if (!str.match(re)) 
	{ 
		return false; 
	} 
	/*if (!v.test(str)) 
	{
		return false; 
	}


		frmObject.value = frmObject.value.trim(); 
		var theurl=frmObject.value;
		var tomatch= /http:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{3}/
		if (tomatch.test(theurl))
		{
			//window.alert("URL OK.");
			return true;
		}
		else
		{
			return false; 
		}
	
	

	return true; 
}
*/
function checkUrlx(frmObject)
{
	frmObject.value = frmObject.value.trim(); 
	httpcheck = frmObject.value.split("://");
	if(httpcheck[0].trim() == "http")
	{
		mycheck = httpcheck[1].trim();
		
		alert(mycheck);
	}
	newarray = frmObject.value.split(".");
	//alert(newarray[0].trim())
	if(newarray[0].trim() != "www")
	{
		wwwcheck = newarray[1].trim();
		
	}
	
	if(httpcheck[0].trim()=='' && newarray[0].trim()=='')
	{
		alert('hi')
		return false; 
	}
	return false;
	//var str = frmObject.value;
	var v = new RegExp();
	v.compile("^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$");
	if(mycheck != '')
	{
		if (!v.test(mycheck)) 
		{
			alert('hi')
			return false; 
		}
	}
	if(wwwcheck != '')
	{
		if (!v.test(wwwcheck)) 
		{
			return false; 
		}
	}
	
	return true; 
}


function trimAll(sString) //trimall function
{
	while (sString.substring(0,1) == ' ')
	{
	sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
	sString = sString.substring(0,sString.length-1);
	}
	return sString;
}
function trimMiddle(sString) //trimall function
{
	while (sString.substring(0,1) == ' ')
	{
	sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

function filterFileType(field, ext)
{
	//alert(field.value.indexOf('.' + ext));
	if (field.value.indexOf('.' + ext) == -1) 
	{
		return false;
	}
	return true;
}
function validimg(field)
{
	
	if (!filterFileType(field, "gif") )
	{
		if (!filterFileType(field, "GIF") )
		{
			if (!filterFileType(field, "jpg") )
			{
				if (!filterFileType(field, "JPG") )
				{
					if (!filterFileType(field, "JPGE") )
					{
						if (!filterFileType(field, "jpge") )
						{
							return false;
						}
						else
						{
							return true;
						}
					}
					else
					{
						return true;
					}
				}
				else
				{
					return true;
				}
			}
			else
			{
				return true;
			}
		}
		else
		{
			return true;
		}
	}
	else
	{
		return true;
	}
}
function validimgswf(field)
{
	//alert(field);return false;
	if (!filterFileType(field, "gif") )
	{
		if (!filterFileType(field, "GIF") )
		{
			if (!filterFileType(field, "jpg") )
			{
				if (!filterFileType(field, "JPG") )
				{
					if (!filterFileType(field, "JPGE") )
					{
						if (!filterFileType(field, "jpge") )
						{
							if (!filterFileType(field, "swf") )
							{
								if (!filterFileType(field, "SWF") )
								{
									return false;
								}
								else
								{
									return true;
								}
							}
							else
							{
								return true;
							}
						}
						else
						{
							return true;
						}
					}
					else
					{
						return true;
					}
				}
				else
				{
					return true;
				}
			}
			else
			{
				return true;
			}
		}
		else
		{
			return true;
		}
	}
	else
	{
		return true;
	}
}

/* ********************* 
Email Validation
+ --------------------------------------------------------------------------------------------------
*/
	function isValidEmail(emailStr) 
	{			
			var checkTLD=1;
			var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
		//	var emailPat=/^(.+)@(.+)$/;
			var emailPat=/^(.+)@(.+)$/;
			var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
			var validChars="\[^\\s" + specialChars + "\]";
			var quotedUser="(\"[^\"]*\")";
			var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
			var atom=validChars + '+';
			var word="(" + atom + "|" + quotedUser + ")";
			var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
			var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
			var matchArray=emailStr.match(emailPat);
			if (matchArray==null) {
				//alert("Email address seems incorrect (check @ and .'s)");
				alert("Please enter valid email address.");
				return false;
			}
			var user=matchArray[1];
			var domain=matchArray[2];
			// Start by checking that only basic ASCII characters are in the strings (0-127).
			for (i=0; i<user.length; i++) {
				//alert(user.charCodeAt(i))
				if (user.charCodeAt(i)<65) {
					if ((user.charCodeAt(i)<45)|| (user.charCodeAt>57)) {
				//	alert("Ths Email address contains invalid characters.");
					alert("Please enter valid email address.");
					return false;
					}
				}
				
			}
			for (i=0; i<domain.length; i++) {
				if (domain.charCodeAt(i)>127) {
				//	alert("Ths Email address contains invalid characters.");
					alert("Please enter valid email address.");
					return false;
				}
			}
			if (user.match(userPat)==null) {
			//	alert("The Email address doesn't seem to be valid.");
				alert("Please enter valid email address.");
				return false;
			}
			var IPArray=domain.match(ipDomainPat);
			if (IPArray!=null) {
				for (var i=1;i<=4;i++) {
					if (IPArray[i]>255) {
						//alert("Email address is invalid!");
						alert("Please enter valid email address.");
						return false;
					}
				}
				return true;
			}
			var atomPat=new RegExp("^" + atom + "$");
			var domArr=domain.split(".");
			var len=domArr.length;
			for (i=0;i<len;i++) {
				if (domArr[i].search(atomPat)==-1) {
					//alert("Email address does not seem to be valid.");
					alert("Please enter valid email address.");
					return false;
			   }	
			}
			if (checkTLD && domArr[domArr.length-1].length!=2 && 
				domArr[domArr.length-1].search(knownDomsPat)==-1) {
				//alert("The address must end in a well-known domain or two letter " + "country.");
				alert("Please enter valid email address.");
				return false;
			}
		
		// Make sure there's a host name preceding the domain.
		
			if (len<2) {
				//alert("This Email address is missing a hostname!");
				alert("Please enter valid email address.");
				return false;
			}	
			return true;
	}

/*
+--------------------------------------------------------------------------------------------------

/*
 * This page provide set of utility methods for the form object validation using the javascript langauge.
 
*/
function checkname(which) {
	
	var badchars='/\@:?%!&£$#~<>^*+=";1234567890{}[]()'; // invalid characters
	var vowels=""; // AaEeIiOoUuYy name must contain at least one vowel: M.H.Byng ok!
	var cons=""; // /[^AaEeIiOoUuYy]/name must contain at least one consonant: A.A.Lee ok!
	var blank="";
	var vflag=0;
	var bflag=0;
	var name=which;	
	
	for (x=0;x < name.length;x++) {
		//if (vowels.indexOf(name.charAt(x))!=-1) {vflag=1}
		if (badchars.indexOf(name.charAt(x))!=-1) { bflag=1; }
	}
	//if (name.search(cons)==-1) {vflag=0}	
	if (name.length < 1 || name.length > 24 ) //|| vflag==0 
	{
		alert ("That does not appear to be a valid values. \nPlease try again.");
		//which.focus();
		return false;
	}
	if (bflag==1) // && vflag==1 
	{
		alert ("Invalid characters were entered into this field.\nOnly alphabetic characters are allowed.");
		//which.value=blank;
		//which.focus();
		return false;
	}
	return true;
}

/*
+--------------------------------------------------------------------------------------------------

/*
 * This Fuction Provide Checking for valid domain name fields.
 
*/
// Trucate All Spaces Between Text
function ReplaceSpace(aTextField){
	var re = /\s/g; //Match any white space including space, tab, form-feed, etc.
	RegExp.multiline = true; // IE support
	var strtext = aTextField.replace(re, "");
	return strtext;
} 

function isValidDomain(domainElementId)
{
   var strdomain=trim(document.getElementById(domainElementId).value);
   var iChars = "!@#$%^&*()+=[]\\\';,./{}|\":<>?";
   // Truncate All Spaces Between Domain Name
   strdomain=ReplaceSpace(strdomain);
   document.getElementById(domainElementId).value=strdomain;
   //Check For Special Characters in Domain Name
    for (var i = 0; i < strdomain.length; i++) 
	{
		if (iChars.indexOf(strdomain.charAt(i)) != -1) 
		{
		alert ("Speacial characters are not allowed for domain name, please try again.");
		return false;
		}
	 }
  return true;
	
}


/* +--------------------------------------------------------------------------------------------------------+
 +   Form Validator Version 3.0                                                                           +
 +--------------------------------------------------------------------------------------------------------+
 +   validator.js                                                                                         +
 +--------------------------------------------------------------------------------------------------------+
 +   @Author   :   Nimit Patel <nimit@rightwaysolution.com> or <nimit_104@yahoo.com>                      +
 +   @Company  :   Copyright (c) 2007, Rightway Solution Pvt Ltd, Ahmedabad	                              +
 +                 All rights reserved.                                                                   +
 +--------------------------------------------------------------------------------------------------------+
 +   @Creted Date     :   22/01/2007              		    											  +
 +   @Last Modified Date     :   24/01/2007              		    									  +
 +--------------------------------------------------------------------------------------------------------+
*/

