if (typeof Orcanta === "undefined") { var Orcanta = {} };

Orcanta.search = {
	
	param: {
		
		filtre: "",
		isDiscount: "",
		isBrand: "",
		isSubtype: "",
		timeout: false,
		isInitialized: false,
		ajaxCpt: 0
	},
	
	/*ajax : function (obj) {
		
		new Ajax.Request( ajaxSearchUrl, {
			method:'POST',
			encoding: 'ISO-8859-1',
			parameters: {'c0-param0': obj.param1, 'c0-param1': obj.filter, 'c0-param2': obj.color, 'c0-param3': obj.size, 'c0-param4': obj.param2, 'c0-param5': obj.discount, 'c0-param6': obj.type},
			onSuccess: function(transport){
				
				var callFunc = (new Function("return " + obj.callback + "(arguments[0])"));
				callFunc(transport.responseText);
			}
		});
		
	},*/
	
	ajax : function (callback, p0, p1, p2, p3, p4, p5, p6) {
		
		new Ajax.Request( ajaxSearchUrl, {
			method:'POST',
			encoding: 'ISO-8859-1',
			parameters: {'brandId': p0, 'productTypeId': p1, 'colorId': p2, 'sizeId': p3, 'filterId': p4, 'isDiscount': p5, 'typeSelect': p6},
			onSuccess: function(transport){
				
				Orcanta.search.callbacks.ajaxCallback(callback, transport.responseText);
			}
		});
		
	},
	
	callbacks: {
		
		setSelect: function(elements, selectId, selectLabel) {
			
			if (elements != null) {
				
				var selectOptions = $(selectId).down("input:checked");
				
				var selectValue = false;
								
				if (typeof selectOptions !== "undefined") {
					selectValue = selectOptions.readAttribute("id");
				}
				
				$(selectId).down(".criteria-ajax").update(elements);
				
				
				Orcanta.search.navigation();
				
				if (selectValue) {
					
					$(selectValue).click();
										
				}

			}
			
		},
		
		ajaxCallback : function (str, response) {
			
			switch (str) {
				
				case "sizeCallback" : 
					Orcanta.search.callbacks.setSelect(response,'selectSize','Taille');
					Orcanta.search.param.ajaxCpt--;
				break;
				case "typeProduitCallback1" :
					Orcanta.search.callbacks.setSelect(response,'selectSecondCategory','Type de produit');
					Orcanta.search.param.ajaxCpt--;
				break;
				case "brandCallback2" :
					Orcanta.search.callbacks.setSelect(response,'selectMainCategory','Marque');
					Orcanta.search.param.ajaxCpt--;
				break;
				case "typeProduitCallback2" :
					Orcanta.search.callbacks.setSelect(response,'selectSecondCategory','Type de produit');
					Orcanta.search.param.ajaxCpt--;
				break;
				case "brandCallback1" :
					Orcanta.search.callbacks.setSelect(response,'selectMainCategory','Marque');
					Orcanta.search.param.ajaxCpt--;
				break;
				case "colorCallback" :
					Orcanta.search.callbacks.setSelect(response,'selectColor','Couleur');
					Orcanta.search.param.isInitialized = true;
					Orcanta.search.param.ajaxCpt--;
				break;
			}
			
		}
		/*sizeCallback: function(sizes) {
			Orcanta.search.callbacks.setSelect(sizes,'selectSize','Taille');
			Orcanta.search.param.ajaxCpt--;
		},
		
		typeProduitCallback1: function(brands) {
			Orcanta.search.callbacks.setSelect(brands,'selectMainCategory','Type de produit');
			Orcanta.search.param.ajaxCpt--;
		},
		
		brandCallback2: function(brands) {
			Orcanta.search.callbacks.setSelect(brands,'selectSecondCategory','Marque');
			Orcanta.search.param.ajaxCpt--;
		},
		
		typeProduitCallback2: function(brands) {
			Orcanta.search.callbacks.setSelect(brands,'selectSecondCategory','Type de produit');
			Orcanta.search.param.ajaxCpt--;
		},
		
		brandCallback1: function(brands) {
			Orcanta.search.callbacks.setSelect(brands,'selectMainCategory','Marque');
			Orcanta.search.param.ajaxCpt--;
		},
		
		colorCallback: function(colors) {
			Orcanta.search.callbacks.setSelect(colors,'selectColor','Couleur');
			Orcanta.search.param.isInitialized = true;
			Orcanta.search.param.ajaxCpt--;
		}*/
		
	},
	
	initChange: function () {
		
		elmFiltre = document.getElementById('filtre');
		if($("filtre") != null) {
			Orcanta.search.param.filtre = $F("filtre");
		}
		
		Orcanta.search.param.isDiscount = ( $('discount')!= null && $F('discount') == 'true' );
		Orcanta.search.param.isBrand = ( $('brand')!= null && $F('brand') == 'true' );
		Orcanta.search.param.isSubType = ( $('subProduct')!= null && $F('subProduct') == 'true' );
		
		if (Orcanta.search.param.isDiscount) {
			Orcanta.search.param.filtre = '';
		}
		
	},
	
	change: function () {
		
		Orcanta.search.param.isDiscount = ($('discount')!= null && $F('discount') == 'true');
		var categoryId1 =  $$("#selectMainCategory input:checked").length ? $$("#selectMainCategory input:checked")[0].getValue() : null,
			categoryId2 =  $$("#selectSecondCategory input:checked").length ? $$("#selectSecondCategory input:checked")[0].getValue() : null,
			colorId =  $$("#selectColor input:checked").length ? $$("#selectColor input:checked")[0].getValue() : null,
			sizeId  = $$("#selectSize input:checked").length ? $$("#selectSize input:checked")[0].getValue().toUpperCase() : null;
		
		if (Orcanta.search.param.isSubType) {
			Orcanta.search.ajax( "typeProduitCallback1",  categoryId1, Orcanta.search.param.filtre, colorId, sizeId, '', Orcanta.search.param.isDiscount, 'sousTypeProduit');
			Orcanta.search.ajax( "sizeCallback", categoryId1, Orcanta.search.param.filtre , colorId, sizeId, categoryId2, Orcanta.search.param.isDiscount, 'size');
			Orcanta.search.ajax( "brandCallback2",  '', Orcanta.search.param.filtre, colorId, sizeId, categoryId2, Orcanta.search.param.isDiscount, 'brand');
			Orcanta.search.ajax( "colorCallback", categoryId1, Orcanta.search.param.filtre, colorId, sizeId, categoryId2, Orcanta.search.param.isDiscount, 'color');
		} else if (Orcanta.search.param.isBrand) {																		;
			Orcanta.search.ajax( "typeProduitCallback2",  categoryId1,'', colorId, sizeId, '', Orcanta.search.param.isDiscount, 'typeProduit');
			Orcanta.search.ajax( "sizeCallback", categoryId1,categoryId2 , colorId, sizeId, '', Orcanta.search.param.isDiscount, 'size');
			Orcanta.search.ajax( "brandCallback1",  '',categoryId2, colorId, sizeId, '', Orcanta.search.param.isDiscount, 'brand');
			Orcanta.search.ajax( "colorCallback", categoryId1,categoryId2, colorId, sizeId, '', Orcanta.search.param.isDiscount, 'color');
		}	else{
			Orcanta.search.ajax( "typeProduitCallback2",  categoryId1,'', colorId, sizeId, Orcanta.search.param.filtre, Orcanta.search.param.isDiscount, 'typeProduit');
			Orcanta.search.ajax( "sizeCallback", categoryId1,categoryId2 , colorId, sizeId, Orcanta.search.param.filtre, Orcanta.search.param.isDiscount, 'size');
			Orcanta.search.ajax( "brandCallback1",  '',categoryId2, colorId, sizeId, Orcanta.search.param.filtre, Orcanta.search.param.isDiscount, 'brand');
			Orcanta.search.ajax( "colorCallback", categoryId1,categoryId2, colorId, sizeId, Orcanta.search.param.filtre, Orcanta.search.param.isDiscount, 'color');

		}
		
		/*if (Orcanta.search.param.isSubType) {
			Orcanta.search.ajax({
				"callback": Orcanta.search.callbacks.typeProduitCallback1,
				"param1": 	categoryId2,
				"filter": 	Orcanta.search.param.filtre,
				"color": 	colorId,
				"size": 	sizeId,
				"param2": 	'',
				"discount": Orcanta.search.param.isDiscount,
				"type": 	'sousTypeProduit'
			});
			Orcanta.search.ajax({
				"callback": Orcanta.search.callbacks.sizeCallback,
				"param1": 	categoryId2,
				"filter": 	Orcanta.search.param.filtre,
				"color": 	colorId,
				"size": 	'',
				"param2": 	categoryId1,
				"discount": Orcanta.search.param.isDiscount,
				"type": 	'size'
			});
			Orcanta.search.ajax({
				"callback": Orcanta.search.callbacks.brandCallback2,
				"param1": 	'',
				"filter": 	Orcanta.search.param.filtre,
				"color": 	colorId,
				"size": 	sizeId,
				"param2": 	categoryId1,
				"discount": Orcanta.search.param.isDiscount,
				"type": 	'brand'
			});
			Orcanta.search.ajax({
				"callback": Orcanta.search.callbacks.colorCallback,
				"param1": 	categoryId2,
				"filter": 	Orcanta.search.param.filtre,
				"color": 	'',
				"size": 	sizeId,
				"param2": 	categoryId1,
				"discount": Orcanta.search.param.isDiscount,
				"type": 	'color'
			});
		}
		else if (Orcanta.search.param.isBrand) {
			
			Orcanta.search.ajax({
				"callback": Orcanta.search.callbacks.typeProduitCallback2,
				"param1": 	categoryId1,
				"filter": 	'',
				"color": 	colorId,
				"size": 	sizeId,
				"param2": 	'',
				"discount": Orcanta.search.param.isDiscount,
				"type": 	'typeProduit'
			});
			Orcanta.search.ajax({
				"callback": Orcanta.search.callbacks.sizeCallback,
				"param1": 	categoryId1,
				"filter": 	categoryId2,
				"color": 	colorId,
				"size": 	'',
				"param2": 	'',
				"discount": Orcanta.search.param.isDiscount,
				"type": 	'size'
			});
			Orcanta.search.ajax({
				"callback": Orcanta.search.callbacks.brandCallback1,
				"param1": 	'',
				"filter": 	categoryId2,
				"color": 	colorId,
				"size": 	sizeId,
				"param2": 	'',
				"discount": Orcanta.search.param.isDiscount,
				"type": 	'brand'
			});
			Orcanta.search.ajax({
				"callback": Orcanta.search.callbacks.colorCallback,
				"param1": 	categoryId1,
				"filter": 	CategoryId2,
				"color": 	'',
				"size": 	sizeId,
				"param2": 	'',
				"discount": Orcanta.search.param.isDiscount,
				"type": 	'color'
			});
		}
		else {
			
			Orcanta.search.ajax({
				"callback": Orcanta.search.callbacks.typeProduitCallback2,
				"param1": 	categoryId1,
				"filter": 	'',
				"color": 	colorId,
				"size": 	sizeId,
				"param2": 	Orcanta.search.param.filtre,
				"discount": Orcanta.search.param.isDiscount,
				"type": 	'typeProduit'
			});
			Orcanta.search.ajax({
				"callback": Orcanta.search.callbacks.sizeCallback,
				"param1": 	categoryId1,
				"filter": 	categoryId2,
				"color": 	colorId,
				"size": 	'',
				"param2": 	Orcanta.search.param.filtre,
				"discount": Orcanta.search.param.isDiscount,
				"type": 	'size'
			});
			Orcanta.search.ajax({
				"callback": Orcanta.search.callbacks.brandCallback1,
				"param1": 	'',
				"filter": 	categoryId2,
				"color": 	colorId,
				"size": 	sizeId,
				"param2": 	Orcanta.search.param.filtre,
				"discount": Orcanta.search.param.isDiscount,
				"type": 	'brand'
			});
			Orcanta.search.ajax({
				"callback": Orcanta.search.callbacks.colorCallback,
				"param1": 	categoryId1,
				"filter": 	CategoryId2,
				"color": 	'',
				"size": 	sizeId,
				"param2": 	Orcanta.search.param.filtre,
				"discount": Orcanta.search.param.isDiscount,
				"type": 	'color'
			});

		}*/
		
	},
	
	navigation: function () {
	
		/* Positionnement des blocks */
		$$(".Block-recherche .criteria-wrapper").each(function(item) {
			var blockRecherche = item.up(".Block-recherche"),
			pos = blockRecherche.positionedOffset(),
			left = pos[0];
			item.setStyle({"left": (45-left)+"px"});
			
		});
				
		
		/* Click sur les boutons radio */
		var radioClick = function (event) {
			
			var label = Event.findElement(event, 'LABEL'),
				input = label.siblings("input")[0],
				isBrand = typeof label.up(".criteria-brand") !== "undefined",
				isProduct = typeof label.up(".criteria-products") !== "undefined",
				isSize = typeof label.up(".criteria-size") !== "undefined",
				isColor = typeof label.up(".criteria-colors") !== "undefined",
				li = label.up("li"),
				ul = label.up("ul"),
				block = label.up(".criteria"),
				link = block.select("a.name span")[0],
				content = li.select("label span")[0],
				liOn = block.select("li.on");
	
			liOn.each(function (elem) {
				elem.removeClassName("on");
			});
			
			var ct = "",
				nbMaxChar = 16;
			
			if (isColor) {
				nbMaxChar = 13;
			}

			ct = content.innerHTML.length > nbMaxChar ? (content.innerHTML.unescapeHTML().substring(0,nbMaxChar-2)+"...") : content.innerHTML.unescapeHTML();
	
			if (ct !== "") {
				link.update(ct);
			}
			
			li.addClassName("on");

			block.removeClassName("open-criteria");
			
			// Merci IE
			input.checked = true;
			
			Orcanta.search.change();
			
		};
		
		
		/* S�lection des produits */
		$$(".criteria-products label, .criteria-brand label, .criteria-colors label, .criteria-size label").each(function(item) {
			item.stopObserving("click");
			item.observe("click", radioClick);
			
			
			// Initialisation
			if (item.adjacent('input[type="radio"]')[0].checked == true) {
				var label = $(item.select("span")[0]),
				isColor = typeof label.up(".criteria-colors") !== "undefined";

				item.up("li").addClassName("on");

				var nbMaxChar = 16;
				
				if (isColor) {
					nbMaxChar = 13;
				}
				
				var ct = label.innerHTML.unescapeHTML().length > nbMaxChar ? (label.innerHTML.unescapeHTML().substring(0,nbMaxChar-2)+"...") : label.innerHTML.unescapeHTML();
				
				item.up(".criteria").select(".name span")[0].update(ct);
			}
			else {
				item.up("li").removeClassName("on");
			}
		});
		
		
		/* Bouton reset */
		$$(".Block-recherche .bt-all").each(function(item) {
			item.stopObserving("click");
			item.observe("click", function (event) {
				Event.stop(event);
				
				var a = Event.findElement(event, 'A'),
					block = a.up(".criteria"),
					link = block.select("a.name span")[0],
					items;

				items = block.select("input[type=radio], input[type=checkbox]");
				
				items.each(function (elem) {
					elem.checked = false;
					elem.up("li").removeClassName("on");
				});
				
				link.update(a.innerHTML);
				block.removeClassName("open-criteria");
				Orcanta.search.change();
			});
		});
		
		/* Module de recherche */
		$$(".Block-recherche .criteria a.name").each(function(item) {
				item.stopObserving("click");
				item.observe("click", function (event) {
					Event.stop(event);
					var a = Event.findElement(event, 'A'),
						blockCriteria = a.up(".criteria"),
						blockRecherche = a.up(".Block-recherche"),
						layers = blockRecherche.select(".open-criteria");

					if (blockCriteria.hasClassName("open-criteria")) {
						blockCriteria.removeClassName("open-criteria");
					}
					else {
						layers.each(function (elem) {
							$(elem).removeClassName("open-criteria");
						});
						
						blockCriteria.addClassName("open-criteria");
					}
				});
			}
		);
		
		/* Boutons de fermeture des layers */
		$$(".Block-recherche .criteria a.bt-fermer").each(function(item) {
			item.stopObserving("click");
			item.observe("click", function (event) {
				Event.stop(event);
				var a = Event.findElement(event, 'A'),
					blockCriteria = a.up(".criteria");
				blockCriteria.removeClassName("open-criteria");
			});
		});
	},
	
	placeHolderFix: function () {
		
		var supports_input_placeholder = function () {
			var i = document.createElement('input');
			return 'placeholder' in i;
		}
		
	    if(supports_input_placeholder() == false){
			$$("input[placeholder]").each( function(input){
				
			    if(input.readAttribute("placeholder")!=""){
			    	
					var inputPos = input.positionedOffset();
					
					input.insert({"after":'<label for="' + input.readAttribute("id") + '" class="input-placeholder">' + input.readAttribute("placeholder") + '</label>'});
					
					var ph = input.adjacent(".input-placeholder")[0],
						dimensions = input.getDimensions();;
					
					var css = {
					    "top": inputPos[1]+parseInt(input.getStyle("border-top-width"),10)+"px",
					    "left": inputPos[0]+parseInt(input.getStyle("border-left-width"),10)+"px",
					    "font-size": input.getStyle("font-size"),
					    "font-weight": input.getStyle("font-weight"),
					    "color": input.getStyle("color"),
					    "padding-top": input.getStyle("padding-top"),
					    "padding-bottom": input.getStyle("padding-bottom"),
					    "padding-left": input.getStyle("padding-left"),
					    "padding-right": input.getStyle("padding-right"),
					    "width": input.getStyle("width"),
					    "height": input.getStyle("height"),
					    "overflow": "hidden",
					    "position": "absolute"
					};
								
					ph.setStyle(css);
		
					input.observe("focus", function(event){
					    ph.hide();
					});
					input.observe("blur", function(event){
						var i = event.target;
					    if($F(i) == "") ph.show();
					});
					
					if (input.value == "") {
						ph.show();
					}
					else {
						ph.hide();
					}
			    }
			});
	    }
	},
	
	init: function () {
		if ($$(".Block-recherche").length > 0) {
			Orcanta.search.navigation();
			Orcanta.search.initChange();
		}
		Orcanta.search.placeHolderFix();
	}
};

document.observe("dom:loaded", function() {
	Orcanta.search.init();
});
