function setupComboBox(elementId, data, firstElement, isJSONObj) {
	var tempSelect = document.getElementById(elementId);
	tempSelect.innerHTML = "";
	if (firstElement != null) {
		tempSelect.options[tempSelect.options.length] = new Option(firstElement, -1, true, true);
	}
	
	for (var tempIterator = 0; tempIterator < data.length; tempIterator++){
		if (isJSONObj) 
			tempSelect.options[tempSelect.options.length] = new Option(data[tempIterator]['name'], data[tempIterator]['id'], false, false);
		else
			tempSelect.options[tempSelect.options.length] = new Option(data[tempIterator][0], data[tempIterator][1], false, false);
	}	
}

function setupComboBoxWithWidth(elementId, data, firstElement, isJSONObj, width) {
	var tempSelect = document.getElementById(elementId);
	tempSelect.innerHTML = "";
	if(width != null){
		tempSelect.style.width = width + "px";
	}
	if (firstElement != null) {
		tempSelect.options[tempSelect.options.length] = new Option(firstElement, -1, true, true);
	}
	
	for (var tempIterator = 0; tempIterator < data.length; tempIterator++){
		if (isJSONObj) 
			tempSelect.options[tempSelect.options.length] = new Option(data[tempIterator]['name'], data[tempIterator]['id'], false, false);
		else
			tempSelect.options[tempSelect.options.length] = new Option(data[tempIterator][0], data[tempIterator][1], false, false);
	}	
}

function getElementValue(elementId) {
	return $.trim($("#"+elementId).val());
}

function removeElementIfExists(tempElementId) {
	// Sanity Check
	if ( (document.getElementById(tempElementId) != null) && (document.getElementById(tempElementId).parentNode != null) )
	{
		// Element exists, as does parentNode, so let's remove element
		document.getElementById(tempElementId).parentNode.removeChild(document.getElementById(tempElementId));
	}
	
	// Remove the IE Helper too
	// Sanity Check
	if ( (document.getElementById(tempElementId + "_IEHelper") != null) && (document.getElementById(tempElementId + "_IEHelper").parentNode != null) )
	{
		// Element exists, as does parentNode, so let's remove element
		document.getElementById(tempElementId + "_IEHelper").parentNode.removeChild(document.getElementById(tempElementId + "_IEHelper"));
	}
}
function getTopXPosition(posX) {
	if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
	    //DOM compliant
	    document.body.scrollTop=0;
	    document.body.scrollLeft=0;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
	    //IE6 standards compliant mode
	    document.documentElement.scrollTop=0;
	    document.documentElement.scrollLeft=0;
	}
	var bName = navigator.appName; 
	var bVer = parseInt(navigator.appVersion);
	var topPx = posX + '%' ;
	// For IE 6, fix container positioning:
	if( bName == "Microsoft Internet Explorer" && bVer < 7 )   
    	topPx = (document.documentElement.scrollTop || document.body.scrollTop) + Math.round(posX * (document.documentElement.offsetHeight || document.body.clientHeight) / 100) + 'px';
    return topPx ;
}

function setFocus(idName) {
	try {
		var obj = document.getElementById(idName);
		if (obj != null && !obj.disabled) {
			obj.focus();

			if (obj.type == 'text') {
				obj.select();
			}
		}
	} 
	catch (e) {
	}
}

function showDialogPopup(elementDiv, width, height) {
	var maxWidth = -1;
	var maxHeight = -1;
	if (typeof window.innerWidth != 'undefined'){
		maxWidth = window.innerWidth;
	}
	else {
		maxWidth = document.documentElement.clientWidth;
	}
		
	if (typeof window.innerHeight != 'undefined'){
		maxHeight = window.innerHeight - 20;
	}
	else {
		maxHeight = document.documentElement.clientHeight;
	}
	
	if (width > maxWidth) {
		width = maxWidth;
	}

	if (height > maxHeight) {
		height = maxHeight;
	}

	tb_show('','#TB_inline?height=' + height + '&width=' + width + '&inlineId=' + elementDiv + '&modal=true');
}

function showDialogPopupWidthContent(content, width, height) {
	if (document.getElementById("TB_window") == null) {
		document.getElementById("div_dialog").innerHTML = content;
		showDialogPopup("div_dialog", width, height);
		return true;
	}
	
	return false;
}

function setValueToCell(row, cellId, value, textAlign, formatType) {
	var cell = row.insertCell(cellId);
	
	if (textAlign && textAlign != null) {
		cell.style.textAlign = textAlign;
	}

    if (formatType) {
	    if (formatType == 'Integer'){
	    	value = formatIntegerValue(value);
		 }
		 else if(formatType=='Decimal') {
	    	value = formatDecimalValue(value);
		 }
	}
    cell.innerHTML = escapeHtmlSpecialCharacters(value);
	return cell;
}

function escapeHtmlSpecialCharacters(value) {
	var returnString = '';
	if (value != null) {
		for (var i = 0; i < value.length; i++) {
			var char = value.charAt(i);
			if (char == '<') {
				returnString += '&lt;';
			}
			else if (char == '>') {
				returnString += '&gt;';
			}
			else if (char == '&') {
				returnString += '&amp;';
			}
			else if (char == '"') {
				returnString += '&quot;';
			}
			else {
				returnString += char;
			}
		}
	}
	return returnString;
}

function setDisabled(idSelect ,flag) {
	document.getElementById(idSelect).disabled = flag;	
}

function closePopupDialog() {
	tb_remove();
}

//format number
function validateNumericWithDot(objEvent) {
	objEvent = (objEvent) ? objEvent : event;
	var iKeyCode = (objEvent.charCode) ? objEvent.charCode : 
					((objEvent.keyCode) ? objEvent.keyCode : 
						((objEvent.which) ? objEvent.which : 0));
	
	return ((iKeyCode >= 48 && iKeyCode <= 57) || 
				(iKeyCode == 46) || 
				isNavigationKey(iKeyCode));
}

function validateNumericWithDotAndNegative(objEvent) {
	objEvent = (objEvent) ? objEvent : event;
	var iKeyCode = (objEvent.charCode) ? objEvent.charCode : 
					((objEvent.keyCode) ? objEvent.keyCode : 
						((objEvent.which) ? objEvent.which : 0));
	
	return ((iKeyCode >= 48 && iKeyCode <= 57) || 
				(iKeyCode == 46) || (iKeyCode == 45) ||
				isNavigationKey(iKeyCode));
}

function validateCharAmpCommaSpaceOnly(objEvent) {
    objEvent = (objEvent) ? objEvent : event;
    var iKeyCode = (objEvent.charCode) ? objEvent.charCode : ((objEvent.keyCode) ? objEvent.keyCode : ((objEvent.which) ? objEvent.which : 0));
    if((iKeyCode>=65 && iKeyCode<=90) || (iKeyCode>=97 && iKeyCode<=122)|| (iKeyCode == 38) || (iKeyCode == 44) || (iKeyCode == 32) || isNavigationKey(iKeyCode))  return true;
    return false;
}

function isNavigationKey(key) {
    return (key == 2 || key == 3 || key == 8 || key == 9 || 
    		key == 22 || 
    		(key >= 28 && key <= 31) ||
    		(key >= 33 && key <= 40) ); 
}


function formatDecimalValue(dollarAmt) {
	if (isNaN(dollarAmt) || (dollarAmt + '') == '') {
		return dollarAmt;
	}

	var isNeg = (dollarAmt < 0);   
	
	// rounds total to two decimal places
	dollarAmt = "" + ((Math.round(dollarAmt * 100)) / 100);
	dec1 = dollarAmt.substring(dollarAmt.length-3, dollarAmt.length-2);
	dec2 = dollarAmt.substring(dollarAmt.length-2, dollarAmt.length-1);
	if (dec1 != '.') { // adds trailing zeroes if necessary
		if (dec2 == '.') dollarAmt += "0";
		else dollarAmt += ".00";
	}
    
    var strCommas = put_commas('' + dollarAmt);
    if (isNeg){
        strCommas = strCommas.replace("-","");
        strCommas =  "(" + strCommas + ")";
     }
     return strCommas;
}

function formatIntegerValue(intValue) {
	if (isNaN(intValue) || (intValue + '') == '') {
		return intValue;
	}

	var isNeg = (intValue < 0)   
    var strCommas = put_commas('' + intValue);	

    if (isNeg){
        strCommas = strCommas.replace("-","");
        strCommas =  "(" + strCommas + ")";
     }

     return strCommas;
}

function correctFormatDecimalNumber(obj, ignoredError) {
	obj.value = removeBrackets(obj.value);
	obj.value = split_commas(obj.value);
	
	if (isNaN(obj.value)) {
		if (typeof(ignoredError) == 'undefined' || !ignoredError) {
			obj.select();
			obj.focus();
		}

		return ""
     }
     
     return formatDecimalValue(obj.value);
}

/* format 4 digits*/
function correctFormatDecimalNumber2(obj, ignoredError) {
	obj.value = removeBrackets(obj.value);
	obj.value = split_commas(obj.value);
	
	if (isNaN(obj.value)) {
		if (typeof(ignoredError) == 'undefined' || !ignoredError) {
			obj.select();
			obj.focus();
		}

		return ""
     }
     
     return formatDecimalValue2(obj.value);
}

function formatDecimalValue2(dollarAmt) {
	if (isNaN(dollarAmt) || (dollarAmt + '') == '') {
		return dollarAmt;
	}

	var isNeg = (dollarAmt < 0);   
	
	// rounds total to four decimal places
	dollarAmt = "" + ((Math.round(dollarAmt * 10000)) / 10000);
	dec1 = dollarAmt.substring(dollarAmt.length-5, dollarAmt.length-4);
	dec2 = dollarAmt.substring(dollarAmt.length-4, dollarAmt.length-3);
	dec3 = dollarAmt.substring(dollarAmt.length-3, dollarAmt.length-2);
	dec4 = dollarAmt.substring(dollarAmt.length-2, dollarAmt.length-1);
	if (dec1 != '.') { // adds trailing zeroes if necessary
		if (dec2 == '.') dollarAmt += "0";
		else if(dec3 == '.') dollarAmt += "00";
		else if(dec4 == '.') dollarAmt += "000";			
		else dollarAmt += ".0000";
	}
    
    var strCommas = put_commas('' + dollarAmt);
    if (isNeg){
        strCommas = strCommas.replace("-","");
        strCommas =  "(" + strCommas + ")";
     }
     return strCommas;
}

function correctFormatIntegerNumber(obj, ignoredError) {
	obj.value= removeBrackets(obj.value);
	obj.value = split_commas(obj.value);

	if (isNaN(obj.value)){
		if (typeof(ignoredError) == 'undefined' || !ignoredError) {
			obj.select();
			obj.focus();
		}

		return "0"
	}
	
	return formatIntegerValue(obj.value);
}


function removeBrackets(moneyStr){
	if (moneyStr == null ||moneyStr == "") {
		return "";
	}
    
    var str = moneyStr.replace("(","-");
    return str.replace(")","");
}

function split_commas(mystring) { 
	if (!mystring || mystring == '')
		return mystring;
		
	var myarray = mystring.split(','); 
	var amt = "";
	
	for (var i = 0; i < myarray.length; i++) {
		amt += myarray[i];
	} 
	
	return amt;
} 

function put_commas(number) {
	var posneg = "";
	var index = number.indexOf(".");
	var decimals = "";
	
	if(index != -1){
		decimals = number.substring(number.indexOf("."));
	}

	number = '' + parseInt(number);
	if (number.charAt(0) == "-"){
		posneg="-";
		number = number.substring(1);
	}
	
	if (number.length > 3) {
		var mod = number.length % 3;
		var output = (mod > 0 ? (number.substring(0,mod)) : '');

		for (var i = 0 ; i < Math.floor(number.length / 3); i++) {
			if ((mod == 0) && (i == 0)) { 
				output += number.substring(mod+ 3 * i, mod + 3 * i + 3);
			}
			else { 
				output+= ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
			}
		}
		
		return (posneg + output + decimals);
	}

	return (posneg + number + decimals);
}

function isNumeric(sText) {
	var ValidChars = "0123456789.";
	var IsNumber=true;
	var Char;
 
    for (i = 0; i < sText.length && IsNumber == true; i++) { 
	    Char = sText.charAt(i); 
	    if (ValidChars.indexOf(Char) == -1)  {
	         IsNumber = false;
	    }
    }
   	return IsNumber;
}

function isBigDecimalNumeric(sText) {
	if(sText == null || sText == "" || sText=="0.00" || sText=="0") return false
	var ValidChars = "0123456789.,";
	var IsNumber=true;
	var Char; 	
    for (i = 0; i < sText.length && IsNumber == true; i++) { 
	    Char = sText.charAt(i); 
	    if (ValidChars.indexOf(Char) == -1)  {
	         IsNumber = false;
	    }
    }
   	return IsNumber;
}

function showHideRow(objId){
	var obj = document.getElementById(objId);

	if (obj != null) {
		var isShow = obj.style.display != 'none';
		obj.style.display = isShow ? 'none' : '';
	}
}

function fillData(elementID, data) {
	if (document.getElementById(elementID) != null)
		document.getElementById(elementID).value = (data == 0 ? '' : data) ;
}

function fillCheckbox(elementID, data) {
	if (document.getElementById(elementID)!=null)
	{
		if( data == true )
			$("#"+elementID).attr("checked","checked");
	}
		
}

function customizeAccountName(accountName){
	var result = '' + accountName;
	
	if (!isNaN(accountName)) {
		while (result.length < 20) {
			result = ' ' + result;
		} 
	}
	
	return result;
}

function initDatePicker(dateFormat)
{
	var currentTime = new Date() ;
	var year = currentTime.getFullYear() ;
	var sDate = '01/01/' +(year-20) ;
	if(dateFormat!=null & dateFormat!="")
		sDate = '01/' +(year-20) ;
	$('.date-pick').bind('blur',function(event) {
		if($(".date-pick").val() == ""){
			$('.date-pick').datePicker({startDate:sDate});
		};
	});
	$('.date-pick').datePicker({startDate:sDate});
	
}

function displayProgress(elementDiv) {
	var element = document.getElementById(elementDiv);
	var tempString = "";
		tempString += "<table width='100%'>";
		tempString += "<tr class='panel_header'><td colspan='2'>Please wait ... </td></tr><tr><td>&nbsp;</td></tr><tr>";
		tempString += "<td class='text_field' align='center'><img src='/summitbilling/images/loadingAnimation.gif'/></td></tr>";
		tempString += "</table>";
		element.innerHTML = tempString;
		var topPx = getTopXPosition(30) ;
		$("#"+elementDiv).modal({
				containerCss: {width:'520px',height:'100px',left:'40%',top:topPx,marginLeft:'-150px',backgroundColor: '#ffffff', border: '1px solid #000000',overflow:'auto'}});
}

function checkActionRunning(elementDiv, firstTime, url, nextFunction){
	var element = document.getElementById(elementDiv);
	if (firstTime) {
		//waiting
		var tempString = "";
		tempString += "<table width='100%'>";
		tempString += "<tr class='panel_header'><td colspan='2'>Please wait ... </td></tr><tr><td>&nbsp;</td></tr><tr>";
		tempString += "<td class='text_field' align='center'><div id='progressDiv'/></td></tr>";
		tempString += "</table>";
		element.innerHTML = tempString;
		var topPx = getTopXPosition(30) ;
		$("#"+elementDiv).modal({
				containerCss: {width:'520px',height:'150px',left:'40%',top:topPx,marginLeft:'-150px',backgroundColor: '#ffffff', border: '1px solid #000000',overflow:'auto'}});
	}
	else {
		if (ProgressBar.maxItem == "-1" && ProgressBar.currentItem == "-1") {
			$.modal.close();
			if(document.getElementById("TB_window") != null) {
				closePopupDialog();
			}
			//eval(nextFunction);
			return;
		}
		var tmpDiv = document.getElementById("progressDiv");
		tmpDiv.innerHTML = "";
		var tempString = "";
		tempString += "<table width='100%'><tr>";
		for (var i = 0; i < 50; i++) {
			if (i < ProgressBar.currentItem*50/ProgressBar.maxItem) {
				tempString += "<td bgcolor='#0059A5'>&nbsp;</td>";
			}
			else {
				tempString += "<td>&nbsp;</td>";
			}
		}
		tempString += "</tr></table>";
		tmpDiv.innerHTML = tempString;
	}

	setTimeout("executeRemotePostRequest('" + contextPath + url +"', 'navigator=checkProgress&nextFunction=checkActionRunning(\"" + elementDiv + "\", false, \"" + url + "\", \"\");')", 500);
}

function check3FldDate(month, day, year) {
  
  if((month.length < 1) && (day.length < 1) && (year.length < 1)) {
    return 0;
  }

  // Make sure the formats for the fields are ok.
  if (!month || isNaN(month) || month.length < 1)
  {
    return -1;
  }
  else if (!day || isNaN(day) || day.length < 1)
  {
    return -2;
  }
  else if ((isNaN(year)) || (year.length < 4) || (year.length > 4))
  {
    return -3;
  }

  // Basic error checking.
  if (month < 1 || month > 12)
  {
    return -1;
  }
  else if (day < 1 || day > 31)
  {
    return -2;
  }
  else if (year < 1880 || year > 9999)
  {
    return -3;
  }

  // Advanced error checking.
  if (month == 4 || month == 6 || month == 9 || month == 11)
  {
    if (day == 31)
    {
      return -4;
    }
  }

  // February and leap year check.
  if (month == 2 && day > 28)
  {
    if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
    {
      // Check the day.  If it is larger than 29, it is invalid.
      if (day > 29)
      {
        return -5;
      }
    }
    else
    {
      return -5;
    }
  }
  return 0;
}