﻿var m_SkipRows = 0;
var m_Items = "";
var m_Window = null;
var m_Tables = new Array("rprKitItems","dgAddons");
var m_Warranty;
var m_edit_flag;


function GetMoreInfo(TableIndex,RowNumber)
{
    var oDropdown = document.getElementById(m_Tables[TableIndex] + "__ctl" + (RowNumber + 2) + "_ddItems");
    var ItemID = oDropdown.value.split("_")[0];
    
    if (oDropdown.options[oDropdown.selectedIndex].text.toLowerCase().lastIndexOf("none selected") == -1)
        ViewInfo(ItemID);
    else
        alert("Please select a product from the list to view the details");
}

function ViewInfo(ItemID)
{
    try{
        if (m_Window == null){
	        m_Window = window.open('pview.aspx_id_' + ItemID, 'info_' + ItemID, 'location=no,toolbar=no,menubar=no,sizable=yes,scrollbars=yes,width=800,height=600');
        }
        else if (m_Window.closed){
            m_Window = window.open('pview.aspx_id_' + ItemID, 'info_' + ItemID, 'location=no,toolbar=no,menubar=no,sizable=yes,scrollbars=yes,width=800,height=600');
        }
        else{
            m_Window.location.href = 'pview.aspx_id_' + ItemID;
            m_Window.focus();
        };
    }
    catch (E){
	    m_Window = window.open('pview.aspx_id_' + ItemID, 'info_' + ItemID, 'location=no,toolbar=no,menubar=no,sizable=yes,scrollbars=yes,width=800,height=600');
    };
}

function SubmitForm(){
	var oAddons = document.getElementById("dgAddons");
	var oChecks = document.getElementById("rprAddons");
    var tblKits = document.getElementById("rprKitItems");
    var dgWarranties = document.getElementById("dgWarranties");
    var warranty_data;
    
    if (oAddons != null || oChecks != null || tblKits != null){
        if (!CalculatePrice(true)){
            return false;
        };
    }
    else{
        var TotalPrice = document.getElementById("tblProdChar").rows[6 - m_SkipRows].cells[1].innerHTML.replace("$", "").replace(",", "")*1;
        
        if (typeof m_edit_flag == "undefined"){
            PopulateWarranties(TotalPrice,true);
        };
    };
    
    //if (typeof m_edit_flag == "undefined"){
        SaveWarrantiesData();
    //};
    
    return true;
}

function SaveWarrantiesData(){
    var ddWarranty = document.getElementById("ddWarranty");
    var dgWarranties = document.getElementById("dgWarranties");
    var dgMainWarranties = document.getElementById("dgMainWarranties");
    var warranty = document.getElementById("warranty");
    var warranty_data = "";
    
    if (ddWarranty != null){
        if (ddWarranty.value != ""){
            warranty_data = ddWarranty.value + "~" + ddWarranty.options[ddWarranty.selectedIndex].text;
            
            if (dgWarranties != null){
                var NumberOfYears = ddWarranty.options[ddWarranty.selectedIndex].text.substr(0,1)*1;
                var addtional_coverage = GetAdditionalCoverage(dgWarranties,NumberOfYears);
                
                warranty_data += IIF(addtional_coverage == "", "", ";" + addtional_coverage);
            };
            
            warranty.value = warranty_data;
        };
    }
    else if (dgMainWarranties != null){
//        var ddWarrantyF = document.getElementById("dgMainWarranties__ctl" + dgMainWarranties.rows.length + "_ddWarrantyF");
//        var warranty_type_id = ddWarrantyF.options[1].value.split("_")[0];
        
        for (var i = 1; i < dgMainWarranties.rows.length - 1; i ++){
            var txtQty = document.getElementById("dgMainWarranties__ctl" + (i+1) + "_txtQty");
            var product_name = document.getElementById("dgMainWarranties__ctl" + (i+1) + "_product_name");
            
            warranty_data += IIF(i == 1,"","^");
            warranty_data += product_name.value + ";" + txtQty.value;
        };
        
        warranty_data += "~";
        
        if (dgWarranties != null){
//            ddWarrantyF = document.getElementById("dgWarranties__ctl" + dgWarranties.rows.length + "_ddWarrantyF");
//            warranty_type_id = ddWarrantyF.options[1].value.split("_")[0];
            
            for (var i = 1; i < dgWarranties.rows.length - 1; i ++){
                var txtQty = document.getElementById("dgWarranties__ctl" + (i+1) + "_txtQty");
                var product_name = document.getElementById("dgWarranties__ctl" + (i+1) + "_product_name");
                
                warranty_data += IIF(i == 1,"","^");
                warranty_data += product_name.value + ";" + txtQty.value;
            };
        };
        
        warranty.value = warranty_data;
    };
}

function GetAdditionalCoverage(Warranties,NumberOfYears){
    var RetVal = "";
    var Data = m_Warranty[1];
    
    if (Warranties != null){
        for (var i = 0; i < Warranties.rows.length; i ++){
            var chkCoverage = document.getElementById("dgWarranties__ctl" + (i+2) + "_chkCoverage");
            
            if (chkCoverage != null){
                if (chkCoverage.checked){
                    var CoveragePrice = GetCoveragePrice(Data[i][1],NumberOfYears);
                    RetVal += IIF(RetVal == "", "", ";");
                    RetVal += Data[i][0] + "_" + Data[i][2] + "_" + NumberOfYears + "~" + NumberOfYears + " Year Coverage_ _ _($" + CoveragePrice + ")";
                };
            };
        };
    };
    
    return RetVal;
}

function GetAddonTotal(){
	var nC;
	var nO;
	var sSelOption;
	var nPos;
	var nPrice = 0;
	var i;
	var oAddons = document.getElementById("dgAddons");
	var oChecks = document.getElementById("rprAddons")
	var txtKQty;
	var txtOrg_Qty;
	var Qty;
	var Org_Qty;
	var Value;
	
	if (oAddons != null){
	    for (i = 0; i < oAddons.rows.length; i ++){
		    var oDropDown = document.getElementById("dgAddons__ctl" + (i + 2) + "_ddItems");
		    var oOption = oDropDown.options[oDropDown.selectedIndex];
		    txtKQty = document.getElementById("dgAddons__ctl" + (i + 2) + "_txtQty");
            txtOrg_Qty = document.getElementById("dgAddons__ctl" + (i + 2) + "_txtOrg_Qty");
            
            if (txtKQty != null){
                Qty = txtKQty.value;
                if (txtOrg_Qty != null){
                    Org_Qty = txtOrg_Qty.value;
                }
                else{
                    Org_Qty = 1;
                };
            }
            else{
                Qty = 1;
                Org_Qty = 1;
            };
		    sSelOption = oOption.text;
            var Ar = oOption.value.split("_");

		    if (sSelOption.indexOf("(+") > -1 || sSelOption.indexOf("(-") > -1){
			    nPos=sSelOption.lastIndexOf('(');
			    Value = sSelOption.substr(nPos+1,sSelOption.length-nPos-2);
                
                if (Ar.length == 2){
                    if (Qty == Org_Qty){
                        nPrice += Value * Qty;
                    }
                    else{
                        nPrice += Ar[1]*(Qty - Org_Qty) + Value*Org_Qty;
                    };
                }
                else{
                    nPrice += Value * Qty;
                };
		    }
		    else{
		        if (Ar.length == 2){
		            nPrice += (Qty - Org_Qty)*Ar[1];
	            };
		    };
	    };
    };
	if (oChecks != null){
	    for (i = 0; i < oChecks.rows.length; i ++){
		    var Checkbox = document.getElementById("rprAddons__ctl" + (i + 2) + "_chkItem");
		    var oLink = document.getElementById("rprAddons__ctl" + (i + 2) + "_lnkItem");
		    txtKQty = document.getElementById("rprAddons__ctl" + (i + 2) + "_txtQty");
            txtOrg_Qty = document.getElementById("rprAddons__ctl" + (i + 2) + "_txtOrg_Qty");
		    var Ar = oLink.href.split("_");
            var ItemID = Ar[Ar.length - 1];
	        var sPrice = document.getElementById("rprAddons__ctl" + (i + 2) + "_lblPrice").innerHTML.substr(4);
            var SelFlag = isSelectedItem(ItemID);
            
            if (txtKQty != null){
                Qty = txtKQty.value;
                if (txtOrg_Qty != null){
                    Org_Qty = txtOrg_Qty.value;
                }
                else{
                    Org_Qty = 1;
                };
            }
            else{
                Qty = 1;
                Org_Qty = 1;
            };
		    if (Checkbox.checked){
		        if (SelFlag){
	                nPrice += sPrice*(Qty - Org_Qty);
                }
                else{
                    nPrice += sPrice*Qty;
                };
            }
		    else if (!Checkbox.checked && SelFlag){
	            nPrice -= sPrice*Org_Qty;
            };
	    };
    };
    
	return nPrice;
}

function ConvertPriceForDisplay(Price){
    var NumLength;
    var Postfix;
    Price += "";
    var Pos = Price.indexOf(".");    
    if (Pos == -1){
        Price += ".";
        Pos = Price.length - 1;
    };
    while (Price.length - Pos < 3)
        Price += "0";
    if (Price.length > 6){
        var NumChars = Price.length;
        Price = Price.substr(0, NumChars - 6) + "," + Price.substr(NumChars - 6);
    };    
    return "$" + Price;
}

function myRound(myNumber, precision){
     var rr=10;
	 for (i=1; i<precision; i++)
	   rr=rr*10;
     return Math.round(myNumber*rr)/rr;
}

function DoAddons(){
    var nO;
    var nC;
    var txtProducts = document.getElementById("productline");
    var txtQty = document.getElementById("qty");
    var strValue=txtProducts.value;
    var nQty=txtQty.value;
	var oAddons = document.getElementById("dgAddons");
	var oChecks = document.getElementById("rprAddons");
    var i;
    var txtKQty;
    var Qty;
    
    if (oAddons != null){
        for (i = 0; i < oAddons.rows.length; i ++){
		    var oDropDown = document.getElementById("dgAddons__ctl" + (i + 2) + "_ddItems");
		    txtKQty = document.getElementById("dgAddons__ctl" + (i + 2) + "_txtQty");
		    var oOption = oDropDown.options[oDropDown.selectedIndex];
		    var OptionText = oOption.text.toLowerCase();
		    var Ar = oOption.value.split("_");
		    
		    if (txtKQty != null){
		        Qty = txtKQty.value;
		    }
		    else{
		        Qty = 1;
		    };
		    if (OptionText.indexOf('none selected') == -1){
		        if (strValue != ""){
		            strValue += ",";
		            nQty += ";";
		        };
		        strValue += Ar[0];
		        nQty += Qty;
	        };
	    };
    };
	if (oChecks != null){
        for (i = 0; i < oChecks.rows.length; i ++){
		    var Checkbox = document.getElementById("rprAddons__ctl" + (i + 2) + "_chkItem");
		    var oLink = document.getElementById("rprAddons__ctl" + (i + 2) + "_lnkItem");
		    txtKQty = document.getElementById("rprAddons__ctl" + (i + 2) + "_txtQty");
		    
		    if (txtKQty != null){
		        Qty = txtKQty.value;
		    }
		    else{
		        Qty = 1;
		    };
		    if (Checkbox.checked){
			    if (strValue != ""){
			        strValue += ",";
			        nQty += ";";
			    };
			    var Ar = oLink.href.split("_");
			    
                strValue += Ar[Ar.length - 1];
			    nQty += Qty;
		    };
	    };
    };
    
	document.Form1.productline.value=strValue;
	document.Form1.qty.value=nQty;
}

function ChangeTab(TabIndex, TableID){
    var oTable;
    var Postfix = "";    
    if (TableID == null)
        TableID = "tblTabForm";
    else
        Postfix = "c";
    oTable = document.getElementById(TableID);    
    var oRow = oTable.rows[0];
    var i;    
    for (i = 0; i < oRow.cells.length / 2; i ++)
        if (i == TabIndex){
            oRow.cells[i*2].className = "mausover" + Postfix;
            var oDataRow = oTable.rows[i + 2];
            oDataRow.className = "";
            var lblTabForm = document.getElementById("lblTabForm" + TabIndex);
            if (lblTabForm != null)
                if (lblTabForm.innerHTML == "")
                    oDataRow.style.height = "200";
        }
        else{
            oRow.cells[i*2].className = "mausnotover" + Postfix;
            oTable.rows[i + 2].className = "InvRow";
        };
}

function GetKitTotal(){
    var TotalPrice = document.getElementById("tblProdChar").rows[6 - m_SkipRows].cells[1].innerHTML.replace("$", "").replace(",", "")*1;
    var txtProducts = document.getElementById("productline");
    var txtQty = document.getElementById("qty");
    var Products = "";
    var Qtys = "";
    var i;
    var tblKits = document.getElementById("rprKitItems");
    
    if (tblKits != null){
        for (i = 0; i < tblKits.rows.length; i ++){
            var oDropDown = document.getElementById("rprKitItems__ctl" + (i + 2) + "_ddItems");
            var txtKQty = document.getElementById("rprKitItems__ctl" + (i + 2) + "_txtQty");
            var txtOrg_Qty = document.getElementById("rprKitItems__ctl" + (i + 2) + "_txtOrg_Qty");
            var Qty;
            var Org_Qty;
            
            if (txtKQty != null){
                Qty = txtKQty.value;
                if (txtOrg_Qty != null){
                    Org_Qty = txtOrg_Qty.value;
                }
                else{
                    Org_Qty = 1;
                };
            }
            else{
                Qty = 1;
                Org_Qty = 1;
            };
            if (oDropDown != null){
                var oOption = oDropDown.options[oDropDown.selectedIndex];
                var Index = oOption.text.indexOf("(+");
                var Ar = oOption.value.split("_");
                
                if (Index == -1){
                    Index = oOption.text.indexOf("(-");
                };
                if (Index > -1){
                    var Value = oOption.text.substr(Index + 1, oOption.text.length - Index - 2)*1;
                    
                    if (Ar.length == 2){
                        if (Qty == Org_Qty){
                            TotalPrice += Value * Qty;
                        }
                        else{
                            TotalPrice += Ar[1]*(Qty - Org_Qty) + Value*Org_Qty;
                        };
                    }
                    else{
                        TotalPrice += Value * Qty;
                    };
                };
                if (oOption.text.toLowerCase().indexOf("none selected") == -1){
                    if (Products != ""){
                        Products += ",";
                        Qtys += ";";
                    };
                    Products += Ar[0];
                    Qtys += Qty;
                };
	        }
	        else{
	            var PID = GetItemID(document.getElementById("rprKitItems").rows[i], "rprKitItems__ctl" + (i + 2) + "_lblItem");
                if (Products != ""){
                    Products += ",";
                    Qtys += ";";
                };
                Products += PID;
                Qtys += Qty;
	        };
        };
    };
    
    document.getElementById("tblProdChar").rows[7 - m_SkipRows].cells[1].innerHTML = ConvertPriceForDisplay(myRound(TotalPrice, 2));
    txtProducts.value = Products;
    txtQty.value = Qtys;  
      
    return TotalPrice;
}

function GetItemID(Row, SearchText){
    var Text = Row.cells[1].innerHTML;
    var Index = Text.indexOf(SearchText);
    
    if (Index == -1){
        Text = Row.cells[2].innerHTML;
        Index = Text.indexOf(SearchText);
    };
    Index += SearchText.length;
    Text = Text.substr(Index);
    Index = GetFirstNonNumericCharIndex(Text);
        
    return Text.substring(0, Index);
}

function isSelectedItem(ItemID){
    var Ar = m_Items.split(",");
    for (var i = 0; i < Ar.length; i ++)
        if (Ar[i] == ItemID)
            return true;
    return false;
}

function CalculatePrice(SubmitFlag){
    var nPrice = 0;
    
    if (typeof Control != "undefined"){
        var Temp  = RemoveSpaces(Control.value);
        
        if (!isPositiveWholeNumber(Temp)){
            alert("Please enter a valid Quantity.");
            Control.focus();
            return false;
        }
        else{
            Control.value = Temp;
        };
    };
    
	nPrice += GetKitTotal();
	//if (typeof m_edit_flag == "undefined"){
        PopulateWarranties(nPrice,SubmitFlag);
    //};
	nPrice += GetAddonTotal();
	DoAddons();
	
	document.getElementById("tblProdChar").rows[7 - m_SkipRows].cells[1].innerHTML = ConvertPriceForDisplay(myRound(nPrice, 2));
    
    return true;
}

function PopulateWarranties(Price,SubmitFlag){
    var dgMainWarranties = document.getElementById("dgMainWarranties");
    var ddWarranty;
    
    if (dgMainWarranties == null){
        ddWarranty = document.getElementById("ddWarranty");
        if (ddWarranty != null){
            PopulateWarrantiesDropDown(ddWarranty,Price,false,false);
        };
    }
    else{
        for (var i = 1; i < dgMainWarranties.rows.length; i ++){
            var FooterFlag = false;
            ddWarranty = document.getElementById("dgMainWarranties__ctl" + (i+1) + "_ddWarranty");
            var lblProductName = document.getElementById("dgMainWarranties__ctl" + (i+1) + "_lblProductName");
            if (ddWarranty == null){
                ddWarranty = document.getElementById("dgMainWarranties__ctl" + (i+1) + "_ddWarrantyF");
                FooterFlag = true;
            };
            //if (ddWarranty != null){
                PopulateWarrantiesDropDown(ddWarranty,Price,true,FooterFlag,lblProductName,SubmitFlag);
            //};
        };
    };
}

function PopulateWarrantiesDropDown(ddWarranty,Price,EditFlag,FooterFlag,lblProductName,SubmitFlag){
    var Index;
    var orgText;
    var Data = GetWarrantyInfo(Price)
    var Text;
    
    if (Data != null){
        if (lblProductName != null){
            var Found = false;
            var product_name = document.getElementById(lblProductName.id.replace("lblProductName","product_name"));
            orgText = lblProductName.innerHTML;
            Text = orgText.substr(0,orgText.indexOf("$")+1);// + Data[0];
            Text = Text.replace("Carry-In",Data[2]).replace("On-Site",Data[2]);
            for (var i = 0; i < Data[1].length; i ++){
                if (Data[1][i][0] == Text.substr(0,1) && orgText.indexOf(Data[2]) > -1){
                    lblProductName.innerHTML = Data[1][i][0] + Text.substr(1) + Data[0] + " - ($" + Data[1][i][1] + ")";
                    if (product_name != null){
                        product_name.value = Data[1][i][0] + Text.substr(1) + Data[0];
                    };
                    Found = true;
                    break;
                };
            };
            
            if (!Found){
                Data = GetWarrantyInfo(null,Data);
                
                if (Data != null){
                    Text = Text.replace("Carry-In",Data[2]).replace("On-Site",Data[2]);
                    for (var i = 0; i < Data[1].length; i ++){
                        if (Data[1][i][0] == Text.substr(0,1) && orgText.indexOf(Data[2]) > -1){
                            lblProductName.innerHTML = Data[1][i][0] + Text.substr(1) + Data[0] + " - ($" + Data[1][i][1] + ")"
                            if (product_name != null){
                                product_name.value = Data[1][i][0] + Text.substr(1) + Data[0];
                            };
                            break;
                        };
                    };
                };
            };
        }
        else{
            Index = ddWarranty.selectedIndex;
            orgText = ddWarranty.options[1].text;
            var warranty_type_id = ddWarranty.options[1].value.split("_")[0];
            EmptyDropdown(ddWarranty);
            
            ddWarranty.options.add(new Option("None Selected",""));
            Text = orgText.substr(0,orgText.indexOf("$")+1) + Data[0] + "_ _ _";
            Text = Text.replace("Carry-In",Data[2]).replace("On-Site",Data[2]);
            for (var i = 0; i < Data[1].length; i ++){
                ddWarranty.options.add(new Option(Data[1][i][0] + Text.substr(1) + "($" + Data[1][i][1] + ")", warranty_type_id + "_" + Data[2] + "_" + Data[1][i][0] + "_" + Data[0]));
            };
            
            Data = GetWarrantyInfo(null,Data);
            
            if (Data != null){
                Text = Text.replace("Carry-In",Data[2]).replace("On-Site",Data[2]);
                for (var i = 0; i < Data[1].length; i ++){
                    ddWarranty.options.add(new Option(Data[1][i][0] + Text.substr(1) + "($" + Data[1][i][1] + ")", warranty_type_id + "_" + Data[2] + "_" + Data[1][i][0] + "_" + Data[0]));
                };
            };
            
            if (Index < ddWarranty.options.length){
//                if (!FooterFlag || SubmitFlag){
                    ddWarranty.options[Index].selected = true;
//                }
//                else{
//                    ddWarranty.options[0].selected = true;
//                    ResetCoverageDropDown();
//                };
                if (!EditFlag){
                    var NumberOfYears = ddWarranty.options[Index].text.substr(0,1)*1;
                    FillCoverage(NumberOfYears);
                };
            }
            else if (!EditFlag){
                ddWarranty.options[0].selected = true;
                ChangeWarranty();
            }
            else{
                ddWarranty.options[0].selected = true;
                ResetCoverageDropDown();
            };
        };
    };
}

function ResetCoverageDropDown(){
    var Warranties = document.getElementById("dgWarranties");
    
    if (Warranties != null){
        var ddWarrantyF = document.getElementById("dgWarranties__ctl" + Warranties.rows.length + "_ddWarrantyF");
        
        if (ddWarrantyF != null){
            ddWarrantyF.options[0].selected = true;
        };
    };
}

function FillCoverage(NumberOfYears){
    var Data = m_Warranty[1];
    var Warranties = document.getElementById("dgWarranties");
    var tblWarranties = document.getElementById("tblWarranties");
    
    if (Warranties != null){
        for (var i = 0; i < Warranties.rows.length; i ++){
            var chkCoverage = document.getElementById("dgWarranties__ctl" + (i+2) + "_chkCoverage");
            var lnkCoverage = document.getElementById("dgWarranties__ctl" + (i+2) + "_lnkCoverage");
            
            if (chkCoverage != null){
                var Start = lnkCoverage.innerHTML.indexOf("($");
                var CoveragePrice = GetCoveragePrice(Data[i][1],NumberOfYears);
                
                if (CoveragePrice == 0){
                    tblWarranties.rows[1].className = "InvRow";
                    tblWarranties.rows[2].className = "InvRow";
                    
                    ResetAdditionalCoverage(dgWarranties);
                }
                else{
                    lnkCoverage.innerHTML = lnkCoverage.innerHTML.substr(0,Start+2) + CoveragePrice + ")";
                };
            };
        };
    };
}

function GetCoveragePrice(Data,NumberOfYears){
    for (var i = 0; i < Data.length; i ++){
        if (Data[i][0] == NumberOfYears){
            return Data[i][1];
        };
    };
    
    return 0;
}

function GetWarrantyInfo(Price,Data){
    var PrevPrice = 0;
    
    if (typeof Data == "undefined"){
        for (var i = 0; i < m_Warranty[0].length; i ++){
            var CurPrice = m_Warranty[0][i][0];
            
            if (Price >= PrevPrice && Price < CurPrice){
                return m_Warranty[0][i];
            };
            
            PrevPrice = CurPrice;
        };
    }
    else{
        for (var i = 0; i < m_Warranty[0].length - 1; i ++){
            if (m_Warranty[0][i] == Data && m_Warranty[0][i+1][0] == Data[0]){
                return m_Warranty[0][i+1];
            };
        };
    };
    
    return null;
}

function isValidQty(Control){
    var Temp = RemoveSpaces(Control.value);
    
    if (!isPositiveWholeNumber(Temp)){
        alert("Invalid quantity! Please enter a valid quantity.");
        return false;
    };    
    Control.value = Temp;
    
    return true;
}

function ChangeWarranty(){
    var ddWarranty = document.getElementById("ddWarranty");
    var tblWarranties = document.getElementById("tblWarranties");
    var dgWarranties = document.getElementById("dgWarranties");
    
    if (ddWarranty.value == ""){
        tblWarranties.rows[1].className = "InvRow";
        tblWarranties.rows[2].className = "InvRow";
        
        ResetAdditionalCoverage(dgWarranties);
    }
    else if (dgWarranties != null){
        tblWarranties.rows[1].className = "AddCvg";
        tblWarranties.rows[2].className = "AddCvgD";
        var NumberOfYears = ddWarranty.options[ddWarranty.selectedIndex].text.substr(0,1)*1;
        FillCoverage(NumberOfYears);
    };
}

function ResetAdditionalCoverage(Warranties){
    for (var i = 0; i < Warranties.rows.length; i ++){
        var chkCoverage = document.getElementById("dgWarranties__ctl" + (i+2) + "_chkCoverage");
        
        if (chkCoverage != null){
            chkCoverage.checked = false;
        };
    };
}

