var a_cntrlInfo = new Array();
var a_groupInfo = new Array();
var a_groupName = new Array();
var a_catNbrLoc = new Array();
var displayType = "";
function getXmlHttpObject()
{
var xmlHttpObject = null;
try
{
xmlHttpObject = new XMLHttpRequest();
}
catch(ex)
{
try
{
xmlHttpObject = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(ex)
{
try
{
xmlHttpObject = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(ex)
{
xmlHttpObject = null;
}
}
}
return xmlHttpObject;
}
function getControl(aControlName)
{
var controlObj = null;
if(document.getElementById)
{
controlObj = document.getElementById(aControlName);
}
else if(document.all)
{
controlObj = document.all[aControlName];
}
return controlObj;
}
function updateValue(aControlName, aValue)
{
var controlObj = getControl(aControlName);
if(controlObj != null)
{
controlObj.value = aValue;
}
}
function updateInnerHTML(aControlName, aValue)
{
var controlObj = getControl(aControlName);
if(controlObj != null)
{
controlObj.innerHTML = aValue;
}
}
function cntrlInfo
(
aPartID,
aPartNbr,
aDescription,
aPrice,
aGroup,
aAccessKey,
aIsChecked,
aIsRequired,
aIsDisabled,
aCountExc,
aCountInc,
aSubName,
aImgName,
aSelName,
aPrcName
)
{
this.partID      = aPartID;
this.partNbr     = aPartNbr;
this.description = aDescription;
this.price       = aPrice;
this.group       = aGroup;
this.accessKey   = aAccessKey;
this.isChecked   = aIsChecked;
this.isRequired  = aIsRequired;
this.isDisabled  = aIsDisabled;
this.countExc    = aCountExc;
this.countInc    = aCountInc;
this.daSubName   = aSubName;
this.daImgName   = aImgName;
this.daSelName   = aSelName;
this.daPrcName   = aPrcName;
}
function groupInfo
(
aPartIDs,
aSelectedPartID,
aHasChanged
)
{
this.partIDs        = aPartIDs;
this.selectedPartID = aSelectedPartID;
this.hasChanged     = aHasChanged;
}
function catNbrLoc
(
aCatLocation,
aCatPartID,
aCatPartNbr,
aCatPrice,
aCatPriceCntrl,
aIsRequired
)
{
this.catLocation   = aCatLocation;
this.catPartID     = aCatPartID;
this.catPartNbr    = aCatPartNbr;
this.catPrice      = aCatPrice;
this.catPriceCntrl = aCatPriceCntrl;
this.isRequired    = aIsRequired;
}
function switchMenu1(aSubName, aImgName)
{
var eltSub = getControl(aSubName);
var eltImg = getControl(aImgName);
if(eltSub.style.display != 'none')
{
eltSub.style.display = 'none';
eltImg.src = mImageForPlus1;
}
else
{
eltSub.style.display = 'block';
eltImg.src = mImageForMinus1;
}
}
function switchMenu2(aSubName, aImgName, aHideOrShow)
{
var eltSub = getControl(aSubName);
var eltImg = getControl(aImgName);
if(eltSub != null && eltImg != null)
{
var hideMe = false;
if(aHideOrShow == "hide" || (aHideOrShow != "show" && eltSub.style.display != "none"))
{
hideMe = true;
}
if(hideMe)
{
eltSub.style.display = 'none';
eltImg.src = mImageForPlus2;
}
else
{
eltSub.style.display = 'block';
eltImg.src = mImageForMinus2;
}
}
}
function setSelectionStyle(aColumnsToDisplay)
{
for(var selIndx = 1; ; selIndx++)
{
var nextSelection = getControl('configSel_' + selIndx);
if(nextSelection == null)
{
break;
}
if(aColumnsToDisplay == 1)
{
nextSelection.style.padding='0px 0px 0px 32px';
nextSelection.style.width='99%';
}
else if(aColumnsToDisplay == 2)
{
nextSelection.style.padding='0px';
nextSelection.style.width='49%';
}
else if(aColumnsToDisplay == 3)
{
nextSelection.style.padding='0px';
nextSelection.style.width='33%';
}
else
{
nextSelection.style.padding='0px';
nextSelection.style.width='24%';
}
}
}
function collapseInnerMenus()
{
for(var groupIndx = 0, groupLength = a_groupName.length; groupIndx < groupLength; groupIndx++)
{
switchMenu2("subFor" + a_groupName[groupIndx], "imgFor" + a_groupName[groupIndx], "hide");
}
}
function checkOrUncheckControl(exCtrl, exCheckMe)
{
if(exCtrl != null)
{
if(exCheckMe == "true")
{
exCtrl.checked = true;
}
else
{
exCtrl.checked = false;
}
}
}
function buildDynamicCatNbr()
{
var aCatNbr = '';
var aLastObj = a_catNbrLoc[0];
var aThisObj = a_catNbrLoc[0];
var aRunLengthLoc = "-1";
if(getControl("aRunLengthLoc") != null)
{
aRunLengthLoc = getControl("aRunLengthLoc").value;
}
for(var indx = 0, catNbrLength = a_catNbrLoc.length; indx < catNbrLength; indx++)
{
aLastObj = aThisObj;
aThisObj = a_catNbrLoc[indx];
if(aThisObj.catLocation < 99)
{
if(aThisObj.catPartID != 'virtual')
{
if(aThisObj.isRequired || aThisObj.catPartNbr != '')
{
if(aLastObj.catPartID == 'virtual')
{
aCatNbr = aCatNbr + aLastObj.catPartNbr;
}
if(aThisObj.catLocation == aRunLengthLoc)
{
var aRunLengthNbr = getControl("aRunLengthNbr").value;
if(aRunLengthNbr.length == 1)
{
aRunLengthNbr = "0" + aRunLengthNbr;
}
aThisObj.catPartNbr = aRunLengthNbr;
}
if(aThisObj.catPartNbr != '')
{
aCatNbr = aCatNbr + aThisObj.catPartNbr;
}
else
{
aCatNbr = aCatNbr + ' __ ';
}
}
}
}
else
{
break;
}
}
if(displayType == 'p')
{
var aGroupCntrl     = 'prometheus';
var aGroupCntrlList = '';
var aGroupValue     = '';
var aGroupPrice     = 0.0;
var aTotalPrice     = 0.0;
for(var indx = 0, catNbrLength = a_catNbrLoc.length; indx < catNbrLength; indx++)
{
if(a_catNbrLoc[indx].catPartID == 'virtual')
{
continue;
}
if(aGroupCntrl != a_catNbrLoc[indx].catPriceCntrl)
{
if(aGroupCntrl != 'prometheus')
{
var eltPrc = getControl(aGroupCntrl);
if(eltPrc != null)
{
if(aGroupValue != '')
{
if(aGroupCntrlList.indexOf(aGroupCntrl) == -1 || eltPrc.innerHTML == '')
{
eltPrc.innerHTML = formatCurrency(aGroupPrice);
}
else
{
eltPrc.innerHTML = formatCurrency(parseFloat(eltPrc.innerHTML) + aGroupPrice);
}
}
else
{
if(aGroupCntrlList.indexOf(aGroupCntrl) == -1)
{
eltPrc.innerHTML = '';
}
}
aGroupCntrlList += aGroupCntrl;
}
}
aGroupCntrl  = a_catNbrLoc[indx].catPriceCntrl;
aGroupValue  = a_catNbrLoc[indx].catPartID;
aGroupPrice  = a_catNbrLoc[indx].catPrice;
}
else
{
aGroupValue += a_catNbrLoc[indx].catPartID;
aGroupPrice += a_catNbrLoc[indx].catPrice;
}
aTotalPrice += a_catNbrLoc[indx].catPrice;
}
if(aGroupValue != '')
{
updateInnerHTML(aGroupCntrl, formatCurrency(aGroupPrice));
}
else
{
updateInnerHTML(aGroupCntrl, "");
}
aTotalPrice = formatCurrency(aTotalPrice);
}
if(displayType == 'p')
{
getControl('configCatNbr').innerHTML =
'<table cellpadding=0 cellspacing=0 class="configCatNbrTable">'
+ '<tr height=22>'
+   '<td valign=top>'
+     '&nbsp;Catalog Number:&nbsp;&nbsp;' + aCatNbr
+   '</td>'
+   '<td valign=top align=right>'
+     'Total Price:&nbsp;&nbsp;$' + aTotalPrice
+   '</td>'
+ '</tr>'
+ '</table>';
}
else
{
getControl('configCatNbr').innerHTML =
'<table cellpadding=0 cellspacing=0 class="configCatNbrTable">'
+ '<tr height=22>'
+   '<td valign=top>'
+     '&nbsp;Catalog Number:&nbsp;&nbsp;' + aCatNbr
+   '</td>'
+ '</tr>'
+ '</table>';
}
}
function formatCurrency(aCurrency)
{
var formattedCurrency = Math.round(aCurrency * 1000) / 1000;
if(formattedCurrency == parseInt(formattedCurrency))
{
formattedCurrency += ".00";
}
else if(formattedCurrency * 10 == parseInt(formattedCurrency * 10))
{
formattedCurrency += "0";
}
return formattedCurrency;
}
function bClear_onclick()
{
if(window.confirm("Clear all selected parts?"))
{
var urlQuery = window.location.href.split("?");
if(urlQuery[0] != null)
{
location.href = urlQuery[0];
}
}
}
function bValidate_onclick(aContinueTo)
{
if(getControl("aRunLengthNbr") != null)
{
if(getControl("aRunLengthNbr").value == "")
{
alert("Please enter a Run Length.");
return;
}
}
var catNbrLength = a_catNbrLoc.length;
var catNbrCtrl   = null;
for(var indx = 0; indx < catNbrLength; indx++)
{
catNbrCtrl = getControl("fcat" + a_catNbrLoc[indx].catLocation);
if(catNbrCtrl != null)
{
catNbrCtrl.value = a_catNbrLoc[indx].catPartID;
}
}
updateValue("aContinueTo", aContinueTo);
document.MainForm.submit();
}
function checkRunLength(aControl, aSubName, aImgName, aSelName)
{
if(isNumeric(aControl.value) && aControl.value > 0)
{
var formattedValue = aControl.value;
if(formattedValue.length == 1)
{
formattedValue = "0" + formattedValue;
}
updateInnerHTML(aSelName, ": " + formattedValue + " = " + formattedValue + "' Luminaire");
}
else
{
aControl.value = "";
updateInnerHTML(aSelName, "");
}
buildDynamicCatNbr();
}
function isNumeric(aValue)
{
var goodCharacters = "0123456789";
var nextChar;
for(var indx = 0; indx < aValue.length; indx++)
{
nextChar = aValue.charAt(indx);
if(goodCharacters.indexOf(nextChar) == -1)
{
return false;
}
}
return true;
}
var debugMode = false;
var debugLive = false;
var debugLite = false;
var debugPrfx = 0;
var debugText = "";
var a_gx = new Array();
var a_ex = new Array();
var a_in = new Array();
var a_sv = new Array();
function determineType()
{
var eltType = getControl("aType");
if(eltType == null)
{
return;
}
var xmlHttp = getXmlHttpObject();
if(xmlHttp == null)
{
alert("Your browser does not support AJAX");
}
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4)
{
eltType.value = xmlHttp.responseText;
}
}
xmlHttp.open
(
"POST",
"/WebTools/Config?configRequest=Type",
true
);
xmlHttp.send(null);
}
function displayButtons(aRequestedBy)
{
var xmlHttp = getXmlHttpObject();
if(xmlHttp == null)
{
alert("Your browser does not support AJAX");
}
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4)
{
updateInnerHTML("buttonDiv", xmlHttp.responseText);
}
}
xmlHttp.open
(
"POST",
"/WebTools/Config?configRequest=ConfigPageButtons&requestedBy=" + aRequestedBy,
true
);
xmlHttp.send(null);
}
function doInit()
{
displayType = getDisplayType();
var isSomethingAlreadyChecked = false;
var arrElts = document.MainForm.elements;
for(var initIndx = 0; initIndx < arrElts.length; initIndx++)
{
var nextElt = arrElts[initIndx];
if(nextElt.disabled == true)
{
continue;
}
if(nextElt.checked)
{
Model_onchange(nextElt);
isSomethingAlreadyChecked = true;
}
}
if(isSomethingAlreadyChecked == false)
{
var urlQuery = window.location.href.split("?");
if(urlQuery[1] != null)
{
urlQuery[1] = unescape(urlQuery[1]);
var urlParams = urlQuery[1].split("&");
for(var urlIdx = 0; urlIdx < urlParams.length; urlIdx++)
{
urlItem = urlParams[urlIdx].split("=");
if(urlItem[0] == "collapseInnerMenus")
{
if(urlItem[1] == "true")
{
collapseInnerMenus();
}
}
else
{
if(urlItem.length > 2)
{
urlItem[1] = urlItem[1] + "=" + urlItem[2];
}
for(var aCurrentKey in a_cntrlInfo)
{
if
(
a_cntrlInfo[aCurrentKey].group == urlItem[0]
&& (
a_cntrlInfo[aCurrentKey].partNbr     == urlItem[1]
|| a_cntrlInfo[aCurrentKey].description == urlItem[1]
)
)
{
if(getControl(a_cntrlInfo[aCurrentKey].partID).checked == false)
{
getControl(a_cntrlInfo[aCurrentKey].partID).checked = true;
a_cntrlInfo[aCurrentKey].isChecked = true;
Model_onchangX(a_cntrlInfo[aCurrentKey]);
}
break;
}
}
}
}
}
}
for(var groupIndx = 0, groupLength = a_groupName.length; groupIndx < groupLength; groupIndx++)
{
aNextGroup = a_groupInfo[a_groupName[groupIndx]];
if(aNextGroup.partIDs.length == 1 && aNextGroup.selectedPartID == "")
{
var aPartObj = a_cntrlInfo[aNextGroup.partIDs];
if(aPartObj != null && aPartObj.isRequired)
{
getControl(aPartObj.partID).checked = true;
aPartObj.isChecked = true;
Model_onchangX(aPartObj);
}
}
}
buildDynamicCatNbr();
}
function getDisplayType()
{
var daArgs = window.location.search.slice(1).split('&');
for(var dndx = 0; dndx < daArgs.length; dndx++)
{
if(daArgs[dndx].slice(0, daArgs[dndx].indexOf('=')) == 'aDisplayType')
{
return daArgs[dndx].slice(daArgs[dndx].indexOf('=') + 1);
}
}
return "";
}
function resetExcludeValues(aPartObj)
{
debugPrfx += 1;
if(aPartObj.isChecked)
{
debugPrfx -= 1;
return;
}
for(var revIdx = 0, exRuleLength = a_ex.length; revIdx < exRuleLength; revIdx++)
{
var revArray = a_ex[revIdx];
if(isSubset(aPartObj.partID, revArray[0]))
{
if(countInactiveParts(revArray[0]) == 1)
{
for(var revJdx = 1; revJdx < revArray.length; revJdx++)
{
resetExcludedPart(revArray[revJdx], revIdx, revJdx);
}
}
}
}
resetExcludeGroups(aPartObj);
debugPrfx -= 1;
}
function resetExcludeGroups(aPartObj)
{
debugPrfx += 1;
if(aPartObj.isChecked || a_groupInfo[aPartObj.group] == null)
{
debugPrfx -= 1;
return;
}
for(var grxIdx = 0; grxIdx < a_gx.length; grxIdx++)
{
var grxArray = a_gx[grxIdx];
if(aPartObj.group == grxArray[0])
{
for(var grxJdx = 1; grxJdx < grxArray.length; grxJdx++)
{
if(a_groupInfo[grxArray[grxJdx]] != null)
{
resetExcludedPartsInGroup(a_groupInfo[grxArray[grxJdx]].partIDs, aPartObj.partID);
}
}
}
}
debugPrfx -= 1;
}
function resetReverseValues(aPartObj)
{
debugPrfx += 1;
if(aPartObj.isChecked)
{
debugPrfx -= 1;
return;
}
for(var rrvIdx = 0, exRuleLength = a_ex.length; rrvIdx < exRuleLength; rrvIdx++)
{
var rrvArray = a_ex[rrvIdx];
if(countItems(rrvArray[0]) == 1)
{
for(var rrvJdx = 1; rrvJdx < rrvArray.length; rrvJdx++)
{
if(aPartObj.partID == rrvArray[rrvJdx])
{
resetExcludedPart(rrvArray[0].replace(/,/g, ""), rrvIdx, 0);
break;
}
}
}
}
resetReverseGroups(aPartObj);
debugPrfx -= 1;
}
function resetReverseGroups(aPartObj)
{
debugPrfx += 1;
if(aPartObj.isChecked || a_groupInfo[aPartObj.group] == null)
{
debugPrfx -= 1;
return;
}
for(var grvIdx = 0; grvIdx < a_gx.length; grvIdx++)
{
var grvArray = a_gx[grvIdx];
if(aPartObj.group != grvArray[0])
{
for(var grvJdx = 1; grvJdx < grvArray.length; grvJdx++)
{
if(aPartObj.group == grvArray[grvJdx])
{
resetExcludedPartsInGroup(a_groupInfo[grvArray[0]].partIDs, aPartObj.partID);
break;
}
}
}
}
debugPrfx -= 1;
}
function resetIncludeValues(aPartObj)
{
debugPrfx += 1;
if(aPartObj.isChecked)
{
debugPrfx -= 1;
return;
}
for(var rivIdx = 0, inRuleLength = a_in.length; rivIdx < inRuleLength; rivIdx++)
{
var rivArray = a_in[rivIdx];
if(isSubset(aPartObj.partID, rivArray[0]))
{
if(countInactiveParts(rivArray[0]) == 1)
{
for(var rivJdx = 1; rivJdx < rivArray.length; rivJdx++)
{
resetIncludedPart(rivArray[rivJdx], rivIdx, rivJdx);
}
}
}
}
debugPrfx -= 1;
}
function resetPricingValues(aPartObj)
{
debugPrfx += 1;
if(aPartObj.isChecked)
{
debugPrfx -= 1;
return;
}
for(var prxIdx = 0; prxIdx < a_sv.length; prxIdx++)
{
var prxArray = a_sv[prxIdx];
if(isSubset(aPartObj.partID, prxArray[0]))
{
if(countInactiveParts(prxArray[0]) == 1)
{
for(var prxJdx = 1; prxJdx < prxArray.length; prxJdx++)
{
var aPartObj = getPartObj(prxArray[prxJdx][0]);
if(aPartObj != null)
{
debugStrong("updatePrice() --------------------------------------------------");
debugStrong("updatePrice() - a_ex[" + prxIdx + "][" + prxJdx + "] = id [" + prxArray[prxJdx][0] + "] description [" + aPartObj.description + "] ... set price to [" + prxArray[prxJdx][1] + "]");
debugStrong("updatePrice() --------------------------------------------------");
aPartObj.price = prxArray[prxJdx][1];
resetCatalogNbr(aPartObj);
}
}
}
}
}
debugPrfx -= 1;
}
function resetExcludedPartsInGroup(aPartIDs, aExemptPartID)
{
for(var ctrIdx = 0; ctrIdx < aPartIDs.length; ctrIdx++)
{
var nextPart = aPartIDs[ctrIdx];
if(nextPart != aExemptPartID)
{
resetExcludedPart(nextPart, "G", "G");
}
}
}
function resetExcludedPart(aPartID, aIndx1, aIndx2)
{
var aPartObj = getPartObj(aPartID);
if(aPartObj != null)
{
if(decrementExcludeRuleCount(aPartObj) == 0)
{
debugStrong("resetExcludedPart() --------------------------------------------------");
debugStrong("resetExcludedPart() - a_ex[" + aIndx1 + "][" + aIndx2 + "] = id [" + aPartID + "] description [" + aPartObj.description + "]");
debugStrong("resetExcludedPart() --------------------------------------------------");
resetExcludedPart_inner(aPartObj);
}
}
}
function resetExcludedPart_inner(aPartObj)
{
aPartObj.isDisabled = false;
finalCheck(aPartObj);
var aHTMLControl = getControl(aPartObj.partID);
if(aHTMLControl != null)
{
aHTMLControl.disabled = false;
}
}
function resetIncludedPart(aPartID, aIndx1, aIndx2)
{
var aPartObj = getPartObj(aPartID);
if(aPartObj != null)
{
if(decrementIncludeRuleCount(aPartObj) == 0)
{
debugStrong("resetIncludedPart() --------------------------------------------------");
debugStrong("resetIncludedPart() - a_in[" + aIndx1 + "][" + aIndx2 + "] = id [" + aPartID + "] description [" + aPartObj.description + "]");
debugStrong("resetIncludedPart() --------------------------------------------------");
if(aPartObj.isChecked)
{
aPartObj.isChecked = false;
finalCheck(aPartObj);
resetExcludeValues(aPartObj);
resetReverseValues(aPartObj);
resetIncludeValues(aPartObj);
}
else
{
finalCheck(aPartObj);
}
var aHTMLControl = getControl(aPartID);
if(aHTMLControl != null)
{
aHTMLControl.checked = false;
updateInnerHTML(aPartObj.daSelName, "");
switchMenu2(aPartObj.daSubName, aPartObj.daImgName, "show");
}
}
}
}
function Model_onchange(aElement)
{
var aPartObj = a_cntrlInfo[aElement.id]
aPartObj.isChecked = aElement.checked;
Model_onchangX(aPartObj);
}
function Model_onchangX(aPartObj)
{
finalCheck(aPartObj);
if(aPartObj.isChecked)
{
runExcludeRules(aPartObj);
runReverseRules(aPartObj);
runIncludeRules(aPartObj);
if(displayType == 'p')
{
runPricingRules(aPartObj);
}
}
else
{
resetExcludeValues(aPartObj);
resetReverseValues(aPartObj);
resetIncludeValues(aPartObj);
if(displayType == 'p')
{
resetPricingValues(aPartObj);
}
}
buildDynamicCatNbr();
if(aPartObj.isChecked)
{
updateInnerHTML(aPartObj.daSelName, ": " + aPartObj.description);
switchMenu2(aPartObj.daSubName, aPartObj.daImgName, "hide");
}
else
{
updateInnerHTML(aPartObj.daSelName, "");
}
debugPartTable();
viewDebugInfo ();
}
function runExcludeRules(aPartObj)
{
debugPrfx += 1;
if(aPartObj.isChecked == false)
{
debugPrfx -= 1;
return;
}
for(var excIdx = 0, exRuleLength = a_ex.length; excIdx < exRuleLength; excIdx++)
{
var excArray = a_ex[excIdx];
if(isSubset(aPartObj.partID, excArray[0]))
{
if(areAllPartsActive(excArray[0]))
{
for(var excJdx = 1; excJdx < excArray.length; excJdx++)
{
excludePart(excArray[excJdx], excIdx, excJdx);
}
}
}
}
runExcludeGroup(aPartObj);
debugPrfx -= 1;
}
function runExcludeGroup(aPartObj)
{
debugPrfx += 1;
if(aPartObj.isChecked == false || a_groupInfo[aPartObj.group] == null)
{
debugPrfx -= 1;
return;
}
for(var grpIdx = 0; grpIdx < a_gx.length; grpIdx++)
{
var grpArray = a_gx[grpIdx];
if(aPartObj.group == grpArray[0])
{
for(var grpJdx = 1; grpJdx < grpArray.length; grpJdx++)
{
if(a_groupInfo[grpArray[grpJdx]] != null)
{
excludePartsInGroup(a_groupInfo[grpArray[grpJdx]].partIDs, aPartObj.partID);
}
}
}
}
debugPrfx -= 1;
}
function runReverseRules(aPartObj)
{
debugPrfx += 1;
if(aPartObj.isChecked == false)
{
debugPrfx -= 1;
return;
}
for(var regIdx = 0, exRuleLength = a_ex.length; regIdx < exRuleLength; regIdx++)
{
var regArray = a_ex[regIdx];
if(countItems(regArray[0]) == 1)
{
for(var regJdx = 1; regJdx < regArray.length; regJdx++)
{
if(aPartObj.partID == regArray[regJdx])
{
excludePart(regArray[0].replace(/,/g, ""), regIdx, 0);
break;
}
}
}
}
runReverseGroup(aPartObj);
debugPrfx -= 1;
}
function runReverseGroup(aPartObj)
{
debugPrfx += 1;
if(aPartObj.isChecked == false || a_groupInfo[aPartObj.group] == null)
{
debugPrfx -= 1;
return;
}
for(var grrIdx = 0; grrIdx < a_gx.length; grrIdx++)
{
var grrArray = a_gx[grrIdx];
if(aPartObj.group != grrArray[0])
{
for(var grrJdx = 1; grrJdx < grrArray.length; grrJdx++)
{
if(aPartObj.group == grrArray[grrJdx])
{
excludePartsInGroup(a_groupInfo[grrArray[0]].partIDs, aPartObj.partID);
break;
}
}
}
}
debugPrfx -= 1;
}
function runIncludeRules(aPartObj)
{
debugPrfx += 1;
if(aPartObj.isChecked == false)
{
debugPrfx -= 1;
return;
}
for(var incIdx = 0, inRuleLength = a_in.length; incIdx < inRuleLength; incIdx++)
{
var incArray = a_in[incIdx];
if(isSubset(aPartObj.partID, incArray[0]))
{
if(areAllPartsActive(incArray[0]))
{
for(var incJdx = 1; incJdx < incArray.length; incJdx++)
{
includePart(incArray[incJdx], incIdx, incJdx);
}
}
}
}
debugPrfx -= 1;
}
function runPricingRules(aPartObj)
{
debugPrfx += 1;
if(aPartObj.isChecked == false)
{
debugPrfx -= 1;
return;
}
for(var prcIdx = 0; prcIdx < a_sv.length; prcIdx++)
{
var prcArray = a_sv[prcIdx];
if(isSubset(aPartObj.partID, prcArray[0]))
{
if(areAllPartsActive(prcArray[0]))
{
for(var prcJdx = 1; prcJdx < prcArray.length; prcJdx++)
{
var aPartObj = getPartObj(prcArray[prcJdx][0]);
if(aPartObj != null)
{
debugStrong("updatePrice() --------------------------------------------------");
debugStrong("updatePrice() - a_ex[" + prcIdx + "][" + prcJdx + "] = id [" + prcArray[prcJdx][0] + "] description [" + aPartObj.description + "] ... set price to [" + prcArray[prcJdx][2] + "]");
debugStrong("updatePrice() --------------------------------------------------");
aPartObj.price = prcArray[prcJdx][2];
resetCatalogNbr(aPartObj);
}
}
}
}
}
debugPrfx -= 1;
}
function excludePartsInGroup(aPartIDs, aExemptPartID)
{
for(var ctxIdx = 0; ctxIdx < aPartIDs.length; ctxIdx++)
{
var nextPart = aPartIDs[ctxIdx];
if(nextPart != aExemptPartID)
{
excludePart(nextPart, "G", "G");
}
}
}
function excludePart(aPartID, aIndx1, aIndx2)
{
var aPartObj = getPartObj(aPartID);
if(aPartObj != null)
{
if(incrementExcludeRuleCount(aPartObj) == 1)
{
debugStrong("excludePart() --------------------------------------------------");
debugStrong("excludePart() - a_ex[" + aIndx1 + "][" + aIndx2 + "] = id [" + aPartID + "] description [" + aPartObj.description + "]");
debugStrong("excludePart() --------------------------------------------------");
excludePart_inner(aPartObj);
}
}
}
function excludePart_inner(aPartObj)
{
if(aPartObj.isChecked)
{
aPartObj.isChecked  = false;
aPartObj.isDisabled = true;
finalCheck(aPartObj);
alert("This option is no longer valid.  It will be unselected.\n\n    " + aPartObj.group + " : " + aPartObj.description + " \n\nPlease make another selection.");
updateInnerHTML(aPartObj.daSelName, "");
switchMenu2(aPartObj.daSubName, aPartObj.daImgName, "show");
resetExcludeValues(aPartObj);
resetReverseValues(aPartObj);
resetIncludeValues(aPartObj);
}
else
{
aPartObj.isDisabled = true;
finalCheck(aPartObj);
}
var aHTMLControl = getControl(aPartObj.partID);
if(aHTMLControl != null)
{
aHTMLControl.checked  = false;
aHTMLControl.disabled = true;
}
}
function includePart(aPartID, aIndx1, aIndx2)
{
var aPartObj = getPartObj(aPartID);
if(aPartObj != null)
{
if(incrementIncludeRuleCount(aPartObj) == 1)
{
debugStrong("includePart() --------------------------------------------------");
debugStrong("includePart() - a_in[" + aIndx1 + "][" + aIndx2 + "] = id [" + aPartID + "] description [" + aPartObj.description + "]");
debugStrong("includePart() --------------------------------------------------");
if(aPartObj.isChecked)
{
finalCheck(aPartObj);
}
else
{
aPartObj.isChecked = true;
finalCheck(aPartObj);
runExcludeRules(aPartObj);
runReverseRules(aPartObj);
runIncludeRules(aPartObj);
}
var aHTMLControl = getControl(aPartID);
if(aHTMLControl != null)
{
aHTMLControl.checked = true;
updateInnerHTML(aPartObj.daSelName, ": " + aPartObj.description);
switchMenu2(aPartObj.daSubName, aPartObj.daImgName, "hide");
}
}
}
}
function incrementExcludeRuleCount(aPartObj)
{
var aERCount = parseInt(aPartObj.countExc);
if(aERCount > 0)
{
aERCount++;
}
else
{
aERCount = 1;
}
aPartObj.countExc = aERCount;
return aERCount;
}
function incrementIncludeRuleCount(aPartObj)
{
var aIRCount = parseInt(aPartObj.countInc);
if(aIRCount > 0)
{
aIRCount++;
}
else
{
aIRCount = 1;
}
aPartObj.countInc = aIRCount;
return aIRCount;
}
function decrementExcludeRuleCount(aPartObj)
{
var aERCount = parseInt(aPartObj.countExc);
if(aERCount > 0)
{
aERCount--;
}
else
{
aERCount = 0;
}
aPartObj.countExc = aERCount;
return aERCount;
}
function decrementIncludeRuleCount(aPartObj)
{
var aIRCount = parseInt(aPartObj.countInc);
if(aIRCount > 0)
{
aIRCount--;
}
else
{
aIRCount = 0;
}
aPartObj.countInc = aIRCount;
return aIRCount;
}
function getPartObj(aPartID)
{
if(aPartID == null)
{
return null;
}
return a_cntrlInfo[aPartID]
}
function areAllPartsActive(aPartIDs)
{
var partIDArray = aPartIDs.split(",");
for(var indx = 0; indx < partIDArray.length; indx++)
{
var nextPartID = partIDArray[indx];
if(nextPartID != "")
{
var nextPartObj = getPartObj(nextPartID);
if(nextPartObj == null || nextPartObj.isChecked == false)
{
return false;
}
}
}
return true;
}
function countInactiveParts(aPartIDs)
{
var inactiveNumber = 0;
var partIDArray    = aPartIDs.split(",");
for(var indx = 0; indx < partIDArray.length; indx++)
{
var nextPartID = partIDArray[indx];
if(nextPartID != "")
{
var nextPartObj = getPartObj(nextPartID);
if(nextPartObj == null || nextPartObj.isChecked == false)
{
inactiveNumber++;
}
}
}
return inactiveNumber;
}
function countItems(aItemList)
{
if(aItemList != null)
{
var arrItemList = aItemList.split(",");
if(arrItemList.length > 2)
{
return arrItemList.length - 2;
}
}
return 0;
}
function isSubset(aItem, aItemList)
{
if(aItem != null && aItemList != null)
{
if(aItemList.search("," + aItem + ",") != -1)
{
return true;
}
}
return false;
}
function finalCheck(aPartObj)
{
resetCatalogNbr(aPartObj);
changeTextColor(aPartObj);
handleSubConfig(aPartObj);
if(a_groupInfo[aPartObj.group] != null)
{
if(aPartObj.isChecked)
{
a_groupInfo[aPartObj.group].selectedPartID = aPartObj.partID;
a_groupInfo[aPartObj.group].hasChanged = true;
}
else
{
if(a_groupInfo[aPartObj.group].selectedPartID == aPartObj.partID)
{
a_groupInfo[aPartObj.group].selectedPartID = "";
a_groupInfo[aPartObj.group].hasChanged = true;
}
}
}
}
function resetCatalogNbr(aPartObj)
{
for(var indx = 0, catNbrLength = a_catNbrLoc.length; indx < catNbrLength; indx++)
{
var aCatNbrLoc = a_catNbrLoc[indx];
if(aCatNbrLoc.catLocation == aPartObj.accessKey)
{
if(aPartObj.isChecked)
{
aCatNbrLoc.catPartID  = aPartObj.partID;
aCatNbrLoc.catPartNbr = aPartObj.partNbr;
aCatNbrLoc.catPrice   = aPartObj.price;
debugStrong("resetCatalogNbr() - access key [" + aPartObj.accessKey + "] part id [" + aCatNbrLoc.catPartID + "] part nbr [" + aCatNbrLoc.catPartNbr + "] price [" + aCatNbrLoc.catPrice + "]");
}
else
{
if(aCatNbrLoc.catPartID == aPartObj.partID)
{
aCatNbrLoc.catPartID  = "";
aCatNbrLoc.catPartNbr = "";
aCatNbrLoc.catPrice   = 0.0;
debugStrong("resetCatalogNbr() - access key [" + aPartObj.accessKey + "] has been cleared");
}
}
return;
}
}
debugStrong("resetCatalogNbr() - access key [" + aPartObj.accessKey + "] does not exist");
}
function changeTextColor(aPartObj)
{
var aPartText = getControl(aPartObj.partID + "_Text");
if(aPartText != null)
{
if(aPartObj.isDisabled)
{
aPartText.style.color = 'gray';
}
else
{
aPartText.style.color = 'black';
}
}
}
function debug      (aStatement) { debugStatement(aStatement, debugLite); }
function debugStrong(aStatement) { debugStatement("<font color=9f0000>" + aStatement + "</font>", false); }
function debugTitle1(aStatement) { debugStatement("<font color=666600>" + aStatement + "</font>", false); }
function debugTitle2(aStatement) { debugStatement("<font color=0000dd>" + aStatement + "</font>", false); }
function debugStatement(aStatement, aIgnoreMe)
{
if(debugMode && !aIgnoreMe)
{
var statementPrefix = "\n<br>";
for(var indx = 0; indx < debugPrfx; indx++)
{
statementPrefix = statementPrefix + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
}
debugText += (statementPrefix + aStatement);
if(debugLive)
{
viewDebugInfo();
}
}
}
function debugPartTable()
{
if(debugMode)
{
var debugTable = "\n<table border=1 cellpadding=1 cellspacing=0>"
+ "\n<tr>"
+ "<th align=left bgcolor=bbbbbb>Location&nbsp;</th>"
+ "<th align=left bgcolor=bbbbbb>Part ID&nbsp;</th>"
+ "<th align=left bgcolor=bbbbbb>Part Number&nbsp;</th>"
+ "<th align=left bgcolor=bbbbbb>Price&nbsp;</th>"
+ "<th align=left bgcolor=bbbbbb>Price Control&nbsp;</th>"
+ "<th align=left bgcolor=bbbbbb>Is Required&nbsp;</th>"
+ "</tr>";
var nextCatNbrLoc = null;
for(var indx = 0, catNbrLength = a_catNbrLoc.length; indx < catNbrLength; indx++)
{
nextCatNbrLoc = a_catNbrLoc[indx];
debugTable += "\n<tr>"
+  "<td>" + nextCatNbrLoc.catLocation   + "&nbsp;</td>"
+  "<td>" + nextCatNbrLoc.catPartID     + "&nbsp;</td>"
+  "<td>" + nextCatNbrLoc.catPartNbr    + "&nbsp;</td>"
+  "<td>" + nextCatNbrLoc.catPrice      + "&nbsp;</td>"
+  "<td>" + nextCatNbrLoc.catPriceCntrl + "&nbsp;</td>"
+  "<td>" + nextCatNbrLoc.isRequired    + "&nbsp;</td>"
+  "</tr>";
}
debugText += (debugTable + "\n</table>");
}
}
function viewDebugInfo()
{
if(debugMode)
{
debugWindow = window.open('', 'debugWindow', 'height=600,width=800,resizable=yes,scrollbars=yes,status=yes,toolbar=no,menubar=no,location=no');
debugWindow.document.writeln
(
"<HTML>"
+ "\n<head>"
+ "\n<title>Debug Information</title>"
+ "\n<style>"
+ "\nbody, th, td"
+ "\n{"
+ "\n  font-family: Arial;"
+ "\n  font-size: 12px;"
+ "\n}"
+ "\n</style>"
+ "\n</head>"
+ "\n<body style='background-color: #eeeeee'>"
+ "\n<div style='font-weight: strong; font-size: 20px;'>Config Engine Debug Log</div>"
+ debugText
+ "\n</body>"
+ "\n</HTML>"
);
debugWindow.document.close();
}
}

