//prefix a month or day value with a zero
function padout(number) {
  return (number < 10) ? '0' + number : number;
}

//year 2000 compliance; check for 2-digit year
function y2k(number) {
  return (number < 1000) ? number + 1900 : number;
}


function isDate (day,month,year) {
// checks if date passed is valid
// will accept dates in following format:
// isDate(dd,mm,ccyy), or
// isDate(dd,mm) - which defaults to the current year, or
// isDate(dd) - which defaults to the current month and year.
// Note, if passed the month must be between 1 and 12, and the
// year in ccyy format.

    var today = new Date();
    year = ((!year) ? y2k(today.getYear()):year);
    month = ((!month) ? today.getMonth():month-1);
    if (!day) return false
    var test = new Date(year,month,day);
    if ( (y2k(test.getYear()) == year) &&
         (month == test.getMonth()) &&
         (day == test.getDate()) )
        return true;
    else
        return false;
}


//validate start date is less than or equal to end date, dates must be have the format <yyyy-mm-dd>
function validRange(dateVal1, dateVal2) {

    var startday = dateVal1.substring(8,10);
    var startmonth = dateVal1.substring(5,7);
    var startyear = dateVal1.substring(0,4);
    var endday = dateVal2.substring(8,10);
    var endmonth = dateVal2.substring(5,7);
    var endyear = dateVal2.substring(0,4);

    var startdate = new Date(startyear-0,startmonth-1,startday-0);
    var enddate = new Date(endyear-0,endmonth-1,endday-0);

    starttime = Date.UTC(startdate.getYear(),startdate.getMonth(),startdate.getDate(),0,0,0);
    endtime = Date.UTC(enddate.getYear(),enddate.getMonth(),enddate.getDate(),0,0,0);
    
    if (starttime <= endtime) {
        // valid
    } else {
        return false;
    }

    return true;
}

//add a no. of days to a given date
function addDays(myDate,days) {
    return new Date(myDate.getTime() + days*24*60*60*1000);
}

//return no. of days - date difference between end date and start date
//start date (dateVal1) and end date (dateVal2) format should be 'yyyy-mm-dd'
function daysBetween(dateVal2,dateVal1) {
    var startday = dateVal1.substring(8,10);
    var startmonth = dateVal1.substring(5,7);
    var startyear = dateVal1.substring(0,4);
    var endday = dateVal2.substring(8,10);
    var endmonth = dateVal2.substring(5,7);
    var endyear = dateVal2.substring(0,4);

    var startdate = new Date(startyear-0,startmonth-1,startday-0);
    var enddate = new Date(endyear-0,endmonth-1,endday-0);

    var difference = 
        Date.UTC(startdate.getYear(),startdate.getMonth(),startdate.getDate(),0,0,0)
        - Date.UTC(enddate.getYear(),enddate.getMonth(),enddate.getDate(),0,0,0);

    return difference/1000/60/60/24;
}

//checks if each character in the string value passed exists in the check string
//accepts the check string and the string value
function checkVal(validChars, txtVal) {
  for (i=0; i<txtVal.length; i++) {
    tmpchar = txtVal.substring(i, i+1);
    if (validChars.indexOf(tmpchar) < 0) {
  		return false;
    }
  }
  return true;
}


//validates E-mail address format - 3 functions - use isValidEmail
function MM_findObj(n, d) {
        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 && document.getElementById)
            x = document.getElementById(n);

        return x;
}

function tmt_regExpValidator(f, re, eMsg, ru, r) {
        var myErr = "";
        var fv = MM_findObj(f).value;
        var rex = new RegExp(unescape(re));
        var t = eval(ru+rex.test(fv));

        if(r) {
            if(fv.length <= 0 || !t) {
				if (eMsg)
					alert(unescape(eMsg));
				myErr += "eMsg";
            }
        }
        else if(fv.length > 0 && !t) {
			if (eMsg) 
	            alert(unescape(eMsg));
	        myErr += "eMsg";
        }

        return myErr;
}

function isValidEmail(f, re, eMsg, ru, r) {
        err = tmt_regExpValidator(f, re, eMsg, ru, r);

        if(err == "eMsg")
            return false;

        return true;
}
//end validate E-mail address format


//checks if an element exists in an array
function in_array(array,elemento){
	for(var i in array){ if(array[i]==elemento) return true;}
	return false;
}

//strip leading and trailing white spaces in a string
function trim(str) {
	return str.replace(/^\s+|\s+$/g, '');
}
