﻿function BasicDatePickerLoadControl(id) {
    return eval(id);
}

function createCookie(name,value,days) {
	var expires = "";
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function removeSpecialChars(sText) {
	sText = removeHTMLTags(sText);
	sText = sText.ReplaceAll('~','');
	sText = sText.ReplaceAll(']','');
	sText = sText.ReplaceAll('|','');

	return sText;
}

function removeHTMLTags(sHtml){
	sHtml = sHtml.replace(/&(lt|gt);/g, function (strMatch, p1){
 	 	return (p1 == "lt")? "<" : ">";
 	});

 	var sText = sHtml.replace(/<\/?[^>]+(>|$)/g, "");

	return sText;
}

function rightClick(e) {
    var rightclick;
    if (!e) var e = window.event;
    if (e.which) rightclick = (e.which == 3);
    else if (e.button) rightclick = (e.button == 2);
    return rightclick;
}

function findPosX(obj) {
    var curleft = 0;
    if (obj.offsetParent)
        while (1) {
        curleft += obj.offsetLeft;
        if (!obj.offsetParent)
            break;
        obj = obj.offsetParent;
    }
    else if (obj.x)
        curleft += obj.x;
    return curleft;
}

function findPosY(obj) {
    var curtop = 0;
    if (obj.offsetParent)
        while (1) {
        curtop += obj.offsetTop;
        if (!obj.offsetParent)
            break;
        obj = obj.offsetParent;
    }
    else if (obj.y)
        curtop += obj.y;
    return curtop;
}

String.prototype.ReplaceAll = function(stringToFind, stringToReplace) {
    var temp = this;
    var index = temp.indexOf(stringToFind);
    while (index != -1) {
        temp = temp.replace(stringToFind, stringToReplace);
        index = temp.indexOf(stringToFind);
    }
    return temp;
}

function $(v) { return (document.getElementById(v)); }

function isCarridgeReturn(evt, fCallback) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode == 13) {
        if (fCallback != null) fCallback();
        return false;
    } else {
        return true;
    }
}

function isNumberValue(evt, fCallback) {
	var charCode = (evt.which) ? evt.which : event.keyCode
	if (charCode > 31 && (charCode < 48 || charCode > 57) && (charCode < 96 || charCode > 105)) {
	    return false;
	} else if (charCode == 13) {
	    if (fCallback != null) fCallback();
	    return false;
    }
	return true;
}

function isFloatValue(evt, fCallback) {
	var charCode = (evt.which) ? evt.which : event.keyCode
	if (charCode > 31 && (charCode < 48 || charCode > 57) && (charCode < 96 || charCode > 105)) {
		if (charCode != 46) return false;
    } else if (charCode == 13) {
        if (fCallback != null) fCallback();
        return false;
    }
	return true;
}

function isPhoneValue(evt, fCallback) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57) && (charCode < 96 || charCode > 105)) {
        if (charCode == 32 || charCode == 40 || charCode == 41 || charCode == 45 || charCode == 46 || charCode == 58 || charCode == 88 || charCode == 120) {
            return true;
        } else {
            return false;
        }
    } else if (charCode == 13) {
        if (fCallback != null) fCallback();
        return false;
    }
    return true;
}

function SelectAll(lstElement) {
	var j;
	for (j = 0; j < lstElement.length; j++) lstElement.options[j].selected = true;
}

function DeSelectAll(lstElement) {
	var j;
	for (j = 0; j < lstElement.length; j++) lstElement.options[j].selected = false;
}

function SetVisibility(elementItem,bVisible) {
	var ei = $(elementItem);
	if (ei && ei.className && ei.className.contains && ei.className.contains("Modal")) {
		// MRY New code for handling modal divs
		if (typeof modals == "undefined") {
			modals = new Array();
		}
		if (bVisible) {
			var modal = dhtmlmodal.open(elementItem + "Modal", "div", elementItem, "", "height=-1,width=400px,center=1", "recal");
			modal.controls.style.display = "none";
			modal.onclose = function() {
				this.style.display = "none";
				return false;
			};
			modals.push(modal);
		} else {
			if (modals.length > 0) {
				var modal = modals.pop();
			modal.close();
			dhtmlmodal.closeveil();
		}
		}
	} else {
		// Original code
		state = (bVisible ? "block" : "none");
	if (document.all) {
		eval( "document.all." + elementItem + ".style.display = state");
	} else if (document.layers) {
		document.layers[elementItem].display = state;
	} else if (document.getElementById) {
		var element = document.getElementById(elementItem).style;
		element.display = state;
	}
}
}

function GetNodeText(elementID) {
	var elm;
	if (document.layers) {
		elm = document.layers[elementID];
	} else if (document.getElementById) {
		elm = document.getElementById(elementID);
	}
	return (elm.textContent || elm.innerText || elm.text);
}

function SetNodeText(elementID,sValue) {
	var elm;
	if (document.layers) {
		elm = document.layers[elementID];
	} else if (document.getElementById) {
		elm = document.getElementById(elementID);
	}
	
	if (elm.textContent) {
		elm.textContent = sValue;
	} else if (elm.innerText) {
		elm.innerText = sValue;
	} else {
		elm.text = sValue;
	}
}

function SetListIndex(lstElement,lstValue) {
	var j;
	var itemexists = false;

	for (j = 0; j < lstElement.length && !itemexists; j++) {
		if (lstElement.options[j].value == lstValue) {
			lstElement.options[j].selected = true;
			itemexists = true;
		}
	}
	
	return itemexists;
}

function GetListIndex(lstElement,lstValue) {
	var j;
	var gotit = false;
	var iIndex = -1;

	for (j = 0; j < lstElement.length && !gotit; j++) {
		if (lstElement.options[j].value == lstValue) {
			iIndex = j;
			gotit = true;
		}
	}
	
	return iIndex;
}

// Limit Text
function limitText(limitID, limitNum, evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode;
    var elm = document.getElementById(limitID);

    if (charCode < 48) {
        return true;
    } else {
        if (elm.value == null) {
            return false;
        } else {
            if (elm.value.length > limitNum - 1) {
                elm.value = elm.value.substring(0, limitNum);
                return false;
            } else {
                return true;
            }
        }
    }
}

//printf('%02d', tmNow.getMinutes())
function printf(fstring) {
	var pad = function(str, ch, len) {
		var ps = '';
        for(var i=0; i<Math.abs(len); i++) ps+=ch;
        return len>0?str+ps:ps+str;
      }
	var processFlags = function(flags, width, rs, arg) {
		var pn = function(flags, arg, rs) {
			if (arg >= 0) {
				if (flags.indexOf(' ') >= 0) rs = ' ' + rs;
                else if(flags.indexOf('+')>=0) rs = '+' + rs;
              }
            else
                rs = '-' + rs;
            return rs;
          }
        var iWidth = parseInt(width,10);
		if (width.charAt(0) == '0') {
			var ec = 0;
            if(flags.indexOf(' ')>=0 || flags.indexOf('+')>=0) ec++;
            if(rs.length<(iWidth-ec)) rs = pad(rs,'0',rs.length-(iWidth-ec));
            return pn(flags,arg,rs);
          }
        rs = pn(flags,arg,rs);
		if (rs.length < iWidth) {
			if (flags.indexOf('-') < 0) rs = pad(rs, ' ', rs.length - iWidth);
            else rs = pad(rs,' ',iWidth - rs.length);
          }    
        return rs;
      }
    var converters = new Array();
	converters['c'] = function(flags, width, precision, arg) {
		if (typeof (arg) == 'number') return String.fromCharCode(arg);
        if(typeof(arg) == 'string') return arg.charAt(0);
        return '';
      }
	converters['d'] = function(flags, width, precision, arg) {
		return converters['i'](flags, width, precision, arg);
      }
	converters['u'] = function(flags, width, precision, arg) {
		return converters['i'](flags, width, precision, Math.abs(arg));
      }
	converters['i'] = function(flags, width, precision, arg) {
		var iPrecision = parseInt(precision, 10);
        var rs = ((Math.abs(arg)).toString().split('.'))[0];
        if(rs.length<iPrecision) rs=pad(rs,' ',iPrecision - rs.length);
        return processFlags(flags,width,rs,arg); 
      }
	converters['E'] = function(flags, width, precision, arg) {
		return (converters['e'](flags, width, precision, arg)).toUpperCase();
      }
	converters['e'] = function(flags, width, precision, arg) {
		iPrecision = parseInt(precision, 10);
        if(isNaN(iPrecision)) iPrecision = 6;
        rs = (Math.abs(arg)).toExponential(iPrecision);
        if(rs.indexOf('.')<0 && flags.indexOf('#')>=0) rs = rs.replace(/^(.*)(e.*)$/,'$1.$2');
        return processFlags(flags,width,rs,arg);        
      }
	converters['f'] = function(flags, width, precision, arg) {
		iPrecision = parseInt(precision, 10);
        if(isNaN(iPrecision)) iPrecision = 6;
        rs = (Math.abs(arg)).toFixed(iPrecision);
        if(rs.indexOf('.')<0 && flags.indexOf('#')>=0) rs = rs + '.';
        return processFlags(flags,width,rs,arg);
      }
	converters['G'] = function(flags, width, precision, arg) {
		return (converters['g'](flags, width, precision, arg)).toUpperCase();
      }
	converters['g'] = function(flags, width, precision, arg) {
		iPrecision = parseInt(precision, 10);
        absArg = Math.abs(arg);
        rse = absArg.toExponential();
        rsf = absArg.toFixed(6);
		if (!isNaN(iPrecision)) {
			rsep = absArg.toExponential(iPrecision);
            rse = rsep.length < rse.length ? rsep : rse;
            rsfp = absArg.toFixed(iPrecision);
            rsf = rsfp.length < rsf.length ? rsfp : rsf;
          }
        if(rse.indexOf('.')<0 && flags.indexOf('#')>=0) rse = rse.replace(/^(.*)(e.*)$/,'$1.$2');
        if(rsf.indexOf('.')<0 && flags.indexOf('#')>=0) rsf = rsf + '.';
        rs = rse.length<rsf.length ? rse : rsf;
        return processFlags(flags,width,rs,arg);        
      }  
	converters['o'] = function(flags, width, precision, arg) {
		var iPrecision = parseInt(precision, 10);
        var rs = Math.round(Math.abs(arg)).toString(8);
        if(rs.length<iPrecision) rs=pad(rs,' ',iPrecision - rs.length);
        if(flags.indexOf('#')>=0) rs='0'+rs;
        return processFlags(flags,width,rs,arg); 
      }
	converters['X'] = function(flags, width, precision, arg) {
		return (converters['x'](flags, width, precision, arg)).toUpperCase();
      }
	converters['x'] = function(flags, width, precision, arg) {
		var iPrecision = parseInt(precision, 10);
        arg = Math.abs(arg);
        var rs = Math.round(arg).toString(16);
        if(rs.length<iPrecision) rs=pad(rs,' ',iPrecision - rs.length);
        if(flags.indexOf('#')>=0) rs='0x'+rs;
        return processFlags(flags,width,rs,arg); 
      }
	converters['s'] = function(flags, width, precision, arg) {
		var iPrecision = parseInt(precision, 10);
        var rs = arg;
        if(rs.length > iPrecision) rs = rs.substring(0,iPrecision);
        return processFlags(flags,width,rs,0);
      }
    farr = fstring.split('%');
    retstr = farr[0];
    fpRE = /^([-+ #]*)(\d*)\.?(\d*)([cdieEfFgGosuxX])(.*)$/;
	for (var i = 1; i < farr.length; i++) {
		fps = fpRE.exec(farr[i]);
        if(!fps) continue;
        if(arguments[i]!=null) retstr+=converters[fps[4]](fps[1],fps[2],fps[3],arguments[i]);
        retstr += fps[5];
      }
    return retstr;
  }

//-------------------------------------------------------------------
// Trim functions
//   Returns string with whitespace trimmed
//-------------------------------------------------------------------
function LTrim(str){
	if (str == null) return null;
	for(var i = 0; str.charAt(i) == " "; i++);
	return str.substring(i,str.length);
}

function RTrim(str){
	if (str == null) return null;
	for(var i = str.length-1; str.charAt(i) == " "; i--);
	return str.substring(0,i+1);
}

function Trim(str){return LTrim(RTrim(str));}

function LTrimAll(str) {
	if (str == null) return str;
	for (var i = 0; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i++);
	return str.substring(i,str.length);
}

function RTrimAll(str) {
	if (str == null) return str;
	for (var i = str.length-1; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i--);
	return str.substring(0,i+1);
}

function TrimAll(str) {
	return LTrimAll(RTrimAll(str));
}

function isValidEmail(val) {
	var bResult = true;
	var aEmail = val.split(',');
	for (var i = 0; i < aEmail.length && bResult == true; i++) {
		if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(aEmail[i])) {
		} else {
			bResult = false;
		}
    }
	return bResult;
}

// Credit Card Validation Javascript
// copyright 12th May 2003, by Stephen Chapman, Felgall Pty Ltd
// You have permission to copy and use this javascript provided that
// the content of the script is not changed in any way.
function isValidCreditCard(s) {
    var v = "0123456789";
    var w = "";
    for (var i = 0; i < s.length; i++) {
        x = s.charAt(i);
        if (v.indexOf(x, 0) != -1)
            w += x;
    }
    var j = w.length / 2;
    if (j < 6.5 || j > 8 || j == 7) return false;
    var k = Math.floor(j);
    var m = Math.ceil(j) - k;
    var c = 0;
    for (var i = 0; i < k; i++) {
        a = w.charAt(i * 2 + m) * 2;
        c += a > 9 ? Math.floor(a / 10 + a % 10) : a;
    }
    for (var i = 0; i < k + m; i++) c += w.charAt(i * 2 + 1 - m) * 1;
    return (c % 10 == 0);
}

//-------------------------------------------------------------------
// isNull(value)
//   Returns true if value is null
//-------------------------------------------------------------------
function isNull(val){return(val==null);}

//-------------------------------------------------------------------
// isBlank(value)
//   Returns true if value only contains spaces
//-------------------------------------------------------------------
function isBlank(val){
	if(val == null) return true;
	for(var i=0; i < val.length; i++) {
		if ((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")) return false;
	}
	return true;
}

//-------------------------------------------------------------------
// isInteger(value)
//   Returns true if value contains all digits
//-------------------------------------------------------------------
function isInteger(val){
	if (isBlank(val)) return false;
	for(var i=0; i < val.length; i++) {
		if(!isDigit(val.charAt(i))) return false;
	}
	return true;
}

//-------------------------------------------------------------------
// isNumeric(value)
//   Returns true if value contains a positive float value
//-------------------------------------------------------------------
function isNumeric(val){return(parseFloat(val,10)==(val*1));}

//-------------------------------------------------------------------
// isDigit(value)
//   Returns true if value is a 1-character digit
//-------------------------------------------------------------------
function isDigit(num) {
	if (num.length > 1) return false;
	var string="1234567890";
	if (string.indexOf(num) != -1) return true;
	return false;
}

function whichBrs() {
var agt=navigator.userAgent.toLowerCase();
if (agt.indexOf("opera") != -1) return 'Opera';
if (agt.indexOf("staroffice") != -1) return 'Star Office';
if (agt.indexOf("webtv") != -1) return 'WebTV';
if (agt.indexOf("beonex") != -1) return 'Beonex';
if (agt.indexOf("chimera") != -1) return 'Chimera';
if (agt.indexOf("netpositive") != -1) return 'NetPositive';
if (agt.indexOf("phoenix") != -1) return 'Phoenix';
if (agt.indexOf("firefox") != -1) return 'Firefox';
if (agt.indexOf("safari") != -1) return 'Safari';
if (agt.indexOf("skipstone") != -1) return 'SkipStone';
if (agt.indexOf("msie") != -1) return 'Internet Explorer';
if (agt.indexOf("netscape") != -1) return 'Netscape';
if (agt.indexOf("mozilla/5.0") != -1) return 'Mozilla';
if (agt.indexOf('\/') != -1) {
if (agt.substr(0,agt.indexOf('\/')) != 'mozilla') {
			return navigator.userAgent.substr(0, agt.indexOf('\/'));
		}
		else return 'Netscape';
	} else if (agt.indexOf(' ') != -1)
return navigator.userAgent.substr(0,agt.indexOf(' '));
else return navigator.userAgent;
}

