var error = true;
var valid = {
  username_min: 5,
  username_max: 20,
  username: /(?!^[\.\_]*$)(?!^[\x21-\x40\x5B-\x60\x7B-\x7E]*$)^([a-z0-9]{5,20})$/i,
  username_inv: /^[a-z0-9\.\_]*$/i,
  password_min: 5,
  password_max: 20,
  password: /(?!^[a-z]*$)(?!^[\x21-\x40\x5B-\x60\x7B-\x7E]*$)^([\x21-\x7E]{5,20})$/i,
  password_inv: /^[\x21-\x7E]*$/,
  email_max: 256,
  email : /^(\w+(?:\.\w+)*)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i,
  uname: /(?!^[\.\_]*$)(?!^[\x21-\x40\x5B-\x60\x7B-\x7E]*$)^([a-z0-9\.\ +]{3,20})$/i,
  exp: /^[0-9\.]+$/i,
  datev: /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/,
  expG: 40,
  expGA: 11,
  onlyText: /^[a-zA-Z]+$/i,
  text: /^[a-zA-Z0-9\ \_\-\,\.\&\(\)\?\@\"\'\/\\]+$/i,
  text_nick: /^[a-zA-Z0-9]+$/i,
  alpha: /^[a-zA-Z0-9\-\*\&\+\_\.\,\/ ]+$/i,
  num: /^[0-9]+$/i,
  zipcode: /^\d{5}$|^\d{5}-\d{4}$/i,
  zipcode1: /^\d{4}$/i,
  num: /^[0-9]+$/i,
  num_dec: /^[0-9]{1,}(\.\d{1,3})?$/i, // ? for optional
  name: /^[a-zA-Z\ \.]+$/i,
  URL: /^(http:\/\/)?(www\.)?([A-Za-z0-9\.-]{3,}\.[A-Za-z]{3})/,
  cell: /^\d{10,15}$/i,
  phone: /^\(?[0-9]\d{2}[\)]?\s?\d{3}[\s\-]?\d{4}$/i,
  federalID1: /^[0-9]{2}$/i,
  federalID2: /^[0-9]{7}$/i,
  confirm: /^(\d|,| )*\d*$/i,
  numberCount: /^([1-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)?$/i,
  end:0
};

function isValidConfirm(value){
	return !!valid.confirm.exec(value);
}
function isValidDate(value){ 
	return !!valid.datev.exec(value);
}
function isValidFileType(filename,types) {
  if (!types){
	 return true; 
  }
  var ext = types.split(",");
  var filenameL = filename.toLowerCase();
  for (var i=0; i<ext.length; i++) {
    var re = new RegExp('^.*\.'+ext[i]+'$');
    if (filenameL.match(re)){
	 return true;
    }	
  }
  return false;
}
function isExp(value){
	return !!valid.exp.exec(value);
}
function isOnlyText(value){
	return !!valid.onlyText.exec(value);
}
function isText(value){
	return !!valid.text.exec(value);
}
function isName(value){
	return !!valid.name.exec(value);
}
function isNumber(value){
   return !!valid.num.exec(value);
}
function isDecimal(value){
   return !!valid.num_dec.exec(value);
}
function isSpecialSymbol(value){ 
	return !!valid.text.exec(value);
}
function isSpecialSymbolNickname(value){
	return !!valid.text_nick.exec(value); 
}
function isEmail(value){
	return !!valid.email.exec(value);
}
function isZipcode(value){
	return !!valid.zipcode.exec(value);
}
function isZipcode1(value){
	return !!valid.zipcode1.exec(value);
}
function isURL(value){
	return !!valid.URL.exec(value);
}

function isPhone(value){
	return !!valid.phone.exec(value);
}

function isFederalID1(value){
	return !!valid.federalID1.exec(value);
}
function isFederalID2(value){
	return !!valid.federalID2.exec(value);
}
function numberCount(value){
	return !!valid.numberCount.exec(value);
}
function isCheckDate(val){
	var d = new Date();
	var dd=''; var dm='';
	if(d.getDate() < 10){
		 dd = '0'+d.getDate();
	}
	else{
		 dd = d.getDate();
	}
	dm = parseInt(d.getMonth())+1;
	if(d.getMonth() < 10){
		 dm = '0'+dm;
	}
	else{
		 dm = dm;
	}
	var dt = dm+"/"+dd+"/"+d.getYear();
	if(dt <= val){
	   return true;
	} else{
		return false;
	}
}
function isTimeCheck(TimeValue,dateval){ 
	   var strTime = new String(TimeValue);
	   arr_time = strTime.split(" ");
	   if(arr_time[1]=="pm" || arr_time[1]=="PM"){
	      strHour = new String(arr_time[0]);
	      arr_hour = strHour.split(":");
	      if(arr_hour[0] != 12){
		      hour = parseInt(arr_hour[0]) + parseInt(12);
	      }else{
		      hour = arr_hour[0];
	      }
	      minutes = arr_hour[1];
	      seconds = 0;
	   }else if(arr_time[1]=="am" || arr_time[1]=="AM"){
		  strHour = new String(arr_time[0]);
	      	  arr_hour = strHour.split(":");
	          hour = arr_hour[0];
	          minutes = arr_hour[1];
	          seconds = 0;
	   }
	   str_time = hour+":"+minutes+":"+seconds;
	   var d = new Date();
	   var objDate = Date.parse(dateval+" "+str_time);  //alert(objDate) 
	   
	   var cur_str_time = d.getHours()+":"+d.getMinutes()+":00"; //alert(cur_str_time)
	   var cur_date = parseInt(d.getMonth())+1+"/"+d.getDate()+"/"+d.getFullYear(); //alert(cur_date) 
	   var objDate_cur = Date.parse(cur_date+" "+cur_str_time); //alert(objDate_cur);
	   if(objDate_cur > objDate){
		 return false;
	   }	
	   else{
		 return true;
	   }
   	   

}
function fillingsamevalue(obj, prefix){
if(prefix == ""){
	prefix = "";
}	
	var objval = new Array();
	objval = getFieldsObjectRefill('address',prefix+'phy_');
	var objval1 = new Array();
	objval1 = getFieldsObjectRefill('address',prefix+'mal_');
	if(obj.checked == true){
		for(var i=0; i<objval.length; i++){
			objval1[i].value = objval[i].value;
		}
	}
	else{
		for(var i=0; i<objval.length; i++){
			objval1[i].value = "";
		}
	}
}
function disableOnSameValue(obj, prefix){
if(prefix == ""){
	prefix = "";
}
	var objval = new Array();
	objval = getFieldsObjectRefill('address',prefix+'phy_');
	var objval1 = new Array();
	objval1 = getFieldsObjectRefill('address',prefix+'mal_');
	if(obj.checked == true){
		for(var i=0; i<objval.length; i++){
			objval1[i].disabled = true;
			objval1[i].readOnly = true;
			objval1[i].style.backgroundColor = "#F1F1F1";
			objval1[i].value="";
			if(document.getElementById("id_error_"+objval1[i].name)){
				document.getElementById("id_error_"+objval1[i].name).innerHTML = "";
			}
		}
	}
	else{
		for(var i=0; i<objval.length; i++){
			objval1[i].disabled = false;
			objval1[i].readOnly = false;
			objval1[i].style.backgroundColor = "#FFFFFF";
		}
	}
}
function isCell(value){
	return !!valid.phone.exec(value);
}

function isValidPhone(value1,value2,value3,divID){ 
   if(value1=="" && value2=="" && value3==""){
      error=false; setMsgText(divID,'s_phone');
   }
   else if(value1.length!=3 || !isNumber(value1)){ error =false;setMsgText(divID,'in_contact');}
   else if(value2.length!=3 || !isNumber(value2)){ error =false;setMsgText(divID,'in_contact');}
   else if(value3.length!=4 || !isNumber(value3)){ error =false;setMsgText(divID,'in_contact');}
   else if((value1!="" && value2!="" && value3!="" &&(value1.length!=3 || value2.length!=3 || value3.length!=4) && (!isNumber(value1) || !isNumber(value2) || !isNumber(value3))) ){
      error =false;setMsgText(divID,'in_contact');
   }
   else if((value1!="" && value2!="" && value3!="" &&(value1.length==3 && value2.length==3 && value3.length==4)&& (!isNumber(value1) && !isNumber(value2) && !isNumber(value3)))){
      document.getElementById(divID).innerHTML="";
   }
   else{
      document.getElementById(divID).innerHTML="";
   }
}

function isValidFax(value1,value2,value3,divID){
   if(value1=="" && value2=="" && value3==""){
      document.getElementById(divID).innerHTML="";
   }
   else if(value1.length!=3 || !isNumber(value1)){ error =false;setMsgText(divID,'in_contact');}
   else if(value2.length!=3 || !isNumber(value2)){ error =false;setMsgText(divID,'in_contact');}
   else if(value3.length!=4 || !isNumber(value3)){ error =false;setMsgText(divID,'in_contact');}
   else if((value1!="" && value2!="" && value3!="" &&(value1.length!=3 || value2.length!=3 || value3.length!=4) && (!isNumber(value1) || !isNumber(value2) || !isNumber(value3))) ){
      error =false;setMsgText(divID,'in_contact');
   }
   else if((value1!="" && value2!="" && value3!="" &&(value1.length==3 && value2.length==3&&value3.length==4)&& (!isNumber(value1) && !isNumber(value2) && !isNumber(value3)))){
      document.getElementById(divID).innerHTML="";
   }
   else{
      document.getElementById(divID).innerHTML="";
   }
}

function isValidZipCode(value1,value2,divID){
   if(value1.trim()==""){
      error=false; setMsgText(divID,'zip');
   }
   else if(!isNumber(value1)){
      error=false;setMsgText(divID,'zipcode');
   }
   else if(value1.trim()!="" && value1.length!=5){
      error=false;setMsgText(divID,'zipcode');
   }
   else if(value2.trim()!="" && value2.length!=4){
      error=false;setMsgText(divID,'zipcode');
   }
   else if(value2.trim()!="" && !isNumber(value2)){
      error=false;setMsgText(divID,'zipcode');
   }
   else{
      document.getElementById(divID).innerHTML="";
   }
}
function checkMaxSelected (select, maxSelected,divid) { 
  var selectedOptions = 0;
  error = true;
  document.getElementById(divid).innerHTML = "";
  for (var i = 0; i < select.options.length; i++) {
	  if ('---'==select.options[i].value.substr(0,3)){
			if(select.options[i].selected == true){
				select.options[i].selected=false;
				//error = false;
			}
   	  }
	  if(select.options[i].selected){
			selectedOptions++;
			if (selectedOptions > maxSelected) error = false;
	  }
  }
	if(!error){
		setMsgText(divid,'max_sel');
	}
	return error;
}
// to trim extra white spaces in start and end of the text
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}