var indkoebskurv_data = new Array();
var indkoebskurv_data_loaded = false;
var indkoebskurv_disabled = false;

function sb_redraw() {
    if(indkoebskurv_disabled) {
        return true;
    }
    
    var content = sb_get_content_from_cookies();

    // Elements we need to act on:
    var empty = document.getElementById('kurvempty');
    var list_elem = document.getElementById('sb_contents');
    var gotocheckout = document.getElementById('gotocheckout');

    if(! (empty && gotocheckout && list_elem)) {
        return true;
    }

    if(content.length == 0) {
        empty.style.display = 'block';
        list_elem.style.display = 'none';
        gotocheckout.style.display = 'none';
        return true;
    }

    // Remove the empty-message:
    empty.style.display = 'none';
    list_elem.style.display = 'block';
    gotocheckout.style.display = 'block';

    // Add the new elements:
    if(list_elem) {
        // remove old childrem
        for(var i=list_elem.childNodes.length - 1;i>=0;i--) {
            list_elem.removeChild(list_elem.childNodes[i]);
        }

        // And create new:

        for(var i=0;i<content.length;i++) {
            var li_elem = document.createElement('li');
            var a_elem = document.createElement('a');
            a_elem.href = content[i].href;
            a_elem.title = content[i].title;
            a_elem.innerHTML = content[i].quantity + " x " + content[i].title;
            li_elem.appendChild(a_elem);
            list_elem.appendChild(li_elem);
        }

    } else {
        alert("Could't find list element from shoppingbasket!");
    }

}

function sb_get_content_from_cookies() {
    if(indkoebskurv_data_loaded) {
        return indkoebskurv_data;
    }

    var cookies = document.cookie;

    var cookie_list = cookies.split("; ");

    for(var i=0;i<cookie_list.length;i++) {
        cookietext = cookie_list[i];
        var data = cookietext.split("=");
        if(data && data[0] && data[0].indexOf('bestillingskurv') == 0) {
            var item = sb_unpack_item(data[1]);
            if(item) {
                indkoebskurv_data[indkoebskurv_data.length] = item;
            }
        }
    }

    indkoebskurv_data_loaded = true;

    return indkoebskurv_data;
}

function sb_unpack_item(itemstr) {
    var data = itemstr.split("|") || [];

    if(data.length == 3) {
        return {
                id: unescape(data[0]),
                title: unescape(data[1]),
                quantity: unescape(data[2])
            };
    } else {
        return false;
    }
}

function sb_pack_item(id, title, quantity) {
    var packed = escape(id);
    packed += "|" + escape(title);
    packed += "|" + escape(quantity);

    return packed;
}

function sb_add_item(id, title, quantity) {
    var content = sb_get_content_from_cookies();

    // Expect title to be uri escaped:
    title = unescape(title);

    var packed = sb_pack_item(id, title, quantity);
    var item = sb_unpack_item(packed);

    if(! item) {
        return false;
    }

    // Check if this item is allready there:
    var found = false;
    for(var i=0;i<content.length;i++) {
        if(id == content[i].id) {
            found = true;
            // Add one to quantity in the list:
            content[i].quantity++;

            // And repack item with the new quantity:
            packed = sb_pack_item(id, title, content[i].quantity);
            break;
        }
    }

    // If not found in the list of existing items, add it at the bottom:
    if(! found) {
        content[content.length] = item;
    }

    // Always set the cookie:
    document.cookie="bestillingskurv_" + id + "=" + packed + "; path=/";

    sb_redraw();

    // Tell the user that he ordered something:
    alert("Du har bestilt: " + title);

    return false;
}

