var main = {

	SERVERPATH		: '',
	PHPSESSID       : '',
	data            : '',
	fadeOutTime     : 6000,

	initialize: function(serverpath,phpsessid){

		main.SERVERPATH = serverpath;
		main.PHPSESSID = phpsessid;

		Cufon.replace('h1, h2, .productLink, fieldset legend, .totalLegend, .shoppingcartProductPricesOverview .totalPrice, .productName span, .shoppingcartProductPrices .mainPrice .price, .productPrices .price');

		// 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.
		$('#loginForm, #lostPassword').hide();
		$('#showLogin').toggle(function(){
			$('#loginForm, #lostPassword').show();
		}, function(){
			$('#loginForm, #lostPassword').hide();
		});
		$('#showLoginToo').click(main.showLogin);

		$('#userLoginUserName').val($('label[for=userLoginUserName]').text()).focus(main.clearInputField);
		$('#userLoginUserName').blur(main.refillInputField);

		$('#userLoginPassword').after('<input type="text" id="userLoginFake" value="' + $('label[for=userLoginPassword]').text() + '">').hide();

		$('#userLoginFake').focus(main.clearPasswordField);
		$('#userLoginPassword').blur(main.refillPasswordField);

		$('#loginButton').click(main.login);
		$('#userLoginPassword').keyup(function(e) {
			if(e.keyCode == 13) {
				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);

		$('#searchProduct').keyup(function(e) {
			if(e.keyCode == 13) {
			   main.searchProducts();
			}
		});

		$('#brandmenu, #closeBrandMenu').click(main.toggleBrandsDiv);

		$('#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);

		$('#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);
	},

        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;
          }
        },

        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");
        },

       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;
            }
    },

	clearInputField : function(){
		if($(this).val() == $('label[for=' + $(this).attr('id') + ']').text()){
			$(this).val('');
		}
	},

	refillInputField : function(){
		if($(this).val() == ''){
			$(this).val( $('label[for=' + $(this).attr('id') + ']').text() );
		}
	},

	clearPasswordField : function(){
		$('#userLoginFake').hide();
		$('#userLoginPassword').show().focus();
	},

	refillPasswordField : function(){
		if($(this).val() == ''){
			$('#userLoginPassword').hide();
			$('#userLoginFake').show();
		}
	},

	clearError : function(){
		$('#userLoginUserName, #userLoginPassword, #userLoginFake').css({
			'color'			: '#7f7f7f',
			'border-color'	: '#7f7f7f'
		});
		$('#loginError').text('').hide();
	},

	showLogin : function(){
		$('#loginForm, #lostPassword').show();
		return false;
	},

	login: function(){
		$.getJSON(main.SERVERPATH+'user/login/PHPSESSID/' + main.PHPSESSID,
			$('#loginForm').serialize(),
			main.loginResult
		);
		return false;
	},

	loginResult : function(data){
		if(data.status == 'success'){
			$('#loginError').css('background-color', '#228822').text(data.message).show();
			setTimeout(window.location = data.redirectUrl, 1600);
		} else {
			$('#userLoginUserName, #userLoginPassword, #userLoginFake').css({
				'color'			: '#cd0a0a',
				'border-color'	: '#cd0a0a'
			});
			$('#loginError').text(data.message).show();

			setTimeout(main.clearError, 3000);
		}
	},

    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;
       }
    },

    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;
            }
    },

    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/';
    }

};
