// JavaScript Document
function validateForm(frm) {
	for (var cnt=0; cnt < frm.elements.length; cnt++) {
		
		var ctl = frm.elements[cnt];
		
		var value = trim(frm.elements[cnt].value);
		var type = frm.elements[cnt].type.toUpperCase();
		var title = frm.elements[cnt].title;
		
		var req;
		req = frm.elements[cnt].lang;
		
		if (type == "PASSWORD") type = "TEXT";
		/*if (type == "TEXTAREA" || ctl.tagName.toUpperCase() == "SELECT")
			req = frm.elements[cnt].lang;
		else
			req = frm.elements[cnt].accept;*/
		
		if (req != "" && req != null && req != "0") {
			
			req = req.toUpperCase();
			
			//textbox
			if (type == "TEXT" || type == "TEXTAREA") {
				
				//Simple blnak value check											[MUST]
				if (req.indexOf("MUST") != -1) {
					if (value == "" || value == null) {
						alert("Please enter \"" + title + "\"");
						ctl.focus();
						return (false);
					}
					req = req.replace("MUST", "");
				}
				
				//Integer value check												[(MUST)INT]
				if (req.indexOf("INT") != -1 && value != "") {
					if (isNaN(value)) {
						alert("Please enter numeric values for \"" + title + "\"");
						ctl.focus();
						return (false);
					} else if (value.indexOf(".") != -1) {
							alert("");
						alert("Please enter only numeric integer values for \"" + title + "\"\n(Decimal values not accepted)");
						ctl.focus();
						return (false);
					}
					req = req.replace("INT", "");
					
					//Positive Integer Check										[(MUST)INT+]
					if (req.indexOf("+") != -1 && value <= 0) {
						alert("Please enter valid numeric integer values for \"" + title + "\"");
						ctl.focus();
						return (false);
					}
					req = req.replace("+", "");
					
					//Negative Integer Check										[(MUST)INT-]
					if (req.indexOf("-") != -1 && value >= 0) {
						alert("Please enter negative numerics for \"" + title + "\"");
						ctl.focus();
						return (false);
					}
					req = req.replace("-", "");
					

					//Comparison Integer Check										[(MUST)INT<=X]
					if (req.indexOf("<=") != -1 && 
					(value > parseInt( req.substr(req.indexOf("<=")+2, req.length - req.indexOf("<=")) ))
					) {
						alert("Please enter numerics <= " + req.substr(req.indexOf("<=")+2, req.length - req.indexOf("<=")) + " for \"" + title + "\"");
						ctl.focus();
						return (false);
					}
					req = req.replace("<=", "");
					
					//																[(MUST)INT>=X]
					if (req.indexOf(">=") != -1 && 
					(value < parseInt( req.substr(req.indexOf(">=")+2, req.length - req.indexOf(">=")) ))
					) {
						alert("Please enter numerics >= " + req.substr(req.indexOf(">=")+2, req.length - req.indexOf(">=")) + " for \"" + title + "\"");
						ctl.focus();
						return (false);
					}
					req = req.replace(">=", "");
					
					continue;
				}
				
				
				//Double value check												[(MUST)DBL]
				if (req.indexOf("DBL") != -1 && value != "") {
					if (isNaN(value)) {
						alert("Please enter numeric values for \"" + title + "\"");
						ctl.focus();
						return (false);
					}
					req = req.replace("DBL", "");
					
					//Positive Double Check											[(MUST)DBL+]
					if (req.indexOf("+") != -1 && value <= 0) {
						alert("Please enter valid numeric integer for \"" + title + "\"");
						ctl.focus();
						return (false);
					}
					req = req.replace("+", "");
					
					//Negative Double Check											[(MUST)DBL-]
					if (req.indexOf("-") != -1 && value >= 0) {
						alert("Please enter negative numerics for \"" + title + "\"");
						ctl.focus();
						return (false);
					}
					req = req.replace("-", "");
					

					//Comparison Double Check										[(MUST)DBL<=X]
					if (req.indexOf("<=") != -1 && 
					(value > parseFloat( req.substr(req.indexOf("<=")+2, req.length - req.indexOf("<=")) ))
					) {
						alert("Please enter numerics <= " + req.substr(req.indexOf("<=")+2, req.length - req.indexOf("<=")) + " for \"" + title + "\"");
						ctl.focus();
						return (false);
					}
					req = req.replace("<=", "");
					
					//																[(MUST)DBL>=X]
					if (req.indexOf(">=") != -1 && 
					(value < parseFloat( req.substr(req.indexOf(">=")+2, req.length - req.indexOf(">=")) ))
					) {
						alert("Please enter numerics >= " + req.substr(req.indexOf(">=")+2, req.length - req.indexOf(">=")) + " for \"" + title + "\"");
						ctl.focus();
						return (false);

					}
					req = req.replace(">=", "");
					
					continue;
				}
				
				//Characters and string value check
				if (req.indexOf("LEN") != -1) {
					if (req.indexOf("LEN=") != -1 && value.length != parseInt(req.substr(req.indexOf("LEN=")+4)) ) {
						alert("Please enter " + req.substr(req.indexOf("LEN=")+4) + " characters for \"" + title + "\"");
						ctl.focus();
						return (false);
					}
					
					if ( (req.indexOf("LEN<") != -1) && !(value.length <= parseInt(req.substr(req.indexOf("LEN<")+4))) ) {
						alert("Please enter atmost " + req.substr(req.indexOf("LEN<")+4) + " characters for \"" + title + "\"");
						ctl.focus();
						return (false);
					}
					
					if ( (req.indexOf("LEN>") != -1) && !(value.length >= parseInt(req.substr(req.indexOf("LEN>")+4))) ) {
						alert("Please enter atleast " + req.substr(req.indexOf("LEN>")+4) + " characters for \"" + title + "\"");
						ctl.focus();
						return (false);
					}
				}
				
				//18+ Age															[AGE18+]
				if (req == "AGE18+" && value != "") {
					if (isNaN(value)) {
						alert("Please enter numeric values for \"" + title + "\"");
						ctl.focus();
						return (false);
					}
					
					if (value < 18) {
						alert("You should be 18+ to fill this form.");
						ctl.focus();
						return (false);
					}
					
					continue;
				}
				
				//Character Checks
				
				
				//Date Checks														[DATE*][MMDDYY]
				if (req.indexOf("DATE") != -1 && value != "") {
					if (!isDate(value)) {
						alert("Please enter valid date for \"" + title + "\". [Format :mm/dd/yyyy]");
						ctl.focus();
						return (false);
					}
					
					
					if (req.indexOf("FUTURE") != -1) {
						
						var dt = new Date();
						var dtVal = new Date(value);
						
						if (dt > dtVal) {
							alert("Please enter a future date for \"" + title + "\"");
							ctl.focus();
							return (false);
						}
						req = req.replace("FUTURE", "");
					}
					
				}//DATE CHECK
				
				//EMAIL
				if (req.indexOf("EMAIL") != -1 && value != "") {
					if (!isValidEmailStrict(value)) {
						alert("Please enter valid \"" + title + "\"");
						ctl.focus();
						return (false);
					}
					
				}//EMAIL CHECK
				
				//YEAR CHECK
				if (req.indexOf("YEAR") != -1 && value != "") {
					if (isNaN(value)) {
						alert("Please enter valid 4 digit \"" + title + "\"");
						ctl.focus();
						return (false);
					}
					if (value <= 0) {
						alert("Please enter valid 4 digit \"" + title + "\"");
						ctl.focus();
						return (false);
					}
					if (value.length!=4) {
						alert("Please enter valid 4 digit \"" + title + "\"");
						ctl.focus();
						return (false);
					}
					
				}//YEAR CHECK
				
				//MATCH CHECK
				if (req.indexOf("MATCH") != -1) {
					var ctl2 = req.substring(req.indexOf("{")+1, req.indexOf("}"));
					var value2 = eval("document." + frm.name + "." + ctl2.toLowerCase() + ".value");
					
					if (value != value2) {
						alert(title);
						ctl.focus();
						return (false);
					}
				}//MATCH CHECK
			}
			
			/*
			if (type == "PASSWORD") {
				if (value == "" || value == null) {
					alert("Please enter \"" + title + "\"");
					ctl.focus();
					return (false);
				}
			}
			*/
			
			if (ctl == "CHECKBOX") {
				if (ctl.checked == false) {
					alert("Please check \"" + title + "\" to proceed.");
					ctl.focus();
					return (false);
				}
			}
			
			if (ctl.tagName == "SELECT") {
				if (value == "") {
					alert("Please select \"" + title + "\" to proceed.");
					ctl.focus();
					return (false);
				}
			}
			
			//Simple blnak value check											[MUST]
			if (type == "FILE") {
				if (req.indexOf("MUST") != -1) {
					if (value == "" || value == null) {
						alert("Please choose a \"" + title + "\"");
						ctl.focus();
						return (false);
					}
					req = req.replace("MUST", "");
				}
			}//FILE IF
			
		}
	}
	
	return (true);
}





////////////////////////////////////////////////
////////////////STRING FUNCTIONS////////////////
////////////////////////////////////////////////
function trim( str ) {
	// Immediately return if no trimming is needed
	if( (str.charAt(0) != ' ') && (str.charAt(str.length-1) != ' ') ) { return str; }
	// Trim leading spaces
	while( str.charAt(0)  == ' ' ) {
		str = '' + str.substring(1,str.length);
	}
	// Trim trailing spaces
	while( str.charAt(str.length-1)  == ' ' ) {
		str = '' + str.substring(0,str.length-1);
	}
	return str;
}

// Check that an email address is valid based on RFC 821 (?)
function isValidEmail(address) {
	if (address.indexOf('@') < 3) return false;
	var name = address.substring(0, address.indexOf('@'));
	var domain = address.substring(address.indexOf('@') + 1);
	if (name.indexOf('(') != -1 || name.indexOf(')') != -1 || name.indexOf('<') != -1 || name.indexOf('>') != -1 || name.indexOf(',') != -1 || name.indexOf(';') != -1 || name.indexOf(':') != -1 || name.indexOf('\\') != -1 || name.indexOf('"') != -1 || name.indexOf('[') != -1 || name.indexOf(']') != -1 || name.indexOf(' ') != -1) return false;
	if (domain.indexOf('(') != -1 || domain.indexOf(')') != -1 || domain.indexOf('<') != -1 || domain.indexOf('>') != -1 || domain.indexOf(',') != -1 || domain.indexOf(';') != -1 || domain.indexOf(':') != -1 || domain.indexOf('\\') != -1 || domain.indexOf('"') != -1 || domain.indexOf('[') != -1 || domain.indexOf(']') != -1 || domain.indexOf(' ') != -1) return false;
	return true;
}
// Check that an email address has the form something@something.something
// This is a stricter standard than RFC 821 (?) which allows addresses like postmaster@localhost
function isValidEmailStrict(address) {
	if (isValidEmail(address) == false) return false;
	var domain = address.substring(address.indexOf('@') + 1);
	if (domain.indexOf('.') == -1) return false;
	if (domain.indexOf('.') == 0 || domain.indexOf('.') == domain.length - 1) return false;
	return true;
}


////////////////////////////////////////////////
////////////////DATE VALIDATION/////////////////
////////////////////////////////////////////////
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);
    }
    // All characters are numbers.
    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 isDate(dtStr){
	var dtCh= "/";
	var minYear=1900;
	var maxYear=2100;
	
	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){
		//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 openPopup(argURL, argSize) {
	window.open(argURL, "newPopup" + (new Date()).getTime(), "resizable=no," + argSize);
}

function openImagePopup(argURL, argSize) {
	window.open(argURL, "newImagePopup" + (new Date()).getTime(), "resizable=yes,scrollbars=yes," + argSize);
}

function popup(url, w, h) {
	var l = (screen.width / 2) - (w / 2);
	var t = (screen.height / 2) - (h / 2);
	window.open(url, "popup" + (new Date()).getTime(), "resizable=yes, scrollbars=yes, top=" + t + ", left=" + l + ", width=" + w + ", height=" + h);
}

function fix_popup(url, w, h) {
	var l = (screen.width / 2) - (w / 2);
	var t = (screen.height / 2) - (h / 2);
	window.open(url, "popup" + (new Date()).getTime(), "resizable=no, scrollbars=no, top=" + t + ", left=" + l + ", width=" + w + ", height=" + h);
}

function scrollable_popup(url, w, h) {
	var l = (screen.width / 2) - (w / 2);
	var t = (screen.height / 2) - (h / 2);
	window.open(url, "popup" + (new Date()).getTime(), "resizable=no, scrollbars=yes, top=" + t + ", left=" + l + ", width=" + w + ", height=" + h);
}

function resizable_popup(url, w, h) {
	var l = (screen.width / 2) - (w / 2);
	var t = (screen.height / 2) - (h / 2);
	window.open(url, "popup" + (new Date()).getTime(), "resizable=yes, scrollbars=no, top=" + t + ", left=" + l + ", width=" + w + ", height=" + h);
}

function jump2page(url) {
	window.document.location = url;
}

function check_imageext(imgbox, strexts) {
	var ok = true;
	if (imgbox.value != "" && strexts != "") {
		var fl = imgbox.value;
		var aexts = strexts.split(",");
		ok = false;
		for (var i=0; i<aexts.length; i++) {
			if (fl.substring((fl.length-aexts[i].length-1), fl.length) == ("." + aexts[i])) {
				ok = true;
				break;
			}
		}
	}
	
	if (!ok) {
		alert("Allowed image types \"" + strexts + "\"");
		imgbox.focus();
		imgbox.value = "";
		return (false);
	} else
		return (true);
}

function checkext_load_img(fld, img, exts) {
	if (check_imageext(fld, exts)) {
		img.src = fld.value;
		if (img.style.width < img.style.height) {
			img.style.width = "100px";
			img.style.height = "auto";
		} else {
			img.style.height = "100px";
			img.style.width = "auto";
		}
		img.style.border = "1px solid #000000";
	} else {
		img.src = "";
		img.style.width = "0px";
		img.style.border = "0px";
	}
}

function load_img(fld, img) {
	if (fld.value != "") {
		img.src = fld.value;
		img.style.width = "100px";
		img.style.border = "1px solid #000000";
	} else {
		img.src = "";
		img.style.width = "0px";
		img.style.border = "0px";
	}
}

function ask_delete(msg) {
	if (msg == "")
		return confirm("Are you sure you want to delete selected record(s)?");
	else
		return confirm("Are you sure you want to delete selected " + msg + "?");
}

function trimr(str, t) {
	str = trim(str);
	t = trim(t);
	if (t != "") {
		if (str.substr(str.length-t.length, str.length) == t)
			return (str.substr(0, str.length-t.length));
		else
			return (str);
	} else
		return (str);
}

function triml(str, t) {
	str = trim(str);
	t = trim(t);
	if (t != "") {
		if (str.substr(0, t.length) == t)
			return (str.substr(t.length, str.length));
		else
			return (str);
	} else
		return (trim(str));
}

function trimfx(str, t) {
	if (t != "")
		return (triml(trimr(str, t), t));
	else
		return (trim(str));
}

function check_all(cb) {
	var frm = cb.form;
	var nm = cb.name.substring(0, cb.name.indexOf("[")+1);
	var len = nm.length;
	var fcb;
	var cnt_cb = 0, cnt_chk = 0;
	var check_all_cb = false;
	
	for (var i=0; i<frm.elements.length; i++) {
		var fld = frm.elements[i];
		if (fld.type.toUpperCase() == "CHECKBOX") {
			if (fld.name.substr(0, len) == nm) {
				
				if (check_all_cb) {
					fld.checked = cb.checked;
					continue;
				}
				
				if (cnt_cb == 0) {
					if (fld == cb)
						check_all_cb = true;
					fcb = fld;
					cnt_cb++;
				} else {
					cnt_cb++;
					if (fld.checked)
						cnt_chk++;
				}
			}
		}
	}
	
	if (!check_all_cb)
		if (cnt_chk == (cnt_cb-1))
			fcb.checked = true;
		else
			fcb.checked = false;
}

function is_any_checked(frm, cb, str) {
	var len = cb.length;
	var fcb = 0;
	
	for (var i=0; i<frm.elements.length; i++) {
		var fld = frm.elements[i];
		if (fld.type.toUpperCase() == "CHECKBOX")
			if (fld.name.substr(0, len) == cb) {
				if (fcb>0 && frm.elements[i].checked)
					return (confirm("Are you sure you want to delete selected " + str + "(s)?"));
				fcb++;
			}
	}
	alert("Please select a " + str + " checkbox to delete");
	return (false);
}

function check_all1(frm, cb, bln) {
	for (var i=0; i<frm.elements.length; i++) {
		var fld = frm.elements[i];
		if (fld.type.toUpperCase() == "CHECKBOX")
			if (fld.name == (cb+"[]"))
				fld.checked = bln;
	}
}


//Disable right mouse click Script
//By Maximus (maximus@nsimail.com) w/ mods by DynamicDrive
//For full source code, visit http://www.dynamicdrive.com

var message = "Copyrighted content";

var isNav4, isIE4;
if (parseInt(navigator.appVersion.charAt(0)) >= 4) {
	isNav4 = (navigator.appName == "Netscape") ? 1 : 0;
	isIE4 = (navigator.appName.indexOf("Microsoft") != -1) ? 1 : 0;
}

///////////////////////////////////
function clickIE4() {
	if (event.button == 2) {
		alert(message);
		return false;
	}
}

function clickNS4(e) {
	if (document.layers || document.getElementById && !document.all) {
		if (e.which == 2 || e.which == 3) {
			alert(message);
			return false;
		}
	}
}

		
if (isNav4) {
	document.captureEvents(Event.MOUSEDOWN);
	document.onmousedown = clickNS4;
	
	document.captureEvents(Event.MOUSEMOVE);
	document.onmousemove = trackMouse;
} else if (isIE4) {//document.all && !document.getElementById) {
	document.onmousedown = clickIE4;
}

//document.oncontextmenu = new Function("alert(message);return false");

var mouseX, mouseY;
function trackMouse(evt) {
	mouseX = evt.pageX;
	mouseY = evt.pageY;
}

document.onselectstart = new Function("return false");