/*-----------------------------------------------------------------------------
 * Javascript Functions
 *-----------------------------------------------------------------------------
 * dynamic_product_prices.js
 *-----------------------------------------------------------------------------
 * Author:   Estelle Winterflood
 * Email:    cubecart@expandingbrain.com
 * Store:    http://cubecart.expandingbrain.com
 *
 * Date:     January 10, 2008
 * Updated:  March 1, 2009
 * Compatible with CubeCart Version:  4.x.x
 *-----------------------------------------------------------------------------
 * SOFTWARE LICENSE AGREEMENT:
 * You must own a valid license for this modification to use it on your
 * CubeCart™ store. Licenses for this modification can be purchased from
 * Estelle Winterflood using the URL above. One license permits you to install
 * this modification on a single CubeCart installation only. This non-exclusive
 * license grants you certain rights to use the modification and is not an
 * agreement for sale of the modification or any portion of it. The
 * modification and accompanied documentation may not be sublicensed, sold,
 * leased, rented, lent, or given away to another person or entity. This
 * modification and accompanied documentation is the intellectual property of
 * Estelle Winterflood.
 *-----------------------------------------------------------------------------
 * DISCLAIMER:
 * The modification is provided on an "AS IS" basis, without warranty of
 * any kind, including without limitation the warranties of merchantability,
 * fitness for a particular purpose and non-infringement. The entire risk
 * as to the quality and performance of the Software is borne by you.
 * Should the modification prove defective, you and not the author assume 
 * the entire cost of any service and repair. 
 *-----------------------------------------------------------------------------
 */
var sofasize = 0;

function addSofaVar(){
	 sofasize = 0
	 var a = gv(dp_ssoptions);
	  for (var i=0; i<a.length; ++i) {
        if (a[i] in dp_ssoptionPrices) {
            var optPrice = dp_ssoptionPrices[a[i]];
            /* Integration with Percentage Price Product Options */
            if (optPrice > 0) {
					sofasize = optPrice;
            }
        }
    }
}

function ale(f){
	var old = window.onload;
	if (typeof window.onload != 'function') {
			window.onload = f;
		} else {
			window.onload = function() {
			old();
			f();
		}
	}
}
function st(e,t){
	if(e) {
		e.innerText = t;
		e.textContent = t;
	}
}
function gv(o){
	var a = [];
	for(var i=0; i<o.length; ++i) {
		
		for(var j=0; o[i] && j<o[i].length; ++j) {
			if (o[i][j].options) {
				a.push(o[i][j].options[o[i][j].selectedIndex].value);
			} else if (o[i][j].checked) {
				a.push(o[i][j].value);
			} else if (o[i][j].length) {
				for(var k=0; o[i][j] && k<o[i][j].length; ++k) {
					if (o[i][j][k].options) {
						a.push(o[i][j][k].options[o[i][j][k].selectedIndex].value);
					} else if (o[i][j][k].checked) {
						a.push(o[i][j][k].value);
					}
				}
			}
		}
	}
	return a;
}
					

function sh(e,h){if(e) { e.innerHTML = h;e.htmlContent = h; }}

// Safe guard - prevent javascript errors from incorrect installation
function dpCheckInstallation(showAlert)
{
    if (typeof dp_options == 'undefined'
            // global store settings
            || typeof dp_usePP == 'undefined'
            || typeof dp_useQE == 'undefined'
            || typeof dpFormatPrice == 'undefined'
            // product settings
            || typeof dp_price == 'undefined'
            || typeof dp_element == 'undefined'
            || typeof dp_optionPrices == 'undefined'
            || typeof dp_optionSymbols == 'undefined'
            || typeof dp_options == 'undefined') {
        // if these javascript variables are not set -- indicates installation error!
        if (showAlert) alert("Message for the store owner...\n\nDynamic Product Prices has not been installed correctly, make sure all new files are uploaded successfully then carefully check:\n- styleTemplates/content/viewProd.tpl");

        return false;
    }
    return true;
}

function dpUpdatePrice()
{

    if (!dpCheckInstallation(true)) {
        return;
    }

    var price = dp_price;
    var priceChange = 0;
    var rateChange = 0;
    var a = gv(dp_options);
    var incompleteSelection = false;
    for (var i=0; i<a.length; ++i) {
        if (a[i].length == 0 || a[i].charAt(0) == '0') {
            /* Integration with Force Selection of Product Options */
            incompleteSelection = true;
        } else if (a[i] in dp_optionPrices) {
            var optPrice = dp_optionPrices[a[i]];
            var optSymbol = dp_optionSymbols[a[i]];
            /* Integration with Percentage Price Product Options */
            if (dp_usePP && optSymbol=='%') {

                rateChange += optPrice / 100;
            } else if (optPrice > 0) {
                if (optSymbol=='+') priceChange += optPrice;
                else if (optSymbol=='-') priceChange -= optPrice;
                /* Integration with Quick Edit Product Options */
                else if (dp_useQE && optSymbol=='=') price = optPrice;
            }
        }
    }

    /* Integration with Force Selection of Product Options */
    /*
    if (incompleteSelection) {
        var sp = document.getElementById(dp_element);
        st(sp,'Choose from options below');
        return;
    }
    */
	price = price + sofasize;
    /* Integration with Percentage Price Product Options */
    if (rateChange != 0.0) {
       
		price = price + (price * rateChange);
    }
    price = price + priceChange;
    /* Display price */
    var sp = document.getElementById(dp_element);
    st(sp,dpFormatPrice(price));
}

