var regExpForMask = /\s*\(([0-9A-Za-z]){3}\)\s+([0-9A-Za-z]){3}\s*\-\s*([0-9A-Za-z]){4}\s*/;

function trimLeft(s)
{
	i=0;
	n= s.length;
	while((i<n) && ( (s.charAt(i)==' ') || (s.charAt(i)=='	') ) )
	{
		i++;
	}
	
	s = s.substring(i);
	return(s);
} 

function trimRight(s)
{
	n= s.length;
	i= s.length-1;
	while( (i>=0) && ( (s.charAt(i)==' ') || (s.charAt(i)=='	') ) )
	{
		i--;
	}

	s = s.substring(0,i+1);
	return(s);
}

function trimAll(s)
{
	s = trimLeft(s);
	s = trimRight(s);
	return(s);
} 

function checkConsecutiveValues(e, name, val)
{
	var code = 0;
		code = checkKeyType(e);
		var nonAsciiFlag = false;

		if(code != 0)
		{
			if( (code >= 33 && code <= 40) ||(code >= 16 && code <= 18) || code == 45 || code == 46 || code == 8 || code == 0)
			nonAsciiFlag = true;
		}

		if(!nonAsciiFlag) {
			var temp = new Array();  
			temp = val.split(''); 
			var temp1 = new Array();
			var temp2 = new Array();
			var s;
			var p;
			var j=0;
			var k=0;
			var z=0;
			var len = temp.length;
			for(var i=0; i<len; i++)
			{
			   s = temp[i] 
			   for(var t=0;t<j;t++)
			   {
				p = temp1[t];
				if(s == p)
				{
				  k=1;
				  break;
				}
				else
				{
				  k=0;
				}
			   }
			   if(k==0)
			   {
				 temp1[j] = temp[i];	
				 temp2[j] = 1;
				 j=j+1;
			   }
			   else if(k==1)
			   {
				 for(t=0;t<j;t++)
				  {
				   if(temp[i] == temp1[t])
				   {
					 temp2[t] = temp2[t] + 1;
					 break;
				   }
				  }
			   }
			}
			
			for(t=0;t<j;t++)
				{
					if(temp2[t] > 4)
					 {
						alert("Please check the contents before Submitting");
						e.cancelBubble = true;
						e.returnValue = false;
						document.getElementById(name).value="";
						document.getElementById(name).focus();
						
					 }
				}
		}
			return true;     
}

function checkWrongString(e,  name, val)
	{
		
		var code = 0;
		code = checkKeyType(e);
		var nonAsciiFlag = false;

		if(code != 0)
		{
			if( (code >= 33 && code <= 40) ||(code >= 16 && code <= 18) || code == 45 || code == 46 || code == 9 || code == 8 || code == 0)
				nonAsciiFlag = true;
		}

		if(!nonAsciiFlag) {
			
			
			var temp = new Array();  
			temp = val.split(/\s|[- \/.]/);
		
			for(var i=0; i<temp.length; i++){
				
				if(temp[i].length>19) {
					alert("please check the contents you entered");
					e.cancelBubble = true;
					e.returnValue = false;
					document.getElementById(name).value="";
					document.getElementById(name).focus();					
				}
			}
		}
		
	}

function consecutiveCharacters(e, val, name)
	{
		
		
		var temp = new Array();  
		temp = val.split(''); 

		var len = temp.length;
		for(var i=0; i<len;i++)	
		{
			if(temp[i]==temp[i+1] )
			{
				if(temp[i+1]==temp[i+2])
				{ 
					if(temp[i+2]==temp[i+3])
					{
						alert("please check the contents you entered");
						e.cancelBubble = true;
						e.returnValue = false;
						document.getElementById(name).value="";
						document.getElementById(name).focus();
					}
				}
				
			}
		
		
	}
} 

function checkKeyType(e) //Function/ AlphaNumeric/ Special Characters
{
	var code = 0;
	
	if(!e)	e = document.event;
	
	if(e.charCode == undefined)	
	{
		if(e.which == undefined || e.which != 0)
		{
			code = e.keyCode;		
		}
		else if(e.which == 0);
	}
	else if(e.charCode != 0)
	{
		code = e.which;
	}
	else if(e.charCode == 0) ;


	return code;
}

function checkOnlyAlphabets(formObj, objRef, objName) {
	
	var obj = formObj.userName;

	var validKW = obj.value.search(/\s*[^\W]\s*/); // search for all except Non Alphanumeric and spaces
	
	if(obj.value=="" || validKW == -1) {
		alert("Please provide valid input for " + objName);  // Null search validation
		obj.focus();	
		return false;
	}
	
    if (obj.value=="" || validKW != -1)
    {
	    validKW = obj.value.search(/[^\sA-Za-z]/); // only alphabets with spaces validation

		if(obj.value=="" || validKW != -1) {
			alert("Please enter the required values for " + objName);
			obj.focus();	
			return false;
		}	    
    }

    return true;
}

function checkDigits(obj) {
	
	var validDataFlag = obj.value.search(/[^0-9]/);
	
	if(validDataFlag != -1) {
		alert('Please provide only numeric value for ' + obj.name);
		obj.focus();
	}
}

function phoneCheck(e, name, val)
{
		
		var temp = new Array();  
		temp = val.split(''); 

		var len = temp.length;
		for(var i=0; i<len;i++)	
		{
			if(temp[i]==temp[i+1] )
			{
				if(temp[i+1]==temp[i+2])
				{ 
					if(temp[i+2]==temp[i+3])
					{
						if(temp[i+3]==temp[i+4] && temp[i+4]==temp[i+5])
						{
							if(temp[i+5]==temp[i+6])
							{
								alert("Please provide the correct information");
								e.cancelBubble = true;
								e.returnValue = false;
								document.getElementById(name).value="";
								document.getElementById(name).focus();
							}
						}
					}
				}
			}
		}
}


function stdCheck(e, name, val)
{
		
		
		var temp = new Array();  
		temp = val.split(''); 

		var len = temp.length;
		for(var i=0; i<len;i++)	
		{
			if(temp[i]==temp[i+1] )
			{
				if(temp[i+1]==temp[i+2])
				{ 
					if(temp[i+2]==temp[i+3])
					{
						alert("Please provide the correct information");
						e.cancelBubble = true;
						e.returnValue = false;
						document.getElementById(name).value="";
						document.getElementById(name).focus();

					}
				}
			}
		}
}


function checkSpecialChars(obj) {
	
	var validDataFlag = obj.value.indexOf("#");
	
	if(validDataFlag != -1) {
		alert('Special characters are not allowed for ' + obj.name);
		obj.focus();
	}
}

function allowNumNDotOnly(obj) {
	
	var validDataFlag = obj.value.search(/[^.^0-9]/);
	
	if(validDataFlag != -1) {
		alert('Only numbers and \'.\' should be provided for ' + obj.name);
		obj.focus();
	}
}

function textLimit(obj, maxlen) {
	if(obj.value != "") {
	  if (obj.value.length > maxlen + 1) {
	    alert('The Input exceeds the Max size (250 chars.) for ' + obj.name);
	    obj.focus();
	  }
	}  
}


function allow_only_digits_pincode(e)
{
    var code = checkKeyType(e);

	if(code != 0)
	{
		if ((code<48 || code >57))
		{
			alert("Please enter only digits");
			
			e.cancelBubble = true;
			e.returnValue = false;

			if(e.which)
			{
				e.stopPropagation();
				e.preventDefault();
			}
		} 
	}
}

function allow_only_digits_phone(e)
{
    var code = checkKeyType(e);

	if(code != 0)
	{
		if ((code<48 || code >57) && (code!=45))
		{
			alert("Please enter only digits");
			
			e.cancelBubble = true;
			e.returnValue = false;

			if(e.which)
			{
				e.stopPropagation();
				e.preventDefault();
			}
		} 
	}
}


function comparsion(fromVal,toVal)
{
	if (fromVal.value < toVal.value){
		alert("Maximum Score Should be Greater than To Minimum Score");
		return false;
	}
}

function CheckSpace(textfeild){
	    descValid = textfeild.value.search(/[A-Z]|[a-z]|[0-9]/);
		if(descValid == -1)
		{
		  alert('Please fill required values for'+textfeild);
			textfeild.value="";  
			textfeild.focus();
	  	  return false;
		}
}

function checkNullSearch(txtBox, obj)
{		
	var myval =txtBox.value;	
	var len = myval.length;
	var validKW = myval.search(/\s*([0-9A-Za-z])\s*/);
	
	if (myval=="" || validKW == -1)
    {
	    alert("Please enter the required values for "+obj);
		txtBox.value="";
		txtBox.focus();	
	    return false;
    }
    return true;
}

function updateCheckStatus(obj) {
	if(obj.checked)
	  obj.value = "YES"
	else
	  obj.value="NO";
}



function avoidSpecialChars(e)
{
	var code = checkKeyType(e);

	if(code != 0)
	{
		if ((code > 32 && code < 48) || (code > 57 && code < 65) || (code > 90 && code < 97) || code > 127)
		{
			alert("Special Characters Not Allowed");

			e.cancelBubble = true;
			e.returnValue = false;

			if(e.which)
			{
				e.stopPropagation();
				e.preventDefault();
			}
		} 
	}
}

function allowOnlyAlphabets(e)
{
	var code = checkKeyType(e);

	if(code != 0)
	{
		if ((code > 32 && code < 48) || (code > 48 && code < 65) || (code > 90 && code < 97) || (code > 122 && code < 127) || code > 127 )
		{
			alert("Special characters & numerals not allowed");

			e.cancelBubble = true;
			e.returnValue = false;

			if(e.which)
			{
				e.stopPropagation();
				e.preventDefault();
			}
		} 
	}
}

function allowAlphaNSpecialChars(e)
{
	
	var code = checkKeyType(e);

	if(code != 0)
	{
		if( (code > 32 && code < 38) ||(code > 57 && code < 65) || code == 42 || code == 9 || code == 8 || code == 96 || (code > 122 && code < 127) || code > 127 || (code > 90 && code < 95))

		{
			alert("Special Characters are not allowed");

			e.cancelBubble = true;
			e.returnValue = false;

			if(e.which)
			{
				e.stopPropagation();
				e.preventDefault();
			}
		} 
	}
}

function allowAlphaNSpecial(e)
{
	
	var code = checkKeyType(e);

	if(code != 0)
	{
		if ( code > 127 )
		{
			alert("Special Characters are not allowed");

			e.cancelBubble = true;
			e.returnValue = false;

			if(e.which)
			{
				e.stopPropagation();
				e.preventDefault();
			}
		} 
	}
}


function allowOnlyAlphabetsNSpecialChars(e)
{
	var code = checkKeyType(e);

	if(code != 0)
	{
		if ((code > 32 && code < 45) || (code > 45 && code < 48) ||
		(code > 57 && code < 65) || (code > 90 && code < 95) || (code > 122 && code < 127) || code > 127)
		{
			alert("Special Characters are not allowed");

			e.cancelBubble = true;
			e.returnValue = false;

			if(e.which)
			{
				e.stopPropagation();
				e.preventDefault();
			}
		} 
	}
}

function CheckName(textfeild,value){

		var descValid = textfeild.value.search(/[^ ^a-z^A-Z]/);
	
		if(descValid != -1)
		{
		    alert('Please provide valid value for '+value);
			
			textfeild.focus();
	  	    return false;
		}
		return true;
}

function CheckNameWithDot(textfeild){

		if(textfeild.value == null || textfeild.value=="")
		{
			//alert('Please enter '+textfeild.name);
			//textfeild.focus();
			return false;
		} 

		
	    var descValid = textfeild.value.search(/[^a-z^A-Z^\.]/);
	
		if(descValid != -1)
		{
		    alert('Please provide valid value for '+textfeild.name);
			
			textfeild.focus();
	  	    return false;
		}
		return true;
}


// for mandatory phone fields After checkNullSearch() this function should be invoked
function CheckPhoneNumber(textfeild){

		if(textfeild.value == null || textfeild.value=="")
		{
			//alert('Please enter '+textfeild.name);
			//textfeild.focus();

			return true;
		} 
			
		var regExpForPhoneMask = /\s*\(([0-9]){3}\)\s+([0-9]){3}\s*\-\s*([0-9]){4}\s*/;	
		
		var descValid = regExpForPhoneMask.exec(textfeild.value);

		if(!descValid) {
		  alert('The value should match the pattern \"(xxx) xxx-xxxx\"');
		  textfeild.focus();
	  	  return false;
		}
		
		return true;
}

function CheckNumber(textfeild){

		if(textfeild.value == null || textfeild.value=="")
		{
			//alert('Please enter '+textfeild.name);
			return false;
		}
			
	    var descValid = textfeild.value.search(/[^0-9]/);
	
		if(descValid != -1)
		{
		  alert('Please provide valid value for '+textfeild.name);
			
		  textfeild.focus();
	  	  return false;
		} 
		return true;
}

function checkEmail(emailfield)
{

	var first = emailfield.value.indexOf('@');
	if(first == -1 )
	{
		alert("email should have @ ")
		emailfield.focus();
		return false;
	}
	var next = emailfield.value.indexOf('@',first+1);
	if(next != -1 )
	{
		alert("email should have only one @ ")
		emailfield.focus();
		return false;
	}
	
	return true;

}
function checkNull(txtBox,labelName)
{		
	var myval =txtBox.value;		
	var len = myval.length;
	var validKW = myval.search(/\s*([0-9A-Za-z])\s*/);	
	if(!(txtBox.disabled))
	{
	    if (myval=="" || validKW == -1)
	    {
		    alert("Please enter the required values for "+labelName);
			txtBox.value="";
			txtBox.focus();	
		    return false;
	    }
    }
    return true;
}


function isBeforeTodaysDate(date) {
	
	var todaysDate = new Date();
	var temp1 = new Date(todaysDate.getMonth()+1+"/"+todaysDate.getDate()+"/"+todaysDate.getFullYear());	
	var starttime = temp1.getTime();
	
	var givenDate = date.split("/");	
	var temp2 = new Date(givenDate[1]+"/"+givenDate[0]+"/"+givenDate[2]);	
	var endtime = temp2.getTime();

	if(endtime<starttime){
		return true;
	}
	else if(endtime>=starttime){
		return false;
	}
} 

function isDateAfter(endDate, startDate) {
	
	var date1 = startDate.value.split("/");	
	var dd1 = date1[0];
	var mm1 = date1[1];
	var year1 = date1[2];
	
	var date2 = endDate.value.split("/");	
	var dd2 = date2[0];
	var mm2 = date2[1];
	var year2 = date2[2];
	
	var dateAfterFlag = true;
	
	if (year1 > year2){
	  dateAfterFlag = false;
	}else if (year1 == year2){
		if (mm1 > mm2)
			dateAfterFlag = false;
		else if (mm1 == mm2)
		{
			if(dd1 > dd2)
				dateAfterFlag = false;
		}
	}	
	return dateAfterFlag;
} 

function compareDate(date,date1)
{
	//var date = new Date();
	//var date1 = new Date(strDate);
	if (date1.getYear()>date.getYear()){
	  return true;
	}else if (date1.getYear()==date.getYear()){
		if (date1.getMonth()>date.getMonth())
			return true;
		else if (date1.getMonth()==date.getMonth())
		{
			if(date1.getDate()>date.getDate() || date1.getDate()==date.getDate())
				return true;
			else
				return false;
		}
        else 
			return false;
	}else
		return false;
}

function IsValidTime(timeStr) {

		var timePat = /^(\d{2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;
		
		var matchArray = timeStr.match(timePat);
				if (matchArray == null)
						{
						alert("Time is not in a valid format.(Use HH:MM Format)");
						return false;
						}
		hour = matchArray[1];
		minute = matchArray[2];
		second = matchArray[4];
		ampm = matchArray[6];
		
		if (second=="") { second = null; }
		if (ampm=="") { ampm = null }
		
			if (hour < 0  || hour > 23) 
					{
					alert("Hour must be between 0 and 23");
					return false;
					}
				//if  (hour > 12 && ampm != null) {
				//alert("You can't specify AM or PM for military time.");
				//return false;
				//} 
		
				if (minute<0 || minute > 59) {
				alert ("Minute must be between 0 and 59.");
				return false;
				}
		
				if (second != null && (second < 0 || second > 59)) {
				alert ("Second must be between 0 and 59.");
				return false;
				}
		
		return true;
}

function timeCheck(start,end){
		var timePat = /^(\d{2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;
		var matchArray1 = start.match(timePat);
		var matchArray2 = end.match(timePat);
	
		hour1 = matchArray1[1];
		minute1 = matchArray1[2];
		second1 = matchArray1[4];
		ampm1 = matchArray1[6];
	
		hour2 = matchArray2[1];
		minute2 = matchArray2[2];
		second2 = matchArray2[4];
		ampm2 = matchArray2[6];
	
		if (hour1<hour2)
			return true;
		else if (hour1==hour2)
		{
			if(minute1<minute2)
				return true;
			else if(minute1==minute2)
		       return false;
			else 
				return false;
		}else
		return false;
}

function validateZIP(field)
			{
		var valid = "0123456789-";
		var hyphencount = 0;

			if (field.length!=5 && field.length!=10) {
			alert("Please enter your 5 digit or 5 digit+4 zip code.");
			return false;
			}
		for (var i=0; i < field.length; i++) {
			temp = "" + field.substring(i, i+1);
			if (temp == "-") hyphencount++;
				if (valid.indexOf(temp) == "-1") {
				alert("Invalid characters in your zip code.  Please try again.");
				return false;
				}
			if ((hyphencount > 1) || ((field.length==10) && ""+field.charAt(5)!="-")) {
			alert("The hyphen character should be used with a properly formatted 5 digit+four zip code, like '12345-6789'.   Please try again.");
			return false;
			   }
			}
		return true;
		}
		
function emailCheck(email) {

		var invalidChars = '\/\'\\ ";:?`~#$&*<>,+=%!()[]\{\}^|';
		for (i=0; i<invalidChars.length; i++) {
		   if (email.indexOf(invalidChars.charAt(i),0) > -1) {
		      return false;
		   }
		}
		for (i=0; i<email.length; i++) {
		   if (email.charCodeAt(i)>127) {
		      return false;
		   }
		}
		
		var atPos = email.indexOf('@',0);
		if (atPos == -1 || atPos == 0 || email.indexOf('@', atPos + 1) > - 1 
		      || email.indexOf('@.',0) != -1 || email.indexOf('.@',0) != -1
		      || email.indexOf('..',0) != -1 || email.indexOf('.',0) == 0 ) {
		   return false;
		}
		
		var suffix = email.substring(email.lastIndexOf('.')+1);
		if (suffix.length != 2 && suffix != 'com'  && suffix != 'COM' && suffix != 'net' && suffix != 'NET' 
		         && suffix != 'org' && suffix != 'ORG' && suffix != 'edu' && suffix != 'EDU' 
		         && suffix != 'int' && suffix != 'mil' && suffix != 'INT' && suffix != 'MIL' 
		         && suffix != 'gov' & suffix != 'arpa' && suffix != 'GOV' & suffix != 'ARPA' 
		         && suffix != 'biz' && suffix != 'aero' && suffix != 'BIZ' && suffix != 'AERO' 
		         && suffix != 'name' && suffix != 'coop' && suffix != 'NAME' && suffix != 'COOP' 
		         && suffix != 'info' && suffix != 'pro'  && suffix != 'INFO' && suffix != 'PRO' 
		         && suffix != 'museum' && suffix != 'MUSEUM') {
		   return false;
		}
		return true;
} // end of emailCheck()		

function isYahooMailID(emailfield) {

	if(emailfield.indexOf('@yahoo') != -1 ) {
	
		var checkYahooID = confirm(" We do not accept Yahoo mail ID. Do you want to know why?");

		if(checkYahooID) {
		
			window.open('http://resources.ipott.com/blog/2008/02/05/who-is-the-bigger-looser-yahoo-users-2/')

		} else {									
		
			alert("Please provide a mail ID other than yahoo")
		}
		
		return false;
	}
	return true;
}

function check_url(address)
{
  var invalidChars = '\/\'\\ ";:?`#$&*<>,+=%!()[]\{\}^|';
  var count = 0;

  for (i=0; i<address.length; i++)
  {
	if(address.charAt(i) == '.')
	{
		count++; 
	}

	if(count > 5)
	{
		return false;
	}
  }
 
 
 if((address.indexOf ('http') != -1) )
  {
	  if(address.indexOf ('http://') == -1 || address.indexOf ('http://') != 0)
	  {
		  return false;
	  }
	  else
	  {
			var suffix = address.substring(address.indexOf('/')+2)
			for (i=0; i<invalidChars.length; i++)
				{
				   if (suffix.indexOf(invalidChars.charAt(i),0) > -1) {
					  return false;
				   }
				}
				for (i=0; i<suffix.length; i++)
				{
				   if (suffix.charCodeAt(i)>127)
				   {
					  return false;
				   }
				}
	  }
	   	  
	  if((address.indexOf ('www') != -1))
	  {
			if(address.indexOf ('http://www.') == -1)
		    {
				return false;
			}
			else
		    {
				var suffix = address.substring(address.indexOf('.')+1)
						
				if((suffix.indexOf ('.') == -1))
				  {
					  return false;
				  }
				 
       				for (i=0; i<invalidChars.length; i++)
					{
					   if (suffix.indexOf(invalidChars.charAt(i),0) > -1) {
						  return false;
					   }
					}
					for (i=0; i<suffix.length; i++)
					{
					   if (suffix.charCodeAt(i)>127)
					   {
						  return false;
					   }
					}
			}
	  }
  }
  
  else
  {
		if ((address.indexOf ('www') == -1))
		{
			return false;
		} 
		else
	    {
			if(address.indexOf ('www.') == -1 || address.indexOf ('www.') != 0)
			{
				return false;
			}
			else
			{
				var suffix = address.substring(address.indexOf('.')+1)
									
				for (i=0; i<invalidChars.length; i++)
				{
				   if (suffix.indexOf(invalidChars.charAt(i),0) > -1) {
					  return false;
				   }
				}
				for (i=0; i<suffix.length; i++)
				{
				   if (suffix.charCodeAt(i)>127)
				   {
					  return false;
				   }
				}
				
				if((suffix.indexOf ('.') == -1))
				{
					  return false;
				}
			}
		}
  }

  if((address.indexOf ('.') == -1))
  {
	  return false;
  }
  
  if((address.indexOf ('..') != -1))
  {
	  return false;
  }

  if(1)
  {
	  var len = address.length-1;
	  var n = address.lastIndexOf ('.');
	  if( n == len)
	      return false;
  }

  var suffix1 = address.substring(address.lastIndexOf('.')+1)
				
 if(suffix1.length == 1 || suffix1.length > 4)
 {
	return false;
 }

  return true;
}// end of check_url()


function checkTextAreaLen(txtArea, maxLength, labelName)
{
	if (txtArea.value.length > maxLength)
	{
		alert(labelName+" can not contain more than "+maxLength+" characters");
		txtArea.focus();
		
		return false;
	}
	
	return true;
} // end of checkTextAreaLen()

function handleChooseVenue(formObj,contextURL, cityCode, cityName, stateCode){	
	
	if(formObj.state_code.options[formObj.state_code.selectedIndex].text == "Other" || formObj.state_code.options[formObj.state_code.selectedIndex].value == "Other") {	

		formObj.state_name.disabled = false;		
		
		var len=formObj.city_code.options.length;		
		for (var i=len-1;i>-1;i--) {
			if (formObj.city_code.options[i].text != "Other")
				formObj.city_code.options[i] = null;
		}	
		formObj.city_name.disabled = false;		
		
		formObj.state_name.value = "";
		formObj.city_name.value = "";
		
		return;
	} else {
		formObj.state_name.disabled = true;
		formObj.state_name.value = "";
		formObj.city_name.value = "";
	}


	if(formObj.state_code.options[formObj.state_code.selectedIndex].value == stateCode) {
		
		len=formObj.city_code.options.length;
		formObj.city_code.options[len] = new Option(cityName,cityCode);
		
	}
	
	if(formObj.city_code.options[formObj.city_code.selectedIndex].text == "Other" || formObj.city_code.options[formObj.city_code.selectedIndex].value == "Other")	 {
		formObj.city_name.disabled = false;
	} else
		formObj.city_name.disabled = true;	
}	


