var INVALID_CHARS = new String("\\ / : * ? \" ' < > | & ?");

function MM_findObj(n, d) { //v4.01
	var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function IsBlank(obj){return (GetValue(obj)=="");}

function IsBlankOpt(obj1, isReq){
	if(!isReq){return false;}
	return IsBlank(obj1);
}

function IsEqual(obj1, obj2){return (GetValue(obj1)==GetValue(obj2));}

function IsEmail(obj, allowBlank){
	var s = new String(GetValue(obj));
    var i = 1;
    var sLength = s.length;
    
    if (sLength==0) {return (allowBlank) ? true : false;} //check length
    while ((i < sLength) && (s.charAt(i) != "@")) {i++;} //find @
	
	if ((i >= sLength) || (s.charAt(i) != "@")) {return false;}
    else {i += 2;}
    
    while ((i < sLength) && (s.charAt(i) != ".")) {i++;}//find .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) {return false;}
	else {return true;}   
}

function IsPhone(obj, allowBlank){
	var s = new String(GetValue(obj));
	var sLength = s.length;
	
	if (sLength==0) {return (allowBlank) ? true : false;} //check length
	var dIdx=0
	
	dIdx = s.indexOf("-", dIdx);
	if(dIdx!=3){return false;}
	
	dIdx = s.indexOf("-", dIdx+1);
	if(dIdx!=7){return false;}
	
	if(s.substr(0, 12).replace(/\d/gi, "").replace(/-/gi,"")!=""){return false;}
	return true;
}

function IsSoc(obj, allowBlank){
	var s = new String(GetValue(obj));
	var sLength = s.length;
	
	if (sLength==0) {return (allowBlank) ? true : false;} //check length
	if (sLength!=11) {return false;}
	var dIdx=0
	
	dIdx = s.indexOf("-", dIdx);
	if(dIdx!=3){return false;}
	
	dIdx = s.indexOf("-", dIdx+1);
	if(dIdx!=7){return false;}

	return true;
}

function IsChecked(obj){
	if(!obj){return null;}
	return obj.checked;
}

function IsNumeric(strString, allowBlank){
	if (strString.length == 0){return (allowBlank) ? true : false;}
	
	var strValidChars = "0123456789.,-$";
	var strChar;
	var blnResult = true;

	//  test strString consists of valid characters listed above
	for (i = 0; i < strString.length && blnResult == true; i++) {
	   strChar = strString.charAt(i);
	   if (strValidChars.indexOf(strChar) == -1){blnResult = false;}
	}
	return blnResult;
}

function HasBadChar(obj){
	var val = new String(GetValue(obj));
	for(i=0;i<val.length;i++){
		if(INVALID_CHARS.indexOf(val.charAt(i))!=-1 && val.charAt(i)!=" "){return true;}
	}
	return false;
}

function GetValue(obj){
	var val = null;
	
	if(obj){
		switch(obj.tagName){
			case "SELECT":
				val = (obj.selectedIndex!=-1) ? obj.options[obj.selectedIndex].value : "";
				break;
			
			case "RADIO":
				if(obj.length){
					for(i=0;i<obj.length;i++){
						if(obj[i].checked){val=obj[i].value;break;}
					}
					if(val==null){val="";}
				}
				else{
					val = obj.value;
				}
				break;
					
			default:
				val = obj.value;
				break;
		}
	}
	return val;
}


//====================================================================================================
//DATE DROP DOWN FUNCTIONS
//====================================================================================================
function DaysInMonth(month, year){
  var DaysInMonth = 31;
  if (month == 4 || month == 6 || month == 9 || month == 11)	{DaysInMonth = 30;}
  if (month == 2 && (year/4) != Math.floor(year/4))				{DaysInMonth = 28;}
  if (month == 2 && (year/4) == Math.floor(year/4))				{DaysInMonth = 29;}
  return DaysInMonth;
}

function ChangeMonth(nme){
	var oMonth	= document.getElementById(nme + "_mm");
	var oDay	= document.getElementById(nme + "_dd");
	var oYear	= document.getElementById(nme + "_yy");
	
	if(oMonth && oDay && oYear){
	
		var oCurrMonth	= GetValue(oMonth);
		var oCurrDay	= GetValue(oDay);
		var oCurrYear	= GetValue(oYear);

		var CurrDaysInMonth	= DaysInMonth(oCurrMonth, oCurrYear);
		var CurrSelectDays	= oDay.length;
	
		if(CurrSelectDays > CurrDaysInMonth){
			for(i=0;i<(CurrSelectDays - CurrDaysInMonth)-1;i++){oDay.options[oDay.options.length - 1] = null;}
		}
	
		if(CurrSelectDays < CurrDaysInMonth){
			for(i=0;i<(CurrDaysInMonth - CurrSelectDays);i++){oDay.add(new Option(oDay.options.length + 1));}
		}
	
		if(oCurrDay > CurrDaysInMonth){oCurrDay = CurrDaysInMonth;}
	
		oDay.selectedIndex = oCurrDay - 1;
	}
}

function SetDate(nme, dte){
	var oMonth	= document.getElementById(nme + "_mm");
	var oDay	= document.getElementById(nme + "_dd");
	var oYear	= document.getElementById(nme + "_yy");
	
	if(oMonth && oDay && oYear){
		var oSetDate = new Date(dte)
	
		var oCurrMonth	= oSetDate.getMonth() + 1;
		var oCurrDay	= oSetDate.getDate() ;
		var oCurrYear	= oSetDate.getYear();
	
		var CurrDaysInMonth	= DaysInMonth(oCurrMonth, oCurrYear);
		var CurrSelectDays	= oDay.length;
		
		if(CurrSelectDays > CurrDaysInMonth){
			for(i=0;i<(CurrSelectDays - CurrDaysInMonth);i++){oDay.options[oDay.options.length - 1] = null;}
		}
	
		if(CurrSelectDays < CurrDaysInMonth){
			for(i=0;i<(CurrDaysInMonth - CurrSelectDays);i++){oDay.add(new Option(oDay.options.length + 1));}
		}
	
		if(oCurrDay > CurrDaysInMonth){oCurrDay = CurrDaysInMonth;}
	
		if(oDay.options[0].value==""){oDay.selectedIndex = oCurrDay;}
		else{oDay.selectedIndex = oCurrDay - 1;}
	}
}

function ClearSelection(objID){
	var obj = document.getElementById(objID);
	if(obj){obj.selectedIndex=0;obj.selectedIndex=-1;}
}
