var backlink;
var check_intervals = new Object();

function initUserAgent() {
    var request;

    if (window.XMLHttpRequest) {
        request = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        request = new ActiveXObject("Msxml2.XMLHTTP");
        if (!request) request = new ActiveXObject("Microsoft.XMLHTTP");
    }

    if (!request) {
        alert("Your browser doesn\'t do AJAX");
    }

     return request;
}

function addToCart(product) {
    // alert('Adding product ' + product + ' to your cart');
    var r = initUserAgent();

    r = null; //temp to make the non-ajax version

    if (r) {
    }
    else {
        var redirect = 'addtocart_noajax.ez?product=' + product;
        if (backlink) redirect += '&backlink=' + encodeURIComponent(backlink);
        window.location = redirect;
    }
}

function calcTotal() {
    var selects = document.getElementsByTagName('select');
    var total = 0;

    for (i = 0; i < selects.length; i++) {
       var s = selects[i];
       var s_id = s.id;
       if (! s_id.match('action_')) continue;
       if (s.options[s.selectedIndex].value == 'purchase') {
	   var pricetagid = s_id.replace(/action_/, 'price_');
           var pricetag = document.getElementById(pricetagid);
           var price = Number(pricetag.innerHTML);
	   total += price;
       }
    }

    var cart_total = document.getElementById('cart_total');
    cart_total.innerHTML = total.toFixed(2);
}

function goCat(what, which) {
    document.location = '/store/store.w3d?' + what + '=' + encodeURI(which);
}

var default_rating = 0;
var rating_hangon = 0;

function hiLiteStar(num) {
    document.getElementById('ratingbox_img').style.backgroundImage = 'url(/images/stars/' + num + 'stars.png)';
}

function resetStars() {
    if (!(rating_hangon)) {
        document.getElementById('ratingbox_img').style.backgroundImage = 'url(/images/stars/' + default_rating + 'stars.png)';
    }
}

function setRating(num) {
    rating_hangon = 1;

    if (confirm('Are you sure you want to rate this product a "' + num + '"?')) {
        default_rating = num;
        alert('Setting rating to ' + num + ' (need to make this work with RPC)');
        rating_hangon = 0;
        resetStars();
        return true;
    }

    rating_hangon = 0;
    resetStars();
    return false;
}

function start_checking_downloads(order, product, file) {
    file = file.toString();

    var func_call = "check_dl_num('"+order+"','"+product+"','"+file+"')";
    check_intervals[order+':'+product+':'+file] = setInterval(func_call, 2000);
}

function check_dl_num(order, product, file) {
    var callback = function (response) {
        var el = document.getElementById('downloads_remaining_'+order+'_'+product+'_'+file);
        if (el.innerHTML != response) {
            el.innerHTML = response;
            clearInterval(check_intervals[order + ':' + product + ':' + file]);
        }
    };

    asynch_call_rpc("/store/check_remaining_downloads.ez", 'check', callback, {'order' : order, 'product' : product, 'file' : file});
}

