$(function(){
	var self = this;
	var s_cookie = {category:'',ids:''};
	var cookie_name = "mejorprecioar_compare";
	var cookie_domain = (location.href.indexOf('terra.com.ar') > 0) ? ".terra.com.ar" : ".mejorprecio.com.ar";
	var current_page = $('#product-list');
	var current_category = $('#boxProduct').attr('class');
	var current_subcategory = current_page.attr('class');
	
	if(current_page.size() == 0){
		current_page = $('#product-galery');
		current_subcategory = current_page.attr('class');
	}
	
	this.init = function(){
		// leio o cookie para obter os ids
		self.get_cookie();
			
		$('input[@name=compare-check]').each(function(){
			this.checked = false;
		});
		
		if(self.check_current_cookie()){
			var cookie_data = s_cookie.ids.replace("null","").replace(/^\,+|\,+$/g,'').split(',');
			for(i = 0;i < cookie_data.length;i ++){
				var label = $('label#'+ cookie_data[i]);
				
				if(label){
					label.addClass('selected');
					$('input[@name=compare-check]:eq(0)', label).attr('checked','checked');
				}
			}
		}
		
		// açoes para os links e checkbox que fazem a seleção dos produtos para comparação
		$("a.select, input[@name=compare-check]").click(self.select_product);
		
		// selects de ordenação e itens por pagina
		$('select[@name=orderType]').change(self.order_type);
		$('select[@name=resultOffset]').change(self.result_offset);
		
		// atribui ações aos links de imagem
		$('a.image:not(.error)').mouseover(self.addzoom);
		
		$('#product-visualization li a').click(self.update_page_type);
		
		self.update_compare();
		
		$('a.image span.zoom').remove();
		
		$('img','ul li a.image').each(function(){
			$(this).attr('alt','Ampliar imagen');
			$(this).parents('a').addClass('thickbox').attr('href', $(this).parents('a').attr('href') +'&top=true');
		});
		
		
		$('ul li a.image').mouseup(function(e){
			var left_button = $.browser.msie ? 1 : 0;
			var middle_button = $.browser.msie ? 4 : 1;
			var right_button = 2;
			
			if((e.button == middle_button && !$.browser.msie) || e.button == right_button){
				$(this).attr('href',$(this).attr('href').replace('&top=true',''));
			}else{
				if($(this).attr('href').indexOf('top=true') == -1){
					$(this).attr('href', $(this).attr('href') +'&top=true');
				}
			}
		});
		
		tb_init('a.thickbox'); 
	};
	
	// método para criar cookie
	this.set_cookie = function(page_type, subcategory){
		var category = ($.trim(subcategory) == "" ? current_subcategory : subcategory);
		var ids = ($.trim(s_cookie.ids) == "" ? "null" : s_cookie.ids);
		var value = page_type +"|"+ category +"|"+ ids;
		var expires = "";
		document.cookie = cookie_name +"="+ escape(value) +''+ expires +"; domain="+ cookie_domain +"; path=/;";
		
		// leio o cookie novamente
		self.get_cookie();
	};
	
	// método para pegar um cookie específico
	this.get_cookie = function(){
		var start = document.cookie.indexOf(cookie_name +"=");
		var len = start + cookie_name.length + 1;
		
		if(!start && cookie_name != document.cookie.substring(0, cookie_name.length)){
			return
		}
		
		if(start == -1){
			return;
		}
		var end = document.cookie.indexOf( ";", len );
		
		if(end == -1){
			end = document.cookie.length;
		}
		
		var cookie_data = unescape(document.cookie.substring(len,end)).split('|');
		
		if(cookie_data.length >= 3 && $.trim(cookie_data[0]) != "" && $.trim(cookie_data[0]) != "undefined"){
			s_cookie = {
				page_type: cookie_data[0],
				category: cookie_data[1],
				ids: cookie_data[2]
			};
		}else{
			s_cookie = {
				page_type: "product-galery",
				category: cookie_data[0],
				ids: cookie_data[1]
			};
		}
	};
	
	// método para deletar cookie
	this.erase_cookie = function(){
		document.cookie = cookie_name +"=; expires=Thu, 01-Jan-1970 00:00:01 GMT; domain="+ cookie_domain +"; path=/;";
	};
	
	// método que checa se o a categoria atual é mesma categoria do cookie
	this.check_current_cookie = function(){
		if(s_cookie && s_cookie.category == current_subcategory){
			return true;
		}else{
			return false;
		}
	};
	
	// adciona um id ao cookie
	this.cookie_add_id = function(id){
		self.get_cookie();
		
		var cookie_data = $.trim(s_cookie.ids).replace("null","").replace(/^\,+|\,+$/g,'').split(',');
		var id_exists = false;
		
		for(i = 0;i < cookie_data.length;i ++){
			if(cookie_data[i] == id){
				id_exists = true;
			}
		}
		
		if(!id_exists){
			cookie_data.push(id);
			s_cookie.ids = cookie_data.join(',').replace(/^\,+|\,+$/g,'');
			self.set_cookie(self.get_page_type(), current_subcategory);
		}
	};
	
	// remove um id do cookie
	this.cookie_rm_id = function(id){
		var cookie_data = $.trim(s_cookie.ids).replace("null","").replace(/^\,+|\,+$/g,'').split(',');
		var new_cookie_data = [];
		
		for(i = 0;i < cookie_data.length;i ++){
			if(cookie_data[i] != id){
				new_cookie_data.push(cookie_data[i]);
			}
		}
		
		s_cookie.ids = new_cookie_data.join(',').replace(/^\,+|\,+$/g,'');
		
		self.set_cookie(self.get_page_type(), current_subcategory);
	};
	
	// adiciona lupa a imagem
	this.addzoom = function(e){
		e.stopPropagation(); e.preventDefault();
		var current_zoom = $('span.zoom', this);
		
		if(current_zoom.size() == 0){
			var zoom = $('span.zoom');
			zoom.remove();
			
			var lupa = '<span class="zoom"><span></span></span>';
			$(lupa).appendTo(this);
			
			$('span.zoom').mouseout(function(){
				$(this).remove();
			});
		}
		
		return;
	};
	
	// atualiza links de compare
	this.update_compare = function(){
		var selecteds = $('label.selected');
		
		if(!s_cookie){
			set_cookie(self.get_page_type(),current_subcategory);
		}
		
		var cookie_data = s_cookie.ids.replace("null","").replace(/^\,+|\,+$/g,'').split(',');
		
		if(cookie_data.length > 1){
			selecteds.addClass('compare');
			selecteds.find('a.select').text('Comparar seleccionados');
		}else{
			selecteds.removeClass('compare');
			selecteds.find('a.select').text('Seleccione otros productos');
		}
	};
	
	// envia o usuário para comparação
	this.goto_compare = function(){
		$('input#comparison-form-aux-id').val(s_cookie.ids.replace("null","").replace(/^\,+|\,+$/g,''));
		$('form#comparison-form-aux').submit();
	};
	
	// checa se o usuário já selecionou 5 ids de produto
	this.check_cookie_total = function(){
		if(!s_cookie){
			set_cookie(self.get_page_type(),current_subcategory);
		}
		
		var cookie_data = s_cookie.ids.replace("null","").replace(/^\,+|\,+$/g,'').split(',');
		if(cookie_data.length < 5){
			return true;
		}else{
			alert("Podés comparar solamente 5 productos por vez");
			return false;
		}
	};
	
	// ação para os links "selecione e compare"
	this.select_product = function(e){
		// caso a categoria atual não seja a mesma do cookie
		if(!self.check_current_cookie()){
			// deleto o cookie
			self.erase_cookie();
			s_cookie = {category:current_subcategory,ids:''};
			// crio o cookie zerado
			self.set_cookie(self.get_page_type(), current_subcategory);
		}
		
		var label = $(this).parents('label');
		var nodeName = this.nodeName.toLowerCase();
		// caso o elemento clicado seja um link
		if(nodeName == 'a'){
			e.stopPropagation(); e.preventDefault();
			
			var checkbox = label.find('input:checked');
			var product_id = label.find('input').val();
			
			if(checkbox.size() == 0 && !label.attr('class')){
				if(self.check_cookie_total()){
				// marco o alemente como selecionado
					self.cookie_add_id(product_id);
					label.find('input')[0].checked = true;
					label.removeClass().addClass('selected');
					$(this).text('Seleccione otros productos');
				}else{
					$(this).reset();
				}
			}else if(label.attr('class') && label.attr('class').indexOf('compare') == -1){
				// coloco o elemento no estagio inicial
				self.cookie_rm_id(product_id);				
				$(this).reset();
			}else{
				// mando o usuário para comparação
				self.goto_compare();
			}
		}
		
		// caso o elemento clicado seja um checkbox
		if(nodeName == 'input'){
			var product_id = $(this).val();
			
			if($(this).is(':checked')){
				if(self.check_cookie_total()){
					self.cookie_add_id(product_id);
					label.removeClass().addClass('selected');
					$('a',label).text('Seleccione otros productos');
				}else{
					$(this).reset();
				}
			}else{
				self.cookie_rm_id(product_id);
				$(this).reset();
			}
		}
		
		self.update_compare(this);
	};
	
	// ordenação
	this.order_type = function(){
		var ord = $(this).val();
		location.href = ord;
	};
	
	// ordenação
	this.result_offset = function(){
		var param = "num="+ $(this).val();
		
		if(!param) return;
		
		if(location.href.match(/num=[^&]+/gi)){
			location.href = location.href.replace(/&?start=[0-9]{1,}/,'').replace(/num=[^&]+/gi,param);
		}else{
			var href = location.href.replace(/&?start=[0-9]{1,}/,'');
			location.href = href + ((href.indexOf('?') > -1) ? (href[href.length - 1] == '?' ?  '' : '&') : '?') + param;
		}
	};
	
	// pega o tipo da página (galeria|lista)
	this.get_page_type = function(){
		return $('#storeFront').attr('class');
	};
	
	// atualiza o tipo da página no cookie
	this.update_page_type = function(e){
		e.stopPropagation(); e.preventDefault();
		
		var type = $(this).attr('href').replace(/.*v=([^&]+).*/,"$1");
		if(type == "lista"){
			page_type = "product-list";
		}else if(type == "galeria"){
			page_type = "product-galery";
		}
		
		var category = "";
		if(s_cookie.category != ""){
			category = s_cookie.category;
		}
		
		self.set_cookie(page_type, category);
		
		location.href = $(this).attr('href');
	};
	
	$.fn.extend({
		reset: function(){
			$(this).parents('label').find('input').removeAttr('checked');
			$(this).parents('label').removeAttr('class');
			$(this).parents('label').find('a').text('Seleccione y compare');
		}
	});
	
	this.init();
});

$(window).load(function(){
	$('.zoom').remove();
});

// erro nas imagens
function image_error(img){
	$(img).parents('a.image').removeClass('thickbox').addClass('error');
	
	var new_url = $(img).parents('a.image').next('h3').find('a').attr('href');
	$(img).parents('a.image').attr('href',new_url);
	
	var cDepto = $('#boxProduct').attr('class');
	var imageNotFoundUrl = "http://img.mejorprecio.com.ar/no_disponible/" + cDepto + "-no-disponible100.gif";
	
    img.src = imageNotFoundUrl;
	
	// atribui ações aos links de imagem
	$('.image:not(.error)').mouseover(self.addzoom);
	
	$('.image span.zoom').remove();
	
    return true;
}
	





























