NS4 = (document.layers) ? true : false;

function displayClientSideMessageBox(errorList, boxType)
{
   if (boxType != 'success' && boxType != 'alert' && boxType != 'error')
   {
      return;
   }

   if (errorList instanceof Array)
   {
      var errorBox = "<div class=\"" + boxType + "\"><ul>";
      var i;
      for (i = 0; i < errorList.length; i ++ )
      {
         errorBox = errorBox + "<li>" + errorList[i] + "</li>";
      }
      errorBox = errorBox + "</ul></div>";

      $('client_side_message_box').innerHTML = errorBox;
   }
   else
   {
      return;
   }
}

function clearClientSideMessageBox()
{
	var messageBoxSection = $('client_side_message_box');
	if (messageBoxSection == null || messageBoxSection == 'undefined' || messageBoxSection == 'null') return;
	
	var messageBoxInnerHTML = messageBoxSection.innerHTML;
	if (messageBoxSection == null || messageBoxSection == 'undefined' || messageBoxSection == 'null') return;
	
	if (messageBoxInnerHTML != "")
	{
		$('client_side_message_box').innerHTML = "";
	}
}

function createCSSRule(selector, declaration)
{
   try
   {
      var ua = navigator.userAgent.toLowerCase();
      var isIE = (/msie/.test(ua)) && ! (/opera/.test(ua)) && (/win/.test(ua));

      var style_node = document.createElement("style");
      style_node.setAttribute("type", "text/css");
      style_node.setAttribute("media", "screen");

      if ( ! isIE) style_node.appendChild(document.createTextNode(selector + " {" + declaration + "}"));

      document.getElementsByTagName("head")[0].appendChild(style_node);

      if (isIE && document.styleSheets && document.styleSheets.length > 0)
      {
         var last_style_node = document.styleSheets[document.styleSheets.length - 1];
         if (typeof(last_style_node.addRule) == "object") last_style_node.addRule(selector, declaration);
      }
   }
   catch(err)
   {
      var errMsg = "There was an error on this page.\n\n";
      errMsg += "Error description: " + err.description + "\n\n";
      errMsg += "Click OK to continue.\n\n";
      alert(errMsg);
      return null;
   }
}

function getSelectBoxGivenTwoDimArray(twoDimArrayValueByName, selectBoxName, selectedValue)
{
   try
   {
      // Hack to deal with the IE problem setting the name attribute
      var ua = navigator.userAgent.toLowerCase();
      var isIE = (/msie/.test(ua)) && ! (/opera/.test(ua)) && (/win/.test(ua));
      
      var selectBox;
      if (isIE)
      {
         selectBox = document.createElement('<select name="' + selectBoxName + '"></select>');
      } else {
         selectBox = document.createElement('select');
         selectBox.setAttribute('name', selectBoxName)
      }
      var i, j;
      for (i = 0; i < twoDimArrayValueByName.length;
      i ++ )
      {
         var name = twoDimArrayValueByName[i][0];
         var value = twoDimArrayValueByName[i][1];

         var option = document.createElement('option');
         option.setAttribute('value', value)

         if (value == selectedValue)
         {
            option.setAttribute('selected', 'selected');
         }

         optionText = document.createTextNode(name);
         option.appendChild(optionText);
         selectBox.appendChild(option);
      }
      return selectBox;
   }
   catch(err)
   {
      var errMsg = "There was an error on this page.\n\n";
      errMsg += "Error description: " + err.description + "\n\n";
      errMsg += "Click OK to continue.\n\n";
      alert(errMsg);
      return null;
   }
}

function gotoURL(url)
{
   if (url == null || url != 'undefined' || url != 'null')
   {
      document.location = url;
   }
}

function checkAll(fieldName)
{
   var checkboxes = eval('document.forms[0].' + fieldName);
   if (checkboxes == null || checkboxes == 'undefined' || checkboxes == 'null') return;

   if (checkboxes.type == 'checkbox')
   {
   	  if (checkboxes.disabled == false)
   	  {
         checkboxes.checked = true;
      }
   }
   else
   {
      for (i = 0; i < checkboxes.length; i ++ )
      {
   	     if (checkboxes[i].disabled == false)
   	     {
            checkboxes[i].checked = true ;
         }
      }
   }
}

function unCheckAll(fieldName)
{
   var checkboxes = eval('document.forms[0].' + fieldName);
   if (checkboxes == null || checkboxes == 'undefined' || checkboxes == 'null') return;

   if (checkboxes.type == 'checkbox')
   {
   	  if (checkboxes.disabled == false)
   	  {
         checkboxes.checked = false;
      }
   }
   else
   {
      for (i = 0; i < checkboxes.length; i ++ )
      {
   	     if (checkboxes[i].disabled == false)
   	     {
            checkboxes[i].checked = false;
         }
      }
   }
}

function areAnyItemsChecked(fieldName)
{
   var checkboxes = eval('document.forms[0].' + fieldName);
   if (checkboxes == null || checkboxes == 'undefined' || checkboxes == 'null') return false;

   if (checkboxes.type == 'checkbox')
   {
      if (checkboxes.checked == true)
      {
         return true;
      }
      else
      {
         return false;
      }
   }
   else
   {
      for (i = 0; i < checkboxes.length; i ++ )
      {
         if (checkboxes[i].checked == true)
         {
            return true;
         }
      }
      return false;
   }
}

function areAllItemsChecked(fieldName)
{
   var checkboxes = eval('document.forms[0].' + fieldName);
   if (checkboxes == null || checkboxes == 'undefined' || checkboxes == 'null') return false;

   if (checkboxes.type == 'checkbox')
   {
      if (checkboxes.checked == true)
      {
         return true;
      }
      else
      {
         return false;
      }
   }
   else
   {
      for (i = 0; i < checkboxes.length; i ++ )
      {
         if (checkboxes[i].checked != true)
         {
            return false;
         }
      }
      return true;
   }
}

function getNumCheckedItems(fieldName)
{
   var checkboxes = eval('document.forms[0].' + fieldName);
   if (checkboxes == null || checkboxes == 'undefined' || checkboxes == 'null') return false;

   if (checkboxes.type == 'checkbox')
   {
      if (checkboxes.checked == true)
      {
         return 1;
      }
      else
      {
         return 0;
      }
   }
   else
   {
      var count = 0;
      for (i = 0; i < checkboxes.length; i ++ )
      {
         if (checkboxes[i].checked == true)
         {
            count ++ ;
         }
      }
      return count;
   }
}

function changeControllerCheckboxState(checkboxController, checkboxGroupName)
{
   var checkboxObject = eval('document.forms[0].' + checkboxController);
   if (checkboxObject == null || checkboxObject == 'undefined' || checkboxObject == 'null') return;
   if (checkboxObject.type != 'checkbox') return;

   if (areAllItemsChecked(checkboxGroupName))
   {
      checkboxObject.checked = true;
   }
   else
   {
      checkboxObject.checked = false;
   }
}

function toggleCheckboxGroup(checkboxController, checkboxGroupName)
{
   var intendedState = checkboxController.checked;
   if (intendedState)
   {
      checkAll(checkboxGroupName);
   }
   else
   {
      unCheckAll(checkboxGroupName);
   }
}

function getArrayOfCheckedItems(fieldName)
{
	var checkboxes = eval('document.forms[0].' + fieldName);
	if (checkboxes == null || checkboxes == 'undefined' || checkboxes == 'null') return null;

	var selectedItems = new Array(0);
	if (checkboxes.type == 'checkbox')
	{
		if (checkboxes.checked == true)
		{
			selectedItems.push(checkboxes.value);
		}
	} else {
		for (i = 0; i < checkboxes.length; i ++ )
		{
			if (checkboxes[i].checked == true)
			{
				selectedItems.push(checkboxes[i].value);
			}
		}
	}
	
	return selectedItems;
}

function imposeMaxLengthOnTextArea(Object, maxLen)
{
   return (Object.value.length <= maxLen);
}

function isIntrinsicObjectID(id)
{
	var test = parseInt(id);
	if (isNaN(test)) return false;

   if (test < 9000000000000000000) return false;
   if (test > 9000000000000000999) return false;
   return true;
}

function isValidMobFormObjectID(id)
{
	var test = parseInt(id);
	if (isNaN(test)) return false;

   if (test > 9300000000000000000) return false;
   if (test < 9000000000000000001) return false;
   return true;
}

function setSelectBoxValue(selectBoxName, valueToBeSelected)
{
	var selectBoxObject = eval('document.forms[0].' + selectBoxName);
	if (selectBoxObject == null || selectBoxObject == 'undefined' || selectBoxObject == 'null') return;
	if (selectBoxObject.type != 'select-one') return;
	
	var i;	
	for (i=0; i<selectBoxObject.options.length; i++) {
		if (selectBoxObject.options[i].value == valueToBeSelected) {
			selectBoxObject.selectedIndex = i;
			break;
		}
	}
}

function openHTMLFormWindow(url, windowName)
{
	var newWindow = window.open(url, windowName, 'toolbar=0,location=1,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=320,height=480');
	newWindow.focus();
}

function isValidHexColor(colorString) {
   var re = /^#?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$/;
   if (colorString.match(re)) {
      return true;
   } else {
      return false;
   }
}

function isAlphabetic(val)
{
	if (val.match(/^[a-zA-Z]+$/))
	{
		return true;
	} else {
		return false;
	}
}

function isAlphaNumeric(val)
{
	if (val.match(/^[a-zA-Z0-9]+$/)) {
		return true;
	} else {
		return false;
	} 
}

function isNumeric(val)
{
	if (val.match(/^[0-9]+$/)) {
		return true;
	} else {
		return false;
	} 
}

function stripAllTextAndTextAreaElements() {
	var numForms = document.forms.length;
	for(i=0; i<numForms; i++) {	
		var currentForm = document.forms[i];
		var numElements = currentForm.elements.length;
		for(j=0; j<numElements; j++) {
			if (currentForm.elements[j].type == "text" || currentForm.elements[j].type == "textarea") {
				currentForm.elements[j].value = currentForm.elements[j].value.strip();
			}
		}
	}
}

// dojo.require("dojo.currency");
function formatAsCurrency(textField, includeDollarSign, truncateMeToWholeDollar) {
    var value = textField.value;
    if (value.length == 0) {
        return false;
    }
    
    var digits = "0123456789";
    var size = value.length;
    var filteredValue = "";
    for (var i = 0; i < size; i++) {
        var ch = value.charAt(i);
        if ((digits.indexOf(ch) >= 0) || (ch == '.')) {
            filteredValue += ch;
        }
    }
    value = filteredValue;

    while ((value.charAt(0) == 0) && (value.length > 0)) {
        value = value.substring(1,value.length);
    }

    var decimal = value.indexOf('.');
    var dollars;
    var cents;
    if (decimal >= 0) {
        dollars = value.substring(0,decimal);
        cents = value.substring(decimal+1,value.length);
        if (cents.length > 2) {
            cents = cents.substring(0,2);
        }
        else if (cents.length == 1) {
            cents += "0";
        }
        else if (cents.length == 0) {
            cents = "00";
        }
    }
    else {
        dollars = value;
        cents = "00";
    }
    
    if ((dollars.length == 0) || (dollars == 0)) {
        dollars = 0;
    }

    if ((dollars > 0) || (cents > 0)) {
        value = dollars + "." + cents;
    }
    else {
        value = "";
    }
    
    if (value.length == 0) {
        textField.value = "";
        return false;
    }
    
    value = "$" + value;
    
    if (value != null && value.indexOf('$') == 0) {
        value = dojo.currency.parse(value, {currency: 'USD', type: 'currency'});
    }
		
    value = dojo.currency.format(value, {currency: 'USD'});
    
    if (truncateMeToWholeDollar) {
        value = value.substring(0, value.length - 3);
    }
		
    if (value != null) {
        if (includeDollarSign) {
            textField.value = value;
        }
        else {
            textField.value = value.substring(1, value.length);
        }
    }
    else {
        textField.value = "";
    }
    
    return false;
}

function isValidPassword(value) {
    if (value == null || value.length == 0) {
        return false;
    }
    
    var length = value.length;
    if (length < 6 || length > 15) {
        return false;
    }
    
    var acceptableCharacters = "0123456789abcdefghijklmnopqrstuvwxyz!@#$%^&*()_-+=.";
    for (var i = 0; i < length; i++) {
        var ch = value.charAt(i);
        if (acceptableCharacters.indexOf(ch) < 0) {
            return false;
        }
    }
    
    return true;
}
