var imgPlus = new Image(); imgPlus.src = "/LPNet/Images/Menu/nodePlus.gif";
var imgMinus = new Image(); imgMinus.src = "/LPNet/Images/Menu/nodeMinus.gif";

var elmid = document.getElementById;
var docelm = document.documentElement;
var crelm = document.createElement;

String.prototype.valtrim = function () {
	return (this.match(/^\s*(\S+(\s+\S+)*)\s*$/) == null) ? false : true;
}

String.prototype.equals = function (val) {
	return (this == val) ? true : false; 
}

String.prototype.urlencode = function () {
	return escape(this).replace(/\+/g, "%2C").replace(/\"/g, "%22").replace(/\'/g, "%27");
}

String.prototype.urldecode = function () {
	return unescape(this);
}

String.prototype.jsdate = function () {
	var dd, mm, yy, dtarr = this.split("-");
	dd = dtarr[0];
	switch (dtarr[1].toLowerCase())
	{
		case "jan" : mm = 1; break;
		case "feb" : mm = 2; break;
		case "mar" : mm = 3; break;
		case "apr" : mm = 4; break;
		case "may" : mm = 5; break;
		case "jun" : mm = 6; break;
		case "jul" : mm = 7; break;
		case "aug" : mm = 8; break;
		case "sep" : mm = 9; break;
		case "oct" : mm = 10; break;
		case "nov" : mm = 11; break;
		case "dec" : mm = 12; break;
	}
	yy = dtarr[2];
	return new Date("" + mm + "/" + dd + "/" + yy + "");
}

Date.prototype.difference = function (dt) {
	
	if (typeof dt == "undefined")
		dt = new Date();
	var d = (1000 * 60 * 60 * 24);
	return Math.ceil ((this.getTime() - dt.getTime()) / d);
}

Array.prototype.additems = function () {
	var args = arguments;
	this[this.length] = new Array(args.length);
	for (var x = 0, y = args.length; x < y; x++) {
		this[this.length - 1][x] = args[x];
	}
}

String.prototype.imgtype = function (ext) {
	var flarr, fl, rtnval = false;
	flarr = this.split("\\");
	fl = flarr[flarr.length - 1];
	flarr = fl.split(".");
	fl = flarr[flarr.length - 1];
	if (typeof ext == "undefined") {
		switch (fl.toLowerCase()) {
		    case "jpg" : rtnval = true;  break;
		    case "gif" : rtnval = true;  break;
		    case "jpeg" : rtnval = true; break;
		    case "png" : rtnval = true; break;
		}
	} else {
	    if (fl.toLowerCase() == ext.toLowerCase()) { rtnval = true; }
	}
	return rtnval;
}


String.prototype.videotype = function (ext) {
	var flarr, fl, rtnval = false;
	flarr = this.split("\\");
	fl = flarr[flarr.length - 1];
	flarr = fl.split(".");
	fl = flarr[flarr.length - 1];
	if (typeof ext == "undefined") {
		switch (fl.toLowerCase()) {
		    case "mpeg" : rtnval = true;  break;
		    case "mpg" : rtnval = true;  break;
		    case "avi" : rtnval = true; break;
		    case "midi" : rtnval = true; break;
		    case "mp3" : rtnval = true; break;
		    case "wmv" : rtnval = true; break;
		    
		}
	} else {
	    if (fl.toLowerCase() == ext.toLowerCase()) { rtnval = true; }
	}
	return rtnval;
}

String.prototype.filetype = function (ext) 
{
	var flarr, fl, rtnval = false;
	flarr = this.split("\\");
	fl = flarr[flarr.length - 1];
	flarr = fl.split(".");
	fl = flarr[flarr.length - 1];
	if (typeof ext == "undefined") {
		switch (fl.toLowerCase()) {
			case "doc" : rtnval = true; break;
			case "ppt" : rtnval = true; break;
			case "xls" : rtnval = true; break;
			case "txt" : rtnval = true; break;
			case "pdf" : rtnval = true; break;
			case "zip" : rtnval = true; break;
		}
	} else {
		if (fl.toLowerCase() == ext.toLowerCase()) { rtnval = true; }
	}
	return rtnval;
}

String.prototype.docfiletype = function (ext) 
{
	var flarr, fl, rtnval = false;
	flarr = this.split("\\");
	fl = flarr[flarr.length - 1];
	flarr = fl.split(".");
	fl = flarr[flarr.length - 1];
	if (typeof ext == "undefined") {
		switch (fl.toLowerCase()) {
			case "doc" : rtnval = true; break;			
		}
	} else {
		if (fl.toLowerCase() == ext.toLowerCase()) { rtnval = true; }
	}
	return rtnval;
}

Date.prototype.USlocaltimeStr =
  new Function("  /* Date.USlocaltimeStr */ var H\n" +
	"  with (this) return " +
	"js.LZ(  1+((H=getHours())+11)%12  )+':'+\n      js.LZ(getMinutes())+':'+ " +
	"js.LZ(getSeconds())+[' AM',' PM'][+(H>11)]")


var js = 
{
	_xmldobj:  null,
	_xmlshowval: false,

	_locateframe: function () 
	{
		if (parent.NavFrm.document.readyState.toLowerCase() == "complete") {
			if (window.self.name == "AdminFrm") {
				if (parent.NavFrm && parent.NavFrm.ngate) {
					parent.NavFrm.ngate.PrepareFrame(window);
					parent.NavFrm.ngate.LocateFrame();
				}
			}
		} else {
			setTimeout("js._locateframe()", 1000);
		}
	},
	
	_loadpage: function (url)
	{
		var fmobj = document.forms["fm"];
		fmobj.target = "_self";
		fmobj.action = url;
		fmobj.submit();
	},
	
	_loadframe: function ()
	{
		top.window.location.reload();
	},
	
	_postback: function (eventTarget, eventArgument)
	{
		__doPostBack (eventTarget, eventArgument);
	},
	
	_showHideObject: function (obj) 
	{
		obj.style.display = (obj.style.display == "none") ? "inline" : "none" ;
	},
	
	_showHideSection: function (obj, section)
	{
		var v = (obj.src == imgPlus.src);
		section.style.display = (v) ? "inline" : "none";
		obj.src = (v) ? imgMinus.src : imgPlus.src;
	},
	
	_enableObj: function (obj, isEnable)
	{
		obj.disabled = !isEnable;
	},
	
	_openwinfull: function (wn, file) {
		js._openwin (wn, file, parseInt(screen.availWidth) , parseInt(screen.availHeight), 0, 0, 0, 0, false);
	},
	
	_openwin: function (wn, file, w, h, menu, tool, loc, stat, center) {
		var X = Math.ceil ((window.screen.width - w) / 2);
		var Y = Math.ceil ((window.screen.height - h) / 2);
		wn = window.open (file, wn, "fullscreen=0, width="+ w +", height="+ h +", menubar="+ menu +", toolbar="+ tool +", location="+ loc+", status="+ stat +", scrollbars=1");
		wn.resizeTo (Math.ceil (w), Math.ceil (h));
		if (center) { wn.moveTo (Math.ceil (X), Math.ceil (Y)) } else { wn.moveTo (0, 0); }
	},
	
	LZ: function (x) {
		return (x<0||x>=10?"":"0") + x ;
	}, 
	
	ValidTime: function (h, m, s) {
		with (new Date(0,0,0,h,m,s))
		return ((getHours()==h) && (getMinutes()==m)) 
	},
	
	_ustime: function(Q) {
		var T // adaptable to other layouts
		var arr = Q.split(":")
		if(parseInt(arr.length)==3) {
			if((parseFloat(arr[0]) > 24) || (parseFloat(arr[0]) == 24 && parseFloat(arr[1]) > 0) || (parseFloat(arr[0]) == 24 && parseFloat(arr[2]) > 0)) return -1;
		}
		if ((T = /^(\d\d):(\d\d):(\d\d)\s?(([ap])\.?m\.?)?$/i.exec(Q)) != null) {return 0 } // ok format
		if ((T = /^(\d\d):(\d\d)\s?(([ap])\.?m\.?)?$/i.exec(Q)) == null) { return -1 } // bad format
		
		if (T[3]!='') { // AM/PM
			if (T[1]>'12') { return -1 } // bad value   || T[1]=='00' ?
			T[1] = T[1]%12 + 12* /p/i.test(T[3]) 
		} // to 24-h
		if (!js.ValidTime(T[1], T[2], 0)) { return -1 } // bad value
		return [ +T[1], +T[2] ] /* for strings, [ js.LZ(T[1]), T[2] ] */ 
	},
	
	_checktime: function (obj) {
		if (!obj.value.valtrim()) return;
		S = js._ustime(obj.value)
		if (S != -1) {
			if (S != 0) { obj.value = new Date(2000,0,1,S[0],S[1]).USlocaltimeStr(); }
		} else {
			alert("Invalid Time Format !");
			obj.value = "";
		}
	},
	
	_calllist: function (sobj, dobj, url, showval) {
		if ((sobj.type.toLowerCase() == "select-one") || (sobj.type.toLowerCase() == "select-multiple")) {
			if ((sobj.selectedIndex < 0) || (!sobj.options[sobj.selectedIndex].value.valtrim())) {
				alert("Error :\n\nSearch criteria is empty."); 
				dobj.options.length = 0;
				return;
			}
		} else if (sobj.type.toLowerCase() == "text") {
			if (!sobj.value.valtrim()) {
				alert("Error :\n\nSearch criteria is empty."); 
				dobj.options.length = 0;
				return;
			}
		}
		js._xmlshowval = (typeof showval == "undefined") ? false : showval;
		js._xmldobj = dobj;
		var xmlobj = new ActiveXObject("Microsoft.XMLHTTP");
		xmlobj.open("POST", url, false);
		xmlobj.send();
		eval(xmlobj.responseText);
	},
	
	_getlist: function (arrVal, arrTxt) {
		if ((js._xmldobj.type.toLowerCase() == "select-one") || (js._xmldobj.type.toLowerCase() == "select-multiple")) {
			js._xmldobj.options.length = 0;
		} else {
			js._xmldobj.value = "";
		}
		
		if (arrVal.length == 0) {
			js._addlist("", "... no record(s) found");
		} else {
			for (x=0, y=arrVal.length; x<y; x++) {
				js._addlist(arrVal[x], arrTxt[x]);
			}
		}
	},

	_addlist: function (val, txt) {
		if ((js._xmldobj.type.toLowerCase() == "select-one") || (js._xmldobj.type.toLowerCase() == "select-multiple")) {
			var opt = document.createElement("OPTION");
			js._xmldobj.options.add(opt);
			opt.value = val;
			if (js._xmlshowval) {
				opt.innerText = "["+ val +"] - "+ txt;
			} else {
				opt.innerText = txt;
			}
		} else {
		}
	}
}


var cfvjs = 
{
	_imgtype: function (sender, args) 
	{
		args.IsValid = (args.Value.imgtype()) ? true : false;
	},
	
	_videotype: function (sender, args) 
	{
		args.IsValid = (args.Value.videotype()) ? true : false;
	},
	
	_filetype: function (sender, args) 
	{
		args.IsValid = (args.Value.filetype()) ? true : false;
	},
	
	_docfiletype: function (sender, args) 
	{
		args.IsValid = (args.Value.docfiletype()) ? true : false;
	},
	
	_futuredt: function (sender, args) 
	{		
		var sysdate = new Date(elmid("LPNetHeader_TBTodayDate").value.jsdate());	
		args.IsValid = ((args.Value.jsdate().difference(sysdate)) >= 0) ? true : false;
	},
	
	_pastdt: function (sender, args) 
	{		
		var sysdate = new Date(elmid("LPNetHeader_TBTodayDate").value.jsdate());
		args.IsValid = ((args.Value.jsdate().difference(sysdate)) <= 0) ? true : false;
	},
	
	_compDate: function (source, compare)
	{
		if (!source.value.valtrim() || !compare.value.valtrim()) return false;
		var sysdate = new Date(elmid("LPNetHeader_TBTodayDate").innerText);
		return ((source.value.jsdate().difference(compare.value.jsdate())) <= 0 && (source.value.jsdate().difference(sysdate)) >= 0) ? true : false;
			
	},
	
	_compDateAct: function (source, compare)
	{
		if (!source.value.valtrim() || !compare.value.valtrim()) return false;
		return ((source.value.jsdate().difference(compare.value.jsdate())) <= 0) ? true : false;
	},
	
	_compYearAct: function (source, compare)
	{
		if ((!source.value.valtrim()) || (!compare.value.valtrim())) return false;			
		return (source.value.jsdate().getYear() == compare.value) ? true : false;
	},
	
	_compYear: function (source, compare)
	{
		if ((!source.value.valtrim()) || (!compare.value.valtrim())) return false;			
		return (source.value.jsdate().getYear() == compare.value.jsdate().getYear()) ? true : false;
	}
	
}
