
// Add a trim method to the Javascript String object.
String.prototype.trim = function() {

 // skip leading and trailing whitespace
 // and return everything in between
  var x=this;
  x=x.replace(/^\s*(.*)/, "$1");
  x=x.replace(/(.*?)\s*$/, "$1");
  return x;
}




var exp_Space_head = /^(\s+)(\S?.*)$/ ;
var exp_Space_tail = /^(.*\S+)(\s+)$/ ;
var exp_Space_mid  = /^(\S+)(\s+)(\S?.*)$/ ;
var exp_alphanumeric = /^[a-zA-Z0-9]*$/;
function doTrim(trimComponent)  {
	trimComponent = trimComponent.replace(exp_Space_head, "$2");
	trimComponent = trimComponent.replace(exp_Space_tail, "$1");
	return trimComponent;
}

function selectAndPopulateDropDownList(selection, menuItems, menu,form) {
	if(form.elements[menu] != null && form.elements[menu].options != null)
	{	
		form.elements[menu].options.length= 0;
		for (var j = 0; j < menuItems.length; j++) {
			form.elements[menu].options[j] = new Option(convertToChars(menuItems[j].name), menuItems[j].value);
			if (form.elements[menu].options[j].value == selection) {
				form.elements[menu].selectedIndex = j;
			}
		}
	}
}

function setInputField(value,inputName,form) {
	form.elements[inputName].value = value;
}
                
function ap_selectAndPopulateDynamicDropDownList(selection, subSelection, menuItems, subMenuItems, menu, subMenu, form){
	form.elements[menu].options.length= 0;
	for (var j = 0; j < menuItems.length; j++) {
		form.elements[menu].options[j] = new Option(convertToChars(menuItems[j].name), menuItems[j].value);
		if (form.elements[menu].options[j].value == selection) {
			form.elements[menu].selectedIndex = j;
			ap_selectAndPopulateDynamicSubDropDownList(selection, subSelection, subMenuItems, subMenu, form);
		}
	}
}
function ap_selectAndPopulateDynamicSubDropDownList(selection, subSelection, menuItems, menu, form){
        var k=0;
	form.elements[menu].options.length= 0;
	for (var j = 0; j < menuItems.length; j++) {
	        if (menuItems[j].category==selection) {
			form.elements[menu].options[k] = new Option(convertToChars(menuItems[j].name), menuItems[j].value);
			if (form.elements[menu].options[k].value == subSelection) {
				form.elements[menu].selectedIndex = k;
			}
			k=k+1;
		}
	}
} 




function strReplace(string,text,by) {
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += strReplace(string.substring(i+txtLength,strLength),text,by);

    return newstr;
}

function convertToChars(remarks) {
	if (remarks!=null) {
    	remarks = strReplace(remarks,'&amp;','&');
	    remarks = strReplace(remarks,'&#39;','\'');
	    remarks = strReplace(remarks,'&#45;','-');
	    remarks = strReplace(remarks,'&#47;','/');
	    remarks = strReplace(remarks,'&quot;','\"');
	    remarks = strReplace(remarks,'&gt;','>');
	    remarks = strReplace(remarks,'&lt;','<');
	    remarks = strReplace(remarks,'&brvbar;','|');
	}
    return remarks;
}

function convertChars(remarks) {
    remarks = strReplace(remarks,'/','&#47;');
    remarks = strReplace(remarks,'-','&#45;');
    remarks = strReplace(remarks,'&','&amp;');
    remarks = strReplace(remarks,'\'','&#39;');
    remarks = strReplace(remarks,'\"','&quot;');
    remarks = strReplace(remarks,'>','&gt;');
    remarks = strReplace(remarks,'<','&lt;');
    remarks = strReplace(remarks,'|','&brvbar;');
    return remarks;
}



function cancelRefresh() {
  // keycode for F5 function
  if (window.event && window.event.keyCode == 116) {
    window.event.keyCode = 8;
  }
  // keycode for backspace
  if (window.event && window.event.keyCode == 8) {
    // try to cancel the backspace
    window.event.cancelBubble = true;
    window.event.returnValue = false;
    return false;
  }
}

function doUpperCase(value_event){
   var value = value_event.value.toUpperCase().trim();
   document.forms[0].elements[value_event.name].value = value;
}

function setTrim(value_event){
   var value = value_event.value.trim();
   document.forms[0].elements[value_event.name].value = value;
}



function isLetterOrDigit (c){ 
	return (isLetter(c) || isDigit(c))
}


function isEmpty(s){ 
	return ((s == null) || (s.length == 0))
}

function isLetter (c){ 
	return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
}

// Returns true if character c is a digit 
// (0 .. 9).

function isDigit (c){ 
	return ((c >= "0") && (c <= "9"))
}

function isAlphanumeric (s){ 
   var i;
    // Search through string's characters one by one
    // until we find a non-alphanumeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)   {   
        // Check that current character is number or letter.
        var c = s.charAt(i);

        if (! (isLetter(c) || isDigit(c) ) )
        return false;
    }

    // All characters are numbers or letters.
    return true;
}

function doConstructDecimalFormat(inputName, decimalPlace, theForm)  {
	var number = theForm.elements[inputName].value.trim();
	if(number != "") {
		if(isNaN(number)) {
			alert("Please enter numeric value only.");
			theForm.elements[inputName].value = "";	
			return false;
		}
		number = round(number, decimalPlace);
		number = number+"";
		if(number.indexOf('.') == -1) {
			if(decimalPlace != 0) {
			   number = number+".";
			   for(var i=0;i<decimalPlace;i++) {
				number = number+"0";
			   }
			}
		} else if(number.indexOf('.') != -1 && number.substring(number.indexOf('.')+1, number.length).length < decimalPlace) {
		    var j = decimalPlace-number.substring(number.indexOf('.')+1, number.length).length;
			if(decimalPlace != 0) {
				for(var i=0;i<j;i++) {
					number = number+"0";
				}
			}
		}
	    theForm.elements[inputName].value = number;	
	    return true;
	} else {
	   alert("Please enter numeric value.");
	   theForm.elements[inputName].value = "";	
	   return false;
	}
   
}

function round(number, x) {
    return Math.round(number*Math.pow(10, x))/Math.pow(10, x);
}

function y2k(number) { return (number < 1000) ? number + 1900 : number; }

function getWeekNum(year) {
    var newYear = new Date(year,0,1);
    var offset = 7 + 1 - newYear.getDay();
    if (offset == 8) offset = 1;
    var daynum = ((Date.UTC(y2k(year),11,31,0,0,0) - Date.UTC(y2k(year),0,1,0,0,0)) /1000/60/60/24) + 1;
    var weeknum = Math.floor((daynum-offset+7)/7);
    if (weeknum == 0) {
        year--;
        var prevNewYear = new Date(year,0,1);
        var prevOffset = 7 + 1 - prevNewYear.getDay();
        if (prevOffset == 2 || prevOffset == 8) weeknum = 53; else weeknum = 52;
    }
    return weeknum;
}

function getYear(date_time){
	var year = date_time.substring(7,9);
	year = Math.round(year);
	if (year >= 90) {
		year = 1900 + year;
	} else {
		year = 2000 + year;
	}
	return year;
}
