// Regular Expressions for comparing data
var regEmail = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
var regZip = /^\d\d\d\d\d$/;
var regAlphaNumeric = /^[a-zA-Z0-9]+$/;
var regNums = /^\d+$/;
var regPhoneNums = /^[0-9\-\s]+$/;
var regAlphaNumDash = /^[\w\-]+$/;
var illegalChars = /[\<\'\>\"\`\\]/;
var regAlphaNumericSpace = /^[a-zA-Z0-9\s]+$/;
var regFaxNums = /^[0-9\-\s]+$/;
var CMInfo = new Array();
// General Functions
function hasIllegal(who) {
   if (who.match(illegalChars)) {
      return true;
   } else {
      return false;
   }
}
function isNum(who) {
   if (regNums.test(who)) {
      return true;
   } else {
      return false;
   }
}
function isAlphaNumDash(who) {
   if (regAlphaNumDash.test(who)) {
      return true;
   } else {
      return false;
   }
}
function isAlphaNumSpace(who) {
   if (regAlphaNumericSpace.test(who.value)) {
      return true;
   } else {
      ;
      return false;
   }
}
function isPhone(who) {
   if (regPhoneNums.test(who)) {
      return true;
   } else {
      return false;
   }
}
function isFax(who) {
   if (regFaxNums.test(who)) {
      return true;
   } else {
      return false;
   }
}
function isEmail(who) {
   if (regEmail.test(who)) {
      return true;
   } else {
      return false;
   }
}
function isAlphaNumeric(who) {
   if (regAlphaNumeric.test(who.value)) {
      return true;
   } else {
      return false;
   }
}
function isZip(who) {
   if (regZip.test(who.value)) {
      return true;
   } else {
      return false;
   }
}
function isRadio(group) {
   for (var i = 0; i < group.length; i++) {
      if (group[i].checked == true) {
         return true;
      } else {
         return false;
      }
   }
}
function isCheckbox(who) {
   if (who.checked == true) {
      return true;
   } else {
      return false;
   }
}
function isMultiList(list) {
   var selectedCount = '0';
   for (var i = 0; i < list.length; i++) {
      if (list[i].selected) selectedCount++;
   }
   if (selectedCount > 0) {
      return true;
   } else {
      return false;
   }
}
function isList(list) {
   if (list.selectedIndex > 0) {
      return true;
   } else {
      return false;
   }
}
// Style adjustment functions for error handling
function setStyleClass(who, style) {
   var obj = document.getElementById(who);
   if (typeof obj != "undefined") obj.className = style;
}
function setStyleColor(who, color) {
   var obj = document.getElementById(who);
   if (obj != null && typeof obj != "undefined") obj.style.color = color;
   return;
}
function setFontSize(who, size) {
   var obj = document.getElementById(who);
   if (typeof obj != "undefined") obj.style.fontSize = size;
}
function setFontWeight(who, weight) {
   var obj = document.getElementById(who);
   if (typeof obj != "undefined") obj.style.fontWeight = weight;
}
function focusFirstField(source) {
   source.focus();
}
/**	function to validate that atleast one checkbox / radio button /text is checked/entered from the passed group.
	@ param		group i.e the checkbox or radio button group name
	@ return	boolean true if atleast one is checked otherwise false.	*/
function isGroupSelected(formName, element) {
   var selected = false;
   var group = eval("document." + formName + "." + element);
   if (group.length) {
      for (var i = 0; i < group.length; i++) {
         if ((group[i].type == "checkbox" || group[i].type == "radio") && group[i].checked) {
            selected = true;
            break;
         }
         if (group[i].type == "text" && !isBlank(group[i].value)) {
            selected = true;
            break;
         }
         if (group[i].type == "hidden" && group[i].value == "Y") {
            selected = true;
            break;
         }
      }
   } else {
      if ((group.type == "checkbox" || group.type == "radio") && group.checked) {
         selected = true;
      }
      if (group.type == "text" && !isBlank(group.value)) {
         selected = true;
      }
      if (group.type == "hidden" && group.value == "Y") {
         selected = true;
      }
   }
   return selected;
}
function isGroupSelectedCount(formName, element) {
   var selected = 0;
   var group = eval("document." + formName + "." + element);
   if (group.length) {
      for (var i = 0; i < group.length; i++) {
         if (group[i].checked) {
            selected++;
         }
      }
   } else if (group.checked) {
      selected++;
   }
   return selected;
}
function selectAllForPages(fName, element) {
   var formName = eval("document." + fName);
   var flag = false;
   if (formName.selAll) {
      flag = formName.selAll.checked;
   }
   formName.All.checked = flag;
   selectAll(fName, element);
}
function selectAll(fName, element) {
   var group = eval("document." + fName + "." + element);
   var formName = eval("document." + fName);
   if (!formName.All.checked) {
      toggleCheckboxes(group, false);
      if (formName.selAll && formName.selAll.checked) {
         formName.selAll.checked = false;
         if (formName.isMultiPage && (formName.isMultiPage.value == "true")) {
            alert(errMultiPageSelPart2);
         }
      }
   } else {
      toggleCheckboxes(group, true);
   }
}
function selectAllForPagesBody(fName, element) {
   var formName = eval("document." + fName);
   var flag = false;
   if (formName.selAll) {
      flag = formName.selAll.checked;
   }
   if (flag) {
      formName.All.checked = flag;
      selectAllBody(fName, element);
   }
}
function selectAllBody(fName, element) {
   var group = eval("document." + fName + "." + element);
   var formName = eval("document." + fName);
   if (!formName.All.checked) {
      if (formName.selAll && formName.selAll.checked) {
         formName.selAll.checked = false;
         if (formName.isMultiPage && (formName.isMultiPage.value == "true")) {
            alert(errMultiPageSelPart2);
         }
      }
   } else {
      toggleCheckboxes(group, true);
   }
}
function toggleCheckboxes(group, flag) {
   if (group) {
      if (group.length) {
         for (var i = 0; i < group.length; i++) {
            group[i].checked = flag;
         }
      } else {
         group.checked = flag;
      }
   }
}
function isAnyItemSelected(group) {
   var itemchecked = false;
   if (group) {
      if (group.length) {
         for (var i = 0; i < group.length; i++) {
            if (group[i].checked) {
               itemchecked = true;
               break;
            }
         }
      } else {
         if (group.checked) {
            itemchecked = true;
         }
      }
   }
   return itemchecked;
}
function isFullGroupSelected(group) {
   var selected = true;
   if (group.length) {
      for (var i = 0; i < group.length; i++) {
         if (!group[i].checked) {
            selected = false;
            break;
         }
      }
   } else {
      if (!group.checked) {
         selected = false;
      }
   }
   return selected;
}
function deselectHeadChkbox(fName, element) {
   var group = eval("document." + fName + "." + element);
   var formName = eval("document." + fName);
   var isFull = isFullGroupSelected(group);
   var selectedCount = isGroupSelectedCount(fName, element);
   formName.All.checked = isFull;
   if (formName.selAll && formName.selAll.checked && !isFull) {
      formName.selAll.checked = isFull;
      if (formName.isMultiPage && (formName.isMultiPage.value == "true")) {
         if (selectedCount > 1) {
            alert(errMultiPageSelPart1);
         } else {
            alert(errMultiPageSelPart2);
         }
      }
   }
}
function trim(str) {
   return str.replace(/^\s*/, '').replace(/\s*$/, '');
}
function isBlank(name) {
   if (name.replace(/\s/g, "") == "")
      return true;
   return false;
}
function setTerritory(obj, element, fName) {
   var group = eval("document." + fName + "." + element);
   if (obj.checked) {
      if (group.length) {
         for (var i = 0; i < group.length; i++) {
            group[i].disabled = false;
         }
         group[0].checked = true;
      }
   } else {
      obj.checked = true;
   }
}
function viewDefinition(fName, element) {
   //window.open('viewscart?print=yes');
   var group = eval("document." + fName + "." + element);
   var stock = 'Stock - Standard order';
   var outage = 'Outage - Part required for unit outage \n where delivery delay has negative impact';
   var emergency = 'Emergency - Part required to return \n unit to commercial operation';
   var DownTurbines = 'GE Wind Down Turbines';
   var billOrderType = group.options[group.selectedIndex].text;
   if (billOrderType == 'Stock') {
      alert(stock);
   } else if (billOrderType == 'Outage') {
      alert(outage);
   } else if (billOrderType == 'Emergency') {
      alert(emergency);
   } else if (billOrderType == 'Down Turbines') {
      alert(DownTurbines);
   }
   return false;
}
function containsMsn(fromMsn) {
   if (fromMsn == 'fromSP') {
      return true;
   }
   if (fromMsn == 'fromDBInteranl') {
      return confirm(selectMsnInternal);
   }
   if (fromMsn == 'fromDBExternal') {
      return !confirm(selectMsnExternal);
   }
   return true;
}
