var page = {

    initialize: function() {

        /* Watch the product attributelistboxes */
        $('[id^="attributeGroupID"]').change(page.saveProductAttributeSelection);
        $('[id^="attributeChecked"]').click(page.deleteProductAttributeSelection);

         $('[id^="productImageThumb"]').click(page.showProductImage);

         $('#prevCaroussel').mouseover(page.showPreviousPageCarroussel);
         $('#prevCaroussel').mouseout(page.hidePreviousPageCarroussel);

         $('#nextCaroussel').mouseover(page.showNextPageCarroussel);
         $('#nextCaroussel').mouseout(page.hideNextPageCarroussel);

        $('#putInCart').click(page.addProductToCart);
        $('#wishlist').click(page.addToWishlist);
        $('#birthdaylist').click(page.addToBirthdaylist);
        $('#weddinglist').click(page.addToWeddinglist);

       // override these in your code to change the default behavior and style of the Block UI
        $.blockUI.defaults = {
            message:  '<img src="' + main.SERVERPATH + 'public/img/ajaxloadbig.gif"/>',
            css: {
                padding:        0,
                margin:         0,
                width:          '30%',
                top:            '40%',
                left:           '35%',
                textAlign:      'center',
                border:         'none',
                backgroundColor:'transparent',
                cursor:         'wait'
            },
            overlayCSS:  {
                backgroundColor:'#ffffff',
                opacity:        '0.6'
            },
            baseZ: 1000,
            centerX: true,
            centerY: true,
            allowBodyStretch: true,
            constrainTabKey: true,
            fadeIn:  200,
            fadeOut:  400,
            timeout: 0,
            showOverlay: true,
            focusInput: true,
            applyPlatformOpacityRules: true,
            onUnblock: null,
            quirksmodeOffsetHack: 4
        };

        $('.productImageCaroussel').jCarouselLite({
            btnNext: '.nextCaroussel',
            btnPrev: '.prevCaroussel',
            visible: 2.6
        });

        $('.relatedProductImageCaroussel').jCarouselLite({
            btnNext: '.nextCarousselRelated',
            btnPrev: '.prevCarousselRelated',
            visible: 4
        });

        //$('.productImageTablePreviewContainer img').load(page.addMagnifier());
    },

    addMagnifier:function(divHeightCalculated) {
        if(divHeightCalculated != true) {
            // Chrome & Safari fix
            $('.productImageTablePreviewContainer img').load(function() {
                 page.addMagnifier(true);
            });
         }
         else {
            $('#productImageTableSpacer').css('height', Math.ceil(((($('.imageHolderPreview').attr('clientHeight') - $('.productImageTablePreviewContainer img').attr('clientHeight')) / 2))) + 'px');
            $('.productImageTablePreviewContainer a').css('margin-left', Math.ceil(((($('.imageHolderPreview').attr('clientWidth') - $('.productImageTablePreviewContainer img').attr('clientWidth')) / 2))) + 'px');

            MojoMagnify.makeMagnifiable(
                document.getElementById($('.productImageTablePreviewContainer img').attr('id')),
                $('.productImageTablePreviewContainer img').attr('data-magnifysrc')
            );
        }  
    },

    productRedirect: function(data){
        window.location = data;
    },

    showNextPageCarroussel: function(){
        $('#nextCarousselImage').attr('src', main.SERVERPATH + 'public/img/nextCarouselHover.gif');
        $('#nextCaroussel').css('background-color','#f1b4d1');
    },

    hideNextPageCarroussel: function(){
        $('#nextCarousselImage').attr('src', main.SERVERPATH + 'public/img/nextCarousel.gif');
        $('#nextCaroussel').css('background-color','#cccccc');
    },

    showPreviousPageCarroussel: function(){
        $('#prevCarousselImage').attr('src', main.SERVERPATH + 'public/img/prevCarouselHover.gif');
        $('#prevCaroussel').css('background-color','#f1b4d1');
    },

    hidePreviousPageCarroussel: function(){
        $('#prevCarousselImage').attr('src', main.SERVERPATH + 'public/img/prevCarousel.gif');
        $('#prevCaroussel').css('background-color','#cccccc');
    },

    deleteProductAttributeSelection:function(){
        $('#productAttributes').block();
        var attributeGroupID  = this.id.replace('attributeChecked','');

        $.getJSON(main.SERVERPATH+'product/deleteattributeselection' + '/phpsessid/'+main.PHPSESSID+ '/attributeGroupID/' + attributeGroupID + '/rnd/' + Math.random()*99999,
                page.deleteProductAttributeSelectionResult);
    },

    deleteAllProductAttributeSelection:function(){
        $('#productAttributes').block();
        var attributeGroupID = '';
        // Sometimes this function is raised by a function (add to card > shop verder)
        if(this.id != null)
        {
            attributeGroupID  = this.id.replace('deleteSelection','');
        } else {
            attributeGroupID  = 'deleteAllSelections';
        }

        $.getJSON(main.SERVERPATH+'product/deleteallattributeselections' + '/phpsessid/'+main.PHPSESSID+ '/attributeGroupID/' + attributeGroupID + '/rnd/' + Math.random()*99999,
                page.deleteProductAttributeSelectionResult);
    },

    deleteProductAttributeSelectionResult:function(data){
        if(data.status == 'success'){
            var productID = $('#productID').val();
            $.get(main.SERVERPATH + 'product/showproductattributes/productID/' + productID + '/disableLayout/true/rnd/' + Math.random()*99999,
                page.reloadAttributes);
        } else {
            $('#productAttributes').unblock();
            $.jGrowl(data.message);
        }
    },

    saveProductAttributeSelection: function(){
        $('#productAttributes').block();
        var attributeGroupID  = this.id.replace('attributeGroupID','');
        var attributeValueID  = $('#' + this.id).val();

        $.getJSON(main.SERVERPATH+'product/saveattributeselection' + '/phpsessid/'+main.PHPSESSID+'/attributeValueID/' + attributeValueID + '/attributeGroupID/' + attributeGroupID + '/rnd/' + Math.random()*99999,
            page.saveProductAttributeSelectionResult);
    },

    saveProductAttributeSelectionResult:function(data){
        $('#productAttributes').unblock();
        if(data.status == 'success'){
            $('#putInCard').show();
            $('#wishlist').show();
            $('#weddinglist').show();
            var productID = $('#productID').val();
            $.get(main.SERVERPATH + 'product/showproductattributes/productID/' + productID + '/disableLayout/true/rnd/' + Math.random()*99999,
                page.reloadAttributes);
        } else {
            $('#productAttributes').unblock();
            $.jGrowl(data.message);
        }
    },

    reloadAttributes:function(data){
        $('#productAttributes').html(data);
        page.initialize();
    },

    showProductImage:function(data){
        var productImageID = this.id.replace('productImageThumb','');
		
         $('#productImages').block();
        var productID = $('#productID').val();

		jQuery.get(
			main.SERVERPATH + 'product/showproductimages/productImageID/' +  productImageID  + '/productID/' + productID + '/disableLayout/true/rnd/' + Math.random()*99999,
			null,
			page.reloadImages
		);
    },

    reloadImages:function(data){
         $('#productImages').block();
        $('#productImages').html(data);
        page.initialize();
    },

    addProductToCart: function (){

        $('#putInCart').attr("disabled", "true");

        var productID       = $('#productID').val();
        var productsSetID   = $('#productsSetID').val();

        var productsSetGroupValue       = $('.groupValueName').html();
        var productSetGroupName         = $('.groupName').html();
        var productPriceValue           = $('#productPriceValue').val();
        var currencyID                  = $('#currencyID').val();
        $.getJSON(main.SERVERPATH+'shoppingcart/addproducttocart' + '/phpsessid/'+main.PHPSESSID+'/productID/' + productID + '/productSetID/' + productsSetID + '/rnd/' + Math.random()*99999,
                  page.resultAddProductToCart
                 );

    },

    addToWishlist : function(){

       // $('#wishlist').attr('disabled','true');
        
        $.post(main.SERVERPATH+'userlist/additemtouserlist/listType/wish/phpsessid/' + main.PHPSESSID + '/rnd/' + Math.random()*99999,
               {productID : $('#productID').val(),
                productsSetID : $('#productsSetID').val()},
                function(data){
                    if(data.status == 'success'){

                        // title: 'Wishlist'
                        var wishlistTitle = $('#wishListTitle').html();

                        var towishlist = $('#toWishList').html();
                        // Verder winkelen
                        var continueShopping = $('#continueShopping').html();

                        var dialog_buttons = {};
                        dialog_buttons[towishlist]          = function() { window.location = main.SERVERPATH+'userlist/mylists'}
                        dialog_buttons[continueShopping]    = function() { $(this).dialog("close"); page.deleteAllProductAttributeSelection(); }

                       $("#confirmAddToWishlist").dialog({title: wishlistTitle,
                                                      width: 460,
                                                      buttons: dialog_buttons});

                        $("#confirmAddToWishlist").dialog('open');

                    }else{
                        main.showDialog('Er is een onbekende fout ontstaan');
                    }                    
                }, 'json');

    },

    addToBirthdaylist : function(){

       // $('#wishlist').attr('disabled','true');

        $.post(main.SERVERPATH+'userlist/additemtouserlist/listType/birthday/phpsessid/' + main.PHPSESSID + '/rnd/' + Math.random()*99999,
               {productID : $('#productID').val(),
                productsSetID : $('#productsSetID').val()},
                function(data){
                    if(data.status == 'success'){

                        // title: 'Birthday'
                        var birthdaylistTitle = $('#birthdaylistTitle').html();
                        // Naar weddinglist
                        var tobirthdaylist = $('#tobirthdaylist').html();
                        // Verder winkelen
                        var continueShopping = $('#continueShopping').html();


                        var dialog_buttons = {};
                        dialog_buttons[tobirthdaylist]       = function() { window.location = main.SERVERPATH+'userlist/mylists'}
                        dialog_buttons[continueShopping]    = function() { $(this).dialog("close"); page.deleteAllProductAttributeSelection(); }


                       $("#confirmAddToBirthdaylist").dialog({title: birthdaylistTitle,
                                                      width: 460,
                                                      buttons: dialog_buttons});

                        $("#confirmAddToBirthdaylist").dialog('open');


                    }else{
                        main.showDialog('Er is een onbekende fout ontstaan');
                    }
                },
                'json');

    },

    addToWeddinglist : function(){

        //$('#weddinglist').attr('disabled','true');
        $.post(main.SERVERPATH+'userlist/additemtouserlist/listType/wedding/phpsessid/' + main.PHPSESSID + '/rnd/' + Math.random()*99999,
               {productID : $('#productID').val(),
                productsSetID : $('#productsSetID').val()},
                function(data){
                    if(data.status == 'success'){
                        // title: 'Weddinglist'
                        var weddinglistTitle = $('#weddinglistTitle').html();
                        // Naar weddinglist
                        var toWeddinglist = $('#toWeddinglist').html();
                        // Verder winkelen
                        var continueShopping = $('#continueShopping').html();

                        var dialog_buttons = {};
                        dialog_buttons[toWeddinglist]       = function() { window.location = main.SERVERPATH+'userlist/mylists'}
                        dialog_buttons[continueShopping]    = function() { $(this).dialog("close"); page.deleteAllProductAttributeSelection(); }


                       $("#confirmAddToWeddinglist").dialog({title: weddinglistTitle,
                                                      width: 460,
                                                      buttons: dialog_buttons});

                        $("#confirmAddToWeddinglist").dialog('open');

                    }else{
                        main.showDialog('Er is een onbekende fout ontstaan');
                    }
                },
                'json');
    },    

    resultAddProductToCart: function(data){

        $('#putInCart').attr("disabled", "");

        if(data.result == false){
             main.showDialog('Er is een onbekende fout ontstaan');
        }else{
             $.get(main.SERVERPATH + "shoppingcart/itemsincart",
                       function(returned_data){
                            $('span.dontDisplay').css('display','none');
                            $("#liveAmount").val(returned_data);
                            if(returned_data == 1) {
                                $('#cartIsOne').css('display','inline');
                                $("#cartIsOne").children('span').html(returned_data);
                            } else {
                                $('#cartIsMore').css('display','inline');
                                $("#cartIsMore").children('span').html(returned_data);
                            }
                       }
                   );
             $.get(main.SERVERPATH + "shoppingcart/gettotalprice",
                       function(returned_data){
                            $("#totalPrice").children('a').html(returned_data);
                       }
                   );

                var dialogToCart = $('#dialogToCart').html();
                var continueShopping = $('#continueShopping').html();


                var dialog_buttons = {};
                dialog_buttons[continueShopping]    = function() { $(this).dialog("close"); page.deleteAllProductAttributeSelection(); }
                dialog_buttons[dialogToCart]        = function() { page.toShoppingCart(data.shoppingCartUrl)}
                

               $("#confirmAddToCart").dialog({title: $('#dialogTitleAddToCart').html(),
                                              width: 460,
                                              buttons: dialog_buttons});

               $("#confirmAddToCart").dialog('open');

        }

    },

    toShoppingCart:function(data){
        window.location=(data);
    }
};
