﻿
// Sub Class
window.$BTJ.Header = new function() {
	var $this = this;

	// Variables
	// Methods

	$this.init =  function() {
		// Add events
	
		$(".jsOpenCarts").attr('href','javascript:$BTJ.Header.cartsOpen();void(0);');
		$(".jsCloseCarts").attr('href','javascript:$BTJ.Header.cartsClose();void(0);');

		$(".jsOpenAdvancedSearchForm").click(function(event){ $BTJ.Header.searchOpen(700); event.preventDefault() });
		$(".jsCloseAdvancedSearchForm").click(function(event){ $BTJ.Header.searchClose(700); event.preventDefault() });
	
		// init sync of "endast svenska" checkbox and "språk" dropdown
		$this.initLanguageCheckbox();
		$this.initLanguageDropDown();
	    
		$this.adjustHeaderHeights();
		$BTJ.layout(); 
	};
	

	$this.initLanguageCheckbox = function() {
		// added by Malin@btj, if user selects/unselects "endast svenska titlar", then change the language dropdown to match the checkbox value
	    // note: the following variable is defined from c#: 
	    // var selectedLanguageValue - value of user's language ("svenska" for all users, for now)
	    $(".Swe").click(function() { 
	           var ischecked = this.checked;
	           
	            $(".AdvancedSearchLanguageDropDown").each(function()
	            {
	                if(ischecked) {
	                    this.value = selectedLanguageValue;
	                } else 
	                {
	                    this.value = "";
	                }
	            });
	            
	       
	    });
	    
	};
	
	$this.initLanguageDropDown = function() {
		// added by Malin@btj: if user selects new value in "country" dropdownlist, then select/unselect the "endast svenska titlar" checkbox
	    $(".AdvancedSearchLanguageDropDown").change(function() { 
            var checked_status = ($(this).val() == selectedLanguageValue);
            $(".Swe").each(function()
            {
				if(!$(this).attr('disabled')) {
					this.checked = checked_status;
                }
            });
	     });
	};

	// Carts
	$this.cartsOpen = function() {
	
		var cartHeight = $("#ShoppingCartContent").height();
	
		$("#ShoppingCart").addClass("Active").animate({ height: cartHeight + "px" }, 500);
		$BTJ.layout(); 
	};

	$this.cartsClose = function() {
		$("#ShoppingCart").removeClass("Active").animate({ height: "95px" }, 500);;
		$BTJ.layout(); 
	};


	// Search
	$this.searchOpen = function(openSpeed) {
	
		// Added by Malin@BTJ, disable simple search form button when advanced search is opened
		$(".jsSimpleSearchFormButton").attr('disabled', 'disabled');
		$(".jsSimpleSearchFormButton").css('display', 'none');

		$(".Search").addClass("Active");
		$(".Layout").addClass("RefinedSearch");
		
		$this.adjustHeaderHeights();
		
		$(".RefinedSearchDiv").show();
		$('.jsAdvancedSearchState').val('open');
		$BTJ.layout(); 
	};

	$this.searchClose = function(closeSpeed, vitalOnly) {
	
		// Added by Malin@BTJ, disable simple search form button when advanced search is opened
		$(".jsSimpleSearchFormButton").removeAttr('disabled');
		$(".jsSimpleSearchFormButton").css('display', 'block');

		//var closeSpeed = 400;
		if(!vitalOnly) {
			$(".RefinedSearchDiv").hide();
		}
		
		// close advanced search form
		$(".Search").removeClass("Active");
		$(".Layout").removeClass("RefinedSearch");
		
		// adjust heights and top of all elements
		$this.adjustHeaderHeights();
		
		$('.jsAdvancedSearchState').val('closed');
		$BTJ.layout(); 
	};
	
	// adjusts heights and top of all elements in header div
	$this.adjustHeaderHeights = function() {
		var headerHeight = 104;
		if ($(".Search").hasClass("Active")) {
			headerHeight = 302;
		}
		
		var headerShadowPos = headerHeight;
		var pagePos = headerHeight;
		
		// are we showing a search result?
		if ($("#ResultInfo").hasClass("Active")){ 
			var sorteringsHeight = 30; //height of the row "Sortering: Titel / Författare / Etc"
			var marginBetweenSorteringAndPage = 20;
			headerShadowPos = headerHeight + sorteringsHeight;
			pagePos = headerHeight + sorteringsHeight + marginBetweenSorteringAndPage;
		}
		// or are we on a cart page? 
		else if ($(".CartInfo").hasClass("Active")) { 
			var cartInfoHeight = 115; // height of cart header div on "overview" page
			
			// are we on checkout page?
			if ($(".CartInfo").hasClass("Checkout")) {
				cartInfoHeight = 155;
			} 
			// are we on receipt page?
			else if ($(".CartInfo").hasClass("Receipt")) {
				if($(".CartInfo").hasClass("Student"))
					cartInfoHeight = 200;
				else
					cartInfoHeight = 150;
			}
			
			if ($(".CartChanged").hasClass("Active")) {
				var cartErrorMessageHeight = 100; //height of "Din kundvagn har ändrats" message
				pagePos = headerHeight + cartInfoHeight + cartErrorMessageHeight; 
			} else {
				pagePos = headerHeight + cartInfoHeight;
			}
		}
		
		
		$("#Header").css('height', (headerHeight + 1) + 'px'); //todo: +1, why?
		$("#ResultInfo").css('top', headerHeight + 'px'); 
		$(".CartInfo").css('top', headerHeight + 'px');
	
		$("#HeaderShadow").css('top', headerShadowPos + 'px'); 
		
		// "header"-div will stay on top of page, and not scroll down when user scrolls page
		// everything in "page" div will scroll underneith "header" div
		$("#Page").css('top', pagePos + 'px');
		
		
	}

};


