function isEnter(e) {			   
	var key;
	// if IE
	if (window.event) {
		// catch the event
		e = window.event;
		key = e.keyCode;
	}
	else if(e.which) {
		// netscape
		key = e.which;
	}
	// if key pressed is enter key
	if (key == '13') 
		return true;
	return false;
}

function validateString(fieldName, field, minLength) {
	value = trim(field);
	if (isHiddenField(field)) {
		return true;
	}
	var len = value.length;
	if (minLength > -1 && len < minLength) {
		alert ("Error: " + fieldName + " must be at least " + minLength + " characters.");
		field.focus();
		return false;
	}
	return true;
}

function validateDouble(fieldName, field, mandatory, minValue, maxValue) {
	value = trim(field);
	if (isHiddenField(field)) {
		return true;
	}
	var len = value.length;
	if (mandatory || len > 0) {
		if (len == 0) {
			alert ("Error: " + fieldName + " can not be left blank.");
			field.focus();
			return false;
		}
		if (!isDouble(value)) {
			alert ("Error: " + fieldName + " can have only numbers.");
			field.focus();
			return false;
		}
		floatVal = parseFloat(value);
		if (floatVal < minValue) {
			alert ("Error: " + fieldName + " can not be less than " + minValue + ".");
			field.focus();
			return false;
		}
		if (floatVal > maxValue) {
			alert ("Error: " + fieldName + " can not be more than " + maxValue + ".");
			field.focus();
			return false;
		}
	}
	return true;
}

function validateInt(fieldName, field, mandatory, minValue, maxValue) {
	value = trim(field);
	if (isHiddenField(field)) {
		return true;
	}
	var len = value.length;
	if (mandatory || len > 0) {
		if (len == 0) {
			alert ("Error: " + fieldName + " can not be left blank.");
			field.focus();
			return false;
		}
		if (!isInteger(value)) {
			alert ("Error: " + fieldName + " can have only integers.");
			field.focus();
			return false;
		}
		intVal = parseInt(value);
		if (intVal < minValue) {
			alert ("Error: " + fieldName + " can not be less than " + minValue + ".");
			field.focus();
			return false;
		}
		if (intVal > maxValue) {
			alert ("Error: " + fieldName + " can not be more than " + maxValue + ".");
			field.focus();
			return false;
		}
	}
	return true;
}

function trim(field, sString) {
	/*
	sString = field.value;
	while (sString.substring(0,1) == ' ') {
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ') {
		sString = sString.substring(0,sString.length-1);
	}
	*/
	sString = trimString(field.value)
	field.value = sString;
	return sString;
}

function trimString(sString) {
	while (sString.substring(0,1) == ' ') {
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ') {
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

function isHiddenField(field) {
	if (field.type == 'hidden') {
		return true;
	}
	return false
}

function validateDate(fieldName, field, mandatory) {
	value = trim(field);
	if (isHiddenField(field)) {
		return true;
	}
	var len = value.length;
	if (mandatory || len > 0)	{
		if (len == 0) {
			alert ("Error: " + fieldName + " can not be left blank.");
			field.focus();
			return false;
		}
		if (!isDate(fieldName, value)) {
			field.focus();
			return false;
		}
	}
	return true;
}

var dtCh= "-";
var minYear=1900;
var maxYear=2100;

function isDate(fieldName, dtStr){
	var daysInMonth = DaysArray(12);
	var pos1 = dtStr.indexOf(dtCh);
	var pos2 = dtStr.indexOf(dtCh,pos1+1);
	var strDay = dtStr.substring(0,pos1);
	var strMonth = 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);
	errorMessage = "Error : Invalid value entered in " + fieldName + " field.\n";
	if (pos1 == -1 || pos2 == -1){
		alert(errorMessage + "The date format should be : dd-mm-yyyy.");
		return false;
	}
	if (strYear.length != 4 || year==0 || year < minYear || year > maxYear) {
		alert(errorMessage + "Please enter a valid 4 digit year between "+minYear+" and "+maxYear + ".");
		return false;
	}
	if (strMonth.length < 1 || month < 1 || month > 12) {
		alert(errorMessage + "Please enter a valid month.");
		return false;
	}
	if (strDay.length < 1 || day < 1 || day > 31) {
		alert(errorMessage + "Please enter a valid date.");
		return false;
	}
	daysInSelectedMonth = daysInMonth[month];
	if (month == 2) {
		daysInSelectedMonth = daysInFebruary(year);
	}
	if (day > daysInSelectedMonth) {
		alert(errorMessage + "Date can not be more than " + daysInSelectedMonth + " for the chosen month & year.");
		return false;
	}
	if (dtStr.indexOf(dtCh,pos2+1) != -1 || isInteger(stripCharsInBag(dtStr, dtCh)) == false) {
		alert(errorMessage + "Please enter a valid date.");
		return false;
	}
	return true;
}

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    return true;
}

function isDouble(s){
	var i;
	var periods = 0;
    for (i = 0; i < s.length; i++){
        // Check that current character is number or period.
        var c = s.charAt(i);
		//alert (i + "-" + c)
		if (c == '-' && i == 0) {
		}
		else {
			if (c == '.') {
				periods++;
				if (periods > 1) {
					return false;
				}
			}
			else {
				if (((c < "0") || (c > "9"))) {
					return false;
				}
			}
		}
    }
    return true;
}

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 findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}