/*
Funktionen kontrollerer hvorvidt en bestemt forsikring kan tegnes på et valgt produkt
*/
function InsuranceAvailable(productId, InsuranceSelected) {
    var i;
    var j;

    for(i = 0; i < insuranceForAccessory.length; i++) {
        if (insuranceForAccessory[i][0] == productId) {
            for(j = 0; j < insuranceForAccessory[i][1].length; j++) {
	            if (insuranceForAccessory[i][1][j] == insurance_description[InsuranceSelected][0]) {
                    return true;
                }
            }
            return false;
        }
    }
}


/*
Denne sørger for at vise boksen med mulighed for tilvalg af forsikring.
Dette sker på baggrund af hvorvidt der er valgt forsikring på pakken generelt, samt om den enkelte vare er valgt med i pakken.
Funktionen køres hver gang der ændres noget ..
*/
function viewInsuranceForCheckedProduct() {
    var i;
    var selectedInsurance;
    var selectedInsuranceNumber;

    selectedInsurance       = false;
    selectedInsuranceNumber = 0;
    for(i = 0; i < insurance.length && selectedInsurance == false; i++) {
        try {
            if (insurance_description[i][1] == true && getMultiElement('insurance_' + insurance_description[i][0]).checked) {
                selectedInsurance       = true;
                selectedInsuranceNumber = i;
            }
        } catch(e) {}
    }

    for (var i = 0; i < accessory.length; i++) {
        if (getMultiElement('ac_' + accessory[i][0]).checked && selectedInsurance && InsuranceAvailable(accessory[i][0], selectedInsuranceNumber)) {
            hideMultiElement('insh_' + accessory[i][0], false, false);
        } else {
            hideMultiElement('insh_' + accessory[i][0], true, false);
            getMultiElement('ins_' + accessory[i][0]).checked = false;
        }
    }

    if (selectedInsurance) {
        hideMultiElement('productPriceTotalLine', false, false);
        hideMultiElement('productPriceTotalLine2', false, false);
    } else {
        hideMultiElement('productPriceTotalLine', true, false);
        hideMultiElement('productPriceTotalLine2', true, false);
    }

    viewPrice();
}

/*
Returnerer et element (blok eller row) med hensynstagen til browseren der afvikler scriptet.
*/
function getMultiElement(elementId) {
    if (document.layers) {
        // Opera
        return document.layers[elementId];
    } else if (document.all) {
        //Internet Exploder
        return document.all[elementId];
    } else if (document.getElementById) {
        //Firefix, Safari, Netscape
        return document.getElementById(elementId);
    }
}

/*
Skjuler (eller viser) et element.
*/
function hideMultiElement(elementId, hideAction, block) {
    if (document.layers) {
        // Opera
        if (document.layers[elementId] != null) {
            document.layers[elementId].display               = (hideAction ? 'none' : (onlyBlock || block ? 'block' : 'table-row'));
        }
    } else if (document.all) {
        //Internet Exploder
        if (document.all[elementId] != null) {
            document.all[elementId].style.display            = (hideAction ? 'none' : (onlyBlock || block ? 'block' : 'table-row'));
        }
    } else if (document.getElementById) {
        //Firefix, Safari, Netscape
        if (document.getElementById(elementId) != null) {
            document.getElementById(elementId).style.display = (hideAction ? 'none' : (onlyBlock || block ? 'block' : 'table-row'));
        }
    }
}

/*
Ændre alle priser på baggrund af de aktivt taget valg.
*/
function viewPrice() {
    var productPrice;
    var productPriceAll;
    var productPriceTotalIns;
    var productPriceIns;
    var productPriceTotal;
    var i;
    var selectedInsurance;
    var selectedInsuranceNumber;

    selectedInsurance       = false;
    selectedInsuranceNumber = 0;
    for(i = 0; i < insurance.length && selectedInsurance == false; i++) {
        try {
            if (insurance_description[i][1] == true && getMultiElement('insurance_' + insurance_description[i][0]).checked) {
                selectedInsurance       = true;
                selectedInsuranceNumber = i;
            }
        } catch(e) {}
    }
    productPrice         = product;
    productPriceAll      = productPrice;
    productPriceTotalIns = 0;


    for (i = 0; i < accessory.length; i++) {
        if (getMultiElement('ac_' + accessory[i][0]).checked) {
            productPriceAll += accessory[i][1];
            if(getMultiElement('ins_' + accessory[i][0]).checked) {
                productPriceTotalIns += accessory[i][1];
            }
        }
    }

    productPriceIns      = 0;

    if (selectedInsurance) {
        productPriceTotalIns += product;
        for (i = 0; i < insurance[selectedInsuranceNumber].length && productPriceIns == 0; i++) {
            if (insurance[selectedInsuranceNumber][i][0] <= productPriceTotalIns && insurance[selectedInsuranceNumber][i][1] > productPriceTotalIns) {
                productPriceIns = insurance[selectedInsuranceNumber][i][2];
				
            }
        }
    }
    
    try {
        productPriceTotal    = productPriceAll + productPriceIns;
    
        getMultiElement('productPrice').innerHTML         = formatCurrency(productPrice);
        getMultiElement('productPriceAll').innerHTML      = formatCurrency(productPriceAll);
        getMultiElement('productPriceIns').innerHTML      = formatCurrency(productPriceIns);
	    getMultiElement('insPrice').value                 = productPriceIns;
    } catch(e) {}

    var wantInsurance = (productPriceTotalIns == 0 ? productPrice : productPriceTotalIns);

    for (var j = 0; j < insurance.length; j++) {
        for (i = 0; i < insurance[j].length; i++) {
            if (insurance[j][i][0] <= wantInsurance && insurance[j][i][1] > wantInsurance) {
                getMultiElement('productPriceIns' + insurance_description[j][0]).innerHTML      = formatCurrency(insurance[j][i][2]);
                getMultiElement('productPriceTotalIns' + insurance_description[j][0]).innerHTML = formatCurrency((productPriceTotalIns == 0 ? productPrice : productPriceTotalIns));
                }
        }    
    }
    
    getMultiElement('productPriceTotal').innerHTML    = formatCurrency(productPriceTotal);
}

function formatCurrency(num) {
    var sign;

    num = num.toString().replace(/\$|\,/g,'');

    if(isNaN(num))
        num = "0";

    sign  = (num == (num = Math.abs(num)));
    num   = Math.floor(num * 100 + 0.50000000001);
    cents = num % 100;
    num   = Math.floor(num/100).toString();

    if(cents < 10)
    cents = "0" + cents;

    for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
        num = num.substring(0, num.length-(4 * i + 3)) + ' '+ num.substring(num.length-(4 * i + 3));

    return (((sign) ? '' : '-') + num + ',' + cents);
}
