var cartInfo
var cartInitialized = false
var currentItemChanged
var bundlesToShow = false
var showingInCheckout = false
var shoppingCartAnimating = false

//var url_customerservice = '/systemservice/shoppingcart/kundeservice?c=1'
var url_customerservice = '/systemservice/checkout/service?c=1'
var url_conditions = '/systemservice/shoppingcart/handelsbetingelser?c=1'
var url_serviceform = '/systemservice/checkout/service/serviceform?c=1'
var url_servicefaq = '/systemservice/checkout/faq?c=1'

chainSessionReady.addFunction(function(){InitializeShoppingCart_Main()},'InitializeShoppingCart',100);
// new width for the search input field on mac (not chrome)
chainDomLoaded.addFunction(function(){if(navigator.platform.toLowerCase().indexOf('mac')>-1 && navigator.userAgent.toLowerCase().indexOf('chrome')==-1){$$("#topSearch .search").each(function(item) {item.setStyle({width: '151px'})})}},'resizeSearchInput',100);

function InitializeShoppingCart_Main(){
	//Listerners
	$("shoppingcart_button").observe("click", toogleShoppingCart);
	$("shoppingcart_close").observe("click", toogleShoppingCart);
	$("shoppingcart_button_showall").observe("click", toogleShoppingCartSize);
	if($("add_to_shoppingcart_button")!=null){$("add_to_shoppingcart_button").observe("click", addToShoppingCartButtonHandler);}
	if($("add_to_shoppingcart_bundle_button")!=null){$("add_to_shoppingcart_bundle_button").observe("click", function(){hideBundles();animateAddToShoppingCart()});}
	if($("add_to_shoppingcart_bundle_close")!=null){$("add_to_shoppingcart_bundle_close").observe("click", hideBundles);}
	if($$(".shoppingcart_item_quantity_up")!=null){$$(".shoppingcart_item_quantity_up").invoke('observe', 'click',  updateNumber)}
	if($$(".shoppingcart_item_quantity_down")!=null){$$(".shoppingcart_item_quantity_down").invoke('observe', 'click',  updateNumber)}

    document.observe("payment:accept", function() {
        getShoppingCart();
    });

	//init the cart
	getShoppingCart()
}

function termsAccepted(){
    //console.log("termsAccepted: " + cartInfo.order.Header.acceptTerms)
    
    if(cartInfo.order.Header.acceptTerms==true){
        return true
    } else {
        return false
    }
}

function toggleTermsAccepted(event){
    Event.stop(event)
    //console.log("toggleTermsAccepted: " + $("acceptterms").checked)
    var accepted = $("acceptterms").checked;
    
    if($("acceptterms").checked=false){ 
        $("checkout_navigation").down(".navBtn").removeClassName("locked")
        $("checkout_navigation").down(".navBtn").addClassName("unlocked")
        $('tab2').addClassName('unlocked')
        $('tab2').removeClassName('locked')
    }else{
        $("checkout_navigation").down(".navBtn").removeClassName("unlocked")
        $("checkout_navigation").down(".navBtn").addClassName("locked")
        $('tab2').addClassName('locked')
        $('tab2').removeClassName('unlocked')
    }    
    if($("shoppingcart_item_message")!=null){$('shoppingcart_item_message').remove();}
    dk.ide.webservice.BasketService.UpdateAcceptTerms(CodeCompany.Cookie.read("BasketId"), accepted, updateBasketInfo);
}

function showItemsInCheckout(){
    showingInCheckout=true
    getShoppingCart()
    $("shoppingcart_button_showall_checkout").observe("click", toogleShoppingCartSize);
    $("acceptterms").observe("click", toggleTermsAccepted);
    $("accepttermslink").observe("click", function(event){Event.stop(event);$("handel_btn").simulate("click")});
    $("gotoAddresses").observe("click", checkBeforeNextTab);
}

function checkBeforeNextTab(){
    if(termsAccepted()){
        if(cartInfo.order.NumberOfItems==0){
            document.fire('errormessage:show', {
				boxname: 'commonerror',
				xpos: '404px', 
				ypos: '390px', 
				errormessage: 'Du har ingen varer i indk'+String.fromCharCode(248)+'bskurven og kan derfor ikke g'+String.fromCharCode(229)+' videre i kassen.'
			});
            $("checkout_navigation").down(".navBtn").removeClassName("locked");
            $("checkout_navigation").down(".navBtn").addClassName("unlocked");
            $('tab2').addClassName('unlocked');
            $('tab2').removeClassName('locked');
        } else {
            changePage.getit('getaddresses');
        }
    }else{
        $("gotoAddresses").insert(composeMessage("Du skal acceptere handelsbetingelserne for at forts"+String.fromCharCode(230)+"tte"), 'bottom');
    }
}

function hideBundles(){
    $("add_to_shoppingcart_price").show();
	new Effect.SlideUp($("add_to_shoppingcart_bundles"), {duration:.10, afterFinish: function() { $('add_to_shoppingcart_bundle').hide() }});
}
function showBundles(){
    $("add_to_shoppingcart_price").hide();
    $("add_to_shoppingcart_bundle").show();
	new Effect.SlideDown($("add_to_shoppingcart_bundles"), {duration:.10})
}

function addToShoppingCartButtonHandler(){
    if(bundlesToShow){
        showBundles();
        return false;
    }
    
    var newValue = $("add_to_shoppingcart_quantity_chooser").down(0).value;
    
    if(newValue>itemstock && itemstock!=0){
        
        $("add_to_shoppingcart_quantity_chooser").down(0).value = itemstock;
        
        // this one can only be an "Add_to_shoppin..." - maxstock overseeded
        $("add_to_shoppingcart_quantity_chooser").down(".shoppingcart_item_quantity_up").addClassName("disabled");
        if(itemstock>1){
            // theres more than one, therefore you can choose fewer
            $("add_to_shoppingcart_quantity_chooser").down(".shoppingcart_item_quantity_down").removeClassName("disabled");
        }
        var templ = new Template($("add_to_shoppingcart_alert_text").innerHTML);
        $("add_to_shoppingcart_alert_text").update(templ.evaluate({num:itemstock}));

        $("add_to_shoppingcart_alert").show();
        $("add_to_shoppingcart_alert").observe('click',  function(){$("add_to_shoppingcart_alert").hide()})           
    
        return false;
    }
    
    animateAddToShoppingCart();
}

function animateAddToShoppingCart(){
	/**NEW animation**/
	var newValue = $("add_to_shoppingcart_quantity_chooser").down(0).value;
    
    if(!isNaN(newValue) && newValue>0){  
		$('add_to_shoppingcart_offer_text').replace('<div id="add_to_shoppingcart_offer_text"><span>Indkøbskurven er opdateret</span></div>');
		$('add_to_shoppingcart_offer').addClassName('update');
		$('add_to_shoppingcart_offer').setStyle('display:block;');
		new Effect.Highlight($("add_to_shoppingcart_offer_text"), {startcolor: "#ffff99",endcolor: ""});
		new Effect.BlindUp($('add_to_shoppingcart_offer'), {duration:3, queue: 'end'});
		// itemId is a variabel from the page itself
		dk.ide.webservice.BasketService.PutItem(CodeCompany.Cookie.read("BasketId"), itemId, newValue, updateBasketInfo);
		currentItemChanged = "itemId_" + itemId;
	}
}

function updateBasketInfo(e){   
    var quantity = 0;
    var theTotal = "0,-";
    
    cartInfo = e;
    
    //updateSmallCartText
	$("shoppingcart_quantity_small").update(cartInfo.order.NumberOfItems + ((cartInfo.order.NumberOfItems == 1) ? " vare" : " varer") + " i kurven");
	$("shoppingcart_total_price_small").update("Pris inkl. fragt: " + cartInfo.basketTotal.printable);
		
	// Highlight effect
	if(currentItemChanged!=undefined){
       	new Effect.Highlight($("shoppingcart_quantity_small"), {startcolor: "#ffff99",endcolor: "#efefef"});
       	new Effect.Highlight($("shoppingcart_total_price_small"), {startcolor: "#ffff99",endcolor: "#efefef"});
    }
    
    // only in checkout
    if(showingInCheckout){
        if(termsAccepted()){
            $("acceptterms").checked = true;
            $("checkout_navigation").down(".navBtn").removeClassName("locked");
            $("checkout_navigation").down(".navBtn").addClassName("unlocked");
            $('tab2').removeClassName('locked');
            $('tab2').addClassName('unlocked');
        }else{
            $("acceptterms").checked = false;
            $("checkout_navigation").down(".navBtn").removeClassName("unlocked");
            $("checkout_navigation").down(".navBtn").addClassName("locked");
            $('tab2').removeClassName('unlocked');
            $('tab2').addClassName('locked');
        }
    }
    
    // remove alert if it exists
    if($("shoppingcart_item_message")!=null) {
		$('shoppingcart_item_message').remove();
	}
    $$(".shoppingcart_checkout").each(function(e) {e.removeClassName("disabled")});
    
    if(cartInfo.order.NumberOfItems==0){
        $$(".shoppingcart_checkout").each(function(e) {e.addClassName("disabled");});
    }    
    
    resetPriceInfo();
    buildProductList();
    
	if ( !showingInCheckout && cartInfo.FirstItemAdded ) // case 21811
	{
		document.fire('dialog:showdeliverydialog', cartInfo);
	}

    //(function() { document.fire('custom.systemfontreplace'); }).defer();
}

function getShoppingCart(){
    dk.ide.webservice.BasketService.Get(servicetoken, CodeCompany.Cookie.read("BasketId"), updateBasketInfo, failedBasket);
}

function failedBasket(){
	//$("shoppingcart_quantity_small").update("Der er sket en fejl.")
	//$("shoppingcart_total_price_small").update("<a href='mailto:support@ide.dk'>Kontakt support</a>")
}

function resetPriceInfo(){
    if(showingInCheckout){
        $('shoppingcart_price_big_collection_checkout').update('<div class="shoppingcart_big" id="shoppingcart_subtotal_big_label">Varek'+String.fromCharCode(248)+'b ialt</div><div class="shoppingcart_big" id="shoppingcart_subtotal_big"></div><div class="shoppingcart_big" id="shoppingcart_delivery_big_label">Fragt</div><div class="shoppingcart_big" id="shoppingcart_delivery_big"></div><div class="shoppingcart_big" id="shoppingcart_total_big_label">I alt</div><div class="shoppingcart_big" id="shoppingcart_total_big"></div><div id="shoppingcart_delivery_icon"></div>');
        $('shoppingcart_price_big_collection').update("");
    } else {
        if($("shoppingcart_price_big_collection_checkout")!=null){
			$('shoppingcart_price_big_collection_checkout').update("");
		}
        $('shoppingcart_price_big_collection').update('<div class="shoppingcart_big" id="shoppingcart_subtotal_big_label">Varek'+String.fromCharCode(248)+'b ialt</div><div class="shoppingcart_big" id="shoppingcart_subtotal_big"></div><div class="shoppingcart_big" id="shoppingcart_delivery_big_label">Fragt</div><div class="shoppingcart_big" id="shoppingcart_delivery_big"></div><div class="shoppingcart_big" id="shoppingcart_total_big_label">I alt</div><div class="shoppingcart_big" id="shoppingcart_total_big"></div><div id="shoppingcart_delivery_icon"></div>');
    }
}

function buildProductList(){
    //we haven't got any data to show
    if(cartInfo==undefined){return false}	
	
	$("shoppingcart_subtotal_big").update(cartInfo.basketSubTotal.printable);
    $("shoppingcart_total_big").update(cartInfo.basketTotal.printable);
    $("shoppingcart_delivery_big").update(cartInfo.freight.printable);
    
    
    var showAllBtn = $("shoppingcart_button_showall");
    if(showingInCheckout){
        showAllBtn = $("shoppingcart_button_showall_checkout");
    }
    
	showAllBtn.down(0).update("Vis alle "+cartInfo.order.NumberOfLines+" varer i kurven &raquo;");
	
	if(showingInCheckout){
    	$('shoppingcart_items_checkout').update('');
    	$('shoppingcart_items').update('');
    	for(var i=0;i<cartInfo.order.NumberOfLines;i++) {
    		createHTML($("shoppingcart_items_checkout"), cartInfo.order.Lines[i]);
    	}
    } else {
    	if($("shoppingcart_items_checkout")!=null) {
			$('shoppingcart_items_checkout').update('');
		}
    	$('shoppingcart_items').update('');
    	for(var i=0;i<cartInfo.order.NumberOfLines;i++) {
    		createHTML($("shoppingcart_items"), cartInfo.order.Lines[i]);
    	}
    }
	
	// Highlight effect
	try{
    	if(currentItemChanged!=undefined) {
           new Effect.Highlight($("shoppingcart_subtotal_big"), {startcolor: "#ffff99",endcolor: "#ffffff"});
           new Effect.Highlight($("shoppingcart_total_big"), {startcolor: "#ffff99",endcolor: "#ffffff"});
           
           var newItem = $(currentItemChanged).down(".shoppingcart_item_price");
           if(newItem!=null) {
			   new Effect.Highlight(newItem, {startcolor: "#ffff99",endcolor: "#efefef"});
			}
        }
        currentItemChanged=undefined;
     } catch(e){
		 currentItemChanged=undefined
	}
     
	if(cartInfo.order.NumberOfLines<=5){	
		showAllBtn.hide();
	} else {
		showAllBtn.down(0).update("Vis alle "+cartInfo.order.NumberOfLines+" varer i kurven &raquo;");
		showAllBtn.show();
	}
	
	if(!showAllBtn.hasClassName('open')){
	   // Only show first 5 if the cart haven't been opened
    	var items = $$('.shoppingcart_item');
    	
    	if(items.length>5){
    		items.each(function(item) {item.hide()});
    	
    		for (var index = 0; index < 5; ++index) {
    			items[index].show();
    		}
    	}
    }
	
	//Listerners
	$$(".shoppingcart_item img", ".shoppingcart_item_info").invoke('observe', 'mouseover', function(){ showDescription(this, "show") });
	$$(".shoppingcart_item img", ".shoppingcart_item_info").invoke('observe', 'mouseout', function(){ showDescription(this, "") });
	
	$$(".shoppingcart_item_quantity_up").invoke('observe', 'click',  updateNumber);
	$$(".shoppingcart_item_quantity_down").invoke('observe', 'click',  updateNumber);
	$$(".shoppingcart_item_quantity_input").invoke('observe', 'keyup',  updateNumberValue);
	
	$$(".shoppingcart_item_delete").invoke('observe', 'click',  showDeleteConfirm);

}

function initializeCart(){
    resetPriceInfo();
	buildProductList();
	getConditionsAndCustomerService();
	
	
    //var redirect = "http://" + window.location.host + window.location.pathname + '?checkout=1';
    var redirect = "https://" + window.location.host + window.location.pathname + '?checkout=1';
    //var redirect = '/fordele/checkout?checkout=1'
    $$(".shoppingcart_checkout").invoke('observe', 'click',  function(e){
        e.stop();
        if(cartInfo.order.NumberOfItems==0){
            //document.fire('errormessage:show', { boxname: 'commonerror',xpos: '350px', ypos: '245px', errormessage: 'Du har ingen varer i indk�bskurven og kan derfor ikke g� til kassen.' });
            $$(".shoppingcart_checkout").each(function(e) {e.addClassName("disabled");e.insert(composeMessage("Du har ingen varer i indk"+String.fromCharCode(248)+"bskurven og kan derfor ikke g"+String.fromCharCode(229)+" til kassen."), 'bottom');});
        } else {
            window.location.href=redirect;    
        }
    });

	cartInitialized = true;
}

/*function deleteItem(event){
	event.stop();
	var id = $(Event.element(event)).up('.shoppingcart_item').identify();
    currentItemChanged = id
	
	dk.ide.webservice.BasketService.RemoveItem(CodeCompany.Cookie.read("BasketId"), trimId(id), updateBasketInfo);
}*/

function showDeleteConfirm(event){
    event.stop();
	var id = $(Event.element(event)).up('.shoppingcart_item').identify();
	$(id).down('.shoppingcart_item_delete_confirm').show();
}

function dismissDelete(div_id){
    $(div_id).down('.shoppingcart_item_delete_confirm').hide();
    return false;
}

function deleteShoppingCartItem(div_id){
    currentItemChanged = div_id
	dk.ide.webservice.BasketService.RemoveItem(CodeCompany.Cookie.read("BasketId"), trimId(div_id), updateBasketInfo);
	return false;
}


function updateNumber(event){
    var number = 1;
    var elm = $(Event.element(event));
    
    if(elm.hasClassName("shoppingcart_item_quantity_down")){
        number = -1;
    }
   
	var input = elm.up(0).up(0).down(".shoppingcart_item_quantity_input");
	var newNum = Number(input.value) + number;
    var forced = 0;

    try{
        // its not an item in the shoppincart, but we are adding a item
        var id = elm.up('.shoppingcart_item').identify();
    } catch(e){}
    
    
    if(newNum<=1){
        newNum = 1;
        forced = 1;
    } else {
        if(id==undefined){
            if(newNum>itemstock && itemstock!=0){
                newNum = itemstock;
                forced = 2;
            }
        }
    }

    input.value = newNum;
    
    switch(forced){
        case 1:
            elm.up(0).down(".shoppingcart_item_quantity_down").addClassName("disabled");  
            break;
			
        case 2:
            // this one can only be an "Add_to_shoppin..." - maxstock overseeded
            elm.up(0).down(".shoppingcart_item_quantity_up").addClassName("disabled");
            var templ = new Template($("add_to_shoppingcart_alert_text").innerHTML)
            $("add_to_shoppingcart_alert_text").update(templ.evaluate({num:itemstock}));

            $("add_to_shoppingcart_alert").show();
            $("add_to_shoppingcart_alert").observe('click',  function(){$("add_to_shoppingcart_alert").hide()})           
            break;

        default:
            elm.up(0).down(".shoppingcart_item_quantity_down").removeClassName("disabled");
            elm.up(0).down(".shoppingcart_item_quantity_up").removeClassName("disabled");
            if($("add_to_shoppingcart_alert")!=null){$("add_to_shoppingcart_alert").hide()}
    }
                
    //if(forced==0){
        if(id!=undefined){
            currentItemChanged = id;
            dk.ide.webservice.BasketService.EditItem(CodeCompany.Cookie.read("BasketId"), trimId(id), newNum, updateBasketInfo);
         } else {
            // its not an item in the shoppincart, but we are adding a item
         }
    //}
}

function updateNumberValue(event){
	var input = $(Event.element(event));
	
	try{
      	var id = input.up('.shoppingcart_item').identify();
        currentItemChanged = id;
      	
      	var newNum = Number(input.value);
      	
      	if(newNum>0 && !isNaN(newNum)){
      		dk.ide.webservice.BasketService.EditItem(CodeCompany.Cookie.read("BasketId"), trimId(id), newNum, updateBasketInfo);
      	} /*else {
      	   // force the value to 1
      	   input.value = 1
      	   // but do we send the update?!
      	   dk.ide.webservice.BasketService.EditItem(CodeCompany.Cookie.read("BasketId"), trimId(id), 1, updateBasketInfo);
      	}*/
      } catch(e){}
}

function getConditionsAndCustomerService(){
	$("shoppingcart_accordion_holder").hide();
	//$("shoppingcart_customerservice").hide();
	new Ajax.Updater('shoppingcart_accordion_holder', url_conditions,{onComplete: function() {new Accordion({id: "shoppingcart_accordion"});$("shoppingcart_accordion_holder").appear({duration:.10})}});
//	new Ajax.Updater('shoppingcart_customerservice', url_customerservice,{onComplete: customerServiceOnComplete});
}

/*function customerServiceOnComplete(){
    $("shoppingcart_customerservice").appear({duration:.10});
    //$("service_toggle").observe('click',  getServiceForm)
    $("contact").observe('click',  getServiceForm)
    $("faq1").observe('click',  getFAQ)
}*/
/*
function getServiceForm(){
    //console.log("getServiceForm()")
    $("shoppingcart_customerservice").toggleClassName("open");
    if(!$("shoppingcart_customerservice").hasClassName("open")){
        $("contactinfo").hide();
        $("serviceLoader").update();
        new Effect.Morph('shoppingcart_customerservice',{style: { height:'142px' }, duration: 0.3});
    } else {
        new Effect.Morph('shoppingcart_customerservice',{style: { height:'420px' }, duration: 0.3, afterFinish: function(){
            $("contactinfo").show();
            new Ajax.Updater('serviceLoader', url_serviceform, { method:'get' });
        }});
    }
}
*/

function getFAQ(event){
    //console.log("getFAQ()")
    Event.stop(event);
    $("shoppingcart_large_centerright").toggleClassName("open");
    if($("shoppingcart_large_centerright").hasClassName("open")){
        $("shoppingcart_large_centerright").show();
        new Ajax.Updater('shoppingcart_large_centerright', url_servicefaq, { method:'get' });
    } else {
        $("shoppingcart_large_centerright").hide();
    }
}

function showDescription(event, show){
	var t = event.up(0).getElementsByClassName('shoppingcart_item_description');
	if (show!="") {
		t[0].addClassName("show");
	} else {
		t[0].removeClassName("show");
	}
}

function toogleShoppingCart(){
    //we haven't got any data to show
    // so this prevents anyone to open the cart
    if(cartInfo==undefined){return false}
    if(cartInfo.basketId==""){return false}
    
    //the cart is animation, so prevent any errors
    if(shoppingCartAnimating){return false}
    
    shoppingCartAnimating= true;

	$("shoppingcart_icon").toggleClassName("open");
	if(!$('shoppingcart_icon').hasClassName('open')){
		// hide        
		new Effect.SlideUp($('shoppingcart_large_container_content'), {duration:.50, afterFinish: function() { 
            // remove alert if it exists
            if($("shoppingcart_item_message")!=null){$('shoppingcart_item_message').remove();}
            $$(".shoppingcart_checkout").each(function(e) {e.removeClassName("disabled")});
            
      		$('shoppingcart_large_container').hide();
      		$("shoppingcart_small_info").appear({duration:.10});
      		shoppingCartAnimating=false;
		}});
		
	}else{
		//show
		if(!cartInitialized){
			initializeCart();
		}
		
        if(cartInfo.order.NumberOfItems==0){
            $$(".shoppingcart_checkout").each(function(e) {e.addClassName("disabled");});
        }
		
		$("shoppingcart_small_info").hide();
		$('shoppingcart_large_container').show();
		$('shoppingcart_large_container_content').hide();
		 new Effect.SlideDown($('shoppingcart_large_container_content'), {duration:.50, afterFinish: function(){shoppingCartAnimating=false}});		 
	}
}

function toogleShoppingCartSize(){
    var showAllBtn = $("shoppingcart_button_showall")
    if(showingInCheckout){
        showAllBtn = $("shoppingcart_button_showall_checkout");
    }
	showAllBtn.toggleClassName("open");
	if(!showAllBtn.hasClassName('open')){
		// small
		var minHeight=420;
		
		var items = $$('.shoppingcart_item')
		items.each(function(item) {item.hide()});
	
		for (var index = 0; index < 5; ++index) {
			items[index].show();
		}

		//initially we hide the viewport and btn, and show them after the animation
		$('shoppingcart_items_viewport').hide();
		showAllBtn.hide();
		// update the text on the btn
		showAllBtn.down(0).update("Vis alle "+cartInfo.order.NumberOfLines+" varer i kurven &raquo;")
		new Effect.Morph('shoppingcart_large_container_content', {style: 'height: ' + minHeight + 'px',duration: 0.10, afterFinish: showItems.call(this, 'small')})
		$("shoppingcart_checkouts_bottom").hide();
	}else{
		//big
		var paddingBottom = 100;
		
		$$('.shoppingcart_item').each(function(item) {item.show()});
		var newHeight = $('shoppingcart_items').getHeight();
		
		//initially we hide the viewport and btn, and show them after the animation
		$('shoppingcart_items_viewport').hide();
		showAllBtn.hide();
		// update the text on the btn
		showAllBtn.down(0).update("Vis kun de sidste 5 varer i kurven &raquo;");
		new Effect.Morph('shoppingcart_large_container_content', {style: 'height: ' + (newHeight+paddingBottom) + 'px',duration: 0.10, afterFinish: showItems.call(this, 'big') })
	}
}

function showItems(type){
    if(showingInCheckout){
        $('shoppingcart_button_showall_checkout', 'shoppingcart_items_viewport').each(function(e){e.appear({ duration: 0.1 })}) ;
    } else {
        $('shoppingcart_button_showall', 'shoppingcart_items_viewport').each(function(e){e.appear({ duration: 0.1 })}) ;
    }
    
	if(type=="big" && cartInfo.order.NumberOfLines>10){
		$("shoppingcart_checkouts_bottom").appear({ duration: 0.1 });
	}
}

function composeMessage(message){
    var templ = new Template(
		'<div id="shoppingcart_item_message" class="shoppingcart_item_message_outer">'+
			'<div class="shoppingcart_item_message_inner">'+
				'<div class="shoppingcart_item_message">'+
					'<div class="shoppingcart_item_message_padding">#{message}</div>'+
				'</div>'+
			'</div>'+
		'</div>'
	);
                           
	return templ.evaluate({message:message});
}

var Accordion = Class.create({
	initialize: function(options) {
		this.accordion = $(options.id);
		this.activeClass = "active";
		this.toggleClass = options.toggleClass || "shoppingcart_accordion_toogle";
		this.contentClass = options.contentClass || "shoppingcart_accordion_content";
		
		this.toogls = this.accordion.select("." + this.toggleClass);
		this.contents = this.accordion.select("." + this.contentClass);
		
		//this.isAnimating = false;
		this.current = null;
		this.toExpand = null;
		
		//this.hideAll();
		this.accordion.select("." +this.toggleClass).invoke("observe", "click", this.toggle.bindAsEventListener(this));
	},

	toggle: function(e) {
		var el = e.element();

		if(!el.hasClassName(this.activeClass) && !this.isAnimating){
			this.current = el;
			this.toExpand = el.next('.' + this.contentClass);
			this.animate();
		}
		e.stop();
		return false;
	},

	hideAll: function() {
		this.toogls.each(function(e) {
			e.removeClassName(this.activeClass);
		}.bind(this));
		this.contents.each(function(e) {
			//e.removeClassName(this.activeClass);
			e.hide();
		}.bind(this));
	},
	
	animate: function() {
		this.hideAll();
		this.current.addClassName(this.activeClass);
		//this.toExpand.show();
		new Effect.SlideDown(this.toExpand, {
			duration: 0.10
		});
	}
});


//trimId("itemId_12345") returns 12345
function trimId(id){
    return id.split("itemId_").join("");
}

function createHTML(root, info){
    var showDown = "";
    var showUp = "";
    
    if(info.qty==1){
        showDown = " disabled";
    }
    
    if(info.Notifications!=undefined){
        for(var i = 0;i<info.Notifications.length;i++){
            if(info.Notifications[i].NotificationType==1){        
                showUp=" disabled";
            }
        }
    }
    
    var truncInfo = (info.varebeskrivelse.length<71) ? info.varebeskrivelse : info.varebeskrivelse.substr(0, 70) + "...";
    
    var templ = new Template(
		'<div class="shoppingcart_item" id="#{id}"><div class="shoppingcart_item_name">#{name}</div>'+
		'<img  onerror="this.src=\'/files/system/gfx/fotopaavej/fotopaavej-224.jpg\';" width="72" height="40" src="/files/ide.dk/searchimages/#{clean_id}-001.jpg" alt="">'+
		'<div class="shoppingcart_item_quantity"><input size="2" class="shoppingcart_item_quantity_input" tabindex="1" value="#{quantity}">'+
		'<div class="shoppingcart_item_quantity_chooser"><div class="shoppingcart_item_quantity_up#{showUp}"></div><div class="shoppingcart_item_quantity_down#{showDown}"></div></div></div>'+
		'<div class="shoppingcart_item_price">#{price}</div><div class="shoppingcart_item_delete"><a href="">Slet produkt</a></div><div class="shoppingcart_item_description">#{description}</div>'+
		'<div class="shoppingcart_item_info"></div><div class="shoppingcart_item_delete_confirm" style="display: none;">'+
		'<div class="shoppingcart_item_delete_confirm_inner"><div>Fjern vare?</div><a href="" class="shoppingcart_item_delete_confirm_yes" onclick="deleteShoppingCartItem(\'#{id}\');return false;">'+String.fromCharCode(187)+' Ja</a>'+
		'<a href="" class="shoppingcart_item_delete_confirm_no" onclick="dismissDelete(\'#{id}\');return false;">' + String.fromCharCode(187) + ' Nej</a></div></div></div>'
	);
    root.insert(templ.evaluate({
		clean_id: info.itemId,
		id: "itemId_" + info.itemId,
		name: info.varenavn,
		description:truncInfo,
		showUp:showUp,
		showDown:showDown,
		quantity: info.qty,
		price: info.lineAmount.printable
	}), 'after');
}

// SIMULATE
(function(){
  
  var eventMatchers = {
    'HTMLEvents': /^(?:load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll)$/,
    'MouseEvents': /^(?:click|mouse(?:down|up|over|move|out))$/
  }
  var defaultOptions = {
    pointerX: 0,
    pointerY: 0,
    button: 0,
    ctrlKey: false,
    altKey: false,
    shiftKey: false,
    metaKey: false,
    bubbles: true,
    cancelable: true
  }
  
  Event.simulate = function(element, eventName) {
    var options = Object.extend(defaultOptions, arguments[2] || { });
    var oEvent, eventType = null;
    
    element = $(element);
    
    for (var name in eventMatchers) {
      if (eventMatchers[name].test(eventName)) { eventType = name; break; }
    }

    if (!eventType)
      throw new SyntaxError('Only HTMLEvents and MouseEvents interfaces are supported');

    if (document.createEvent) {
      oEvent = document.createEvent(eventType);
      if (eventType == 'HTMLEvents') {
        oEvent.initEvent(eventName, options.bubbles, options.cancelable);
      }
      else {
        oEvent.initMouseEvent(eventName, options.bubbles, options.cancelable, document.defaultView, 
          options.button, options.pointerX, options.pointerY, options.pointerX, options.pointerY,
          options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, options.button, element);
      }
      element.dispatchEvent(oEvent);
    }
    else {
      options.clientX = options.pointerX;
      options.clientY = options.pointerY;
      oEvent = Object.extend(document.createEventObject(), options);
      element.fireEvent('on' + eventName, oEvent);
    }
    return element;
  }
  
  Element.addMethods({ simulate: Event.simulate });
})();

