(function($){
 
    $.fn.extend({
         
        //pass the options variable to the function
        AIRvarukorg: function(options) {
 
 
            //Set the default values, use comma to separate the settings, example:
            var defaults = {
                onaction        : 'click', // click,mouseenter
                emptyText       : 'Du har inga artiklar i din varukorg',
                populatedText   : 'artiklar i din varukorg',
                checkoutText     : 'Till kassan',
                totalText       : 'Totalsumma',
                displayArrow    : true, // true, false
                arrowUpImage    : '/includes/AIRvarukorg/kundvagn-pil-upp.png',
                arrowDownImage  : '/includes/AIRvarukorg/kundvagn-pil-ned.png',
                displayText     : true, // true, false
                displayQty      : true, // true, false
                qtyPrefix       : '',
                qtySuffix       : ' st.',
                displaySum      : true, //true, false
                sumPrefix       : ', totalt ',
                sumSuffix       : ':-',
                addImage        : '/includes/AIRvarukorg/kundvagn-add.png',
                subImage        : '/includes/AIRvarukorg/kundvagn-sub.png',
                displayRemove   :   true, //true/false
                remImage        : '/includes/AIRvarukorg/kundvagn-rem.png',
                ajaxImage       : '/includes/AIRvarukorg/kundvagn-uppdaterar.gif',
                imageWidth      : 75,
                imageHeight     : 75,
                liveAdd         : true,
                scrollToObject  : '#wrapper',
                offSetTop       : 0,
                offSetLeft      : 0,
                offsetRight     : 0,
                descrLength     : 25,
                animateFromTo   : false,
                animateOnly     : false,
                animateSpeed    : 1000,
                animateTargetW  : 0,
                animateTargetH  : 0,
                glowFromTo      : false,
                glowOnly        : false,
                glowFromSpeed   : 400, // 200 - 600
                glowToSpeed     : 400, // 200 - 600
                glowToOpacity   : 0.8, // 0 - 1
                glowFromOpacity : 1, // 0 - 1
                closeAfter      : 0,
                displayPromo	: false //true/false
            }
                 
            var options =  $.extend(defaults, options);
            var o = options;
            var AIRvarukorgTimer;
            return this.each(function() 
            {

                if (o.scrollToObject != '')
                {
                
                    var head= document.getElementsByTagName('head')[0];
                    var script= document.createElement('script');
                    script.type= 'text/javascript';
                    script.src= '/includes/AIRvarukorg/jquery.scrollTo-1.4.2-min.js';
                    head.appendChild(script);
                }
                if (o.animateFromTo === true)
                {
                    var head= document.getElementsByTagName('head')[0];
                    var script= document.createElement('script');
                    script.type= 'text/javascript';
                    script.src= '/includes/AIRvarukorg/jquery.AIRanimate_from_to-1.0.min.js';
                    head.appendChild(script);                
                }
                
                if (o.glowFromTo === false)
                {
                    o.glowOnly = false;
                }
                 if (o.animateFromTo === false)
                {
                    o.animateOnly = false;
                }
                AIRvarukorg_LoadImages([
                    o.arrowDownImage,
                    o.arrowUpImage,
                    o.addImage,
                    o.remImage,
                    o.subImage,
                    o.ajaxImage
                ]);
                
                AIRvarukorg_Load(o);
                
                if (o.liveAdd)
                {
                
                    AIRvarukorg_LiveAdd(o);
                    
                }
                
                AIRvarukorg_SetClose(o, jQuery(this));

                if (!o.displayArrow)
                {
                    jQuery(".AIRvarukorg-Arrow").hide();
                }
                else
                {
                    jQuery(".AIRvarukorg-Arrow").html('<img align="absmiddle" id="AIRvarukorg-ArrowImg" src="' + o.arrowDownImage + '">');
                }
                
                if (!o.displayText)
                {
                    jQuery(".AIRvarukorg-Text").hide();
                }
                if (!o.displayQty)
                {
                    jQuery(".AIRvarukorg-Qty").hide();
                }
                if (!o.displaySum)
                {
                    jQuery(".AIRvarukorg-Sum").hide();
                }
                
	    		if (o.preLoad === true)
		    	{

			    }


                if (o.onaction === 'mouseenter')
                {
                    jQuery(this).css("cursor","pointer");
                    jQuery(this).mouseenter(function(){
                        
                         AIRvarukorg_Show(o);
                            
                    }).mouseleave(function(){
                        
                        AIRvarukorg_Hide(o);
                        
                    });
                    
                }
                else if (o.onaction === 'click')
                {
                    jQuery(this).css("cursor","pointer");
                    jQuery(this).click(function(){

                        if (!jQuery("#AIRvarukorg-Wrap").is(":visible"))
                        {
                           AIRvarukorg_Show(o,'true');
                        }
                        else
                        {
                            AIRvarukorg_Hide(o);
                        }
                    });
       
                }
                
                /* Lägg till, ta bort, dra ifrån */
                jQuery(".Rem").live("click",function(){
                    var url = jQuery(this).attr("rel");
                    jQuery(this).find("img").attr("src",o.ajaxImage);
                    jQuery.get(url,function(){
                        AIRvarukorg_Load(o)
                        AIRvarukorg_Show(o,'true');
                    });        
                });
                
                jQuery(".Sub").live("click",function(){
                    var obj = jQuery(this).attr("rel");
                    var id = obj.replace("#orgqty_","");
                    var qty = parseInt(jQuery(obj).val()) - 1;
                    if (qty < 0)
                    {
                        qty = 0;
                    }
                    var url = "/shop?funk=andra_genomfor&VARUKORG!div!" + id + "=" + qty;
                    jQuery(this).find("img").attr("src",o.ajaxImage);
                    jQuery.get(url,function(){
                        AIRvarukorg_Load(o)
                        AIRvarukorg_Show(o,'true');
                    });
                });
            
                jQuery(".Add").live("click",function(){
                
                    var obj = jQuery(this).attr("rel");
                    var id = obj.replace("#orgqty_","");
                    var qty = parseInt(jQuery(obj).val()) + 1;
                    var url = "/shop?funk=andra_genomfor&VARUKORG!div!" + id + "=" + qty;
                    jQuery(this).find("img").attr("src",o.ajaxImage);
                    jQuery.get(url,function(data){
                        var txt = jQuery(data).find('i[style="color: rgb(255, 0, 0);"]').html();
                        if (txt)
                        {
                            txt = txt.replace("<b>Rad 1:</b>","");
                            AIRvarukorg_Load(o,txt)
                            AIRvarukorg_Show(o,'true');
                            
                        }
                        else
                        {
                            AIRvarukorg_Load(o)
                            AIRvarukorg_Show(o,'true');			
                        }
                    });
                });
                
            });
        }
    });
    
    var AIRvarukorg_LoadImages = function(imgs)
    {
        jQuery(imgs).each(function(){
            jQuery('<img/>')[0].src = this;
        });
    }
    var AIRvarukorg_Show = function(o, noClose)
    {
         jQuery("#AIRvarukorg-Wrap").show();
         if (o.displayArrow)
         {
               jQuery(".AIRvarukorg-Arrow").html('<img align="absmiddle"  id="AIRvarukorg-ArrowImg"  src="' + o.arrowUpImage + '">');
         }
         if (noClose !== 'true')
         {
             if (o.closeAfter > 0)
             {
                AIRvarukorgTimer = setTimeout(AIRvarukorg_Timer_Close,(o.closeAfter * 1000));
            }
        }
    }
    
    
    var AIRvarukorg_Hide = function(o)
    {
        jQuery("#AIRvarukorg-Wrap").hide();
        if (o.displayArrow)
        {
            jQuery(".AIRvarukorg-Arrow").html('<img align="absmiddle" id="AIRvarukorg-ArrowImg" src="' + o.arrowDownImage + '">');				
        }
    }
    
    var AIRvarukorg_Load = function(o, err)
    {
        jQuery.get("/cgi-bin/ibutik/API.pl?funk=varukorg&retur=xml&random=" + Math.random(),function(xml){

		    jQuery(xml).find("shoppingcart").each(function(){
                var status = jQuery("status",this).text();
                if (status == "populated")
                {
                    var sum = jQuery("sum",this).text();
                    var sumText = jQuery("sum", this).attr("text");
                    var sumqty = jQuery("sumqty", this).text();
                    var sumSuffix = jQuery("sum", this).attr("suffix");
                    var sumPrefix = jQuery("sum", this).attr("prefix");
                    var checkout = jQuery("checkout",this).text();
                    var checkoutTxt = jQuery("checkout", this).attr("text");
                    if(o.displayPromo)
                    {
						var nextPromoSum = jQuery("nextPromoSum", this).text();
						var nextPromoText = jQuery("nextPromoText", this).text();
					}
                    var html = '<div class="BWrap"><span class="Close"></span>';
                    html += '<div class="RowWrap">';
                    
                    var gava = -1;
                    
                    jQuery(this).find("article").each(function(){
                        var id = jQuery("id", this).text();
                        id = jQuery.trim(id);
                        var SomGava = jQuery("gift", this).text();
                        if (((SomGava != gava) && (gava > -1)) || ((SomGava ==1) && (gava == -1)))
                        {				
                            html += '<div class="RowGift">';								
                            html += "Dina gåvor <span>(Skickas i presenförpackning)</span>";
                            html += '</div>';															
                            gava = SomGava
                        }
                        else
                        {
                        
                            if (gava < 0)
                            {
                                html += '<div class="RowTopp">';								
                                html += "[EJGAVA]";
                                html += '</div>';		
                                gava = SomGava							
                            }
                            
                        }
                        
                        
                        html += '<div class="Row">';
                        var img =jQuery("image", this).text();
                        if (img.substr(0,1) == "/")
                        {
                            img = img.substr(1,img.length-1);
                        }
                        html += '<div class="Img"><img src="/bild.php?w=' + o.imageWidth + '&h=' + o.imageHeight + '&constrain=1&img=' + img + '" alt=""></div>';
                        html += '<div class="TxtWrap">';

                        var qty =jQuery("qty", this).text(); 
                        var qtyTxt =jQuery("qty", this).attr("text"); 
                    //	html += '<div class="Qty">' + qty + ' ' + qtyTxt + '</div>';

                        var descr =jQuery("descr", this).text(); 
                        if (descr.length > o.descrLength)
                        {
                             descr = descr.substring(0,o.descrLength) + "...";
                        }
                        html += '<div class="DescrWrap">';
                        html += '<div class="Descr">' + descr + '</div>';
                        
                        var rabatt = jQuery("rabatt", this).text();
                        if (rabatt != '')
                        {
                            html += '<div class="Rabatt">' + rabatt + '</div>';							
                        }
                        html += '</div>';
                        
                        html += '<div class="Sub" rel="#orgqty_' + id + '"><img src="' + o.subImage +'" alt="-"></div>';							
                        html += '<input type="text" size="2" value="' + qty + '" class="Qty" name="qty_' + id+ '" id="qty_' + id+ '">';
                        html += '<input type="hidden" value="' + qty + '" name="orgqty_' + id+ '" id="orgqty_' + id+ '">';
                        html += '<div class="Add" rel="#orgqty_' + id + '"><img src="'  + o.addImage + '" alt="+"></div>';
                        var price =jQuery("price", this).text(); 
                        if (rabatt != '')
                        {
                            html += '<div class="Price PRab">' + price + '</div>';								
                        }
                        else
                        {
                            html += '<div class="Price">' + price + '</div>';								
                        }
                        if (o.displayRemove)
                        {
                            html += '<div class="Rem" rel="/shop?funk=andra_genomfor&VARUKORG!div!' + id + '=0"><img src="' + o.remImage + '" alt="Ta bort"></div>';
                        }
                        html += '<br style="clear:left;"></div>';					

                        html += '<br style="clear:left;">';
                        if (err)
                        {
                            html += '<label id="err_'+ id + '">' + err + '</label>';
                        }
                        html += '</div>';

                    });
                    html += "</div>";
                    
                    if (gava == 1)
                    {
                        html = html.replace("[EJGAVA]","<span>Dina egna produkter</span>");
                    }
                    else
                    {
                        html = html.replace("[EJGAVA]","");
                    }
                    
                    
                    html += '<div class="Footer">';
                    html += '<div class="SumWrap">';
                    html += '<div class="SumTxt">' + o.totalText + '</div>';
                    html += '<div class="Sum">'+ sumPrefix + sum + sumSuffix + '</div>';
                    if(o.displayPromo)
                    {
						html += '<div class="nextPromoText">' + nextPromoText + '</div>';
						html += '<div class="nextPromoSum">' + sumPrefix + nextPromoSum + sumSuffix + '</div>';
					}
                    html += '<br style="clear:left;"></div>';
                    html += '<div class="Checkout"><a href="' + checkout + '">' + o.checkoutText + '</a></div>';
                    html += '</div>';
                    html += '</div><br style="clear:left;">';
                    if (o.displaySum)
                    {
                        jQuery(".AIRvarukorg-Sum").show();
                        jQuery(".AIRvarukorg-Sum").text(o.sumPrefix + sumPrefix + sum + o.sumSuffix + sumSuffix);
                    }
                    jQuery("#AIRvarukorg-Wrap").html(html);
                    jQuery(".AIRvarukorg-Text").html(o.populatedText);
                    if (o.displayQty)
                    {
                        jQuery(".AIRvarukorg-Qty").show();
                       jQuery(".AIRvarukorg-Qty").text(o.qtyPrefix + sumqty + o.qtySuffix);
                    }
                }
                else
                {

                    var html = '<div class="BWrap"><span class="Close"></span>';
                    html += '<p style="margin-top:16px;">' + o.emptyText + '</p>';
                    html += '</div>';
                    if (o.displaySum)
                    {
                        jQuery(".AIRvarukorg-Sum").hide();//text(o.sumPrefix + sum + o.sumSuffix);
                    }
                    jQuery("#AIRvarukorg-Wrap").html(html);
                    jQuery(".AIRvarukorg-Text").html(o.emptyText);
                    if (o.displayQty)
                    {
                        jQuery(".AIRvarukorg-Qty").hide();//text(o.qtyPrefix + sumqty + o.qtySuffix);
                    }
                }
            });
		
	    });
    }

    var AIRvarukorg_Timer_Close = function(t)
    {
    
        jQuery("#AIRvarukorg-Wrap").slideUp();
        clearTimeout(t);
        
    }


    var AIRvarukorg_SetClose = function(o,$obj)
    {
    
        jQuery(".BWrap .Close").live("click",function(){
            jQuery("#AIRvarukorg-Wrap").hide();
        });
        
        jQuery(document).click(function(e){
            var h = jQuery(".BWrap").height();
            
            var clickx = e.pageX;
            var clicky = e.pageY;
            
            var tmp_OffSetLeft;
            var tmp_OffSetRight;
            var tmp_OffSetTop;
            if (h > 0)
            {
                if (o.offSetTop === 0)
                {
                    tmp_OffSetTop = jQuery($obj).offset().top;
                }
                if (o.offSetLeft === 0)
                {
                    tmp_OffSetLeft = jQuery("#AIRvarukorg-Wrap").offset().left;
                }
                if (o.offsetRight == 0)
                {
                    if (o.offSetLeft == 0)
                    {
                        tmp_OffSetRight = jQuery($obj).offset().left + jQuery("#AIRvarukorg-Wrap").width();
                    }
                    else
                    {
                        tmp_OffSetRight = o.offSetLeft + jQuery("#AIRvarukorg-Wrap").width();
                    }
                }
                else
                {
                    if (o.offSetLeft == 0)
                    {
                        tmp_OffSetRight = jQuery($obj).offset().left + jQuery("#AIRvarukorg-Wrap").width() + o.offsetRight;
                    }
                    else
                    {
                        tmp_OffSetRight = o.offSetLeft + jQuery("#AIRvarukorg-Wrap").width() + o.offsetRight;
                    }                
                }


                if (clicky < tmp_OffSetTop)
                {
                    jQuery("#AIRvarukorg-Wrap").hide();
                }
                else if (clickx < tmp_OffSetLeft)
                {
                    jQuery("#AIRvarukorg-Wrap").hide();
                }
                else if  (clickx > tmp_OffSetRight)
                {
                    jQuery("#AIRvarukorg-Wrap").hide();
                }
                else if (clicky > (tmp_OffSetTop + jQuery("#AIRvarukorg-Wrap").height() + jQuery($obj).height()))
                {
                    jQuery("#AIRvarukorg-Wrap").hide();
                }
            }
		});
    }

    var AIRvarukorg_LiveAdd = function(o)
    {
         var alt_antal = jQuery('input[name="alt_antal"]').val();
        jQuery(".Knapp_Kop > a").live("click",function(){		
            var href = jQuery(this).attr("href");
            var frm;
            if (href == 'javascript:AIR_LaggIVarukorgen();')
            {
                frm = "AIR_ibutik_laggtill";
            }
            else if (href.substring(0,1) === "/")
            {                
                return true;
            }
            else if (href.indexOf("javascript:AIR_Submit_Butik") > -1)
            {
               return true;
            }
            else
            {
                frm = href.replace("javascript:document.","").replace(".submit();","");
            }

            var alt_antal = jQuery('form[name="' + frm + '"] input[name="alt_antal"]').val();

            if (alt_antal)
            {
                alt_antal = parseInt(alt_antal);
            }
            if (alt_antal > 0)
            {
                for (var i = 1;i <= alt_antal;i++)  
                {
                    var tmp_egenskap = jQuery('form[name="' + frm + '"] select[name="Egenskap' + i + '"]').val();
                    var index = jQuery('form[name="' + frm + '"] select[name="Egenskap' + i + '"]').attr("selectedIndex");
                    if (!index)
                    {
                        var x = 0;
                        jQuery('form[name="' + frm + '"] select[name="Egenskap' + i + '"] option').each(function(){
                            if (jQuery(this).val() === tmp_egenskap)
                            {
                                index = x;
                            }
                            x++;
                        });
                    }
                    var egenskap = AIRvarukorg_Replace(tmp_egenskap);
                    jQuery('form[name="' + frm + '"] select[name="Egenskap' + i + '"] option:eq(' + index + ')').replaceWith('<option value="' + egenskap + '">' + tmp_egenskap + '</option>');
                    jQuery('form[name="' + frm + '"] select[name="Egenskap' + i + '"]').val(egenskap);                   
                }
            }
            
            
            var f = jQuery('form[name="' + frm + '"] input[name="funk"]').val();
            if (f !== 'Presentkort_Laggtill')
            {
                jQuery('form[name="' + frm + '"] input[name="funk"]').val("laggtill_integrerad_ajax");
                  if (jQuery("#Ajax").val() !== "J")
                {
                    jQuery('form[name="' + frm + '"] input[name="funk"]').before('<input type="hidden" id="Ajax" name="Ajax" value="J">');
                }
            }
           var animated = false;            
           if (o.animateFromTo === true)
            {
                var $aFrom;
                var artnr = jQuery('form[name="' + frm + '"] input[name="altnr"]').val();
                if (artnr)
                {
                    if (artnr !== '')
                    {
                        $aFrom = jQuery('[rel="' + artnr + '"] img');
                    }
                }
                if (!$aFrom)
                {
                    if (jQuery("#produktbild"))
                    {
                        $aFrom = jQuery("#produktbild");
                    }    
                }
                if ($aFrom)
                {

                    $aFrom.animate_from_to('.Varukorg', {
                        pixels_per_second: o.animateSpeed,
                        targetWidth: o.animateTargetW,
                        targetHeight: o.animateTargetH,
                        callback: function(){
                            animated = true;
                            /* 
AIRvarukorg_Load(o);
                            AIRvarukorg_Show(o); 
 */

                        }
                    });
                }
                
                if (o.scrollToObject !== '')
                {
                    jQuery.scrollTo(o.scrollToObject,{
                        onAfter : function(){
                        }
                    });
                }
            }

            if (o.glowFromTo === true)
            {
                if ((o.scrollToObject !== ''))
                {
                    jQuery.scrollTo(o.scrollToObject,{
                        onAfter : function(){

                            AIRvarukorg_Glow(o);

                        }
                    });
                }
                else
                {
                     AIRvarukorg_Glow(o);
                }
            
            }
            jQuery.post("/shop",jQuery('form[name="' + frm + '"]').serialize(),function(data){
                if ((o.scrollToObject !== '') && ((o.animateFromTo === false) && (o.glowFromTo === false)))
                {
                    jQuery.scrollTo(o.scrollToObject,{
                        onAfter : function(){
                            AIRvarukorg_Load(o);
                            if ((o.glowOnly === false) && (o.animateOnly === false))
                            {
                                AIRvarukorg_Show(o);        
                            }
                        }
                    });
                }      
                else if ((o.scrollToObject === '') && ((o.animateFromTo === false) && (o.glowFromTo === false)))
                {
                    AIRvarukorg_Load(o);
                    if ((o.glowOnly === false) && (o.animateOnly === false))
                    {   
                        AIRvarukorg_Show(o); 
                    }
                }
                else if ((o.animateFromTo === true) && (animated === false))
                {
                    AIRvarukorg_Load(o);
                    AIRvarukorg_Show(o); 
                }

                               
            });
            
            return false;
            
        });
        
        jQuery(".Knapp_Kop_Gava a").click(function(){
        
            var href = jQuery(this).attr("href");
            var frm = "AIR_ibutik_laggtill";
            document.AIR_ibutik_laggtill.SomGava.value='1';
            jQuery('form[name="' + frm + '"] > input[name="funk"]').val("laggtill_integrerad_ajax");
            jQuery('form[name="' + frm + '"] > input[name="funk"]').before('<input type="hidden" name="Ajax" value="J">');
            jQuery.post("/shop",jQuery('form[name="' + frm + '"]').serialize(),function(data){
                if (o.scrollToObject !== '')
                {
                    jQuery.scrollTo(o.scrollToObject,{
                        onAfter : function(){
                            AIRvarukorg_Load(o);
                            if ((o.glowOnly === false) && (o.animateOnly === false))
                            {
                                AIRvarukorg_Show(o);        
                            }
                        }
                    });
                }                
                
            });
            document.AIR_ibutik_laggtill.SomGava.value='0';
            return false;
            
        });
    }   
    
    var AIRvarukorg_Glow = function(opt)
    {   
        jQuery('.Varukorg').fadeTo(opt.glowToSpeed, opt.glowToOpacity, function () {
            jQuery(this).addClass("Faded");            
        }).fadeTo(opt.glowFromSpeed, opt.glowFromOpacity, function () {
            jQuery(this).removeClass("Faded");
        });
    }

    var AIRvarukorg_Replace = function(strTxt)
    {
        
        var retur = strTxt.replace(/Ö/g, "ZZZZZ");
        retur = retur.replace(/ö/g, "zzzzz");    
        retur = retur.replace(/Ä/g, "XXXXX");
        retur = retur.replace(/ä/g, "xxxxx");    
        retur = retur.replace(/Å/g, "YYYYY");
        retur = retur.replace(/å/g, "yyyyy");  
        retur = retur.replace(/ø/g, "qqqqq");          
        retur = retur.replace(/Ø/g, "QQQQQ");                  
        retur = retur.replace(/æ/g, "wwwww");          
        retur = retur.replace(/Æ/g, "WWWWW");          
        return retur;
        
    }
    
     var AIRvarukorg_ReplaceReverse = function(strTxt)
    {
        var retur = strTxt.replace(/ZZZZZ/g, "Ö");
        retur = retur.replace(/zzzzz/g, "ö");    
        retur = retur.replace(/XXXXX/g, "Ä");
        retur = retur.replace(/xxxxx/g, "ä");    
        retur = retur.replace(/YYYYY/g, "Å");
        retur = retur.replace(/yyyyy/g, "å");    
        retur = retur.replace(/qqqqq/g, "ø");          
        retur = retur.replace(/QQQQQ/g, "Ø");                  
        retur = retur.replace(/wwwww/g, "æ");          
        retur = retur.replace(/WWWWW/g, "Æ");          
        return retur;        
    }
    
    
})(jQuery);

