window.DSG = window.DSG || {};

window.DSG.initCollections = function(){
	$j('#collections div.collection-image').simplelabel();
};

window.DSG.initWorldNav = function(){
	var $collContent = $j('#collection-content');
	var $collNavWrap = $j('#collections-nav');
	var $collNav = $collNavWrap.find('ul');
	var $collTab = $collNav.find('li');
	var $CurrentCollContent;
	
	$collTab.each(function(i){ 
		var $this = $j(this);
		
		if ( $collTab.length >= 4 && (i+1)%4 == 0 ) {
			$this.addClass('alt');
		} else if ( $collTab.length == 3 && (i+1)%3 == 0 ) {
			$this.addClass('alt');
		} else if ( $collTab.length == 2 && (i+1)%2 == 0 ) {
			$this.addClass('alt');
		}
	});
};


window.DSG.initCriteriaSearch = function(params){
	var sAjaxUrl = params.sUrl;
	var jCriteriaSearchForm = $j('#search-criterias');
	var jCriteriaClear = $j('<input type="reset" class="reset" value="' + params.sClear + '" />');
	
	//Clear form controler
	jCriteriaClear.insertAfter("#precise-search").click(function(){
		jCriteriaSearchForm.find(":checkbox").filter(":checked").click().change();
	}).hover(
		function(){ jCriteriaClear.addClass("hover"); },
		function(){ jCriteriaClear.removeClass("hover"); }
	);
	
	//submit button
	var jCriteriaBtnCont = jCriteriaSearchForm.find('button').parent('p').hide();
	
	//Each fieldset
	var jCriteriaContainer = jCriteriaSearchForm.find('fieldset').each(function(){
		var jThis = $j(this);
		var jCriterias = jThis.find('input:checkbox');
		var jCriteriasPrice = $j('#price-fieldset').find('input:checkbox');
		var jCriteriaContent = jCriterias.parent('>p');
		var iCriteraLength = jCriteriaContent.length;
		
		//Labels behavior (mouseover - click events)
		jCriteriaContent.css({cursor: 'pointer'}).each(function(){
			var jThis = $j(this).stylishCheckbox({
				jExtTargets: this,
				callBack: function(jInput, isChecked){
					if (isChecked) {
						jThis.addClass("checked");
					} 
					else {
						 jThis.removeClass("checked");
					}
				}
			});

			var jCriteria = jThis.find('input:checkbox');
			
			jCriteria.not(':disabled').change(function(){
				jCriteriaSearchForm.find(":checkbox").unbind();
				var bZoom = $j('#bZoom').val();
				var jSortSelect = $j('#result-order');
				var sPriceCheckedArray = '';
				var AttrCheckedArray = '';
				jCriterias.attr("disabled", "disabled");
				jCriteriasPrice.filter(':checked').each(function() {sPriceCheckedArray += $j(this).val()+',';});
				jCriteriaSearchForm.find('input:checkbox').not(jCriteriasPrice).filter(':checked').each(function() {AttrCheckedArray += $j(this).val()+',';});
				
				if ( !jCriteria.is(':checked') ){
					jThis.removeClass('checked');
				} else {
					jThis.addClass('checked');
				}
				
				$j('#search-results').html('<span class="loader">Loading...</span>');
				
				//Ajax behavior

				$j.post(sAjaxUrl, {	
					'reload': 'true',
					'aAttributes' : AttrCheckedArray,
					'price-range' : sPriceCheckedArray,
					'sort-dir'	  : jSortSelect.val(),
					'action'	  : 'search',
					'bZoom'		  : bZoom
					}, function(dataR) {
						var jContainer = $j("#col-main");
						var jAjaxContent = $j(dataR).find('#col-main');
						jContainer.replaceWith(jAjaxContent);
						DSG.initReloadPart(params);
						DSG.initCriteriaSearch(params);
						var jToggleCtrls = $j("#search-criterias").find("fieldset a.controler");
						var jToggleCtrlsParent = jToggleCtrls.parent("p");
						var jToggleElt = $j("#search-criterias").find("div.fieldset-toggle").show();
						jToggleCtrls.add(jToggleCtrlsParent).hide();
					}
				);
			});
			
			jThis.hover(
				function(){ jThis.addClass('hover'); },
				function(){ jThis.removeClass('hover'); }
			);
		});
		
		//Toggle Content if i bigger than 5
		
		if ( iCriteraLength > 5 && jCriterias.filter(':checked').length < 1 ) {
			var jCriteriaToggle = $j('<p><a class="controler"><span>'+ params.sToggleShow +'</span></a></p>').appendTo(jThis);
			var jCriteriaToggleCont = jCriteriaContent.filter(':gt(4)').wrapAll('<div class="fieldset-toggle"></div>').parent().hide();
			
			jCriteriaToggle.click(function(e){
				e.preventDefault();
				if ( !jCriteriaToggleCont.is(':visible') ){
					jCriteriaToggleCont.slideDown(300);
					jCriteriaToggle.addClass('active').find("span").text(params.sToggleHide);
				} else {
					jCriteriaToggleCont.slideUp(300);
					jCriteriaToggle.removeClass('active').find("span").text(params.sToggleShow);
				}
			});
		}
		
	});
};

window.DSG.initSearchResults = function(){
	var jPrdThumb = $j("#search-results-content ul.results-list li").each(function(i){
		var jThis = $j(this);
		if ( (i+1)%3 == 0 ) {
			jThis.addClass('alt');
		}
	}).simplelabel();
};

window.DSG.initSearchBrowse = function(params){
	var jZoomContainer = $j("#search-star-prd");
	var jActionsBar = jZoomContainer.find('.actions-bar').parents('form');
	var jZoomCont = $j("#zoom-prd-container");
	var iCurrentPage = $j('#iCurrentPage').val();
	
	if(jZoomCont.find(">div").length > 0) {
		var sPrdId = jZoomCont.find(">div").get(0).id;
		var iPrd = sPrdId.slice(9);
		var jThumbs = $j("#search-results-content ul.results-list li");
		var jThumb = $j("#thumb-product-" + iPrd);
		var sThumbLink = jThumb.find("p.prd-image a").attr("href");
		var jThumbSelect = $j('<span class="focus-selected"></span>');
		var jLoader = $j('<span class="loader">loading</span>').appendTo(jZoomContainer).hide();
		
		jThumbSelect.appendTo(jThumb).click(function(){
			document.location = sThumbLink;
		});
		
		jZoomCont.find("p.prd-navigation a").each(function(){
			var jThis = $j(this);
			var sAjaxUrl = jThis.attr("rel").slice(8);
			sAjaxUrl += '&sPriceDir='+$j('#result-order').val().slice(6);
			sAjaxUrl += '&iCurrentPage='+iCurrentPage;
			var isLoading = false;
			
			jThis.click(function(e){
				e.preventDefault();
				if (!isLoading) {
					isLoading = true;
					jLoader.show();
					jZoomCont.remove();
					jThumbSelect.appendTo(jThumb[( jThis.is(".next") )? "next" : "prev"]());
					$j.get(sAjaxUrl, function(data){
						var jForm = $j(data).find(".check-compat");
						jZoomContainer.empty();
						jActionsBar.prependTo(jZoomContainer);
						jForm.appendTo(jZoomContainer);
						jThumbSelect.remove();
						DSG.initSearchBrowse(params);
						DSG.initWorldCheckCompat();
						DSG.initToggleMode(params);
						isLoading = false;
					});
				}
			});
		});
	}
};

window.DSG.initPaginate = function(params) {
	var sAjaxUrl = params.sUrl;
	var jCriteriaSearchForm = $j('#search-criterias');
	var jPageButtons = $j('p.results-pagination').find('input');
	var bZoom = $j('#bZoom').val();
	var jSortSelect = $j('#result-order');
	
	jPageButtons.each(function() {
		var jThis = $j(this);
		var iPage = jThis.attr('name');
		
		jThis.click(function(e) {
			e.preventDefault();
			
			jCriteriaSearchForm.find(":checkbox").unbind();
			
			$j('#search-results').html('<span class="loader">Loading...</span>');
			
			var sPriceCheckedArray = '';
			var AttrCheckedArray = '';
			
			jCriteriasPrice = $j('#price-fieldset').find('input:checkbox').each(function() {sPriceCheckedArray += $j(this).val()+',';});
			jCriteriaSearchForm.find('input:checkbox').not(jCriteriasPrice).filter(':checked').each(function() {AttrCheckedArray += $j(this).val()+',';});
			
			$j.post(sAjaxUrl, {
					'reload': 'true',
					'aAttributes' : AttrCheckedArray,
					'price-range' : sPriceCheckedArray,
					'sort-dir'	  : jSortSelect.val(),
					'change_page' : iPage,
					'bZoom'		  : bZoom
				}, function(dataR) {
					var jContainer = $j("#col-main");
					var jAjaxContent = $j(dataR).find('#col-main');
					jContainer.replaceWith(jAjaxContent);
					DSG.initReloadPart(params);
					DSG.initCriteriaSearch(params);
				}
			);

		});

	});
}

window.DSG.initToggleMode = function(params){
	var sAjaxUrl = params.sUrl;
	var jCriteriaSearchForm = $j('#search-criterias');
	var jToggleMode	= $j('.actions-bar').find('input.view-all-results');
	if( jToggleMode.length != 1 ){
		jToggleMode	= $j('.actions-bar').find('input.view-zoom-results');		
	}
	var bZoom = $j('#bZoom').val();
	var jSortSelect = $j('#result-order');
	var iCurrentPage = $j('#iCurrentPage').val();
	
	
	jToggleMode.each(function(){
		var jThis = $j(this);
		var sToggle = jThis.attr('name');

			
		jThis.click( function(e) {
			e.preventDefault();
			
			jCriteriaSearchForm.find(":checkbox").unbind();
			
			$j('#search-results').html('<span class="loader">Loading...</span>');
			
			var sPriceCheckedArray = '';
			var AttrCheckedArray = '';
			
			jCriteriasPrice = $j('#price-fieldset').find('input:checkbox').each(function() {sPriceCheckedArray += $j(this).val()+',';});
			jCriteriaSearchForm.find('input:checkbox').not(jCriteriasPrice).filter(':checked').each(function() {AttrCheckedArray += $j(this).val()+',';});
			
			$j.post(sAjaxUrl, {	
					'reload': 'true',
					'aAttributes' : AttrCheckedArray,
					'price-range' : sPriceCheckedArray,
					'sort-dir' : jSortSelect.val(),
					'iCurrentPage' : iCurrentPage,
					'action' : sToggle,
					'bZoom' : bZoom
				}, function(dataR) {
					var jContainer = $j("#col-main");
					var jAjaxContent = $j(dataR).find('#col-main');
					jContainer.replaceWith(jAjaxContent);
					DSG.initReloadPart(params);
					DSG.initCriteriaSearch(params);
				}
			);
		});
	});


}

window.DSG.initSortSelect = function (params){
	var sAjaxUrl = params.sUrl;
	var jSortSelect = $j('#result-order');
	var jSortContainer = $j('div.actions-bar').find('p.results-order');
	var jCriteriaSearchForm = $j('#search-criterias');
	
	var bZoom = $j('#bZoom').val();
	
	jSortContainer.find('input').hide();
	
	jSortSelect.change(function() {
		
		jCriteriaSearchForm.find(":checkbox").unbind();
		
		var sPriceCheckedArray = '';
		var AttrCheckedArray = '';
		
		jCriteriasPrice = $j('#price-fieldset').find('input:checkbox').each(function() {sPriceCheckedArray += $j(this).val()+',';});
		jCriteriaSearchForm.find('input:checkbox').not(jCriteriasPrice).filter(':checked').each(function() {AttrCheckedArray += $j(this).val()+',';});
	
		$j('#search-results').html('<span class="loader">Loading...</span>');
		
		$j.post(sAjaxUrl, {
			'reload' : 'true',
			'aAttributes' : AttrCheckedArray,
			'price-range' : sPriceCheckedArray,
			'sort-dir' : jSortSelect.val(),
			'bZoom' : bZoom
		}, function(dataR) {
			var jContainer = $j("#col-main");
			var jAjaxContent = $j(dataR).find('#col-main');
			jContainer.replaceWith(jAjaxContent);
			DSG.initReloadPart(params);
			DSG.initCriteriaSearch(params);
		});
	});
}

window.DSG.initReloadPart = function (params) {
	DSG.initPaginate(params);
	DSG.initToggleMode(params);
	DSG.initSearchBrowse(params);
	DSG.initSearchResults(params);
	DSG.initSortSelect(params);	
	DSG.initWorldCheckCompat();
	DSG.ajaxFitColumnSize();
}

window.DSG.ajaxFitColumnSize = function(){
	var iSearchCriteriaHeight = $j("#search-criterias").outerHeight();
	var iSearchResultHeight = $j('#search-results').outerHeight();
	
	if (iSearchCriteriaHeight < iSearchResultHeight) {
		$j("#search-criterias").css({minHeight: iSearchResultHeight + "px"});
	}
}

window.DSG.initWorldCheckCompat = function(){
	var jForm = $j("#col-main form.check-compat");
	var jCompatibility = jForm.find('input[name="incompatibility"]');
	if (jCompatibility.val() == "on") {
		jForm.submit(function(e){
			e.preventDefault();
			var sAjaxUrl = jForm.find('input[name="sRedirectionUrl"]').val();
			$j.superbox.wait(function(){
				$j.get(sAjaxUrl, function(data){
					var jAjaxCt = $j(data).find("#col-main form")
					var jCancel = jAjaxCt.find("p.submit a.cancel");
					jCancel.click(function(e){
						e.preventDefault();
						$j.superbox.close();
					})
					$j.superbox.open(jAjaxCt, {
						boxWidth : "350",
						boxHeight : "150"
					});
				});
			});
		});
	}
}