﻿//Determines whether the end of this string matches the specified string
function endsWith(testString, endingString){
      if(endingString.length > testString.length) return false;
      return testString.indexOf(endingString)==(testString.length-endingString.length);
}

//Trim all space of a string
String.prototype.trim = function() 
{
	var x=this;
	x=x.replace(/^\s*(.*)/, "$1");
	x=x.replace(/(.*?)\s*$/, "$1");
	return x;
}

//Set max length of a textbox object
function LimitText(limitField, limitNum) {
    if (limitField.value.length > limitNum) {
        limitField.value = limitField.value.substring(0, limitNum);
    } 
}

//Set max length of a textbox object onPaste
function LimitTextOnPaste(limitField, limitNum) {
    var tempLength = limitField.value.length;
    if (tempLength >= limitNum)
    {return false}
    else
    {
        limitField.value = limitField.value + clipboardData.getData('Text').substring(0,limitNum - tempLength);
        return false;
    }
}

//This function shall be triggered when performing a key press event on a textbox
function CheckNumberKeyPress(objText, Decimals, AllowNull)
{
	if (event.keyCode==13)
	{
		if (!AllowNull)
		{
			objText.value = FormatNumber(objText.value, Decimals, '.');
		}
		else
		{
			if (objText.value.trim() != "")
				objText.value = FormatNumber(objText.value, Decimals, '.');
		}
		return false;
	}

	if(event.keyCode>=48 && event.keyCode<=57 || event.keyCode==46)
	{
		return true;
	}

	return false;
}				

//This function shall be triggered when a texbox is losing focus
function CheckNumberOnBlur(objText, Decimals, AllowNull)
{
	if (!AllowNull)
	{
		objText.value = FormatNumber(objText.value, Decimals, '.');				
	}
	else
	{
		if (objText.value.trim() != "")
				objText.value = FormatNumber(objText.value, Decimals, '.');
	}
}

//Number formatter
function FormatNumber(Number,Decimals,Separator)
{
	Number += ""        
	Decimals += ""    
	Separator += ""     
	if((Separator == "") || (Separator.length > 1))
		Separator = "."
	if(Number.length == 0)
		Number = "0"
	var OriginalNumber = Number 
	var Sign = 1
	var Pad = ""
	var Count = 0
	if(parseFloat(Number)){
		Number = parseFloat(Number)} else {
		Number = 0}
	if((parseInt(Decimals,10)) || (parseInt(Decimals,10) == 0)){
	Decimals = parseInt(Decimals,10)} else {
	Decimals = 2}
	if(Number < 0)
	{
		Sign = -1
		Number *= Sign   
	}
	if(Decimals < 0)
		Decimals *= -1   
	Number = "" + Math.floor(Number * Math.pow(10,Decimals + 1) + 5)
	if((Number.substring(1,2) == '.')||((Number + '')=='NaN'))
		return(OriginalNumber) 
	if(Number.length < Decimals +1) 
	{
		for(Count = Number.length; Count <= Decimals; Count++)
		Pad += "0"
	}
	Number = Pad + Number 
	if(Decimals == 0)
	{
		Number = Number.substring(0, Number.length -1)
	}
	else
	{
		Number = Number.substring(0,Number.length - Decimals -1) +
			Separator +
			Number.substring(Number.length - Decimals -1,
			Number.length -1)
	}
	if((Number == "") || (parseFloat(Number) < 1))
		Number="0"+Number
	if(Sign == -1)
		Number = "-" + Number
	return(Number)
}

//A private function, used by formatDate()
function addZero(vNumber){ 
	return ((vNumber < 10) ? "0" : "") + vNumber 
} 

//Datetime formatter
function formatDate(vDate, vFormat)
{ 
	var vDay              = addZero(vDate.getDate()); 
	var vMonth            = addZero(vDate.getMonth()+1); 
	var vYearLong         = addZero(vDate.getFullYear()); 
	var vYearShort        = addZero(vDate.getFullYear().toString().substring(3,4)); 
	var vYear             = (vFormat.indexOf("yyyy")>-1?vYearLong:vYearShort) 
	var vHour             = addZero(vDate.getHours()); 
	var vMinute           = addZero(vDate.getMinutes()); 
	var vSecond           = addZero(vDate.getSeconds()); 
	var vDateString       = vFormat.replace(/dd/g, vDay).replace(/MM/g, vMonth).replace(/y{1,4}/g, vYear) 
	vDateString           = vDateString.replace(/hh/g, vHour).replace(/mm/g, vMinute).replace(/ss/g, vSecond) 
	return vDateString 
} 

function OpenDialog(path, w, h, canResize)
{	
    var centerX=(screen.width-w)/2;
	var centerY=(screen.height-h)/2;
	
	return OpenDialog2(path, w, h, canResize, centerX, centerY);
}

function OpenDialog2(path, w, h, canResize, x, y)
{
	var resizable = "no";
	if (canResize)
		resizable = "yes";
    
    var date = new Date();
    if (path.indexOf("?") >= 0)
    {
        path += "&" + date.getTime();
    }
    else
    {
        path += "?" + date.getTime();
    }       
	var res = window.showModalDialog(path, window, "dialogWidth="+w+"px; dialogHeight="+h+"px ; dialogTop="+y+"; dialogLeft="+x+"; resizable="+resizable+"; status=no; ");
	return res;
}

function OpenWindow(path, winName, w, h, canResize, haveScrollBar, x, y)
{
	var width=w;
	var height=h;
	var resizable = "no";
	var scrollBar = "no";
	
	if (haveScrollBar)
		scrollBar = "yes";
	
	if (canResize)
		resizable = "yes";

	var win=window.open(path, winName, "toolbar=no,  resizable=" + resizable + ", status=yes, scrollbars=" + scrollBar + ", menubar=no, width=" + width + ",height="+height+ ',top='+y+',screenY='+y+',left='+x+',screenX='+x);
	if (win != null && win != undefined)
	{
	    win.window.focus();
	}
	
	return win;
}

function OpenWindow2(path, winName, w, h, canResize, haveScrollBar)
{
    var width=w;
	var height=h;
	var centerX=(screen.width-width)/2; //pop up center screen
	var centerY=(screen.height-height)/2;
	OpenWindow(path, winName, w, h, canResize, haveScrollBar, centerX, centerY);
}

function OpenWindow3(path, winName, w, h, canResize)
{	
    var width=w;
	var height=h;
	var centerX=(screen.width-width)/2; //pop up center screen
	var centerY=(screen.height-height)/2;
	OpenWindow(path, winName, w, h, canResize, false, centerX, centerY);
}

var gvItemClass = "";
function GridViewItemMouseOver(gvItem)
{
	gvItemClass = gvItem.className;
	gvItem.className = "GridViewHover";
}

function GridViewItemMouseOut(gvItem)
{
	gvItem.className = gvItemClass;
}

function SetSelectionRange(input, selectionStart, selectionEnd)
{
	if (input.SetSelectionRange)
	{
		input.focus()
		input.SetSelectionRange(selectionStart, selectionEnd)
	}
	else if (input.createTextRange)
	{
		var range = input.createTextRange();
		range.moveEnd('character', selectionEnd);
		range.moveStart('character', selectionStart);
		range.select();
	}
}

function ReplicateString(val, val_len, repVal) {
    var rep_len = 10 - val_len;
    var str = '';
    for (var i = 0; i < rep_len; i++)
        str += repVal;
    return str + val;
}