// JavaScript Document
var m_sMessage = "";
var Locale = null;

function isDate(s) {
	var cDay, cMonth, cYear, aDate, lLeap;
	aDate = s.split("-"); 
	if (aDate.length!=3 ){
		aDate = s.split("/");
		if (aDate.length!=3 ) return false; 
	}
	cDay = aDate[1]; cMonth = aDate[0]; cYear = aDate[2];
	if ( ( isNaN(cDay) || isNaN(parseInt(cDay, 10)) ) || 
		( isNaN(cMonth) || isNaN(parseInt(cMonth, 10)) ) || 
		( isNaN(cYear) || isNaN(parseInt(cYear, 10)) ) ) return (false); 
	cDay = parseInt(cDay, 10); 
	cMonth = parseInt(cMonth, 10); 
	cYear = parseInt(cYear, 10); 
	if (cYear < 1900 || cYear > 9999)
		if (aDate[2].length != 2) return false;
	if ( ( cYear % 4.0 == 0 ) && ( cYear % 100.0 != 0 ) || (cYear % 400.0 == 0) ) lLeap = 1; else lLeap = 0;
	if ( cMonth < 1 || cMonth > 12 ) { return (false); } 
	if ( cMonth == 1 || cMonth == 3 || cMonth == 5 || cMonth == 7 || cMonth == 8 || cMonth == 10 || cMonth == 12 ) nMaxDay = 31;
	else if ( cMonth == 2 ) nMaxDay = 28;
	else if ( cMonth == 2 && lLeap ) nMaxDay = 29;
	else if ( cMonth == 4 || cMonth == 6 || cMonth == 9 || cMonth == 11 ) nMaxDay = 30; 
	if ( cDay < 1 || cDay > nMaxDay ) return false;
	if ( aDate[2].length == 2 && cYear < 70 ) cYear += 2000;
	return true; 
}
function DateDiff(interval, startdate, enddate){
   var d, m, s, e, i;
   if (interval == 's') m = 1000;
   else if (interval == 'n') m = 1000 * 60;
   else if (interval == 'h') m = 1000 * 60 * 60;
   else if (interval == 'd') m = 1000 * 60 * 60 * 24;
   else return(0);
   if (m > 0){
   		s = Date.parse(startdate);
   		e = Date.parse(enddate);
   		d = (Math.round((e-s)/m));
   		return(d); 
   }
   return(0);
}
function frmValidate(e, eValType, eRequired, allowWildCard, errMsg, msgSpan, isValid){
	var isOk = true, eVal = e.value;
	if (eRequired == null) eRequired = true;
	if (isEmpty(eVal)==false){
		if (eValType==6) isOk = isEmail(eVal);
		else if (eValType==1 || eValType==11) isOk = isDate(eVal);
		else if (eValType==2) isOk = isNumeric(eVal, allowWildCard);
		else if (eValType==5) isOk = isAlphaNumeric(eVal, allowWildCard);
		else if (eValType==4) isOk = isAlpha(eVal, allowWildCard);
		else if (eValType==3) isOk = isDecNumeric(eVal, allowWildCard);
		else isOk = !isEmpty(eVal);
	}else
		if (eRequired) isOk = false;
	if (isValid != null && isOk) isOk = isValid;
	if (!isOk){
		e.style.backgroundColor = '#990000';
		e.style.color = '#FFFFFF';
		if (errMsg != null){
			if (m_sMessage.length>0)
				m_sMessage = m_sMessage + "\n\n" + errMsg;
			else
				m_sMessage = errMsg;
		}
		if (msgSpan != null) msgSpan.innerHTML = errMsg;
		
		return false;
	} else {
		if (msgSpan!=null) msgSpan.innerHTML = '';
		return true;
	}
}
function clearMsg(){
	m_sMessage = "";
}
function rTrim(e){
	var eVal = e.value;
	if (e.type=='text' || e.type=='password'){
		while (''+eVal.charAt(0)==' ')
			eVal = eVal.substring(1,eVal.length);
		e.value = eVal;
	}
	return eVal;
}
function errNotify(errMsg, clearMsg){
	if (errMsg!=null)
		m_sMessage = m_sMessage + "\n\n" + errMsg;
	alert(m_sMessage);
	if (clearMsg) m_sMessage = ""
}
function isEmpty(s){
	return ((s == null) || (s.length == 0))
}
function isEmail(Expression){
	if (!Expression) return false;
	if (Expression.indexOf('@')==-1 || Expression.length < 6 || Expression.indexOf('.')==-1) return false;
	else return true;
}
function getToday(offset){
	var d = new Date();
	return (d.getMonth() + 1) + '/' + (d.getDate() + offset) + '/' + d.getFullYear();
}
function validate(s, valid) {
	var temp;
	if (s){
		for (var i=0; i<s.length; i++) {
			temp = "" + s.substring(i, i+1);
			if (valid.indexOf(temp) == -1) return false;
		}
	}
	return true;
}
function numOnly(){
	if ((event.keyCode < 45 || event.keyCode > 57) && event.keyCode != 37) event.returnValue = false;
	return false;
}
function isDigit (c, allowWildcard){
	return (((c >= '0') && (c <= '9')) || (c == '%' && allowWildcard))
}
function isAlpha (c, allowWildcard){
	return (((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) || (c == '%' && allowWildcard))
}
function isAlphaNumeric(s, allowWildcard){
	for (var i = 0; i < s.length; i++){   
		// Check that current character is number.
		var c = s.charAt(i);
		if (!isDigit(c, allowWildcard) && !isAlpha(c, allowWildcard)) return false;
	}
	return true;
}
function isNumeric(s, allowWildcard){
	if (allowWildcard)
		return validate(s,"0123456789%");
	else
		return validate(s,"0123456789");
} 
function isDecNumeric(s, allowWildcard){   
    var seenDecimalPoint = false;
    var seenNegative = false;

    if (isEmpty(s)) return false;

    if (s.charAt(0) == '-'){
		i = 1;
		seenNegative = true;
	} else i = 0;

	for (; i < s.length; i++){   
		// Check that current character is number.
		var c = s.charAt(i);

		if ((c == '.') && !seenDecimalPoint) seenDecimalPoint = true;
		else if (!isDigit(c, allowWildcard)) return false;
	}

	if ((seenNegative && seenDecimalPoint && s.length == 2) || ((seenNegative || seenDecimalPoint) && s.length == 1)) return false;

    return true;
}
function stripChars(s, bag){
	var i;
	var returnString = "";
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}
function isBetween(s, min, max){
	var i;
	i =  parseFloat(stripChars(s, '%'));
	if (isNaN(i)) i = 0;
	return (i >= min && i <= max);
}
function setValue(Expression, TruePart, FalsePart){
	if (Expression) return TruePart;
	else return FalsePart;
}

function autoTab(input, len, e) {
	var isNN = (navigator.appName.indexOf("Netscape")!=-1);
	var keyCode = (isNN) ? e.which : e.keyCode; 
	var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
	if(input.value.length >= len && !containsElement(filter,keyCode)) {
	input.value = input.value.slice(0, len);
	input.form[(getIndex(input)+1) % input.form.length].focus();
}
function containsElement(arr, ele) {
	var found = false, index = 0;
	while(!found && index < arr.length)
	if(arr[index] == ele)
	found = true;
	else
	index++;
	return found;
}
function getIndex(input) {
	var index = -1, i = 0, found = false;
	while (i < input.form.length && index == -1)
		if (input.form[i] == input) index = i;
		else i++;
		return index;
	}
	return true;
}
function CompareDates(e, date1, date2, type, errMsg) {
	if(Date.parse(date1) > Date.parse(date2)) {
		e.className = 'input_textr';
		if (m_sMessage.length>0)
			m_sMessage = m_sMessage + "\n\n" + errMsg;
		else
			m_sMessage = errMsg;
		return false;
	} else
		return true;
}
function mBtnOver(e, Msg){
	e.style.color = '#D6D3B5';
	self.status = Msg;
	return true;
}
function mBtnOut(e){
	e.style.color = '#FFFFFF';
	self.status = ' ';
	return true;
}

function textCounter(field, countfield, maxlimit) {
	if (field.value.length > maxlimit) // if too long...trim it!
	field.value = field.value.substring(0, maxlimit);
	// otherwise, update 'characters left' counter
	else 
	countfield.value = maxlimit - field.value.length;
}
