var dtCh= "/";
var minYear=1800;
var maxYear=2500;
function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary   (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
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 isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.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(strYear.length>0 && strYear.length<=4){
		if(year>0 && year<=9)
			strYear='200'+ year;
		if(year>9 && year<=50)
			strYear='20'+ year;
		if(year>50 && year<=99)
			strYear='19'+ year;
		if(year>99 && year<=999)
			strYear='1'+ year;
	}
	year=parseInt(strYear)
	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
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date !")
		return false
	}
return true
}
function checkDate(dtStr)
{
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.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){
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		return false
	}
return true
}

function sync_cbo(cbo,parentvalue,childvalue,arr){	
	var arrElem;
	cbo.length=1;		
	arr=arr.split('#');		
	if(parentvalue!=""){
		for(var i=0;i<arr.length;i++){ 
			arrElem=arr[i].split('@');			
			if(arrElem[0]==parentvalue){				
				cbo.length++;
				cbo[cbo.length-1].text=arrElem[2];
				cbo[cbo.length-1].value=arrElem[1];
				if (arrElem[1]==childvalue || arrElem[2]==childvalue){					
					//select the default value for cbo child
					cbo[cbo.length-1].selected=true;
				}
			}
		}	
	}
}
function sync_cbo_css(cbo,parentvalue,childvalue,arr,bg,color){	
	var arrElem;
	cbo.length=1;		
	arr=arr.split('#');		
	if(parentvalue!=""){
		for(var i=0;i<arr.length;i++){ 
			arrElem=arr[i].split('@');			
			if(arrElem[0]==parentvalue){				
				cbo.length++;
				var newopt = new Option( arrElem[2] ,arrElem[1]);
				newopt.style.backgroundColor='#FFDDDD';
				newopt.style.color='#000000';
				cbo.options[cbo.length-1] = newopt;				
				if (arrElem[1]==childvalue || arrElem[2]==childvalue){					
					//select the default value for cbo child
					cbo[cbo.length-1].selected=true;
				}
			}
		}	
	}
}
function matchPattern(stringu, paternu){
   var s;
   var re = new RegExp(paternu,"ig");
   var str = stringu;
   var arr = re.exec(str);
	if (RegExp.$1 !=''){
		s=true	
	}
	else{
		s=false
	}
	return(s);
}
function isMail(objEmail){		
	return matchPattern(objEmail.value,'([a-z0-9._]+[@][a-z0-9]+[.][a-z0-9]+)');	
}

function changeSRC(act)
{
if (act==1){
	this.src=this.src.substring(0, (this.src.indexOf('_on.gif'))) + '.gif';
	}
else{
	this.src=this.src.substring(0, (this.src.indexOf('.gif'))) + '_on.gif';
	}

}
function swapImage(imgName,act){
if (act==1){
	imgName.src=imgName.src.substring(0, (imgName.src.indexOf('_on.gif'))) + '.gif';
	}
else{
	imgName.src=imgName.src.substring(0, (imgName.src.indexOf('.gif'))) + '_on.gif';
	}
}
function trim(sString)
{	
	while(sString.indexOf(" ")>=0)
		sString=sString.replace(" ","")	
	return sString
}
function isInteger(sValue)
{
	var digits= new Array(0,1,2,3,4,5,6,7,8,9)
	var i,j,bNonInt,iInc=0
	for(i=0;i<=sValue.length;i++)
	{
		for(j=0;j<=digits.length;j++)
		if(parseInt(sValue.charAt(i))==parseInt(digits[j]))
			iInc++;			
	}	
	if (sValue.length>iInc)
		return false
	else
		return true
}
function isFloat(sValue)
{
	var digits= new Array(0,1,2,3,4,5,6,7,8,9,'.',',')
	var i,j,bNonInt,iInc=-1,iPointNb=0
	for(i=0;i<=sValue.length;i++)
	{
		for(j=0;j<=digits.length;j++)
		if(sValue.charAt(i)!=digits[j])
			continue;
		else
		{
			iInc++;
			if(sValue.charAt(i)=='.'||sValue.charAt(i)==',')
				iPointNb++;
		}
	}
	if (sValue.length>iInc || iPointNb>1)
		return false
	else
		return true
}


function makeWindow2(theName, theTitle ,iWidth, iHeight)
{
	var sWin;
    sWin= window.open(theName,theTitle, "width=" + iWidth + "," + "height=" + iHeight + ",dependent,scrollbars=no,location=no,menubar=no,resizable=no,status=no,top=1,left=1");
    if (sWin.focus != null) sWin.focus();

}
function makeWindow1(theName, theTitle ,iWidth, iHeight)
{
	var sWin;
    sWin= window.open(theName,theTitle, "width=" + iWidth + "," + "height=" + iHeight + ",dependent,scrollbars=yes,location=no,menubar=no,resizable=no,status=no,top=10,left=10");
    if (sWin.focus != null) sWin.focus();

}
function makeWindow(theName, theTitle ,iWidth, iHeight)
{
	var sWin;
    sWin= window.open(theName,theTitle, "width=" + iWidth + "," + "height=" + iHeight + ",dependent,scrollbars=yes,location=no,menubar=no,resizable=no,status=no,top=150,left=200");
    if (sWin.focus != null) sWin.focus();

}
function checkInteger(obj){
	if(obj.value.search(/[^.0-9]/) >= 0)
		obj.value=obj.value.replace(/[^.0-9]*/g, "");
}
function checkDate(obj){
	if(obj.value.search(/[^ \+\-tT\/0-9]/) >= 0)
		obj.value=obj.value.replace(/[^ \+\-tT\/0-9]*/g, "");
}
function checkPhone(obj){
	if(obj.value.search(/[^\-0-9]/) >= 0)
		obj.value=obj.value.replace(/[^\-0-9]*/g, "");
}
function getDateDiff(dt1,dt2)
{
	// Created by:	Melinda on: 08/25/2004
	// Purpose:		to get the difference between 2 variables of date type
	// Parameters:	the 2 string variables in mm/dd/yyyy form
	// Returns:		- a negative number if dt1 < dt2
	//				- 0 if dt1 = dt2
	//				- a positive number if dt1 > dt2
	var arrdt1 = dt1.split("/");
	var arrdt2 = dt2.split("/");
	var y1 = arrdt1[2];		//year part
	var d1 = arrdt1[1];		//day part
	var m1 = arrdt1[0];		//month part
	var y2 = arrdt2[2];		//year part
	var d2 = arrdt2[1];		//day part
	var m2 = arrdt2[0];		//month part
	dt_1 = new Date(m1,d1,y1);
	dt_2 = new Date(m2,d2,y2);
	var dt_diff = dt_1 - dt_2;
	return(dt_diff);
}
// ----------------------------------------
// Created by Melinda on 10/14/2004
// Purpose to be able to return to the calling page if you are in an included page in utils_db
function compute_path(path_css,global_level)
{
	var aux = path_css.split("/");
	//var aux_path = aux[0] + "//" + aux[2] + "/" + aux[3] + "/";
	var aux_path = '';
	for(i=0;i<global_level;i++)
		aux_path += aux[4+i] + "/";
	//alert(aux_path)
	return(aux_path);
}

