var broken = Class.create();

broken.login =
{
	showLoginForm : function()
	{
		$('loginTab').className = 'loginFormTab';
	}
}


broken.gfx =
{
    toggleChangePicture: function() {
        if ($('changePictureBackground').getStyle('display') == 'none') {
            $('changePictureBackground').style.display = 'block';
            $('changePictureBackground').style.right = '-46px';
        }
        else
            $('changePictureBackground').style.display = 'none';

        if ($('changePictureForm').getStyle('display') == 'none')
            $('changePictureForm').style.display = 'block';
        else
            $('changePictureForm').style.display = 'none';

    },

    toggleTentBox: function() {
        if ($('tentBox').className == 'tentGudieBoxSmall')
            $('tentBox').className = 'tentGudieBox';
        else
            $('tentBox').className = 'tentGudieBoxSmall';
    },

    toggleBox: function() {
        if ($('orderBox').className == 'expanded') {
            $('orderBox').className = 'collapsed';
            $('showhide_icon').className = 'show';
        }
        else {
            $('orderBox').className = 'expanded';
            $('showhide_icon').className = 'hide';
        }
    },

    toggleText: function() {
        if ($('productText').className == 'expanded') {
            $('productText').className = 'collapsed';
            $('showhide_icon').className = 'hide';
        }
        else {
            $('productText').className = 'expanded';
            $('showhide_icon').className = 'show';
        }
    },

    changeTip: function(o, id, moveRight, img) {
        var slider = $(id);

        if (document.all) {
            var _widthpx = o.parentNode.parentNode.clientWidth.toString();
            var _heightpx = o.parentNode.parentNode.clientHeight.toString();
        } else {
            var _widthpx = o.parentNode.parentNode.getStyle('width').toString();
            var _heightpx = o.parentNode.parentNode.getStyle('height').toString();
        }

        var _width = document.all ? _widthpx : _widthpx.substring(0, (_widthpx.length - 2))
        slider.parentNode.style.height = _heightpx;

        if (moveRight) {
            var _x = 0 - _width;
            var next = document.all ? o.parentNode.parentNode.nextSibling : o.parentNode.parentNode.nextSibling.nextSibling;
        } else {
            var _x = _width;
            var next = document.all ? o.parentNode.parentNode.previousSibling : o.parentNode.parentNode.previousSibling.previousSibling;
        }

        next.style.display = 'block';

        var nextHeight = document.all ? next.clientHeight + 'px' : next.getStyle('height');

        new Effect.Move(slider, { x: _x, mode: 'relative' });

        new Effect.Morph(slider.parentNode, {
            style: {
                height: nextHeight
            }
        });

        var oldImg = $(img);


        if (moveRight)
            var newImg = document.all ? oldImg.nextSibling : oldImg.nextSibling.nextSibling;
        else
            var newImg = document.all ? oldImg.previousSibling : oldImg.previousSibling.previousSibling;

        new Effect.Opacity(oldImg, { duration: 0.5, from: 0.99, to: 0 });

        new Effect.Opacity(newImg, { duration: 0.5, from: 0, to: 0.99 });

        //alert('_heightpx: '+_heightpx+' - nextHeigt: '+nextHeight)
    },

    slideLatestViewed: function(way) {
        var o = $('ajaxSliderVertical');

        if (way == 'down')
            var _y = -320;
        else
            var _y = 320;

        new Effect.Move(o, { x: 0, y: _y, mode: 'relative', afterFinish: broken.gfx.hideShowBtns });

        items = o.getElementsByClassName('item');

    },

    hideShowBtns: function() {
        var oY = $('ajaxSliderVertical').getStyle('top');
        var oYnumber = oY.substring(0, (oY.length - 2))

        if (oYnumber == 0)
            $('seeMoreBtn').style.visibility = 'hidden';
        else
            $('seeMoreBtn').style.visibility = 'visible';


        if (oYnumber <= -((items.length * 160) - 320))
            $('seeErlierBtn').style.visibility = 'hidden';
        else
            $('seeErlierBtn').style.visibility = 'visible';

    },

    removeObject: function(o, obj) {
        if ($(o)) {
            $(o).remove();
        }
        var toShow = $A(['select', 'input', 'embed', 'object']);

        toShow.each(function(item) {
            if ($('productWrapper'))
                var o = $A($('productWrapper').getElementsByTagName(item));

            if (o) {
                o.each(function(element) {
                    element.style.display = 'block';
                })
            }
        });
        if (broken.ajax.testURL(location, /Confirm.aspx$/))
            window.location.reload();
    },
    closeObject: function(o, obj) {
        if ($(o)) {
            $(o).style.display = "none";
        }
    },

    openObject: function(o, obj) {
        if ($(o)) {
            $(o).style.display = "none";
        }
    },

    toggleLoginBoxPasswordField: function(trigger, a, args) {
        var c = $('loginContinueBtn');
        var array = [args]
        if (trigger.id != 'loginMember') {
            $('loginPassword').disabled = true;
            c.onclick = function() { broken.ajax.showNotMember($('loginEmail').value, a, $A(array)) };
        } else {
            $('loginPassword').disabled = false;
            c.onclick = function() { broken.ajax.loginUser($('loginEmail').value, $('loginPassword').value, a, $A(array)) };

        }
    },

    changeProductColor: function(trigger, color, colorid, target, widget) {
        widget.updateColor(colorid, widget);
        var p = $($(target).parentNode);

        var colorBoxes = $(p.getElementsByClassName('colorBox'));

        colorBoxes.each(function(item) {
            item.className = 'colorBox';
        });

        $(trigger).addClassName('active');

        $(target).innerHTML = color;
    },

    showGreen: function(trigger) {
        var y = broken.util.getY(trigger);
        var x = broken.util.getX(trigger);

        $('greenBox').setStyle({
            left: parseInt(x + 20) + 'px',
            top: parseInt(y + 20) + 'px'
        });
        $('greenBox').show();
    },

    hideGreen: function() {
        $('greenBox').hide();
    }

}

broken.ajax =
{
    addToCompareList: function(id, name) {

        var xmlDoc = new broken.xml.xmlDocument();
        xmlDoc.addNode('root', [
		    xmlDoc.addNode('action', 'addToCompare'),
		    xmlDoc.addNode('item', [
		        xmlDoc.addNode('id', id)
		    ])
		]);

        var xmlObj = xmlDoc.toString();

        new Ajax.Request('/Webservices/GeneralMethods.asmx/GeneralFunction', {
            method: 'post',
            parameters:
			{
			    xml: xmlObj
			},
            onSuccess: function(transport) {
                if (broken.xml.getNode(transport.responseXML, 'error').firstChild.nodeValue == 0) {
                    var list = $('compareItems');
                    //var n = broken.xml.getNode(transport.responseXML, 'name').firstChild.nodeValue;

                    var newListEntry = Builder.node('LI', { className: 'newListEntry' }, [
			            Builder.node('A', { href: '/Product/Product.aspx?id=' + id }, name + ' '),
			            Builder.node('A', { href: 'javascript:void(0)', onclick: 'broken.ajax.deleteFromCompareList(this, ' + id + ')' }, [
					            Builder.node('IMG', { src: '/images/icon.delete.gif', alt: 'deleteIcon' })
			            ])
		            ]);

                    list.appendChild(newListEntry);

                    new Effect.Opacity(newListEntry, { duration: 0.5, from: 0, to: 0.99 });
                } else {
                    throw new Error('Error: ' + broken.xml.getNode(transport.responseXML, 'errormessage').firstChild.nodeValue);
                }
            }
        });

    },

    deleteFromCompareList: function(o, id) {
        var xmlDoc = new broken.xml.xmlDocument();
        xmlDoc.addNode('root', [
		    xmlDoc.addNode('action', 'removefromcompare'),
		    xmlDoc.addNode('item', [
		        xmlDoc.addNode('id', id)
		    ])
		]);

        var xmlObj = xmlDoc.toString();

        new Ajax.Request('/Webservices/GeneralMethods.asmx/GeneralFunction', {
            method: 'post',
            parameters:
			{
			    xml: xmlObj
			},
            onSuccess: function(transport) {
                if (broken.xml.getNode(transport.responseXML, 'error').firstChild.nodeValue == 0) {
                    listItem = o.parentNode;
                    new Effect.Opacity(listItem, { duration: 0.5, from: 0.99, to: 0, afterFinish: broken.ajax.removeFromCompareList });
                } else {
                    throw new Error('Error: ' + broken.xml.getNode(transport.responseXML, 'errormessage').firstChild.nodeValue);
                }
            }
        });

    },

    removeFromCompareList: function() {
        listItem.parentNode.removeChild(listItem);
    },

    addToShoppingCart: function(trigger, widget) {

        var addBox = Builder.node('div', { id: 'addBox' }, [
			Builder.node('div', { className: 'top' }),
			Builder.node('div', { className: 'middle clearfix', id: 'addBoxMiddle' }),
			Builder.node('div', { className: 'bottom' })
		]);

        $('framework').appendChild(addBox);

        var loaderIcon = Builder.node('div', { className: 'floatLeft' }, [
			Builder.node('img', { alt: 'loader', height: '28px', width: '28px', src: '/images/loader.gif', id: 'statusIconCart' })
		])
        var loaderText = Builder.node('div', { className: 'loaderText', id: 'statusTextCart' }, [
			Builder.node('p', 'Varan l' + unescape('%E4') + 'ggs till i din varus' + unescape('%E4') + 'ck...')
		])


        var buttons = Builder.node('div', { className: 'buttons' }, [
			Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.gfx.removeObject(\'addBox\')', className: 'keep' }, [
				Builder.node('img', { id: 'keepshoppingbtn', visible: 'true', position: 'relative', alt: 'loader', height: '21px', width: '99px', src: '/images/buttons/keep.shopping.gif' })
			]),
			Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.ajax.getItemCount(broken.ajax.getCart,broken.ajax.showCart)' }, [
				Builder.node('img', { id: 'showbagbtn', visible: 'true', position: 'relative', alt: 'loader', height: '21px', width: '95px', src: '/images/buttons/show.bag.gif' })
			])
		])

        $('addBoxMiddle').appendChild(loaderIcon);
        $('addBoxMiddle').appendChild(loaderText);
        $('addBoxMiddle').appendChild(buttons);

        var y = broken.util.getY(trigger);
        var x = broken.util.getX(trigger);

        $('addBox').style.left = (x - 80) + 'px';
        $('addBox').style.top = (y - 44) + 'px';

        new Effect.Opacity('addBox', { duration: 0.5, from: 0, to: 0.99 });
        new Effect.Opacity('keepshoppingbtn', { duration: 0.5, from: 0, to: 0.99 });
        new Effect.Opacity('showbagbtn', { duration: 0.5, from: 0, to: 0.99 });

        //setTimeout(broken.ajax.addedToShoppingCart, 2000)
        var xmlObj = widget.parseXML();

        //alert('xml: '+xmlObj);

        new Ajax.Request('/Webservices/CartMethods.asmx/Cartfunction', {
            method: 'post',
            parameters:
			{
			    xml: xmlObj
			},
            onSuccess: function(transport) {
                if (broken.xml.getNode(transport.responseXML, 'error').firstChild.nodeValue == 0) {
                    broken.ajax.getItemCount(broken.ajax.addedToShoppingCart);

                }
                else {
                    $('statusIconCart').hide();
                    $('statusTextCart').innerHTML = "Valda produktvarianten finns tyvärr ej. Du är välkommen att pröva med annan variant.";
                    if ($('addBoxMiddle')) {
                        new Effect.Morph($('addBoxMiddle'), {
                            duration: 0.5,
                            style: {
                                height: '76px'
                            }
                        });
                    }
                }
            }
        });
    },

    addedToShoppingCart: function(count) {
        $('itemInCart').innerHTML = count;

        if (count > 1)
            $('itemInCartText').innerHTML = "varor";
        else
            $('itemInCartText').innerHTML = "vara";

        if (count > 0) {
            var w = $('shoppingCartWrapper');

            if (w.getElementsByClassName('shoppingTabTopEmpty')[0]) {
                w.getElementsByClassName('shoppingTabTopEmpty')[0].addClassName('shoppingTabTopNotEmpty');
                w.getElementsByClassName('shoppingTabTopEmpty')[0].removeClassName('shoppingTabTopEmpty');
                w.getElementsByClassName('shoppingTabEmpty')[0].addClassName('shoppingTabNotEmpty');
                w.getElementsByClassName('shoppingTabEmpty')[0].removeClassName('shoppingTabEmpty');
                w.getElementsByClassName('shoppingLinks')[0].removeClassName('displayNone');
            }

            if (w.getElementsByClassName('shoppingTabTopEmptyLogged')[0]) {
                w.getElementsByClassName('shoppingTabTopEmptyLogged')[0].addClassName('shoppingTabTopNotEmptyLogged');
                w.getElementsByClassName('shoppingTabTopEmptyLogged')[0].removeClassName('shoppingTabTopEmptyLogged');
                w.getElementsByClassName('shoppingTabEmptyLogged')[0].addClassName('shoppingTabNotEmptyLogged');
                w.getElementsByClassName('shoppingTabEmptyLogged')[0].removeClassName('shoppingTabEmptyLogged');
                w.getElementsByClassName('shoppingLinks')[0].removeClassName('displayNone');
            }

            if (w.getElementsByClassName('shoppingTabTopEmptyLoggedEmployee')[0]) {
                w.getElementsByClassName('shoppingTabTopEmptyLoggedEmployee')[0].addClassName('shoppingTabTopNotEmptyLoggedEmployee');
                w.getElementsByClassName('shoppingTabTopEmptyLoggedEmployee')[0].removeClassName('shoppingTabTopEmptyLoggedEmployee');
                w.getElementsByClassName('shoppingTabEmptyLoggedEmployee')[0].addClassName('shoppingTabNotEmptyLoggedEmployee');
                w.getElementsByClassName('shoppingTabEmptyLoggedEmployee')[0].removeClassName('shoppingTabEmptyLoggedEmployee');
                w.getElementsByClassName('shoppingLinks')[0].removeClassName('displayNone');
            }
        }

        if ($('statusIconCart'))
            $('statusIconCart').src = '/images/bag.add.to.cart.gif';

        if ($('statusTextCart'))
            $('statusTextCart').innerHTML = 'Varan har lagts i din varus' + unescape('%E4') + 'ck';


        if ($('addBoxMiddle')) {
            new Effect.Morph($('addBoxMiddle'), {
                duration: 0.5,
                style: {
                //height: '55px'
            }
        });
    }
},

getItemCount: function(callback, callback2) {
    var xmlDoc = new broken.xml.xmlDocument();
    xmlDoc.addNode('root', [
		    xmlDoc.addNode('action', 'getItemCount')
		]);

    var xmlObj = xmlDoc.toString();

    var kalle = new Ajax.Request('/Webservices/CartMethods.asmx/Cartfunction', {
        method: 'post',
        parameters:
			{
			    xml: xmlObj
			},
        onSuccess: function(transport) {
            if (broken.xml.getNode(transport.responseXML, 'error').firstChild.nodeValue == 0) {
                count = (broken.xml.getNode(transport.responseXML, 'count').firstChild.nodeValue);
            }
            else {
                throw new Error(broken.xml.getNode(transport.responseXML, 'errormessage').firstChild.nodeValue);
            }


            callback(count, callback2);

        }
    });
},

getCart: function(count, callback) {
    var xmlDoc = new broken.xml.xmlDocument();
    xmlDoc.addNode('root', [
		    xmlDoc.addNode('action', 'getCartItems')
		]);

    var xmlObj = xmlDoc.toString();

    new Ajax.Request('/Webservices/CartMethods.asmx/Cartfunction', {
        method: 'post',
        parameters:
			{
			    xml: xmlObj
			},
        onSuccess: function(transport) {

            if (broken.xml.getNode(transport.responseXML, 'error').firstChild.nodeValue == 0)
                callback(count, transport);
            else
                throw new Error('Cloudn\'t get cart');
        }
    });
},

testURL: function(url, string) {

    if (string.test(url))
        return true;
    else
        return false;
},

showVariantSelector: function(trigger) {

    //var array = [args];
    var y = broken.util.getY(trigger);
    var x = broken.util.getX(trigger);

    if (x < 200) x += 200;

    var variantSelectorBox = $("variantSelectorBox");
    variantSelectorBox.style.display = "block";

    /*variantSelectorBox.style.left = parseInt(x - 200) + 'px;';
    variantSelectorBox.style.top = parseInt(y - 15) + 'px';*/

    $('framework').appendChild(variantSelectorBox);
    //$('loginEmail').focus();
    new Effect.Opacity(variantSelectorBox, { duration: 0.5, from: 0, to: 0.99 });

},

showCart: function(count, transport) {

    var xml = transport.responseXML;

    if ($('addBox'))
        broken.gfx.removeObject('addBox');

    var tohide = $A(['select', 'embed', 'object']);

    tohide.each(function(item) {
        var o = $A($('content').getElementsByTagName(item));

        if (o) {
            o.each(function(element) {
                element.style.display = 'none';
            })
        }
    });

    var itemCount = count;

    var items;
    if (itemCount == '1') {
        items = 'vara';
    }
    else {
        items = 'varor';
    }


    var styleClear;
    if (navigator.userAgent.indexOf('MSIE') != -1) {
        styleClear = '';
    }
    else {
        styleClear = 'clear: both;';
    }


    var cart = Builder.node('div', { id: 'cart' }, [
			Builder.node('div', { className: 'top clearfix' }, [
				Builder.node('img', { alt: 'image', className: 'floatLeft', src: '/images/varusacken.png' }),
				Builder.node('div', { className: 'floatLeft' }, [
					Builder.node('span', 'Varus' + unescape('%E4') + 'cken:'),
					Builder.node('span', { className: 'textColor' }, itemCount + ' ' + items)
				])
			]),
			Builder.node('div', { id: 'cartMiddleSection', className: 'middle' }, [
				Builder.node('ul', { id: 'cartItemList' }),



				Builder.node('div', { className: 'total clearfix' }, [
    /*Builder.node('div', { className: 'floatRight' }, [
    Builder.node('div', { className: 'shippingFee' }, [
    Builder.node('strong', 'Fri frakt')
    ]),
    Builder.node('div', { className: 'shippingFee' }, 'Frakt:')
    ]),*/
					Builder.node('div', { className: 'floatRight', style: styleClear }, [
					    Builder.node('div', { className: 'shippingSum' }, [
					    	Builder.node('strong', { id: 'cartTotal' }, '')
					    ]),
					    Builder.node('div', { className: 'shippingSum' }, 'Totalsumma:')
					]),
					Builder.node('div', { className: 'floatRight', style: styleClear }, [
					    Builder.node('div', { className: 'shippingShips' }, [
				    		Builder.node('strong', '4-6 arbetsdagar')
					    ]),
					    Builder.node('div', { className: 'shippingShips' }, 'Ber' + unescape('%E4') + 'knad leveranstid:')
					]),
					Builder.node('div', { className: 'buttons' }, [
						Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.gfx.removeObject(\'cart\')' }, [
							Builder.node('img', { alt: 'loader', src: '/images/buttons/keep.shopping.gif', className: 'keep' })
						]),
						Builder.node('a', { href: '../Order/Login.aspx' }, [
							Builder.node('img', { alt: 'loader', src: '/images/buttons/to.checkout.gif' })
						])
					])
				]),
				Builder.node('div', { className: 'hrSolid' }, [
					Builder.node('hr')
				]),
				Builder.node('div', { className: 'info' }, [
					Builder.node('p', 'Inte redo k' + unescape('%F6') + 'pa ' + unescape('%E4') + 'nnu? ', [
						Builder.node('a', { href: '../customer/storedcart.aspx' }, 'E-posta varus' + unescape('%E4') + 'cken till dig sj' + unescape('%E4') + 'lv och kom tillbaka senare')
					]),
					Builder.node('p', 'Hos oss har du alltid fri returr' + unescape('%E4') + 'tt i 30 dagar. ', [
						Builder.node('a', { href: '../Info/CustomerService.aspx?id=6390&parentid=5675' }, 'L' + unescape('%E4') + 's mer om v' + unescape('%E5') + 'ra k' + unescape('%F6') + 'pvillkor')
					])
				])
			])
		]);


    $('framework').appendChild(cart);

    $('cart').style.left = ($('framework').offsetLeft + 198) + 'px';
    $('cart').style.top = ($('framework').offsetTop + 190) + 'px';

    Effect.Appear('cart', { duration: 0.5 });
    $('cart').style.zIndex = 1000;


    var items = broken.xml.getNode(xml, 'item');

    if (items.length > 0) {
        for (var i = 0; i < items.length; i++) {
            var item = items[i];
            //debugger;
            broken.ajax.displayItemInCart(i, item, false);
        }
    } else {

        broken.ajax.displayItemInCart(0, items, false);
    }

    broken.ajax.calculateTotalPrice();




},

displayItemInCart: function(n, item, replace) {
    var id = broken.xml.getNode(item, 'id').firstChild.nodeValue;

    var name = broken.xml.getNode(item, 'name').firstChild.nodeValue;
    try { var imageurl = broken.xml.getNode(item, 'imageurl').firstChild.nodeValue } catch (err) { var imageurl = '/images/clear.gif' };
    try { var seximageurl = broken.xml.getNode(item, 'seximageurl').firstChild.nodeValue } catch (err) { var seximageurl = '/images/clear.gif' };
    try { var seximagetooltip = broken.xml.getNode(item, 'seximagetooltip').firstChild.nodeValue } catch (err) { var seximagetooltip = '' };
    try { var greenimageurl = broken.xml.getNode(item, 'greenimageurl').firstChild.nodeValue } catch (err) { var greenimageurl = '/images/clear.gif' };
    try { var greenimagetooltip = broken.xml.getNode(item, 'greenimagetooltip').firstChild.nodeValue } catch (err) { var greenimagetooltip = '' };
    try { var quantity = broken.xml.getNode(item, 'quantity').firstChild.nodeValue } catch (err) { var quantity = null };
    try { var currentColor = broken.xml.getNode(item, 'currentcolor').firstChild.nodeValue } catch (err) { var currentColor = null };
    try { var currentSize = broken.xml.getNode(item, 'currentsize').firstChild.nodeValue } catch (err) { var currentSize = null };
    try { var isPromoResult = broken.xml.getNode(item, 'ispromoresult').firstChild.nodeValue == "true" } catch (err) { var isPromoResult = false };
    try { var promoName = broken.xml.getNode(item, 'promoname').firstChild.nodeValue } catch (err) { var promoName = null};

    try { var price = broken.xml.getNode(item, 'price').firstChild.nodeValue } catch (err) { var price = null };
    try { var currentSizeId = broken.xml.getNode(item, 'currentsize').getAttribute('id') } catch (err) { var currentSizeId = null; };
    try { var currentColorId = broken.xml.getNode(item, 'currentcolor').getAttribute('id') } catch (err) { var currentColorId = null };

    try { var sizes = broken.xml.getNode(item, 'sizes') } catch (err) { var sizes = null; };
    try { var colors = broken.xml.getNode(item, 'colors') } catch (err) { var colors = null };
    var sizesArray = new Array();
    var colorsArray = new Array();
    var currentSizeIndex = null;
    var currentColorIndex = null;
    var c = 0;

    if (typeof (sizes) != "undefined" && sizes != null) {

        for (var s = 0; s < sizes.childNodes.length; s++) {
            if (sizes.childNodes[s].nodeType != 3) {
                sizeid = sizes.childNodes[s].getAttribute('id');
                size = sizes.childNodes[s].firstChild.nodeValue;
                sizesArray.push(Builder.node('option', { value: sizeid }, size))

                if (sizeid == currentSizeId)
                    currentSizeIndex = c;

                ++c;
            }
        }
    }
    /*for(var i = 0; i < colors.childNodes.length; i++)
    {
	        
    if(colors.childNodes[i].nodeType != 3)
    {
    colorid = colors.childNodes[i].getAttribute('id');
    colorcode = colors.childNodes[i].getAttribute('colorcode');
    color = colors.childNodes[i].firstChild.nodeValue;
		        
    colorsArray.push(Builder.node('div', { onclick: 'broken.gfx.changeProductColor(this, "'+color+'","'+colorid+'", "cartItem'+n+'ColorName", $("cartItem"+'+n+').widget)',         className : 'colorBox'+(colorid == currentColorId ? ' active' : ''), style : 'background-color: #'+colorcode }, [
    Builder.node('div', { className: 'whiteBorder' }, ' ')
    ]))
		        
    }
    }*/
    //

    var index = 0;
    if (typeof (colors) != "undefined" && colors != null) {

        for (var i = 0; i < colors.childNodes.length; i++) {

            if (colors.childNodes[i].nodeType != 3) {
                colorid = colors.childNodes[i].getAttribute('id');
                colorcode = colors.childNodes[i].getAttribute('colorcode');
                color = colors.childNodes[i].firstChild.nodeValue;

                if (color == currentColor)
                    currentColorIndex = index;

                index++;
                colorsArray.push(Builder.node('option', { value: colorid }, color));

            }
        }
    }
    //  Builder.node('span', { id : 'cartItem'+n+'ColorName'}, currentColor),
    // Builder.node('div', [colorsArray])
    var cartItem = Builder.node('li', { id: 'cartItem' + n }, [
			Builder.node('div', { className: 'clearfix' }, [
				Builder.node('div', { className: 'productPicture' }, [
				    Builder.node('img', { alt: greenimagetooltip, title: greenimagetooltip, src: greenimageurl, className: 'greenSmall' }),
				    Builder.node('img', { alt: seximagetooltip, title: seximagetooltip, src: seximageurl, className: 'sexSmall' }),
					Builder.node('img', { alt: name, src: imageurl, style: 'width:110px;height:110px' })
				]),
				Builder.node('div', { className: 'floatLeft' }, [
				    isPromoResult ? 
				        Builder.node('div', { className: 'title' }, [
				        Builder.node('span', promoName),
				        Builder.node('br'),
				        Builder.node('span', name),
				    ])
				    :
				    Builder.node('div', { className: 'title' }, [
				        
				        Builder.node('span', name),
					    Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.ajax.deleteCartItem(\'cartItem' + n + '\', ' + id + ')' }, 'Ta bort')
				    ])
				    ,
				    Builder.node('div', { className: 'item' }, [
					    Builder.node('div', { className: 'color' }, [
						    Builder.node('p', [
							    currentColor != null ? Builder.node('strong', 'F' + unescape('%E4') + 'rg:      ' + '          ') : "",
                                Builder.node('br'),
							    isPromoResult ? Builder.node('span', currentColor != null ? currentColor : "") : "",
							    Builder.node('select', { style: ( !isPromoResult &&  (typeof (currentColorIndex) != "undefined" && currentColorIndex != null) ? "" : "visibility:hidden"), id: 'cartItem' + n + 'CSelectBox', onchange: '$("cartItem"+' + n + ').widget.updateColor(this.value, $("cartItem"+' + n + ').widget);' }, [colorsArray])
						    ])
					    ]),
					    Builder.node('div', { className: 'size' }, [
						    Builder.node('p', [
							    currentSize != null ? Builder.node('strong', 'Storlek:') : "",
							    Builder.node('br'),
							    isPromoResult ? Builder.node('span', currentSize != null ? currentSize : "") : "", 
							    Builder.node('select', { style: ( !isPromoResult && (typeof (currentSizeIndex) != "undefined" && currentSizeIndex != null) ? "" : "visibility:hidden"), id: 'cartItem' + n + 'SSelectBox', onchange: '$("cartItem"+' + n + ').widget.updateSize(this, $("cartItem"+' + n + ').widget);' }, sizesArray)
						    ])
					    ]),
					    Builder.node('div', { className: 'divider' }, [
						    Builder.node('img', { alt: 'image', src: '/images/checkoutItemDivider.gif' })
					    ]),
					    Builder.node('div', { className: 'quantity' }, [
						    Builder.node('p', [
							    Builder.node('strong', 'Antal:'),
							    isPromoResult ?
							    Builder.node('div',[
							        Builder.node('span', quantity) 
							    ])
							    : 
							    Builder.node('select', { id: 'cartItem' + n + 'QSelectBox', onchange: 'broken.ajax.updateItemPrice(this.value, \'cartItem' + n + '\' );$("cartItem"+' + n + ').widget.updateQuantity(this.value, $("cartItem"+' + n + ').widget)' }, [
								    Builder.node('option', { value: '1' }, '1'),
								    Builder.node('option', { value: '2' }, '2'),
								    Builder.node('option', { value: '3' }, '3'),
								    Builder.node('option', { value: '4' }, '4'),
								    Builder.node('option', { value: '5' }, '5'),
								    Builder.node('option', { value: '6' }, '6'),
								    Builder.node('option', { value: '7' }, '7'),
								    Builder.node('option', { value: '8' }, '8'),
								    Builder.node('option', { value: '9' }, '9'),
								    Builder.node('option', { value: '10' }, '10')
							    ])
						    ])
					    ]),

					    Builder.node('div', { className: 'price' }, [
						    Builder.node('p', [
							    Builder.node('span', { className: 'itemPrice' }, price + ' kr'),
							    Builder.node('span', { className: 'itemCount' }, 'x 1 ='),
							    Builder.node('strong', { className: 'itemTotalPrice' }, '12899 kr')
						    ])
					    ])

				    ])
		        ])
			])
		]);

    var oSize = null;
    if (typeof (currentColorIndex) != "undefined" && currentColorIndex != null) {
        cartItem.getElementsByTagName('select')[0].selectedIndex = currentColorIndex;
    }
    if (typeof (currentSizeIndex) != "undefined" && currentSizeIndex != null) {
        oSize = cartItem.getElementsByTagName('select')[1].options[currentSizeIndex].value;
        cartItem.getElementsByTagName('select')[1].selectedIndex = currentSizeIndex;
    }

    if( !isPromoResult)
        cartItem.getElementsByTagName('select')[2].selectedIndex = quantity - 1;
    if (!replace) {
        $('cartItemList').appendChild(cartItem);
    }
    else {
        $('cartItem' + n).parentNode.replaceChild(cartItem, $('cartItem' + n));
    }


    $('cartItem' + n).widget = new broken.productWidget(id, currentColorId, 'cartItem' + n + 'SSelectBox', quantity);
    if (typeof (currentColorIndex) != "undefined" && currentColorIndex != null) {
        $('cartItem' + n).widget.oldColor = currentColorId;
    }
    if (oSize != null) {
        $('cartItem' + n).widget.oldSize = oSize;
    }

    /*
    if(!currentColorIndex){
    document.getElementById('cartItem'+n+'CSelectBox').style.display="none";
    }
    */

    this.updateItemPrice(quantity, 'cartItem' + n);

},

updateItemPrice: function(quantity, id) {
    var o = $(id);

    var price = o.getElementsByClassName('itemPrice')[0];
    var count = o.getElementsByClassName('itemCount')[0];
    var total = o.getElementsByClassName('itemTotalPrice')[0];

    if (quantity == 1) {
        price.hide();
        count.show();
        count.innerHTML = '<br><br>';
    } else {
        price.show();
        count.show();
        count.innerHTML = 'x ' + quantity + ' =';
    }

    //count.innerHTML = 'x '+quantity+' =';

    var sum = (parseFloat(price.innerHTML.replace(".", ""))) * quantity;

    total.innerHTML = sum + ' kr';

    this.calculateTotalPrice();

},

calculateTotalPrice: function() {
    var total = 0;

    var totals = $('cartItemList').getElementsByClassName('itemTotalPrice');

    var item = null;
    for (var i = 0; i < totals.length; i++) {
        item = totals[i];
        total = total + parseFloat(item.innerHTML.replace(".", ""));
    }

    $('cartTotal').innerHTML = total + ' kr';
},

updateCartItem: function(widget) {
    var itemXML = widget.parseUpdateXML();

    new Ajax.Request('/Webservices/CartMethods.asmx/Cartfunction', {
        method: 'post',
        parameters:
			{
			    xml: itemXML
			},
        onSuccess: function(transport) {
            if (broken.xml.getNode(transport.responseXML, 'error').firstChild.nodeValue == 0) {
                broken.ajax.updateSingelItem(transport.responseXML, widget.id);
            }
            else {
                if (document.getElementById("variantNotice")) {
                    document.getElementById("variantNotice").style.display = "block";
                }
                else {
                    var addBox = Builder.node('div', { id: 'variantNotice' }, [
							Builder.node('div', { className: 'smallTop' }),
							Builder.node('div', { className: 'middle clearfix', id: 'middleContent', style: 'height:69px;' }),
							Builder.node('div', { className: 'bottom' })
							]);

                    $('framework').appendChild(addBox);

                    var loaderText = Builder.node('div', { className: 'loaderText standardBoxText', id: 'statusText' }, [
								Builder.node('p', 'Valda produktvarianten finns tyvärr ej. Du är välkommen att pröva med annan variant.')
							])

                    $('middleContent').appendChild(loaderText);
                    var buttons = Builder.node('div', { className: 'variantNoticebuttons', align: 'center' }, [
								Builder.node('a', { href: 'javascript:void(0)', onclick: 'document.getElementById("variantNotice").style.display="none";' }, [
								Builder.node('img', { id: 'showbagbtn', visible: 'true', position: 'relative', alt: 'loader', height: '21px', width: '95px', src: '/images/buttons/show.bag.gif' })
								])
							]);
                    $('middleContent').appendChild(buttons);
                }
            }
        }
    });

},

updateSingelItem: function(xml, widgetId) {
    var item = broken.xml.getNode(xml, 'item');
    broken.ajax.displayItemInCart(0, item, true);
    broken.ajax.getItemCount(broken.ajax.addedToShoppingCart);
},

deleteCartItem: function(o, id) {
    var xmlDoc = new broken.xml.xmlDocument();
    xmlDoc.addNode('root', [
		    xmlDoc.addNode('action', 'delete'),
		    xmlDoc.addNode('item', [
		        xmlDoc.addNode('id', id)
		    ])
		]);

    var xmlObj = xmlDoc.toString();

    new Ajax.Request('/Webservices/CartMethods.asmx/Cartfunction', {
        method: 'post',
        parameters:
			{
			    xml: xmlObj
			},
        onSuccess: function(transport) {
            if (broken.xml.getNode(transport.responseXML, 'error').firstChild.nodeValue == 0) {
                broken.gfx.removeObject('cart'); broken.ajax.getItemCount(broken.ajax.getCart, broken.ajax.showCart);
                //new Effect.Opacity(o, { duration: 0.5, from: 0.99, to: 0, afterFinish: broken.ajax.updateAndRemove });
            }
            else
                throw new Error('Cloudn\'t get cart');

        }
    });

},

updateAndRemove: function(obj) {
    obj.element.remove();
    broken.ajax.calculateTotalPrice();

    broken.ajax.getItemCount(broken.ajax.addedToShoppingCart);
},

showForgotPassword: function(a, args) {
    var array = [args];
    var newPage = Builder.node('div', { className: 'floatLeft' }, [
	        Builder.node('table', { width: '100%' }, [
                Builder.node('tbody', [
                    Builder.node('tr', [
                        Builder.node('td', [
                            Builder.node('h2', { style: 'padding: 0px; margin: 0px;' }, 'Glömt lösenordet?')
                        ]),
                        Builder.node('td', [
                            Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.gfx.removeObject(\'loginBox\')' }, [
                                Builder.node('img', { width: '10px', height: '10px', alt: 'loader', src: '/images/buttons/close.gif' })
		                    ])
		                ])
		            ])
		        ])
            ]),
            Builder.node('p', { className: 'moreMargin' }, 'Ange din e-postadress eller användarnamn som du registrerade dig med så skickar vi ditt lösenord till din registrerade e-postadress.'),
            Builder.node('div', { style: 'padding-top: 10px;' }, [
                Builder.node('label', { htmlFor: 'loginEmail2', style: 'display: block;' }, [
	                Builder.node('strong', 'E-postadress eller användarnamn')
                ]),
                Builder.node('input', { className: 'loginEmail', id: 'loginEmail2', type: 'text' })
            ]),
            Builder.node('p', { style: 'display: none; color: red; margin-bottom: 10px;', id: 'loginError2' }),
            Builder.node('div', { style: 'height:23px;' }, [
                Builder.node('a', { href: 'javascript:void(0)', id: 'loginContinueBtn', onclick: 'broken.ajax.forgotPassword()' }, [
                    Builder.node('img', { width: '53px', height: '21px', style: 'position: absolute; z-index: 100;', alt: 'loader', src: '/images/buttons/btn_send.gif', className: 'continue' })
                ]),
                Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.gfx.removeObject(\'loginBox\')' }, [
                    Builder.node('img', { width: '52px', height: '21px', style: 'position: absolute; z-index: 100; margin-left: 60px;', alt: 'loader', src: '/images/buttons/cancel.gif' })
                ])
            ])
        ]);

    $('loginSlider').appendChild(newPage)

    new Effect.Move('loginSlider', { x: -283, mode: 'relative' });
},
showCheckoutForgotPassword: function(trigger,a, args) {
var array = [args];
    var array = [args];
    var y = broken.util.getY(trigger);
    var x = broken.util.getX(trigger);

    if (x < 200) x += 200;
    var newPage
    newPage = Builder.node('div', { id: 'loginBox', style: 'left:' + parseInt(x - 200) + 'px; top:' + parseInt(y - 15) + 'px' }, [
			    Builder.node('div', { className: 'top' }, [
				    Builder.node('span')
			    ]),
			    Builder.node('div', { className: 'middle clearfix', id: 'loginBoxMiddle' }, [
			        Builder.node('div', { className: 'silderWrapper clearfix' }, [
			            Builder.node('div', { className: 'slider clearfix', id: 'loginSlider' }, [
                            Builder.node('div', { className: 'floatLeft' }, [
                                Builder.node('table', { width: '100%' }, [
                                    Builder.node('tbody', [
                                        Builder.node('tr', [
                                            Builder.node('td', [
                                                Builder.node('h2', { style: 'padding: 0px; margin: 0px;' }, 'Glömt lösenordet?')
                                            ]),
                                            Builder.node('td', [
                                                Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.gfx.removeObject(\'loginBox\')' }, [
                                                    Builder.node('img', { width: '10px', height: '10px', alt: 'loader', src: '/images/buttons/close.gif' })
	                                            ])
	                                        ])
	                                    ])
	                                ])
                                ]),
                                Builder.node('p', { className: 'moreMargin' }, 'Ange din e-postadress eller användarnamn som du registrerade dig med så skickar vi ditt lösenord till din registrerade e-postadress.'),
                                Builder.node('div', { style: 'padding-top: 10px;' }, [
                                    Builder.node('label', { htmlFor: 'loginEmail2', style: 'display: block;' }, [
                                        Builder.node('strong', 'E-postadress eller användarnamn')
                                    ]),
                                    Builder.node('input', { className: 'loginEmail', id: 'loginEmail2', type: 'text' })
                                ]),
                                Builder.node('p', { style: 'display: none; color: red; margin-bottom: 10px;', id: 'loginError2' }),
                                Builder.node('div', { style: 'height:23px;' }, [
                                    Builder.node('a', { href: 'javascript:void(0)', id: 'loginContinueBtn', onclick: 'broken.ajax.forgotPassword()' }, [
                                        Builder.node('img', { width: '53px', height: '21px', style: 'position: absolute; z-index: 100;', alt: 'loader', src: '/images/buttons/btn_send.gif', className: 'continue' })
                                    ]),
                                    Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.gfx.removeObject(\'loginBox\')' }, [
                                        Builder.node('img', { width: '52px', height: '21px', style: 'position: absolute; z-index: 100; margin-left: 60px;', alt: 'loader', src: '/images/buttons/cancel.gif' })
                                    ])
                                ])
                            ])
			            ])
		            ])
		        ]),
			    Builder.node('div', { className: 'bottom' })
		    ]);
		    
    $('framework').appendChild(newPage);
    //$('loginEmail').focus();
    new Effect.Opacity(newPage, { duration: 0.5, from: 0, to: 0.99 });
},

showLogin: function(trigger, a, args) {
    //check if simple login or advanced login
    var simplelogin = true;
    var i;
    for (i = 0; i < args.length; i++) {
        if (args[i] == 'advancedlogin') {
            simplelogin = false;
            break;
        }
    }

    var array = [args];
    var y = broken.util.getY(trigger);
    var x = broken.util.getX(trigger);

    if (x < 200) x += 200;

    var loginBox;
    if (simplelogin) {
        loginBox = Builder.node('div', { id: 'loginBox', style: 'left:' + parseInt(x - 200) + 'px; top:' + parseInt(y - 15) + 'px' }, [
			    Builder.node('div', { className: 'top' }, [
				    Builder.node('span')
			    ]),
			    Builder.node('div', { className: 'middle clearfix', id: 'loginBoxMiddle' }, [
			        Builder.node('div', { className: 'silderWrapper clearfix' }, [
			            Builder.node('div', { className: 'slider clearfix', id: 'loginSlider' }, [
				            Builder.node('div', { className: 'floatLeft' }, [
			                    Builder.node('table', { width: '100%' }, [
			                        Builder.node('tbody', [
			                            Builder.node('tr', [
			                                Builder.node('td', [
			                                    Builder.node('h2', { style: 'padding: 0px; margin: 0px;' }, 'Logga in p' + unescape('%E5') + ' Naturkompaniet')
			                                ]),
			                                Builder.node('td', [
			                                    Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.gfx.removeObject(\'loginBox\')' }, [
					                                Builder.node('img', { alt: 'loader', src: '/images/buttons/close.gif' })
    						                    ])
    						                ])
    						            ])
    						        ])
				                ]),
					            Builder.node('div', { style: 'padding-top: 15px;' }, [
					                Builder.node('label', { htmlFor: 'loginEmail', style: 'display: block;' }, [
						                Builder.node('strong', 'E-postadress eller användarnamn')
					                ]),
					                Builder.node('input', { className: 'loginEmail', id: 'loginEmail', type: 'text', onkeydown: 'if (event.keyCode==13) {broken.ajax.loginUser($("loginEmail").value, $("loginPassword").value, ' + a + ', "' + $A(array) + '"); return false;}' })
					            ]),
					            Builder.node('div', [
				                    Builder.node('label', { htmlFor: 'loginPassword', style: 'display: block;' }, [
					                    Builder.node('strong', 'L' + unescape('%F6') + 'senord')
				                    ]),
				                    Builder.node('div', { className: 'floatLeft', style: 'width: 150px;' }, [
					                    Builder.node('input', { className: 'loginPassword', id: 'loginPassword', type: 'password', onkeydown: 'if (event.keyCode==13) {broken.ajax.loginUser($("loginEmail").value, $("loginPassword").value, ' + a + ', "' + $A(array) + '"); return false;}' })
					                ]),
					                Builder.node('div', { className: 'floatRight', style: 'margin-top: 5px;' }, [
					                    Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.ajax.showForgotPassword(' + a + ', "' + $A(array) + '")' }, 'Gl' + unescape('%F6') + 'mt l' + unescape('%F6') + 'senordet?')
					                ]),
					                Builder.node('div', { style: 'clear: both;' })
					            ]),
					            Builder.node('p', { style: 'display: none; color: red; margin-bottom: 10px;', id: 'loginError' }),
					            Builder.node('div', [
			                        Builder.node('div', { className: 'floatLeft', style: 'width: 150px; height: 25px;' }, [
				                        Builder.node('a', { href: 'javascript:void(0)', id: 'loginContinueBtn', onclick: 'broken.ajax.loginUser($("loginEmail").value, $("loginPassword").value, ' + a + ', "' + $A(array) + '")' }, [
					                        Builder.node('img', { alt: 'loader', src: '/images/buttons/continue.gif', className: 'continue' })
				                        ]),
				                        Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.gfx.removeObject(\'loginBox\')' }, [
					                        Builder.node('img', { alt: 'loader', src: '/images/buttons/cancel.gif' })
					                    ])
					                ]),
					                Builder.node('div', { className: 'floatRight', style: 'padding-top: 4px;' }, [
					                    Builder.node('a', { href: '/Customer/NewAccount.aspx' }, 'Registrera dig >')
					                ]),
					                Builder.node('div', { style: 'clear: both;' })
					            ])
				            ])
			            ])
		            ])
			    ]),
			    Builder.node('div', { className: 'bottom' })
		    ]);
    }
    else {
        loginBox = Builder.node('div', { id: 'loginBox', style: 'left:' + parseInt(x - 200) + 'px; top:' + parseInt(y - 15) + 'px' }, [
			    Builder.node('div', { className: 'top' }, [
				    Builder.node('span')
			    ]),
			    Builder.node('div', { className: 'middle clearfix', id: 'loginBoxMiddle' }, [
			        Builder.node('div', { className: 'silderWrapper clearfix' }, [
			            Builder.node('div', { className: 'slider clearfix', id: 'loginSlider' }, [
				            Builder.node('div', { className: 'floatLeft' }, [
				                Builder.node('table', { width: '100%' }, [
			                        Builder.node('tbody', [
			                            Builder.node('tr', [
			                                Builder.node('td', [
			                                    Builder.node('h2', { style: 'padding: 0px; margin: 0px;' }, 'Du behöver logga in först')
			                                ]),
			                                Builder.node('td', [
			                                    Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.gfx.removeObject(\'loginBox\')' }, [
					                                Builder.node('img', { alt: 'loader', src: '/images/buttons/close.gif' })
    						                    ])
    						                ])
    						            ])
    						        ])
				                ]),
					            Builder.node('div', { style: 'padding-bottom: 15px;' }),
					            Builder.node('label', { htmlFor: 'loginEmail' }, [
						            Builder.node('strong', 'E-postadress eller användarnamn')
					            ]),
					            Builder.node('input', { className: 'loginEmail', id: 'loginEmail', type: 'text', onkeydown: 'if (event.keyCode==13) {broken.ajax.loginUser($("loginEmail").value, $("loginPassword").value, ' + a + ', "' + $A(array) + '"); return false;}' }),
					            Builder.node('p', [
						            Builder.node('input', { name: 'member', id: 'loginNotMember', checked: true, type: 'radio', onclick: 'broken.gfx.toggleLoginBoxPasswordField(this, ' + a + ', "' + args + '")' }),
						            Builder.node('label', { htmlFor: 'loginNotMember' }, [
							            'Jag ' + unescape('%E4') + 'r ',
							            Builder.node('strong', 'inte medlem '),
							            'sedan tidigare'
						            ]),
					            ]),
					            Builder.node('p', [
						            Builder.node('input', { name: 'member', id: 'loginMember', type: 'radio', onclick: 'broken.gfx.toggleLoginBoxPasswordField(this, ' + a + ', "' + args + '")' }),
						            Builder.node('label', { htmlFor: 'loginMember' }, [
							            'Jag ' + unescape('%E4') + 'r ',
							            Builder.node('strong', 'medlem '),
							            'och mitt l' + unescape('%F6') + 'senord ' + unescape('%E4') + 'r:'
						            ]),
						            Builder.node('input', { className: 'loginPassword', disabled: true, id: 'loginPassword', type: 'password', onkeydown: 'if (event.keyCode==13) {broken.ajax.loginUser($("loginEmail").value, $("loginPassword").value, ' + a + ', "' + $A(array) + '"); return false;}' }),
						            Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.ajax.showForgotPassword(' + a + ', "' + $A(array) + '")' }, 'Gl' + unescape('%F6') + 'mt l' + unescape('%F6') + 'senordet?')
					            ]),
					            Builder.node('p', { style: 'display: none; color: red; margin-bottom: 10px;', id: 'loginError' }),
					            Builder.node('p', [
						            Builder.node('a', { href: 'javascript:void(0)', id: 'loginContinueBtn', onclick: 'broken.ajax.showNotMember($("loginEmail").value, ' + a + ', "' + $A(array) + '")' }, [
							            Builder.node('img', { alt: 'loader', src: '/images/buttons/continue.gif', className: 'continue' })
						            ]),
						            Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.gfx.removeObject(\'loginBox\')' }, [
							            Builder.node('img', { alt: 'loader', src: '/images/buttons/cancel.gif' })
						            ])
					            ])
				            ])
			            ])
		            ])
			    ]),
			    Builder.node('div', { className: 'bottom' })
		    ]);
    }

    $('framework').appendChild(loginBox);
    $('loginEmail').focus();
    new Effect.Opacity(loginBox, { duration: 0.5, from: 0, to: 0.99 });

},

showNotMember: function(email, a, args) {
    if (email.length == 0) {
        $('loginError').show();
        $('loginError').innerHTML = 'Fältet kan inte vara tomt.';
    } else {
        var array = [args];
        var newPage = Builder.node('div', { className: 'floatLeft' }, [
			    Builder.node('h2', 'V' + unescape('%E4') + 'lkommen som ny anv' + unescape('%E4') + 'ndare!'),
			    Builder.node('p', { className: 'moreMargin' }, 'Allt du behöver göra för att bli medlem på Naturkompaniet är att ange ett önskat lösenord.'),
			    Builder.node('label', { className: 'displayBlock', htmlFor: 'newMemberPassword' }, [
				    Builder.node('strong', unescape('%D6') + 'nskat l' + unescape('%F6') + 'senord')
			    ]),
			    Builder.node('input', { className: 'memberPassword', id: 'newMemberPassword', type: 'password' }),
			    Builder.node('label', { className: 'displayBlock', htmlFor: 'newMemberPassword2' }, [
				    Builder.node('strong', 'Repetera l' + unescape('%F6') + 'senord')
			    ]),
			    Builder.node('input', { className: 'memberPassword', id: 'newMemberPassword2', type: 'password' }),
			    Builder.node('p', { style: 'display: none; color: red; margin-bottom: 10px;', id: 'passwordError' }),
			    Builder.node('p', { className: 'moreTopMargin' }, [
				    Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.ajax.registerUser("' + email + '", ' + a + ', "' + $A(array) + '")' }, [
					    Builder.node('img', { alt: 'loader', src: '/images/buttons/continue.gif', className: 'continue' })
				    ]),
				    Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.gfx.removeObject(\'loginBox\')' }, [
					    Builder.node('img', { alt: 'loader', src: '/images/buttons/cancel.gif' })
				    ])
			    ])
		    ])

        $('loginSlider').appendChild(newPage)

        new Effect.Move('loginSlider', { x: -283, mode: 'relative' });
    }
},

registerUser: function(email, a, args) {

    var p = $('newMemberPassword').value;
    var p2 = $('newMemberPassword2').value;
    if (p != p2) {
        $('passwordError').show();
        $('passwordError').innerHTML = 'Lösenorden överensstämmer inte.';
    } else {
        $('passwordError').hide();
        var xmlDoc = new broken.xml.xmlDocument();
        var array = [args];

        xmlDoc.addNode('root', [
		        xmlDoc.addNode('action', 'add'),
		        xmlDoc.addNode('user', [
		            xmlDoc.addNode('email', email),
		            xmlDoc.addNode('password', p)
		        ])
		    ]);

        var xmlObj = xmlDoc.toString();
        new Ajax.Request('/Webservices/GeneralMethods.asmx/GeneralFunction', {
            method: 'post',
            parameters:
			    {
			        xml: xmlObj
			    },
            onSuccess: function(transport) {
                if (broken.xml.getNode(transport.responseXML, 'error').firstChild.nodeValue == 0) {
                    //broken.ajax.loginUser(email, p, a, $A(array));
                    broken.ajax.registerUserSuccess(email, p, a, $A(array));
                } else {
                    $('passwordError').show();
                    $('passwordError').innerHTML = broken.xml.getNode(transport.responseXML, 'errormessage').firstChild.nodeValue;
                }
            }
        });
    }
},

registerUserSuccess: function(email, p, a, args) {

    var array = [args];
    var newPage = Builder.node('div', { className: 'floatLeft' }, [
	        Builder.node('table', { width: '100%' }, [
                Builder.node('tbody', [
                    Builder.node('tr', [
                        Builder.node('td', [
                            Builder.node('h2', { style: 'padding: 0px; margin: 0px;' }, 'Klart!')
                        ])//,
    //Builder.node('td', [
    //    Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.gfx.removeObject(\'loginBox\')'}, [
    //        Builder.node('img', { alt: 'loader', src: '/images/buttons/close.gif'})
    //    ])
    //])
		            ])
		        ])
            ]),
            Builder.node('p', { className: 'moreMargin' }, 'Du är nu registrerad, klicka på fortsätt för att logga in.'),
    /*Builder.node('div', { style: 'padding-top: 10px;' }, [
    Builder.node('label', { htmlFor: 'loginEmail2', style: 'display: block;' }, [
    Builder.node('strong', 'E-postadress eller användarnamn')
    ]),
    Builder.node('input', { className: 'loginEmail', id: 'loginEmail2', type: 'text'})
    ]),*/
    //Builder.node('p', { style: 'display: none; color: red; margin-bottom: 10px;', id: 'loginError2' }), 
            Builder.node('div', [
                Builder.node('a', { href: 'javascript:void(0)', id: 'loginContinueBtn', onclick: 'broken.ajax.loginUser("' + email + '", "' + p + '", ' + a + ', "' + $A(array) + '")' }, [
                    Builder.node('img', { alt: 'continue', src: '/images/buttons/continue.gif', className: 'continue' })
                ]),
    //Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.gfx.removeObject(\'loginBox\')' }, [  
    //Builder.node('img', { alt: 'loader', src: '/images/buttons/cancel.gif'})
    //])
            ])
        ]);

    $('loginSlider').appendChild(newPage)

    new Effect.Move('loginSlider', { x: -283, mode: 'relative' });

},

loginUser: function(email, p, a, args) {
    var array = args.toString().split(',');
    for (i = 0; i < array.length; i++) { if (array[i] == 'advancedlogin') { array.splice(i, 1); break; } }
    var xmlDoc = new broken.xml.xmlDocument();
    xmlDoc.addNode('root', [
		    xmlDoc.addNode('action', 'login'),
		    xmlDoc.addNode('user', [
		        xmlDoc.addNode('email', email),
		        xmlDoc.addNode('password', p)
		    ])
		]);

    var xmlObj = xmlDoc.toString();
    new Ajax.Request('/Webservices/GeneralMethods.asmx/GeneralFunction', {
        method: 'post',
        parameters:
			{
			    xml: xmlObj
			},
        onSuccess: function(transport) {
            if (broken.xml.getNode(transport.responseXML, 'error').firstChild.nodeValue == 0) {
                if ($('loginBox'))
                    broken.gfx.removeObject('loginBox');

                window.location.reload();
                a($A(array));
            } else {
                $('loginError').show();
                $('loginError').innerHTML = broken.xml.getNode(transport.responseXML, 'errormessage').firstChild.nodeValue;
            }
        }
    });
},

forgotPassword: function() {


    var email = $('loginEmail2').value;
    if (email.length == 0) {
        $('loginError2').show();
        $('loginError2').innerHTML = 'Du måste fylla i e-postadress eller användarnamn.';
    } else {
        var xmlDoc = new broken.xml.xmlDocument();
        xmlDoc.addNode('root', [
		        xmlDoc.addNode('action', 'forgotPassword'),
		        xmlDoc.addNode('item', [
		            xmlDoc.addNode('id', email)
		        ])
		    ]);


        //$('loginError2').show();
        //$('loginError2').innerHTML = 'Var god vänta... <br>Ett email skickas till dig med ditt lösenord.'
        //$('loginError2').innerHTML = 'Ett email kommer skickas till dig med ditt lösenord.'

        var xmlObj = xmlDoc.toString();
        new Ajax.Request('/Webservices/GeneralMethods.asmx/GeneralFunction', {
            method: 'post',
            parameters:
			    {
			        xml: xmlObj
			    },
            onSuccess: function(transport) {
                //debugger;
                if (broken.xml.getNode(transport.responseXML, 'error').firstChild.nodeValue == 0) {

                    broken.ajax.showForgotPasswordSuccess();
                    //if($('loginBox')){
                    //broken.gfx.removeObject('loginBox');
                    //}
                } else {
                    $('loginError2').show();
                    $('loginError2').innerHTML = broken.xml.getNode(transport.responseXML, 'errormessage').firstChild.nodeValue;
                }
            }
        });
    }
},

// MessageBox Start

MessageBox: function(trigger, a, header, message) {

    //var array = [args];
    var y = broken.util.getY(trigger);
    var x = broken.util.getX(trigger);

    if (x < 200) x += 200;

    var messagebox;

    messagebox = Builder.node('div', { id: 'messagebox', style: 'left:' + parseInt(x - 200) + 'px; top:' + parseInt(y - 15) + 'px' }, [
		    Builder.node('div', { className: 'top' }, [
			    Builder.node('span')
		    ]),
		    Builder.node('div', { className: 'middle clearfix', id: 'messageboxMiddle' }, [
		        Builder.node('div', { className: 'silderWrapper clearfix' }, [
		            Builder.node('div', { className: 'slider clearfix', id: 'loginSlider' }, [
			            Builder.node('div', { className: 'floatLeft' }, [
		                    Builder.node('table', { width: '100%' }, [
		                        Builder.node('tbody', [
		                            Builder.node('tr', [
		                                Builder.node('td', [
		                                    Builder.node('h2', { style: 'padding: 0px; margin: 0px;' }, header)
		                                ]),
		                                Builder.node('td', [
		                                    Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.gfx.removeObject(\'messagebox\')' }, [
				                                Builder.node('img', { alt: 'loader', src: '/images/buttons/close.gif' })
						                    ])
						                ])
						            ])
						        ])
			                ]),
				            Builder.node('div', { style: 'padding-top: 15px;' }, [
				                Builder.node('label', { htmlFor: 'loginEmail', style: 'display: block;' }, [
					                Builder.node('strong', message)
				                ]),
				                Builder.node('div', { style: 'clear: both;' })
				            ])
			            ])
		            ])
	            ])
		    ]),
		    Builder.node('div', { className: 'bottom' })
	    ]);

    $('framework').appendChild(messagebox);
    //$('loginEmail').focus();
    new Effect.Opacity(messagebox, { duration: 0.5, from: 0, to: 0.99 });

},

// MessageBox End

showForgotPasswordSuccess: function() {

    //var array = [args];
    var newPage = Builder.node('div', { className: 'floatLeft' }, [

	        Builder.node('table', { width: '100%' }, [
                Builder.node('tbody', [
                    Builder.node('tr', [
                        Builder.node('td', [
                            Builder.node('h2', { style: 'padding: 0px; margin: 0px;' }, 'Klart!')
                        ]),
                        Builder.node('td', { width: '18px' }, [
                            Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.gfx.removeObject(\'loginBox\')' }, [
                                Builder.node('img', { alt: 'loader', src: '/images/buttons/close.gif' })
		                    ])
		                ])
		            ])
		        ])
            ]),
            Builder.node('p', { className: 'moreMargin' }, 'Ditt lösenord har skickats till angiven e-postadress.'),
    /*Builder.node('div', { style: 'padding-top: 10px;' }, [
    Builder.node('label', { htmlFor: 'loginEmail2', style: 'display: block;' }, [
    Builder.node('strong', 'E-postadress eller användarnamn')
    ]),
    Builder.node('input', { className: 'loginEmail', id: 'loginEmail2', type: 'text'})
    ]),*/
    //Builder.node('p', { style: 'display: none; color: red; margin-bottom: 10px;', id: 'loginError2' }),
    //Builder.node('div', [
    //    Builder.node('a', { href: 'javascript:void(0)', id: 'loginContinueBtn', onclick: 'broken.gfx.removeObject(\'loginBox\')' }, [
    //        Builder.node('img', { alt: 'loader', src: '/images/buttons/send.gif', className: 'continue' })
    //    ]),
    //Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.gfx.removeObject(\'loginBox\')' }, [
    //Builder.node('img', { alt: 'loader', src: '/images/buttons/cancel.gif'})
    //])
    //])
        ]);

    $('loginSlider').appendChild(newPage)

    new Effect.Move('loginSlider', { x: -283, mode: 'relative' });

},

sendTipAndAskExpertEmail: function(sender, form, el1, el2, el3) {
    var f = $(form)
    var b = sender == 'ask' ? 'askExperts' : 'tipFriend';
    var a = sender == 'ask' ? 'sendToExpert' : 'sendToFriend';
    var xmlNodes = new broken.xml.xmlDocument();
    var xmlDoc = new broken.xml.xmlDocument();

    if (sender == 'ask')
        var j = [xmlNodes.addNode('email', $(el1).value), xmlNodes.addNode('question', $(el2).value), xmlNodes.addNode('url', escape(window.location.href))];

    if (sender == 'tip')
        var j = [xmlNodes.addNode('email', $(el2).value), xmlNodes.addNode('name', $(el1).value), xmlNodes.addNode('friendsemail', $(el3).value), xmlNodes.addNode('url', escape(window.location.href))];

    $A($(b).getElementsByTagName('input')).each(function(item) {
        item.disabled = true;
    });

    $A($(b).getElementsByTagName('textarea')).each(function(item) {
        item.disabled = true;
    });

    xmlDoc.addNode('root', [
		    xmlDoc.addNode('action', a),
		    xmlDoc.addNode('mail', j)
		]);

    var xmlObj = xmlDoc.toString();
    new Ajax.Request('/Webservices/GeneralMethods.asmx/GeneralFunction', {
        method: 'post',
        parameters:
			{
			    xml: xmlObj
			},
        onSuccess: function(transport) {
            broken.ajax.showEmailComfirmation(f, b);
        },
        onFailure: function(transport) {
            broken.ajax.showEmailFailure(f, b);
        }
    });
},

sendEmail: function(sender, form) {
    var f = $(form)
    var b = sender == 'ask' ? 'askExperts' : 'tipFriend';
    var a = sender == 'ask' ? 'sendToExpert' : 'sendToFriend';
    var xmlNodes = new broken.xml.xmlDocument();
    var xmlDoc = new broken.xml.xmlDocument();

    if (sender == 'ask')
        var j = [xmlNodes.addNode('email', f.from), xmlNodes.addNode('question', f.message)];

    if (sender == 'tip')
        var j = [xmlNodes.addNode('email', f.from), xmlNodes.addNode('name', f.name), xmlNodes.addNode('friendsemail', f.to), xmlNodes.addNode('url', escape(window.location.href))];

    $A($(b).getElementsByTagName('input')).each(function(item) {
        item.disabled = true;
    });

    $A($(b).getElementsByTagName('textarea')).each(function(item) {
        item.disabled = true;
    });

    xmlDoc.addNode('root', [
		    xmlDoc.addNode('action', a),
		    xmlDoc.addNode('mail', j)
		]);

    var xmlObj = xmlDoc.toString();
    new Ajax.Request('/Webservices/GeneralMethods.asmx/GeneralFunction', {
        method: 'post',
        parameters:
			{
			    xml: xmlObj
			},
        onSuccess: function(transport) {
            broken.ajax.showEmailComfirmation(f, b);
        },
        onFailure: function(transport) {
            broken.ajax.showEmailFailure(f, b);
        }
    });
},

showEmailComfirmation: function(trigger, b) {
    var h2 = b == 'askExperts' ? 'Ditt mail har skickats till våra experter.' : 'Ditt mail har skickats till din vän.';

    var comfirmationBox = Builder.node('div', { id: 'comfirmationBox' }, [
			Builder.node('div', { className: 'top' }, [
				Builder.node('span')
			]),
			Builder.node('div', { className: 'middle clearfix', id: 'comfirmationBoxMiddle' }),
			Builder.node('div', { className: 'bottom' })
		]);


    var middle = Builder.node('div', { className: 'textBox' }, [
			Builder.node('h2', h2),
			Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.gfx.removeObject(\'comfirmationBox\')' }, [
				Builder.node('img', { alt: 'loader', src: '/images/buttons/continue.gif', className: 'continue' })
			])
		]);

    $('framework').appendChild(comfirmationBox);
    $('comfirmationBoxMiddle').appendChild(middle);


    var y = broken.util.getY(trigger);
    var x = broken.util.getX(trigger);

    $('comfirmationBox').style.left = (x + 20) + 'px';
    $('comfirmationBox').style.top = (y - 15) + 'px';

    new Effect.Opacity(comfirmationBox, { duration: 0.5, from: 0, to: 0.99 });

    $A($(b).getElementsByTagName('input')).each(function(item) {
        item.disabled = false;
        item.value = "";
    });

    $A($(b).getElementsByTagName('textarea')).each(function(item) {
        item.disabled = false;
        item.value = "";
    });
},

showEmailFailure: function(trigger, b) {
    var h2 = b == 'askExperts' ? 'Ditt fråga gick inte att skicka till våra experter.' : 'Ditt mail gick inte att skicka till din vän.';

    var comfirmationBox = Builder.node('div', { id: 'comfirmationBox' }, [
			Builder.node('div', { className: 'top' }, [
				Builder.node('span')
			]),
			Builder.node('div', { className: 'middle clearfix', id: 'comfirmationBoxMiddle' }),
			Builder.node('div', { className: 'bottom' })
		]);


    var middle = Builder.node('div', { className: 'textBox' }, [
			Builder.node('h2', h2),
			Builder.node('a', { href: 'javascript:void(0)', onclick: 'broken.gfx.removeObject(\'comfirmationBox\')' }, [
				Builder.node('img', { alt: 'loader', src: '/images/buttons/continue.gif', className: 'continue' })
			])
		]);

    $('framework').appendChild(comfirmationBox);
    $('comfirmationBoxMiddle').appendChild(middle);


    var y = broken.util.getY(trigger);
    var x = broken.util.getX(trigger);

    $('comfirmationBox').style.left = (x + 20) + 'px';
    $('comfirmationBox').style.top = (y - 15) + 'px';

    new Effect.Opacity(comfirmationBox, { duration: 0.5, from: 0, to: 0.99 });

    $A($(b).getElementsByTagName('input')).each(function(item) {
        item.disabled = false;
        item.value = "";
    });

    $A($(b).getElementsByTagName('textarea')).each(function(item) {
        item.disabled = false;
        item.value = "";
    });
},


validateEmail: function(emailAddress, imgBtn, errorLabel, re) {
    var error = false;

    var emailFilter = /^.+@.+\..{2,3}$/;
    if (!(emailFilter.test(emailAddress))) {
        error = true;
    }

    var illegalChars = /[\(\)\<\>\,\;\:\\\/\"\[\]]/
    if (emailAddress.match(illegalChars)) {
        error = true;
    }

    if (error)
        $(errorLabel).style.display = 'block';
    else
        $(errorLabel).style.display = 'none';

    if (re == 'from')
        $(imgBtn).from = emailAddress;
    else
        $(imgBtn).to = emailAddress;

    // alert('emailAddress: '+ emailAddress+'\n'+emailFilter.test(emailAddress));
},

validateEmail2: function(emailAddress, imgBtn, errorLabel, re) {
    var error = false;

    var emailFilter = /^.+@.+\..{2,3}$/;
    if (!(emailFilter.test(emailAddress))) {
        error = true;
    }

    var illegalChars = /[\(\)\<\>\,\;\:\\\/\"\[\]]/
    if (emailAddress.match(illegalChars)) {
        error = true;
    }

    broken.ajax.validateEmail(emailAddress, imgBtn, errorLabel, re);

    return !error;
},

checkIfLogged: function(trigger, action, args) {
    var xmlDoc = new broken.xml.xmlDocument();
    xmlDoc.addNode('root', [
		    xmlDoc.addNode('action', 'iscustomerloggedin')
		]);
    var xmlObj = xmlDoc.toString();
    new Ajax.Request('/Webservices/GeneralMethods.asmx/GeneralFunction', {
        method: 'post',
        parameters:
			{
			    xml: xmlObj
			},
        onSuccess: function(transport) {

            if (broken.xml.getNode(transport.responseXML, 'loggedin').firstChild.nodeValue == 'True') {
                var i;
                for (i = 0; i < args.length; i++) { if (args[i] == 'advancedlogin') { args.splice(i, 1); break; } }
                action(args);
            } else {
                broken.ajax.showLogin(trigger, action, args);
            }
        }
    });
},

addToFavorite: function(args) {
    var xmlDoc = new broken.xml.xmlDocument();
    xmlDoc.addNode('root', [
		    xmlDoc.addNode('action', 'addToFavorite'),
		    xmlDoc.addNode('item', [
		        xmlDoc.addNode('id', args[0])
		    ])
		]);

    var xmlObj = xmlDoc.toString();

    new Ajax.Request('/Webservices/GeneralMethods.asmx/GeneralFunction', {
        method: 'post',
        parameters:
			{
			    xml: xmlObj
			},
        onSuccess: function(transport) {
            if (broken.xml.getNode(transport.responseXML, 'error').firstChild.nodeValue == 0) {
            } else {
                throw new Error('Error: ' + broken.xml.getNode(transport.responseXML, 'errormessage').firstChild.nodeValue);
            }
        }
    });

}
}




broken.productWidget = Class.create();

broken.productWidget.prototype =
{
    initialize: function(id, colorid, sizeid, q) {

        var selectSizeId = null;
        if (sizeid != null && isNaN(sizeid)) {
            var select = $(sizeid);

            if (select.options.selectedIndex > -1)
                selectSizeId = select.options[select.options.selectedIndex].value;
        }
        else if (sizeid != null && !isNaN(sizeid)) {
            selectSizeId = sizeid;
        }
        this.id = id;
        this.color = colorid;
        this.size = selectSizeId;
        this.oldSize = selectSizeId;
        this.oldColor = colorid;
        this.q = q;
    },

    updateColor: function(c, widget) {
        this.color = c;

        if (widget) {
            broken.ajax.updateCartItem(widget);
        }

        broken.gfx.removeObject('cart');
        broken.ajax.getItemCount(broken.ajax.getCart, broken.ajax.showCart);
    },

    updateSize: function(select, widget, ifOnProductPage) {
        var selectSizeId = select.options[select.options.selectedIndex].value;
        this.size = selectSizeId;

        if (widget) {
            broken.ajax.updateCartItem(widget);
        }

        broken.gfx.removeObject('cart');
        if (!ifOnProductPage) {
            broken.ajax.getItemCount(broken.ajax.getCart, broken.ajax.showCart);
        }
        else {

        }
    },

    updateQuantity: function(s, widget) {
        this.q = s;

        if (widget)
            broken.ajax.updateCartItem(widget);
    },

    parseXML: function() {

        var xmlDoc = new broken.xml.xmlDocument();
        xmlDoc.addNode('root', [
		    xmlDoc.addNode('action', 'add'),
		    xmlDoc.addNode('item', [
		        xmlDoc.addNode('id', this.id),
		        xmlDoc.addNode('sizeid', this.size),
		        xmlDoc.addNode('colorid', this.color)
		    ])
		]);

        return xmlDoc.toString();
    },

    parseUpdateXML: function() {

        var xmlDoc = new broken.xml.xmlDocument();
        xmlDoc.addNode('root', [
		    xmlDoc.addNode('action', 'updateItem'),
		    xmlDoc.addNode('item', [
		        xmlDoc.addNode('id', this.id),
		        xmlDoc.addNode('currentcolorid', this.oldColor),
		        xmlDoc.addNode('newcolorid', this.color),
		        xmlDoc.addNode('currentsizeid', this.oldSize),
		        xmlDoc.addNode('newsizeid', this.size),
		        xmlDoc.addNode('qty', this.q)
		    ])
		]);

        return xmlDoc.toString();
    }
}


broken.xml = 
{
    xmlDocument : function()
    {
        this.root = '';
    }, 
    
    getNode : function(xml, n)
    {
        node = xml.getElementsByTagName(n);
        
        var r = node.length > 1 ? node : node[0];
        return r;
    }
}

broken.xml.xmlDocument.prototype = 
{   
    addNode : function(nodeName, args)
    {
        if(args instanceof Array)
        {  
            this[nodeName+"nodes"] = "";
            for(var i = 0; i < args.length; i++)
            {
                this[nodeName+"nodes"] += args[i];
            }
            if(nodeName == 'root')
                this.root += this.buildNode(nodeName, this[nodeName+"nodes"]);
            else
                return this.buildNode(nodeName, this[nodeName+"nodes"]);
        }else{
            var node = this.buildNode(nodeName, args);
            return node;
        }
        
    }, 
    
    buildNode : function(nodeName, nodeValue)
    {
        var openTag = '<'+nodeName+'>';
        var closeTag = '</'+nodeName+'>';
        
        return openTag + nodeValue + closeTag;
    }, 
    
    toString : function()
    {
        return this.root;
    }
}

broken.slider = Class.create();

broken.slider.prototype = 
{
	initialize : function(target)
	{
		this.target = $(target);
		this.slides = this.target.getElementsByClassName('slide');
		this.slideCount = this.slides.length;
		this.currentSlide = (this.slideCount - 1);
		
		for(var i = 0; i < this.slides.length; i++)
			this.slides[i].position = 'right';    				
	},
	
	showSlide : function(sender)
	{
		
		var senderObject = $(this.slides[sender]);
		var right = senderObject.position == 'right' ? true : false;
		var count = right ? (sender+1) : sender;
		var viewablearea = 757 - (this.slideCount * 31)
		
		if(sender == this.currentSlide && senderObject.position == 'right') return;
		
		while(count < this.slideCount && count >= 0)
		{
			var current = $(this.slides[count]);
			
			if(right)
				var targetLeft = parseInt(current.offsetLeft) - viewablearea;
			else
				var targetLeft = parseInt(current.offsetLeft) + viewablearea;		
		    
			if(current.position == senderObject.position)					
			{
				new Effect.Morph($(current) , { 
					duration: 1.0,
					style: 
					{
						left: targetLeft + 'px'
					}
				});
			}
			
			if(current != senderObject)
				current.position = right ? 'left' : 'right';
			
			if(right)
				++count;
			else
				--count;
		}
		
		for(var i = 0; i < this.slides.length; i++)
			$(this.slides[i].getElementsByTagName('A')[0]).removeClassName('active');
		
		this.currentSlide = sender;
		if(!right)
			senderObject.position = 'right';
		senderObject.getElementsByTagName('A')[0].addClassName('active');
	}
}

Element.observe(window, 'load', function()
	{
	    if($('slideWrapper'))
	    { 
    		broken.frontpageslide = new broken.slider('slideWrapper');
		}
	}
);


	broken.rating =
{
    setActive: function(sender, rating) {

        $('ctl00_ContentPlaceHolder1_currentRating').value = rating;

        for (var i = 0; i < 5; i++) {
            var imageObject = document.getElementById('Rating' + (i + 1));

            imageObject.src = i < rating ? '/images/icon.campfire.gif' : '/images/icon.campfire.out.gif';
 
        }

    },
    setActive2: function(sender, rating) {

        $('ctl00_ContentPlaceHolder1__tabs__productComments_currentRating').value = rating;

        for (var i = 0; i < 5; i++) {
            var imageObject = document.getElementById('Rating' + (i + 1));

            imageObject.src = i < rating ? '/images/icon.campfire.gif' : '/images/icon.campfire.out.gif';
 
        }

    }
}

broken.util = 
{
	addEvent : function(obj, type, fn)
	{
		if (obj.addEventListener)
			obj.addEventListener( type, fn, false );
		else if (obj.attachEvent)
		{
			obj["e"+type+fn] = fn;
			obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
			obj.attachEvent( "on"+type, obj[type+fn] );
		}
	},
	
	getY : function(o)
	{
	   var __y = 0;
       while( o != null ) {
            __y += o.offsetTop;
            o = o.offsetParent;
        }
        return __y;
	},
	
	getX : function(o)
	{
	   var __x = 0;
       while( o != null ) {
            __x += o.offsetLeft;
            o = o.offsetParent;
        }
        return __x;
	},
	
	gotoPage : function(page)
    {
        if(typeof page == 'undefined' || page == 'reload')
            var page = window.location.href;
            
        window.location.href = page;
    }
}
