var main = {

    SERVERPATH		: '',
    PHPSESSID       : '',
    data            : '',
    fadeOutTime     : 6000,

	initialize: function(serverpath,phpsessid){
            main.SERVERPATH = serverpath;
            main.PHPSESSID = phpsessid;

            $('#container').pngFix();

            // Fix for paginator (removes text if the paginator arrow is disabled
            if($('.paginatorArrowSinglePreviousDisabled').length != 0){
                $('.paginatorBackwardText').hide();
            }
            if($('.paginatorArrowSingleNextDisabled').length != 0){
                $('.paginatorForwardText').hide();
            }

            // watch the loginButton,logoutButton,forgotPassword link.
            //$('#login').click(main.login);
			$('#loginButton').click(main.login);
            
			$('#logout').click(main.logout);
            $('#forgotPassword').click(main.forgotPassword);
            $('#resetPassword').click(main.resetPassword);

            $('#contactContainer').click(main.goToContact);
            $('#searchButtonProducts').click(main.searchProducts);

            $('#deleteSearchQuery').click(main.deleteProductSearch);
            $('#menuBrandsHeader').click(main.showBrands);

            $('[id^="brandMenuItemData"]').click(main.saveBrandSelection);
            $('[id^="selectedBrandCategory"]').click(main.saveCategoryBrandSelection);
            $('#deleteBrandSelection').click(main.deleteBrandSelection);
            $('[id^="toggleImg_"]').click(main.showHideDivSub);

            $('.paginatorItemCountControlSelectContainer select').change(main.savePageSetting);
            $('[class^="savePageSettingText"]').click(main.savePageSettingText);

            $('#signIn').click(main.toggleLoginForm);

            $('#searchProduct').focus(main.clearSearchForm);
            $('#searchProduct').blur(main.refillSearchForm);

            $('#userLoginPassword').keyup(function(e) {
                if(e.keyCode == 13) {
                   main.login();
                }
            });
            $('#searchProduct').keyup(function(e) {
                if(e.keyCode == 13) {
                   main.searchProducts();
                }
            });

            $('#brandmenu, #closeBrandMenu').click(main.toggleBrandsDiv);


            //showLoginForm
            $('#showLogin').click(main.showLoginForm);

            $('#loginButton').click(main.login);

            $('#menuBeautyHeader').click(main.showBeauty);

            $('#dialogHolder').dialog({
                autoOpen: false,
                bgiframe: true,
                modal: true,
                buttons: {
                    Ok: function(){$(this).dialog('close');}
                }
            });

            $('[id^="attributeFilterGroupID"]').change(main.saveAttributeSelection);
            $('[id^="attributeFilterChecked"]').click(main.deleteAttributeSelection);

            //$("#menu ul li:first").css('padding-left', '0px');

            $('#topMenu li').hover(
                    function() { $('ul', this).css('display', 'block'); },
                    function() { $('ul', this).css('display', 'none') }
            );

            $('.navigation > li').bind('mouseover', main.menu_open);
            $('.navigation > li').bind('mouseout',  main.menu_timer);

            $('#showSearchResults').click(main.showFilteredSearchResults);
            $('#unsetAllFilters').click(main.deleteAllAttributeSelections);
			$('#unsetAllFilters').tooltip({
				tip:		'#pagetooltip',
				position:	'center right'
			});
        },

        menu_open: function(){

            main.menu_canceltimer();
            main.menu_close();
            main.menuDdMenuItem = $(this).find('ul').css('visibility', 'visible');
         },

        menu_close: function(){
               if(main.menuDdMenuItem) main.menuDdMenuItem.css('visibility', 'hidden');
        },

        menu_timer: function(){


            main.menuClosetimer = window.setTimeout(main.menu_close, main.menuTimeout);
        },

        menu_canceltimer: function(){
            if(main.menuClosetimer)
           {  window.clearTimeout(main.menuClosetimer);
              main.menuClosetimer = null;
          }
        },



        showDialog:function(message){
            message = message.replace(/\n/g, "<br />");

            $('#dialogHolder').html(message).dialog('open');
        },
        

        goToContact: function(){
            window.location=(main.SERVERPATH + 'user/contact');
        },

        clearSearchForm: function(){

          if($('#searchProduct').val() == 'zoeken'){
              $('#searchProduct').val('');
          }
        },

        refillSearchForm: function(){

          if($('#searchProduct').val() == ''){
              $('#searchProduct').val('zoeken');
          }
        },

        changeLanguage: function(lang){

             $.ajax({
               type: "POST",
               dataType: 'json',
               cache: false,
               url: main.SERVERPATH+'user/changelanguage/PHPSESSID/'+main.PHPSESSID,
               data: ({languageID : lang}),
               success: function(data){
                   window.location.href = data.url;
               }
             });

        },

       toggleBrandsDiv: function(){
            offset = $('#brandmenu').offset();
            var left = offset.left+$('#brandmenu').width()+2;
            var top = offset.top;
            $('#showBrands').css('top',top+'px').css('left',left+'px').toggle("slow");
        },

       toggleLoginForm: function(){

           $('#loginContainer').toggle();

       },

       showHideDivSub: function(){
           var showDivID = this.id.replace('toggleImg_','');

           $('#subItemDIV_' + showDivID).toggle('slow');

        if($('#toggleImg_'+ showDivID).attr('src') == main.SERVERPATH + 'public/img/plus.gif'){

            $('#toggleImg_' + showDivID).attr({'src' : main.SERVERPATH + 'public/img/min.gif'});
        } else {
            $('#toggleImg_' + showDivID).attr({'src' : main.SERVERPATH + 'public/img/plus.gif'});
        }


       },

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

		showBrands: function(){
			$('#brandMenuItemContainer').toggle('slow');
		},

		savePageSetting: function(){
			var pageSetting = $(this).val();
			$.getJSON(main.SERVERPATH + 'user/savepageviewsetting/pageViewSetting/' + pageSetting + '/phpsessid/' + main.PHPSESSID + '/rnd/' + Math.random()*99999,
			'',
			main.savePageSettingResult);
		},

        savePageSettingText: function(){
            var pageSetting = $(this).attr('class').replace('savePageSettingText','');
            $.getJSON(main.SERVERPATH + 'user/savepageviewsetting/pageViewSetting/' + pageSetting + '/phpsessid/' + main.PHPSESSID + '/rnd/' + Math.random()*99999,
            '',
            main.savePageSettingResult);
        },

        savePageSettingResult: function(data){
            if(data.status == 'success'){
               window.location.reload();
            } else {

            }
        },

       searchProducts: function(){
          if(($('#searchProduct').val() == 'SEARCH')||(($('#searchProduct').val() == ''))){
            //xyz
          } else {
            $.post(main.SERVERPATH+'product/searchproduct/' + 'rnd/' + Math.random()*99999,
                                    $('#searchProductForm').serialize(),
                                    main.searchProductsResult,
                                    'json'
                             );
          }
       },

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

    deleteProductSearch: function(){
        var currentAction = $('#currentAction').val();
        var currentController = $('#currentController').val();
        $.getJSON(main.SERVERPATH + 'product/deleteproductsearch/currentController/' + currentController + '/currentAction/' + currentAction + '/phpsessid/' + main.PHPSESSID + '/rnd/' + Math.random()*99999,
        '',
        main.deleteProductSearchResult);
    },

    deleteProductSearchResult: function(data){
        if(data.status == 'success'){
                    window.location = data.redirectUrl;
            }
    },

    login: function(){

	
	// post the serialized form to the loginAction
        // with getJSON we're expecting a JSON string as response
		$.getJSON(main.SERVERPATH+'user/login/PHPSESSID/'+main.PHPSESSID,
					$('#loginForm').serialize(),
					main.loginResult
                         );
						

    },

    loginResult: function(data){
	
        

        // handle the response
        if(data.status == 'success'){
//            $('#dialogHolder').html("U bent succesvol ingelogd. U wordt doorverwezen naar de home page.");

//            var dialog_buttons = {};
//            dialog_buttons["OK"]          = function() { }
//
//            $("#dialogHolder").dialog({
//                    resizable: false,
//                    height:140,
//                    modal: true,
//                    buttons: dialog_buttons
//
//            });
//
//            $("#dialogHolder").dialog('open');
            window.location = data.redirectUrl;
            //alert(data.redirectUrl);

        }else{
			alert(data.message);
            //main.showDialog(data.message);
            //$('#loginResultDiv').html(data.message);
            //$('#loginResultDiv').show('slow');
            //$('#loginResultDiv').fadeOut('slow');
        }
    },

    test: function(){
       
    },

    logout: function(){
      // Send a logout request to the user controller.
      $.getJSON(main.SERVERPATH+'user/logout/PHPSESSID/'+main.PHPSESSID,'',
      main.logoutResult);
    },

    logoutResult: function(data){
        // Handle the logout response
       if(data.status == 'success'){
            window.location = data.redirectUrl;
       }
    },

    forgotPassword: function(){
        if($('#forgotPasswordDiv').css('display') == 'none'){
            $('#forgotPasswordDiv').slideDown('slow','');
        } else {
            $('#forgotPasswordDiv').slideUp('slow','');
        }
    },

    resetPassword: function(){

        $.getJSON(main.SERVERPATH+'user/resetpassword/PHPSESSID/'+main.PHPSESSID,
                $('#resetPasswordForm').serialize(),
                main.resetPasswordResult
             );
    },
    resetPasswordResult: function(data){
        if(data.status == 'success'){
            $('#forgotPasswordDiv').hide('slow');
        }
        main.showDialog(data.message);
//            $('#forgotPasswordResultDiv').html(data.message);
//            $('#forgotPasswordResultDiv').show();
//
//            $('#forgotPasswordResultDiv').fadeOut(5000);
    },

// This function will be removed once we go live.
    quickLogin: function(user){
       $('#userLoginUserName').attr('value',user);
       $('#userLoginPassword').attr('value','lkhdg');
       main.login();
    },

    growl:function(message,timeout)
    {
        $.blockUI({
            message: message,
            fadeIn: 700,
            fadeOut: 1700,
            timeout: timeout,
            showOverlay: false,
            centerY: false,
            css: {
                width: '350px',
                top: '10px',
                left: '',
                right: '10px',
                border: 'none',
                padding: '5px',
                backgroundColor: '#000',
                '-webkit-border-radius': '10px',
                '-moz-border-radius': '10px',
                opacity: '.6',
                color: '#fff'
            },
             overlayCSS:  {
                opacity:        '0.0'
            }
        });
    },

    saveBrandSelection: function(){
        var brandID = this.id.replace('brandMenuItemData','');
        $.getJSON(main.SERVERPATH+'brand/savebrandselection/brandID/' + brandID + '/phpsessid/' + main.PHPSESSID + '/rnd/' + Math.random()*99999,
        '',
        main.saveBrandSelectionResult);
    },

    saveBrandSelectionResult: function(data){
        if(data.status == 'success'){
             window.location = data.url;
            }
    },

    saveCategoryBrandSelection: function(){
        var categoryID = this.id.replace('selectedBrandCategory','');
        $.getJSON(main.SERVERPATH+'brand/savecategorybrandselection/categoryID/' + categoryID + '/phpsessid/' + main.PHPSESSID + '/rnd/' + Math.random()*99999,
        '',
        main.saveCategoryBrandSelectionResult);
    },

    saveCategoryBrandSelectionResult: function(data){
        if(data.status == 'success'){
             window.location = data.url;
            }
    },


    deleteBrandSelection: function(){

        $.getJSON(main.SERVERPATH+'brand/deletebrandselection/phpsessid/' + main.PHPSESSID + '/rnd/' + Math.random()*99999,
        '',
        main.deleteBrandSelectionResult);
    },

    deleteBrandSelectionResult: function(data){
        if(data.status == 'success'){
                    window.location = data.redirectUrl;
            }
    },

    showLoginForm: function(){
        topmenu = $('#topMenu');
        $.scrollTo('#topMenu',100);
        offset = topmenu.offset();
        var left = (offset.left+topmenu.width())-($('#loginFormDiv').outerWidth());
        $('#loginFormDiv').css('top',offset.top+'px').css('left',left+'px').slideToggle("slow");
    },

    closeLoginDiv: function(){
        $('#loginFormDiv').slideUp();
    },

    saveAttributeSelection: function(){
        $('#filterForm').submit();
    },

    deleteAttributeSelection:function(){

        var attributeGroupID  = this.id.replace('attributeFilterChecked','');
        $.getJSON( main.SERVERPATH+'product/deletefilterattributeselection' + '/phpsessid/'+main.PHPSESSID+ '/attributeGroupID/' + attributeGroupID + '/rnd/' + Math.random()*99999,
                   main.deleteAttributeSelectionResult);
    },

    deleteAttributeSelectionResult:function(data){
        window.location = main.SERVERPATH+'filter/showproducts/';
    },


    deleteAllAttributeSelections:function(data){

        $.getJSON( main.SERVERPATH+'product/deleteallfilterattributeselection' + '/phpsessid/'+main.PHPSESSID+ '/rnd/' + Math.random()*99999,
                   main.deleteAttributeSelectionResult);
    },
    
    showFilteredSearchResults: function(){
        window.location = main.SERVERPATH+'filter/showproducts/';
    }



};
