﻿// JScript File
var imgPlus = new Image(); imgPlus.src = "/KribhcoMCS/Images/nodePlus.gif";
var imgMinus = new Image(); imgMinus.src = "/KribhcoMCS/Images/nodeMinus.gif";
var imgLoading = "/KribhcoMCS/Images/i_animated_loading.gif";

var elmid = document.getElementById;
var docelm = document.documentElement;
var crelm = document.createElement;

String.prototype.trim = function () {
	return (this.replace(/^\s+/,'').replace(/\s+$/,''));
}

String.prototype.valtrim = function () {
	return (this.match(/^\s*(\S+(\s+\S+)*)\s*$/) == null) ? false : true;
}

String.prototype.maxlength = function (charlen) {
	return (this.length > charlen) ? false : true;
}

String.prototype.valemail = function () {
	return (this.match(/^[\w\-\']+([.][\w\-\']+)*[@][\w\-\']+([.][\w\-\']+)+$/) == 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.roundit = Number.prototype.roundit = function (places) {
	if (typeof places == "undefined") places = 2;
	
	if (places > 0) 
	{
		if (this.toString().lastIndexOf('.') < 0)
		{
			if(this != "")
			{
				if(places == 2)
					return this + ".00";
				else
					return this + ".000";
			}
		}
		
		if ((this.toString().length - this.toString().lastIndexOf('.')) > (places  + 1)) 
		{
			var rounder = Math.pow(10, places);
			return Math.round(this * rounder) / rounder;
		}
		else 
		{
			var val;
			val = this;
			for(roundctr=(this.toString().length - this.toString().lastIndexOf('.')); roundctr<= places; roundctr++)
			{
				if(val != "")
					val = val+"0";
			}
			return val;
		}
	}
	else
	{
		return Math.round(this);
	}
}

String.prototype.commaSeperatedRoundit = function () 
{
	var tmp = this;
	if (tmp.toString().lastIndexOf('.') < 0)
		tmp = tmp + ".00";
	else
	{
		tmp = new String(this).roundit();
		if (tmp.toString().lastIndexOf('.') > 0)
		{
			var x = new String(tmp).split('.')[1];
			if (x.length == 1)
				tmp = new String(tmp) + "0";
		}
		else
			tmp = new String(tmp) + ".00";
	}
	return new String(tmp).addCommas();
}

String.prototype.replaceCommas = function () {
	var tmp = this;
	while (tmp.lastIndexOf(',') != -1)
	{
		tmp = tmp.replace(",","");
	}
	return tmp;
}

String.prototype.addCommas = function () {
	var nStr = this + '';
	var x = nStr.split('.');
	var x1 = x[0];
	var x2 = (x.length > 1) ? '.' + x[1] : '.00';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

String.prototype.jsdate = function () {
	if (typeof this == "undefined") 
		return new Date();
	var args = this.split("-");
	var month;
	switch (args[1].toLowerCase()) {
	    case "jan"	: month = 0;	break;
	    case "feb"	: month = 1;	break;
	    case "mar"	: month = 2;	break;
	    case "apr"	: month = 3;	break;
	    case "may"	: month = 4;	break;
	    case "jun"	: month = 5;	break;
	    case "jul"	: month = 6;	break;
	    case "aug"	: month = 7;	break;
	    case "sep"	: month = 8;	break;
	    case "oct"	: month = 9;	break;
	    case "nov"	: month = 10;	break;
	    case "dec"	: month = 11;	break;
	}
	return new Date(args[2], month, args[0]);
}

String.prototype.monthName = function () {
	if (typeof this == "undefined") 
		return "";
	month = parseInt(this);
	var monthName;
	switch (month) {
	    case 1	: monthName = "January"; break;
	    case 2	: monthName = "February"; break;
	    case 3	: monthName = "March"; break;
	    case 4	: monthName = "April"; break;
	    case 5	: monthName = "May"; break;
	    case 6	: monthName = "June"; break;
	    case 7	: monthName = "July"; break;
	    case 8	: monthName = "August"; break;
	    case 9	: monthName = "September"; break;
	    case 10	: monthName = "October"; break;
	    case 11	: monthName = "November"; break;
	    case 12	: monthName = "December"; break;
	}
	return monthName;
}

Date.prototype.dispdate = function () {
	var month;
	switch (this.getMonth()) {
	    case 0	: month = "Jan";	break;
	    case 1	: month = "Feb";	break;
	    case 2	: month = "Mar";	break;
	    case 3	: month = "Apr";	break;
	    case 4	: month = "May";	break;
	    case 5	: month = "Jun";	break;
	    case 6	: month = "Jul";	break;
	    case 7	: month = "Aug";	break;
	    case 8	: month = "Sep";	break;
	    case 9	: month = "Oct";	break;
	    case 10	: month = "Nov";	break;
	    case 11	: month = "Dec";	break;
	}
	var day = (this.getDate() <= 9) ? "0" + this.getDate() : this.getDate();
	var year = this.getYear();
	return new String(day + "-" + month + "-" + year)
}

Date.prototype.add = function (d) {
	if (typeof d == "undefined") d = 1;
	return new Date(this.getTime() + d * 24 * 60 * 60 * 1000);
}

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.pdfImgfiletype = 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 "pdf" : rtnval = true; break;
			case "gif" : rtnval = true; break;
			case "jpg" : rtnval = true; break;
			case "jpeg" : 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,
	_xmlshowsel: false,

	_pageObj: "",
	_pageChildObj: new Array(),

	_locateframe: function () 
	{
		if (parent.NavFrm.document.readyState.toLowerCase() == "complete") {
			if (window.self.name == "ContentFrm") {
				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" ;
	},
	
	_expCollMainInfo: function (objMainInfo, tdText, tdImage, type)
	{	  
		objMainInfo.style.width = (type == "collapse") ? "3%" : "25%";
		tdText.style.display = (type == "collapse") ? "none" : "inline";
		tdImage.style.display = (type == "collapse") ? "inline" : "none";
	},
	
	_showHideMenu : function (show)
	{
		var tblSMenu = elmid("tblSMenu"); 
		var tblHMenu = elmid("tblHMenu"); 
		var tdNavigator = elmid("td_Navigator");
		var tdBody = elmid("td_Body");
		
		if (show)
		{
			tblSMenu.style.display = "inline";
			tblHMenu.style.display = "none";
			tdNavigator.style.width = "20%";
			tdBody.style.width = "80%";
		}
		else
		{
			tblSMenu.style.display = "none";
			tblHMenu.style.display = "inline";
			tdNavigator.style.width = "32";
			tdBody.style.width = "100%";
		}
	},
	
	_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); }
	},
	
	_openUpload: function (wn, file, w, h) {
		js._openUploadWin (wn, file, w, h, 0, 0, 0, 0, true);
	}, 

	_openUploadWin: 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, "menubar="+ menu +", width="+ w +", height="+ h +", toolbar="+ tool +", location="+ loc+", status="+ stat +"");
		wn.resizeTo (Math.ceil (w), Math.ceil (h));
		if (center) { wn.moveTo (Math.ceil (x), Math.ceil (y)) } else { wn.moveTo (0, 0); }
		wn.focus();
	},
	
	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 = "";
		}
	},
	
	/* Used to create XMLHttp object based on browser */
	_createRequester: function () { 
		var req = null;
	
		try  { 
			req = new ActiveXObject("Msxml2.XMLHTTP"); 
		}  catch(e)  { 
			try { req = new ActiveXObject("Microsoft.XMLHTTP"); } 
			catch(oc) { req = null; } 
		} 
		
		if (!req && typeof XMLHttpRequest != "undefined")
			req = new XMLHttpRequest(); 
		
		if (!req && window.createRequest)
			req = window.createRequest();

		return req; 
	},
	
	/* Allow only numeric values to be entered in the textbox */
	_isNumberKeyDecimal: function (evt, allowDecimal)
	{
		var isValid = false;
		var charCode = (evt.which) ? evt.which : event.keyCode
		if (charCode > 31 && (charCode < 48 || charCode > 57))
		{
			if (allowDecimal == true)
			{
				if (charCode == 46 || charCode == 45)
					isValid = true;
				else
					isValid = false;
			}
			else
			{
				if (charCode != 45)
					isValid = false;
				else
					isValid = true;
			}
		}
		else
			isValid = true;
		return isValid;
	},
	
	/* Allow only Alpha numeric values to be entered in the textbox */
	_AlphaNumberKey: function (evt)
	{
		var isValid = false;
		var charCode = (evt.which) ? evt.which : event.keyCode
		if ( (charCode > 47 && charCode < 58) || 
			 (charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) )
		{
			isValid = true;
		}
		else
		{
			if (charCode == 46 )
				isValid = true;
			else
				isValid = false;
		}
		return isValid;
	},
	
	_disableCtrlPaste: function(evt)
	{
		if (evt)
		{
			if (evt.ctrlKey)
			{
				if (evt.keyCode == 86)
				{
					evt.cancelBubble = true;
					evt.returnValue = false;
					return false;
				}
				return true;
			}
		}
		
		return true;
	},
	
	_formatNumber : function (obj)
	{
		var val = obj.value;
		if (val.valtrim())
		{
			val = parseFloat(val);
			obj.value = new String(val).roundit(3);
		}
	},
	
	_getelm : function (elm) {
		var obj = js._pageObj + "_";
		if (js._pageChildObj.length <= 0) {
			return elmid(obj + elm);
		} else {
			for (var i = 0; i < js._pageChildObj.length; i++) {
				if (elmid(obj + js._pageChildObj[i] +"_" + elm) != null) {
					return elmid(obj + js._pageChildObj[i] +"_" + elm);
				}
			}
		}
	}
}
	
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;
	},
		
	_fileimgtype: function (sender, args)
	{
		var isval = (args.Value.filetype()) ? true : false;
		if (!isval) { isval = (args.Value.imgtype()) ? true : false; }
		args.IsValid = isval;
	},
	
	_docfiletype: function (sender, args) 
	{
		args.IsValid = (args.Value.docfiletype()) ? true : false;
	},
	
	_futuredt: function (sender, args) 
	{
		var sysdate = elmid("hTodayDate").value;
		args.IsValid = ((args.Value.jsdate().difference(sysdate.jsdate())) <= 0) ? true : false;
	},
	
	_pastdt: function (sender, args) 
	{		
		var sysdate = new Date(elmid("hTodayDate").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("hTodayDate").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;
	},
	
	_compDateMain: 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;
	}
}
