(function($) {
	$.extend($.fn, {
		validate: function( options ) {
			for( key in options ) 
			{ 
				for( innerkey in options[key] ) {							
					if(innerkey == "required") {								
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;						
						if(val=='') {
							alert(options[key][innerkey]); 	
							if(key != "userid")
							{	document.getElementById(key).focus(); }
							return false;
						}
					}
					if(innerkey == "requiredNospace") {								
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;						
						
					}
					if(innerkey == "requiredImg") {								
						var val = document.getElementById(key).value;
										
						if(val=='') {
							alert(options[key][innerkey]); 	
							document.getElementById(key).focus()
							return false;
						}
					}
					if(innerkey == "requiredFckContent") {						
					
						var value = FCKeditorAPI.GetInstance(key).GetHTML();
						if(value=='')
						{
							alert(options[key][innerkey]) ;
							//document.getElementById(key).focus();
							return false;
						}
					}//check fck editor content
					// added By Pritam Dulam
					if(innerkey == "maxlenFCK") {						
					
							var api=FCKeditorAPI.GetInstance(key);
							var html = api.GetHTML(); 
							var regEx = /<[^>]*>/gi; 
							var plain_text = html.replace(regEx, ""); 
							if(plain_text.length > 135)
							{
								alert(options[key][innerkey]) ;
								return false;
							}
					}
					
					if(innerkey == "validate_available") {						
					
						var value = document.getElementById(key).value;
						if(value !='')
						{
							if(document.getElementById('is_selected').value == '' )
							{
								alert(options[key][innerkey]) ;
								document.getElementById(key).focus();
								return false;
							}
							
						}
					}//check for available fields
					if(innerkey == "email") {	 			
						var val = document.getElementById(key).value; 
						val = jQuery.trim(val);
						var objRegExp=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;	
						//var objRegExp=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;	
						if(val!= '')
						{
							if(objRegExp.test(val)==false){
								alert(options[key][innerkey]);
								document.getElementById(key).select();
								//document.getElementById(key).focus();
								return false;
							}
						}
					}//email validation
					
					if(innerkey == "Noemail") {	 			
						var val = document.getElementById(key).value; 
						val = jQuery.trim(val);
						var objRegExp=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;	
						//var objRegExp=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;	
						if(val!= '')
						{
							if(objRegExp.test(val)==true){
								alert(options[key][innerkey]);
								document.getElementById(key).select();
								//document.getElementById(key).focus();
								return false;
							}
						}
					}//email validation
					
					if(innerkey == "emailben") {						
						var val = document.getElementById(key).value;
						if(val!="")
						{
							//var objRegExp=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;	
							var objRegExp = /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
							if(objRegExp.test(val)==false){	
								alert(options[key][innerkey]);
								document.getElementById(key).select();
								document.getElementById(key).focus();
								return false;
							}
						}
					}//email validation
					// Modified
					if(innerkey == "Notreqemail") {						
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						var objRegExp=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;	
						if(val != '')
						{
							if(objRegExp.test(val)==false){
								alert(options[key][innerkey]);
								document.getElementById(key).select();
								document.getElementById(key).focus();
								return false;
							}
						}
					}//email validationif not comulory
					if(innerkey == "imageValid") {						
						var val = document.getElementById(key).value;
						if(val != '')
						{
							var imageExt = val.split(".") ;
				
							if( (imageExt[imageExt.length - 1].toLowerCase() != "jpg"  && imageExt[imageExt.length - 1].toLowerCase() != "gif"  && imageExt[imageExt.length - 1].toLowerCase() != "jpeg" && imageExt[imageExt.length - 1].toLowerCase() != "png" ))
							{			  
								alert(options[key][innerkey]);
								document.getElementById(key).select();
								document.getElementById(key).focus();
								return false ;
							}
						}
					}//email validationif not comulory
					
					if(innerkey == "phpvalidation") {
													
								var phpval = document.getElementById(key).value;
								
								if(phpval.indexOf(".") == -1 || phpval.indexOf(".") == 0 )
								{
									alert(options[key][innerkey]);
									return false ;
								}
								
								/*alert(phpval.indexOf("."));
									if((phpval.indexOf(".") == -1) || (phpval.indexOf(".") < 0) || (phpval.indexOf(".") == 0))
										{
										alert(options[key][innerkey]); 
										return false ;
										}	*/
							   }
					if(innerkey == "phpValid") {						
						var val = document.getElementById(key).value;
						if(val != '')
						{
							var imageExt = val.split(".") ;
				
							if( (imageExt[imageExt.length - 1].toLowerCase() != "php"  ))
							{			  
								alert(options[key][innerkey]);
								//document.getElementById(key).select();
								//document.getElementById(key).focus();
								return false ;
							}
						}
					}
					if(innerkey == "numbers") {						
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						var charpos = val.search("[^0-9]"); 
						if(document.getElementById(key).value.length > 0 &&  charpos >= 0)
						{
							alert(options[key][innerkey]);
							document.getElementById(key).select();
							//document.getElementById(key).focus();
							return false;
						}
					}//only numbers
					
					if(innerkey == "Climit") {						
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						var charpos = val.search("[^0-9]"); 
						if(val != 'unlimited')
						{
							if(document.getElementById(key).value.length > 0 &&  charpos >= 0)
							{
								alert(options[key][innerkey]);
								document.getElementById(key).select();
								//document.getElementById(key).focus();
								return false;
							}
						}
					}//only numbers
					
					if(innerkey == "numbers_max") {						
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						var charpos = val.search("[^0-9]"); 
						//alert(document.getElementById(key).value); return false;
						if(document.getElementById(key).value > 1440)
						{
							alert(options[key][innerkey]);
							document.getElementById(key).select();
							document.getElementById(key).focus();
							return false;
						}
					}//only numbers					

					if(innerkey == "numbers_min") {						
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						var charpos = val.search("[^0-9]"); 
						//alert(document.getElementById(key).value); return false;
						if(document.getElementById(key).value <= 0)
						{
							alert(options[key][innerkey]);
							document.getElementById(key).select();
							document.getElementById(key).focus();
							return false;
						}
					}//only numbers	

					if(innerkey == "numbersaccount") {						
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						var charpos = val.search("[^0-9.]"); 
						if(document.getElementById(key).value.length > 0 &&  charpos >= 0)
						{
							alert(options[key][innerkey]);
							document.getElementById(key).select();
							document.getElementById(key).focus();
							return false;
						}
					}//only numbers
					if(innerkey == "notzero")
					{						
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						
						if(parseInt(val) <= 0)
						{
								alert(options[key][innerkey]);
								document.getElementById(key).select();
								document.getElementById(key).focus();
							return false;
						}
					}//only numbers
					if(innerkey == "ValidateAmount") {						
						var entamt = document.getElementById(key).value; 
						var total = document.getElementById("total_bal").value; 
						
						if(parseInt(entamt) <= 0)
						{
								alert("Please enter amount greater than zero.");
								document.getElementById(key).select();
								document.getElementById(key).focus();
							return false;
						}
						if(parseInt(entamt) > parseInt(total))
						{
								alert(options[key][innerkey]);
								document.getElementById(key).select();
								document.getElementById(key).focus();
							return false;
						}
					}//validate amount
					if(innerkey == "redCal") {						
						//var charpos = document.getElementById(key).value.search("[^0-9]"); 
						if( parseInt(document.getElementById(key).value) >=  parseInt(document.getElementById('amountOld').value))
						{
							alert(options[key][innerkey]);
							document.getElementById(key).select();
							document.getElementById(key).focus();
							return false;
						}
						else
						{
							document.getElementById('txtAmount').value = parseInt(document.getElementById('amountOld').value) - parseInt(document.getElementById(key).value) ;
						}
					}//only numbers
					if(innerkey == "stringlength") {	
					
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						if(val.length < 4 || val.length > 12)
						{
							alert(options[key][innerkey]) ; 	
							document.getElementById(key).focus();
							return false;
						}
					}//string length of the zip
					if(innerkey == "routingno") {	
					
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						
						if(val.length != 9)
						{
							alert(options[key][innerkey]) ; 	
							document.getElementById(key).focus();
							return false;
						}
					}//routing no validatio
					if(innerkey == "NotRequiredPhone") {	
					
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						
						if(val !='')
						{
							var charpos = document.getElementById(key).value.search("[^0-9-]"); 
							if(document.getElementById(key).value.length < 10 )
							{
								alert(options[key][innerkey]);
								document.getElementById(key).select();
								document.getElementById(key).focus();
								return false;
							}
							if(document.getElementById(key).value.length > 0 &&  charpos >= 0)
							{
								alert(options[key][innerkey]);
								document.getElementById(key).select();
								document.getElementById(key).focus();
								return false;
							}
						}
					}//not required phone
					
					if(innerkey == "routingNo") {	
					
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						
						if(val !='')
						{
							var charpos = document.getElementById(key).value.search("[^0-9]"); 
							
							if(document.getElementById(key).value.length != 9 || charpos >= 0 )
							{
								alert(options[key][innerkey]);
								document.getElementById(key).select();
								document.getElementById(key).focus();
								return false;
							}
						}
					}//not required phone
					
					if(innerkey == "NotrequiredPass") {	
					
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						
						if(val !='')
						{
								var sizechar = 4;
						  if ((val==null)||(val==""))
						  { 
							 alert(options[key][innerkey]);
							 document.getElementById(key).focus();
							 return false; 
						  } 
						   sizechar=val.length;
						   var valid="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
						   for (var i=0; i<sizechar; i++) 
						   { 
								   if (valid.indexOf(val.charAt(i)) < 0) 
								   { 
											alert(options[key][innerkey]);
											document.getElementById(key).focus();
											return false;
								   } 
							} 
								var alphaCount = 0; 
								var numCount = 0; 
								var num_valid="0123456789"; 
	
								 for (var i=0; i<sizechar; i++) 
								 { 
									if(num_valid.indexOf(val.charAt(i)) < 0) 
									{ 
										  numCount++ 
									} 
								 } 
								
								if(numCount==val.length)
								{ 
								  alert(options[key][innerkey]);
								  document.getElementById(key).focus();
								  return false;
								 } 
	
							   var alph_valid="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 
								for (var i=0; i<sizechar; i++) 
								{ 
									if (alph_valid.indexOf(val.charAt(i)) < 0) 
									{ 
										 alphaCount++ ;
									 } 
								} 
								if(alphaCount==val.length)
								{ 
									 alert(options[key][innerkey]);
									 document.getElementById(key).focus();
									 return false;
								 }
						}
					}//not required phone
					if(innerkey == "phone") {					
						
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						var charpos = val.search("[^0-9-.]"); 
						if(document.getElementById(key).value!="")
						{
							if(document.getElementById(key).value.length < 10 )
							{
								alert(options[key][innerkey]);
								document.getElementById(key).select();
								document.getElementById(key).focus();
								return false;
							}
							if(document.getElementById(key).value.length > 0 &&  charpos >= 0)
							{
								alert(options[key][innerkey]);
								document.getElementById(key).select();
								document.getElementById(key).focus();
								return false;
							}
						}
					}//Phone validation
					if(innerkey == "zipValid") {						
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						var charpos = val.search("[^0-9]"); 
						
						if(document.getElementById(key).value.length > 0 &&  charpos >= 0)
						{
							alert(options[key][innerkey]);
							document.getElementById(key).select();
							document.getElementById(key).focus();
							return false;
						}
					}//Phone validation
					if(innerkey == "ziplength")
					{
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						
						if(val.length != 5 )
						{
							alert(options[key][innerkey]);
							document.getElementById(key).select();
							document.getElementById(key).focus();
							return false;
						}
					}//zip length
					if(innerkey == "phonelength")
					{
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						
						if(val.length != 10 )
						{
							alert(options[key][innerkey]);
							document.getElementById(key).select();
							document.getElementById(key).focus();
							return false;
						}
					}//check length of the phone
					if(innerkey == "checkFloat")
					{
							var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						var charpos = val.search("[^0-9.]"); 
							if(document.getElementById(key).value.length > 0 &&  charpos >= 0)
							{
								alert(options[key][innerkey]);
								document.getElementById(key).select();
								//document.getElementById(key).focus();
								return false;
							}
					}//check value for float no
					if(innerkey == "checkRadio")
					{		
							var charpos = $("input[name="+key+"]:checked").val();
							//alert('hi'+charpos);
						   if(charpos == undefined)
						   {
							   	alert(options[key][innerkey]);
								return false;
						   }
					}//check value for float no
					if(innerkey == "validbirthdate")
					{
						//var valid=document.getElementById(key).value.search("[^0-9]");
						var birth_date = document.getElementById(key).value;
						var checkDate = new Date(birth_date); 
						var datenow = new Date( ) ; 
						var dateString = ( datenow.getMonth() + 1 ) + "-" + datenow.getDate() + "-" + datenow.getFullYear() ;
						
						
						var dateStr = new Date( dateString ) ; 
						
							//check valid date						
								var dtCh= "-";
								var minYear=1900;
								var maxYear=2100;
								var daysInMonth = DaysArray(12)
								var pos1=birth_date.indexOf(dtCh)
								var pos2=birth_date.indexOf(dtCh,pos1+1)
								var strMonth=birth_date.substring(0,pos1)
								var strDay=birth_date.substring(pos1+1,pos2)
								var strYear=birth_date.substring(pos2+1)
								strYr=strYear;
								
								if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
								if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
								for (var i = 1; i <= 3; i++) {
									if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
								}
								month=parseInt(strMonth)
								day=parseInt(strDay)
								year=parseInt(strYr)
								if (pos1==-1 || pos2==-1){
									alert(" The date format should be : mm-dd-yyyy")
									return false
								}
								if (strMonth.length<1 || month<1 || month>12){
									alert(" Please enter a valid month")
									return false
								}
								if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
									alert(" Please enter a valid day")
									return false
								}
								if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
									alert(" Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
									return false
								}
								var dob  = /(0[1-9]|1[012])+\-(0[1-9]|[12][0-9]|3[01])+\-(19|20)\d\d/;
								if (document.getElementById(key).value.match(dob)) {
								  
								} else {alert(options[key][innerkey]);
									document.getElementById(key).select();
									document.getElementById(key).focus();
									return false;								 
								};

					}//birthdate validation
					
					if(innerkey == "lessthantodaydate")
					{
						var birth_date = document.getElementById(key).value;
						
						
						var month = birth_date.substring(0,2);
						var days = birth_date.substring(3,5);
						var year = birth_date.substring(6,11);
						var bdate = month+"/"+days+"/"+year;
						var checkDate = new Date(bdate); 
						
						var datenow = new Date( ) ; 
						var dateString =  ( datenow.getMonth() + 1 ) + "/" + datenow.getDate() + "/" + datenow.getFullYear() ;
						var dateStr = new Date( dateString ) ; 
						
						
						 if(checkDate >= dateStr )
						  {
							alert(options[key][innerkey]);
							document.getElementById(key).focus();
							return false;
						 }
					}//birthday date should be less than todays date*/
					
					if(innerkey == "greaterThanTodaysDate")
					{
							
						var contract_date = document.getElementById(key).value;
						
						var month = contract_date.substring(0,2);
						var days = contract_date.substring(3,5);
						var year = contract_date.substring(6,11);
						var bdate = month+"/"+days+"/"+year;
						var checkDate = new Date(bdate); 
						
						var datenow = new Date( ) ; 
						var dateString =  ( datenow.getMonth() + 1 ) + "/" + datenow.getDate() + "/" + datenow.getFullYear() ;
						var dateStr = new Date( dateString ) ; 						
						
						 if(checkDate < dateStr )
						  {
							alert(options[key][innerkey]);
							document.getElementById(key).focus();
							return false;
						 }
					}//birthday date should be less than todays date*/
					// Name validation
					if(innerkey == "alphanm") {								
						var charpos = document.getElementById(key).value.search("[^A-Za-z0-9 ]"); 
						var objRegExp=/^(A-Za-z0-9' )$/i;	
						if(document.getElementById(key).value.length > 0 &&  charpos >= 0) 
              			{
							alert(options[key][innerkey]);
							document.getElementById(key).select();
							document.getElementById(key).focus();
							return false;
						}
					}//Phone validation
					if(innerkey == "alphanmNospaces") {								
						var charpos = document.getElementById(key).value.search("[^A-Za-z0-9]"); 
						var objRegExp=/^(A-Za-z0-9' )$/i;	
						if(document.getElementById(key).value.length > 0 &&  charpos >= 0) 
              			{
							alert(options[key][innerkey]);
							document.getElementById(key).select();
							document.getElementById(key).focus();
							return false;
						}
					}
					
					if(innerkey == "alpha") {						
						var charpos = document.getElementById(key).value.search("[^A-Za-z.'\" $&%* ]"); 
						
						var objRegExp=/^(A-Za-z.)$/i;	
						if(document.getElementById(key).value.length > 0 &&  charpos >= 0) 
              			{
							alert(options[key][innerkey]);
							document.getElementById(key).select();
							//document.getElementById(key).focus();
							return false;
						}
					}//Phone validation
					// aphabetic with no spaces
					if(innerkey == "alphaNoSpaces") {						
						var charpos = document.getElementById(key).value.search("[^A-Za-z]"); 
						var objRegExp=/^(A-Za-z)$/i;	
						if(document.getElementById(key).value.length > 0 &&  charpos >= 0) 
              			{
							alert(options[key][innerkey]);
							document.getElementById(key).select();
							document.getElementById(key).focus();
							return false;
						}
					}
					if(innerkey == "alphanumeric") {						
						var charpos = document.getElementById(key).value.search("[^A-Za-z0-9,.$& ]"); 
						var objRegExp=/^(A-Za-z.)$/i;	
						if(document.getElementById(key).value.length > 0 &&  charpos >= 0) 
              			{
							alert(options[key][innerkey]);
							document.getElementById(key).select();
							document.getElementById(key).focus();
							return false;
						}
					}//Phone validation
					if(innerkey == "alphanumericonly") {						
						var charpos = document.getElementById(key).value.search("[^A-Za-z0-9]"); 
						var objRegExp=/^(A-Za-z.)$/i;	
						if(document.getElementById(key).value.length > 0 &&  charpos >= 0) 
              			{
							alert(options[key][innerkey]);
							document.getElementById(key).select();
							document.getElementById(key).focus();
							return false;
						}
					}
					if(innerkey == "numericonly") {						
						var charpos = document.getElementById(key).value.search("[^0-9]"); 
						var objRegExp=/^(A-Za-z.)$/i;	
						if(document.getElementById(key).value.length > 0 &&  charpos >= 0) 
              			{
							alert(options[key][innerkey]);
							document.getElementById(key).select();
							document.getElementById(key).focus();
							return false;
						}
					}
					if(innerkey == "alphanumericslash") {						
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						var charpos = val.search("[^A-Za-z0-9'_/ ]"); 
						//svar objRegExp=/^(A-Za-z.)$/i;	
						if(document.getElementById(key).value.length > 0 &&  charpos >= 0) 
              			{
							alert(options[key][innerkey]);
							document.getElementById(key).select();
							document.getElementById(key).focus();
							return false;
						}
					}//alphanumericslash validation
					if(innerkey == "usernamelength")
					{		
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						
						if(val.length < 6 )
						{
							alert(options[key][innerkey]) ; 	
							document.getElementById(key).focus();
							return false;
						}
					}//username lenght
					
					if(innerkey == "passwordalphanuemric")
					{		
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						
	
					 	var sizechar = 4;
						  if ((val==null)||(val==""))
						  { 
							 alert(options[key][innerkey]);
							 document.getElementById(key).focus();
							 return false; 
						  } 
						   sizechar=val.length;
						   var valid="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
						   for (var i=0; i<sizechar; i++) 
						   { 
								   if (valid.indexOf(val.charAt(i)) < 0) 
								   { 
											alert(options[key][innerkey]);
											document.getElementById(key).focus();
											return false;
								   } 
							} 
								var alphaCount = 0; 
								var numCount = 0;
								var counter = 0;
								var num_valid="0123456789"; 
	
								 for (var i=0; i<sizechar; i++) 
								 { 
									if(num_valid.indexOf(val.charAt(i)) < 0) 
									{ 
										  numCount++ 
									}
									else
									{
									      counter++;	
									}
								 } 
								
								if(numCount==val.length || counter<2)
								{ 
								  alert(options[key][innerkey]);
								  document.getElementById(key).focus();
								  return false;
								 } 
	
							   var alph_valid="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 
								for (var i=0; i<sizechar; i++) 
								{ 
									if (alph_valid.indexOf(val.charAt(i)) < 0) 
									{ 
										 alphaCount++ ;
									 } 
								}
								
								if(alphaCount==val.length)
								{ 
									 alert(options[key][innerkey]);
									 document.getElementById(key).focus();
									 return false;
								 }
					}//password alphanumeric
					
					
					//Umesh
					
					if(innerkey == "lessthangivendate")
					{
						var entered_date = document.getElementById(key).value;
												
						var month = entered_date.substring(0,2);
						var days = entered_date.substring(3,5);
						var year = entered_date.substring(6,11);
						var entered_date = month+"/"+days+"/"+year; 
						var checkDate = new Date(entered_date); 
						
						var objCompare = options[key] ; 
						for( $key in objCompare.lessthangivendate ) {
							var $_key = $key; 
							var compare_date = $("#"+$key).val();
						}
						
						var month = compare_date.substring(0,2);
						var days = compare_date.substring(3,5);
						var year = compare_date.substring(6,11);
						var compare_date = month+"/"+days+"/"+year; 
						var preDate = new Date(compare_date);
											
						  if(checkDate < preDate )
						  {
							alert( objCompare.lessthangivendate[$_key] ) ;
							document.getElementById(key).focus();
							return false;
						  }						 
					}//entered date should be less than given date*/
					
					if(innerkey == "expirydate")
					{
						var entered_date = document.getElementById(key).value;
						
						var temp = entered_date.split('-');
						
						var month = temp[0];
						var year = temp[1];
						
						//var month = entered_date.substring(0,2);
						//var month = entered_date.substring(3,5);
						//var year = entered_date.substring(6,11);
						var entered_date = month+"/"+days+"/"+year; 
						var datenow = new Date( ) ; 
						
						
								//alert(datenow.getMonth());			
						  if((datenow.getMonth()+1) > month || datenow.getFullYear() > year)
						  {
							alert(options[key][innerkey] ) ;
							document.getElementById(key).focus();
							return false;
						  }						 
					}//entered date should be less than given date*/
					
					
					if(innerkey == "timevalidate")
					{
						var entered_time = document.getElementById(key).value.search("[^0-9]");
						var value = document.getElementById(key).value;
						var length=document.getElementById(key).value.length;
						if(entered_time != 0 && length == 5)
						{
							var hours = value.substring(0,2);
							var colon = value.substring(2,3);
							var mins = value.substring(3,5);
							if(hours > 23 || mins > 59 || colon != ':')
							{
								alert(options[key][innerkey]) ;
								document.getElementById(key).focus();
								return false;
							}							
						}
						else {
							alert(options[key][innerkey]) ;
							document.getElementById(key).focus();
							return false;
							}						
					}//time validation
					
					
					if(innerkey == "comparetime")
					{
						var entered_time = document.getElementById(key).value; //alert(entered_time);
												
						var objCompare = options[key] ; 
						for( $key in objCompare.comparetime ) {
							var $_key = $key; //alert("key "+$_key);
							var data = $("#"+$key).val(); //alert("val "+data);
								if($_key=='startdate')
								{
									var month = data.substring(0,2);
									var days = data.substring(3,5);
									var year = data.substring(6,11);
									var entered_date = month+"/"+days+"/"+year; 
									var checkDate = new Date(entered_date); //alert(checkDate);
									checkDate=checkDate+"";
								}
								if($_key=='enddate')
								{
									var month = data.substring(0,2);
									var days = data.substring(3,5);
									var year = data.substring(6,11);
									var compare_date = month+"/"+days+"/"+year; 
									var preDate = new Date(compare_date); //alert(preDate);
									preDate=preDate+"";
								}
								if($_key =='starttime')
								{
									if(checkDate == preDate)
									{
									 var HH = data.substring(0,2);
									 var MM = data.substring(3,5);
									 var mins = HH*60+MM;                 //alert(mins);
									 var HH1=entered_time.substring(0,2);
									 var MM1=entered_time.substring(3,5);
									 var mins1 = HH1*60+MM1;              //alert(mins1);
									 if(mins>100000 || mins1>100000)
									 {
										 mins=mins-100000;
										 mins1=mins1-100000;
									 }
									 if(mins1 < mins)
									 {
										alert( objCompare.comparetime[$_key] ) ;
										return false; 
									 }
									}
								}
						}											 
					}
					
					//End Umesh
					
					//-------------------------------String Length-------------------------------
					
					if(innerkey == "checkLength") 
					{
						var minLength = 6;
						var maxLength = 12;
						var str = document.getElementById(key).value;
						
						if((str.length>=minLength) && (str.length<=maxLength))
						{ 
							//return true;
						}
						else
						{
							alert(options[key][innerkey]); 
							return false; 
						}
					}
					
					
					if(innerkey == "noSpecialChars") 
					{
						
						var str = document.getElementById(key).value;
						var str1=/^([a-zA-Z0-9_\s]*)$/;
						
						
						//alert(document.getElementById(key).value.match("^([a-zA-Z0-9_\s\-]*)$"));
						if (!str1.test(str)) 
						{
							//not a correct username
							alert(options[key][innerkey]); 
							document.getElementById(key).focus();
							return false;
						
						}

					}

					if(innerkey == "noSpecialChars_mychar") 
					{
						
						var str = document.getElementById(key).value;
						if (str.indexOf("|") != -1) 
						{
							//not a correct username
							alert(options[key][innerkey]); 
							document.getElementById(key).focus();
							return false;
						
						}

					}
	
					if(innerkey == "ValidatePassWord") {
						
						var objCompare = options[key] ;
						var upassID = document.getElementById(key).value;
						
							alert(upassID);					
							if(upassID=='') {
								alert(options[key][innerkey]); 	
									document.getElementById(key).focus();
								return false;
							}
						
						
							var sizechar = 6;//length for password 
						 
							//add regex alphanumeric check here 
						    var upass_string = upassID; 
							sizechar=upass_string.length
								//alert(upassID);
								//alert(sizechar);
						
							var valid="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
						
							for (var i=0; i<sizechar; i++) 
							{ 
								if (valid.indexOf(upass_string.charAt(i)) < 0)
								{ 
									alert(options[key][innerkey]); 
									document.getElementById(key).focus();
									return false; 
								} 
							} 
						
							var alphaCount = 0; 
							var numCount = 0; 
							var num_valid="0123456789"; 
						
							for (var i=0; i<sizechar; i++) { 
								if(num_valid.indexOf(upass_string.charAt(i)) < 0) { 
								 numCount++ 
								} 
							} 
							if(numCount==upass_string.length)
							{ 
							   alert(options[key][innerkey]); 
							   document.getElementById(key).focus();
									return false; 
							} 
						
							var alph_valid="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 
						
							for (var i=0; i<sizechar; i++) { 
								if (alph_valid.indexOf(upass_string.charAt(i)) < 0) { 
									alphaCount++ 
								} 
							} 
							if(alphaCount==upass_string.length){ 
							   
							   alert(options[key][innerkey]); 
							   document.getElementById(key).focus();
							   return false; 
							}
							
							
							//return true; 

					}
					
					if(innerkey == "discoutCodeDigit") {
													
						var dis = document.getElementById(key).value;
						var distype = document.getElementById('cmbdistype').value;	
							
						if(distype == "P" || distype == "V" ){
							if(dis.indexOf(".") > 0)
								{
								x = dis.split('.');
								if(isNaN(dis) || (x[1].length > 2)){
								alert(options[key][innerkey]); 	
								return false;
								}
								}	
							}			
					  }
					  if(innerkey == "minmaxCompare") {
													
						var maxVal = parseInt(document.getElementById(key).value);
						var minim = parseInt(document.getElementById('txtMildMinScore').value);	
							
								if(maxVal < minim){
								alert(options[key][innerkey]); 	
								return false;
								}		
					  }
					  
					  if(innerkey == "modminmaxCompare") {
													
						var maxVal = parseInt(document.getElementById(key).value);
						var minim  = parseInt(document.getElementById('txtModerateMinScore').value);	
							
								if(maxVal < minim){
								alert(options[key][innerkey]); 	
								return false;
								}		
					  }
					  
					   if(innerkey == "severeminmaxCompare") {
													
						var maxVal = parseInt(document.getElementById(key).value);
						var minim =  parseInt(document.getElementById('txtSevereMinScore').value);	
							
								if(maxVal < minim){
								alert(options[key][innerkey]); 	
								return false;
								}		
					  }
					  
					  if(innerkey == "scoreRange") {
													
						var maxScoreRange = document.getElementById(key).value;
							
								if(maxScoreRange > 100 || maxScoreRange < 0){
								alert(options[key][innerkey]); 	
								return false;
								}		
					  }
					  if(innerkey == "numberofquest") {
													
						var maxScoreRange = document.getElementById(key).value;
							
								if(maxScoreRange > 200 || maxScoreRange <= 0){
								alert(options[key][innerkey]); 	
								return false;
								}		
					  }
					   if(innerkey == "UpperLimit") {
													
							 var maxScoreRange = document.getElementById(key).value;
							 var maxVal        = document.getElementById('txtQuestions').value;	
							 // Changed the condition of if By Rajesh Gite on 16 th JULY 2011
								if(maxScoreRange > maxVal && maxScoreRange < 0){
								alert(options[key][innerkey]); 	
								return false;
								}		
					  }
					 // added by Rajesh on 16 th JULY 2011
					   if(innerkey == "TestUpperLimit") {
													
							 var maxScoreRange = document.getElementById(key).value;
							 var maxVal = document.getElementById('txtQuestions').value;	
							 
								if(maxScoreRange > maxVal && maxScoreRange < 0){
								alert(options[key][innerkey]); 	
								return false;
								}		
					  }
					  /*-----------------------------------*/
					  if(innerkey == "MildminmaxCompare") {
													
							 var maxScoreRange = parseInt(document.getElementById(key).value);
							 var maxVal 	   = parseInt(document.getElementById('txtMinScore').value);	
							
								var diff = maxVal - maxScoreRange;
								if(diff !=  1){
								alert(options[key][innerkey]); 	
								return false;
								}		
					  }
					  if(innerkey == "MiniScoreTopass") {
													
							 var MinScore = parseInt(document.getElementById(key).value);
							 var noOfquest = parseInt(document.getElementById('txtQuestions').value);	
							
								if(MinScore > noOfquest || MinScore < 0){
								alert(options[key][innerkey]); 	
								return false;
								}		
					  }
					   if(innerkey == "DurationLimit") {
													
							 var TimeinSec = document.getElementById(key).value;
							
								if(parseInt(TimeinSec) > 300 || parseInt(TimeinSec) <= 0){
								alert(options[key][innerkey]); 	
								return false;
								}		
					  }
					  if(innerkey == "MildLimit") {
													
							 var MildMaxScore	 = parseInt(document.getElementById('txtMildMaxScore').value);
							 var QuestionsScore  = parseInt(document.getElementById('txtMinScore').value);	
							 //alert(QuestionsScore);
							 //alert(MildMaxScore);
								if(MildMaxScore > QuestionsScore  || MildMaxScore <= 0){
								alert(options[key][innerkey]); 	
								return false;
								}		
					  }
					   if(innerkey == "modUpperLimit") {
													
							 var maxmodScoreRange = parseInt(document.getElementById(key).value);
							 var maxQuestVal 	  = parseInt(document.getElementById('txtQuestions').value);	
							 
							 
								if(maxmodScoreRange > maxQuestVal || maxmodScoreRange <= 0){
								alert(options[key][innerkey]); 	
								return false;
								}		
					  }
					   if(innerkey == "SevUpperLimit") {
													
							 var ServeMaxScore	 =  parseInt(document.getElementById('txtSevereMinScore').value);
							 var QuestionsScore  =  parseInt(document.getElementById('txtQuestions').value);	
							 
								if(ServeMaxScore != 0){
								alert(options[key][innerkey]); 	
								return false;
								}		
					  }
					  if(innerkey == "checkPrivateRadio")
						{		
								var charpos = $("input[name="+key+"]:checked").val();
								
								//alert('hi'+charpos);
							   if(charpos == undefined)
							   {
									alert(options[key][innerkey]);
									return false;
							   }
							   if(charpos == 'Y')
							   {
									
									var step	 = document.getElementById('step').value;
									
									if(step == 'add'){
										var add_assign_user = document.getElementById('assign_user').value;
										if(add_assign_user == ''){
										alert(options[key][innerkey]);
										return false;
										}
									}
									if(step == 'edit'){
										
										var valid_assign_user = document.getElementById('validate_assign_users').value;
										
										if(valid_assign_user==0)
											{
												var add_assign_user = document.getElementById('assign_user').value;
											
												if(add_assign_user == ''){
												alert(options[key][innerkey]);
												return false;
												}
											}
										else{
												var assign_user_id_wp = document.getElementById('assign_user_id_wp').value;
												if(assign_user_id_wp == ''){
												alert(options[key][innerkey]);
												return false;
												}
									  }
									   var sesion_assign_user = document.getElementById('session_assign_users').value;
									 
									  if(sesion_assign_user==0)
											{
												alert(options[key][innerkey]);
												return false;
											}
									}
							   }
							   
						}
					  if(innerkey == "checkDisLimit") {
													
						var dis = document.getElementById(key).value;
						var distype = document.getElementById('cmbdistype').value;	
							
						if(distype == "P"){
							    if(isNaN(dis) || (dis >= 100)){
								alert(options[key][innerkey]); 	

								return false;
							}			
						  }	
					  }	
					  
					  if(innerkey == "checkDisVal") {
													
						var dis = document.getElementById(key).value;
						var distype = document.getElementById('cmbdistype').value;	
							
						if(distype == "P" || distype == "V" ){
							    if(isNaN(dis) || (dis <= 0)){
								alert(options[key][innerkey]); 	
								return false;
							}			
						  }	
					  }	
					  
					  
					   if(innerkey == "checkCommLimit") {
													
						var comm = document.getElementById(key).value;
						var commtype = document.getElementById('cmbcommtype').value;	
							
						if(commtype == "P"){
							    if(isNaN(comm) || (comm >= 100)){
								alert(options[key][innerkey]); 	
								return false;
							}			
						  }	
					  }
					  
					  
					  if(innerkey == "checkcommVal") {
													
						var comm = document.getElementById(key).value;
						var commtype = document.getElementById('cmbcommtype').value;
							
						if(commtype == "P" || commtype == "V" ){
							    if(isNaN(comm) || (comm <= 0)){
								alert(options[key][innerkey]); 	
								return false;
							}			
						  }	
					  }	
					  
					  
					  if(innerkey == "discoutCommDigit") {
													
						var comm = document.getElementById(key).value;
						var commtype = document.getElementById('cmbcommtype').value;	
							
						if(commtype == "P" || commtype == "V" ){
							if(comm.indexOf(".") > 0)
								{
								x = comm.split('.');
								if(isNaN(comm) || (x[1].length > 2)){
								alert(options[key][innerkey]); 	
								return false;
								}
								}	
							}			
					  }
					  if(innerkey == "checkParCommLimit") {
													
						var parcomm = document.getElementById(key).value;
						var parcommtype = document.getElementById('cmbcommtoparsalestype').value;	
							
						if(parcommtype == "P"){
							    if(isNaN(parcomm) || (parcomm >= 100)){
								alert(options[key][innerkey]); 	
								return false;
							}			
						  }	
					  }
					  
					   if(innerkey == "CommDigit") {
													
						var parcomm 	= document.getElementById(key).value;
						var parcommtype = document.getElementById('cmbcommtoparsalestype').value;	
							
						if(parcommtype == "P" || parcommtype == "V" ){
							if(parcomm.indexOf(".") > 0)
								{
								x = parcomm.split('.');
								if(isNaN(parcomm) || (x[1].length > 2)){
								alert(options[key][innerkey]); 	
								return false;
								}
								}	
							}			
					  }
					  if(innerkey == "checkParentcommVal") {
													
						var parcomm 	= document.getElementById(key).value;
						var parcommtype = document.getElementById('cmbcommtoparsalestype').value;
							
						if(parcommtype == "P" || parcommtype == "V" ){
							    if(isNaN(parcomm) || (parcomm <= 0)){
								alert(options[key][innerkey]); 	
								return false;
							}			
						  }	
					  }	
					if(innerkey == "compareStrings") {
						
						
						var string2 = document.getElementById('new_password').value;
						var string1 = document.getElementById(key).value;
						
						
							if(string1==string2)
							{
								return true
							}
							else
							{
							   alert(options[key][innerkey]); 
							   return false; 
							}

						
						}
						
					if(innerkey == "equalTo") {
						
						
						var string2 = document.getElementById('txtNewPassword').value;
						var string1 = document.getElementById(key).value;
						
						
							if(string1==string2)
							{
								return true
							}
							else
							{
							   alert(options[key][innerkey]); 
							   return false; 
							}

						
						}
					
					if(innerkey == "comparePassword") {
						
						var objCompare = options[key] ; 
						var oFirstPassword = $("#"+key).val();
						
						for( $key in objCompare.comparePassword ) {
							var $_key = $key; 
							var oSecondPassword = $("#"+$key).val();
						}						
						if( oFirstPassword != oSecondPassword ) { 
							alert( objCompare.comparePassword[$_key] ) ; 
							return false;
						}
					}
					
					
					// Added by Atul for Credit Card Number

					if(innerkey == "ccardnumber") {
						
						var val1 = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val1;
						
						var pat = /^\d{13,16}$/;
						alert(val1.test(pat));
						
						if(!val1.test(pat))
						{
							alert(options[key][innerkey]) ; 	
							document.getElementById(key).focus();
							return false;
						}
					}
					//added By pritam dulam
					if(innerkey == "requiredFile") {
						
						var value1 = document.getElementById(key).value;
						//document.getElementById(key).value = val1;
						//alert(value1);
						var ext = value1.split('.').pop().toLowerCase();
						var allow = new Array('pdf');
						if(jQuery.inArray(ext, allow) == -1) {
							alert(options[key][innerkey]) ; 
						   return false
						}else{
							return true
						  } 
					}
					//added By pritam dulam
					if(innerkey == "notRequiredFile") {
						   var value1 = document.getElementById(key).value;
						   //document.getElementById(key).value = val1;
						   //alert(value1);
					
						   if(value1)
						  {
						  var ext = value1.split('.').pop().toLowerCase();
						   var allow = new Array('pdf');
						   if(jQuery.inArray(ext, allow) == -1) {
							alert(options[key][innerkey]) ; 
						   return false
						   }else{
							return true
						  } 
						 }
						 return true;
					  }
					// Added by Atul for CVV Number
					if(innerkey == "cvvnumber") 
					{
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						
						var pat = /^\d{3,4}$/;
						if(!val.test(pat) && val != '')
						{
							alert(options[key][innerkey]) ; 	
							document.getElementById(key).focus();
							return false;
						}
					}
					
					/// Trims the data
					if(innerkey == "applyTrim") 
					{
						var val = document.getElementById(key).value.replace(/^\s+|\s+$/g,"");
						document.getElementById(key).value = val;
						
					}
					
					if(innerkey =='url')
					{ 
								if(document.getElementById(key).value != '')
								{
									if(!(/^((https?|ftp):\/\/)?(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(document.getElementById(key).value)))
									{
										alert(options[key][innerkey]) ;
										document.getElementById(key).focus();
										return false;
									}
								}
					}
					
					
				}
				
			}
			return true;
		}
		
	});
})(jQuery);

function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;                                                          
}
