/*Inicio de configuracoes de carousel*/
function mycarousel_initCallback(carousel) {
    jQuery('.jcarousel-control a').bind('click', function() {
        carousel.scroll(jQuery.jcarousel.intval(jQuery(this).text()));
        return false;
    });

    jQuery('.jcarousel-scroll select').bind('change', function() {
        carousel.options.scroll = jQuery.jcarousel.intval(this.options[this.selectedIndex].value);
        return false;
    });

    jQuery('#mycarousel-next').bind('click', function() {
        carousel.next();
        return false;
    });

    jQuery('#mycarousel-prev').bind('click', function() {
        carousel.prev();
        return false;
    });        
    
    setTimeout(function() { gotoNext(); }, 5000);
};

var timeNews = true;

function gotoNext()
{
    if (timeNews)
    {
        if ($("div.jcarousel-control").attr("current") == null)
        {
            $("div.jcarousel-control").attr("current","1");
        }
        current = parseInt($("div.jcarousel-control").attr("current"));
        $($("div.jcarousel-control a").get(current)).click();
        timeNews = true;
        
        newcurrent = parseInt($("div.jcarousel-control").attr("current"));
        newcurrent++;
        if ($("div.jcarousel-control a").length == newcurrent)
        {
            $("div.jcarousel-control").attr("current","0");
        }
        else
        {
            $("div.jcarousel-control").attr("current",newcurrent);
        }
        
        setTimeout(function() { gotoNext(); }, 5000);
    }
}

function MouseOutNewsButton(id,path)
{
    $("#"+id)[0].style.cursor = 'default';
    if ($("#"+id).attr("on")==null || $("#"+id).attr("on") == "0")
    {
        imgSwap(id,path);
    }    
}

function MouseOverNewsButton(id,path)
{
    $("#"+id)[0].style.cursor = 'pointer';
    if ($("#"+id).attr("on")==null || $("#"+id).attr("on") == "0")
    {
        imgSwap(id,path);
    }       
}

// Ride the carousel...
jQuery(document).ready(function() {
    if ($("#mycarousel").length > 0)
    {
        jQuery("#mycarousel").jcarousel({
            scroll: 1,
		    visible:1,
            initCallback: mycarousel_initCallback,
		    buttonNextHTML: null,
		    buttonPrevHTML: null
        });        
    }
});
/*Fim de configuracoes de carousel*/

function marca_breve(id, img)
{    
    if (timeNews != null)
        timeNews = false;
	var agt = navigator.userAgent.toLowerCase();	

	for(var i=1;i<6;i++)
	{
		obj_img="img"+i;
		$("#"+obj_img).attr("on","0");
		obj_src="/img/"+i+"_off.png";
		
		if (agt.indexOf("msie") != -1)
		{
			document.getElementById(obj_img).filters(0).src=obj_src
		}
		else	
		{
			document.getElementById(obj_img).src=obj_src
		
		}
	
	}	
	$("#"+id).attr("on","1");
	
	var elem = document.getElementById(id);
	
	if (agt.indexOf("msie") != -1)
	{
		elem.filters(0).src = img;
		
	}
	else	
	{
		elem.src = img;		
	}

}



/***********************************************/
function formatTextFromJson(text)
{
    if ("" != text)
        //return text.replace("&apos;", "'");
        return $("<div/>").html(unescape(text)).text().replace("<", "&lt;").replace(">", "&gt;");
    return text;
}

function unescapeHTML(html) {   
    var htmlNode = document.createElement("DIV");   
    htmlNode.innerHTML = html;   
    if(htmlNode.innerText)      
        return htmlNode.innerText; // IE  
    return htmlNode.textContent; // FF
}

function nextSibling(obj,tag){
		var siblings = obj.parent().children();
		obj.attr("marker","true");
		cnt = 0;
		next_sibling = 0;
		siblings.each(function(){
			if($(this).attr("marker") == "true") cnt = 1;
			if(cnt == 1 && $(this)[0].tagName == tag) {
				next_sibling = $(this);
				obj.attr("marker",false);
				cnt++;
			}
		});
		return next_sibling;
}
function padcents(valor){
	valor = valor+"";
	if(valor.indexOf(".")>=0) {
		uni = valor.split(".")[0];
		dec = valor.split(".")[1];
		if(dec.length == 1) dec+="0";
		return uni+","+dec;
	} else {
		return valor+",00";
	}				
}

function arredonda_euros(valor){
	return Math.round(valor*100)/100;
}

function isValidNumber(inpString) {
   return /^[-+]?\d+(\.\d+)?$/.test(inpString);
}

/**
*	combobox - implementa as selects custom de todo o site
*
*	@param 	jquery 	sel_obj			Objecto (colecção) jquery com os SELECTS a transformar
*	@returns void
*/

function combobox(sel_obj,start_zindex){
	var cnt_zindex = 2000;
	sel_obj.each(function(){
		//transformar a hash que é passado no REL, no objecto params através do eval.
		eval("var params = "+$(this).attr("rel"));
		var select_name = $(this).attr("name");
		$(this).attr("name","combobox_old_select_name_"+select_name);
		$(this).after("<div class='combobox_container'></div>");
		var container = $(this).parent().children("div.combobox_container");		
		container.css("position","relative");
				
		if($(this).attr("id")) {
			container.attr("id",$(this).attr("id"));
			$(this).attr("id","toremove_"+$(this).attr("id"));
		}
	
		$(this).css("visibility","hidden").remove();
		container.append("<div class='combobox_header'></div>");		
		var header = $("div.combobox_header",container);
		var w = header.parent().innerWidth()+1;
		
		if(params && params.writable == true){
			header.append("<input type='text' name='' size=2 style='width:"+(header.parent().width()-20)+"px;' value=''/>");
			var input_text = $("INPUT[@type=text]",header);
			var input_value = input_text;
			input_text.bind("click",function(event){
				event.stopPropagation();
				if($("div.combobox_list:visible",container).size()>0){
					$("div.combobox_list:visible",container).hide();
					header.toggleClass("combobox_header_opened");
				}
			});
			input_text.attr("name",select_name);
			if(params && params.writable_default_first == true) input_text.val($("OPTION:selected",this).text());
			
		} else if(params && params.image == true){
			header.append("<div class='combobox_img_holder'><img src='/img/spacer.gif'/></div>");
			header.append("<input type='hidden' name='' value=''/>");
			var input_text = $("DIV.combobox_img_holder",header);
			var input_value = $("INPUT[@type=hidden]",header);
			input_value.attr("name",select_name);
			input_value.val($("OPTION:selected",this).val());
			$("IMG",input_text).css("backgroundColor",$("OPTION:selected",this).text());
			header.css("overflow","hidden");
			$("IMG",input_text).width(header.parent().width()-19);
		} else {
			header.append("<input type='text' name='' size=2 style='width:"+(header.parent().width()-23)+"px;' value=''/>");
			header.append("<input type='hidden' name='' value=''/>");
			var input_text = $("INPUT[@type=text]",header);
			var input_value = $("INPUT[@type=hidden]",header);
			input_text.attr("name","combotext_"+select_name).attr("readonly",true).val($("OPTION:selected",this).text());
			input_value.attr("name",select_name);
			input_value.val($("OPTION:selected",this).val());
			if(params && params.empty_first == true) {
				input_value.val("");
				input_text.val("");
			}
		}
	
	
		container.append("<div class='combobox_list'></div>");
		var list = $("div.combobox_list",container);
		list.width(w-(list.outerWidth()-list.innerWidth()));
		
		$("OPTION",this).each(function(){
			if(params && params.image == true){
				list.append('<a href="#" class="image" data="'+$(this).val()+'" style="background-color:'+$(this).text()+'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a><br/>');
			} else {
				list.append('<a href="#" data="'+$(this).val()+'">'+$(this).text()+'</a><br/>');
			}
		});
			
		container.rebuild = function(){
			
			container.unbind("addclicks").bind("addclicks",function(){
				$("A",list).unbind("addLinkClicks").bind("addLinkClicks",function(){
					$(this).unbind("click").bind("click",function(event){
						event.preventDefault();
						if(params && params.image == true){
							input_value.val($(this).attr("data"));
							$("IMG",input_text).css("backgroundColor",$(this).css("backgroundColor"));
							header.css("overflow","hidden");
							$("IMG",input_text).width(header.parent().width()-19);
						} else {
							input_text.val($(this).text());
							input_value.val($(this).attr("data"));
						}
						if(params && params.change) params.change(input_text.val(),input_value.val(),container);
					});
				});
				container.unbind("click").bind("click",function(){
					var listState = list.css("display");
					var headerState = header.css("backgroundImage");
					$("div.combobox_list").hide();
					$("div.combobox_header").css("backgroundImage","url(/img/bot_combobox_down.gif)");
					//$(".todas_faqs .combobox_container div.combobox_header").css("backgroundImage","url(/img/bot_combobox_white_down.gif)");
					//$(".ver_faq .combobox_container div.combobox_header").css("backgroundImage","url(/img/bot_combobox_white_down.gif)");
					list.css("display",listState);
					header.css("backgroundImage",headerState);
					list.toggle();
					if(header.css("backgroundImage").indexOf("down")>=0) {
						header.css("backgroundImage","url(/img/bot_combobox_up.gif)");
					}
					else {
						header.css("backgroundImage","url(/img/bot_combobox_down.gif)");
					}
				});
				$("A",list).trigger("addLinkClicks");
			});
			//02.09.007 correcção combos!!; era: if($("A",list).size()>1) 
			if($("A",list).size()>0) container.trigger("addclicks");
			if(params && params.empty_first == true && !params.image && !params.writable) {
				input_value.val("");
				input_text.val("");
			}
		};
		if($("OPTION",this).size()>0) container.rebuild();
		container.get(0).rebuild = container.rebuild;
	});
	//reconstruir os z-indexes de todos os containers no final para que mantenham a ordem de sobreposição
	$("div.combobox_container").each(function(){cnt_zindex--;$(this).css("zIndex",cnt_zindex);});
};


/***********************************************/

/************************************************
	Código On Document Ready
************************************************/

$(function(){
	/**** Eliminar outlines das checkboxes e radio buttons ****/
	$("INPUT[@type=radio],INPUT[@type=checkbox]").bind("focus",function(){this.blur();});
	
	
	
	/**** MENU NAVEGAÇÃO PULLDOWN ****************/
	$("#nav_menu>LI").each(function(){
		if($("OL",this).size()>0 && $(this).attr('class').indexOf('active')<0){
			$(this).append("<img class='active_arrow' src='/img/nav_menu_arrow.gif'/>");
			$("img.active_arrow",this).css("left",($(this).offset().left)+($(this).width()/2)-10);
			$(this).hover(
				function(){
					$("img.active_arrow",this).css("opacity",0.9);
					$("img.active_arrow",this).show();
					$("OL LI A",this).each(function(){
					    /* VT: AMG: hack para funcionamento do EditInPlace */
						var firstArray = $(this).html().split(" ");
						var str = "";
						var foundImage = false;
						for (var i=0; i<firstArray.length; i++)
						{
							if (foundImage)
							{
								str += firstArray[i] + " ";
							}
							else
							{
								if (firstArray[i].indexOf("<IMG") > 0)
								{
									str += firstArray[i] + " ";
									foundImage = true;
								}
								else
									str += firstArray[i] + "&nbsp;";
							}
						}
						$(this).html(str);
						/* VT: AMG: hack para funcionamento do EditInPlace */
						/* Original: $(this).html($(this).html().split(" ").join("&nbsp;"));*/
					});//Hack para IE 6.0
					$("OL",this).css("opacity",0.9).show();
					$("OL LI A",this).css("display","inline-block");//Hack para IE 6.0
				},
				function(){
					$("img.active_arrow",this).hide();
					$("OL",this).hide();
			});
		}
	});
		
	/**** MENU ACESSO DIRECTO ****/
	$("div.menu_acesso_directo").hover(function(){
		padding = parseInt($("UL",this).css("paddingRight"))+parseInt($("UL",this).css("paddingLeft"));
		$("UL",this).width($(this).width()-padding).css("overflow","hidden");
		$("UL",this).slideDown("fast");
		$("span", this).css("color", "#000000");
		$(this).addClass("menu_acesso_directo_active");
		
	},function(){
		$("UL",this).slideUp("fast");
		$("span", this).css("color", "#FFFFFF");
		$(this).removeClass("menu_acesso_directo_active");
	});
	
	
	
	/**** HOVER MENU LATERAL ****/
	//Hover Menu Lateral
	$("#leftcol UL.leftcol_menu LI").hover(function(){$(this).addClass("hover");},function(){$(this).removeClass("hover");});
	
	/**** TOOL TIPS ****/
	//Mouse Over dos preços
	//Só activa os elementos com a classe css .tooltip que possuam um atributo title
	//O atributo title contém o texto a mostrar no hover
	//$(".tooltip[@title]").css("cursor","default").Tooltip({track: true,delay: 0});
	//adicionado por tsousa
	$.meta.setType("attr", "data");
	$(".tooltip[@title]").css("cursor","default").ToolTip({
		className: "tooltip_skin",
		position: "mouse"
	});
	
	/*
	$(".tooltip1[@title]").css("cursor","default").ToolTip({
		className: "tooltip_skin1",
		position: "mouse"
	});
	*/
	
	/**** EQUIPAMENTOS SLIDER PREÇO ****
	* A tag com a class scroller opcionalmente pode conter um atributo "data" definido do seguinte modo:
	* <div class='scroller' data="{min:100, max:1000, init:550}">
	* Em que:
	* min: integer -> Valor mínimo em euros, do slider -> default: 100
	* max: integer -> Valor máximo em euros, do slider -> default: 1000
	* init: integer -> Valor inicial, em euros, do slider -> default: max
	*
	* Todos os parâmetros são opcionais, inclusivé a presença do próprio atributo "data"
	*/
	$.meta.setType("attr", "data");
	$(".scroller").each(function(){
		var min 	= $(this).data().min || 100;
		var max 	= $(this).data().max || 1000;
		var init 	= $(this).data().init || max;
				
		var real_width = jQuery.iUtil.getSize(this).w - jQuery.iUtil.getSize($(".slider",this).get(0)).w;		
		this.percentToPrice = function(value){return min+((value*(max-min))/100);};
		this.priceToPercent = function(preco){return ((preco-min)*100)/(max-min);};
		this.priceToWidth = function(preco){return Math.ceil(((preco-min)*real_width)/(max-min));};
		var init_position = this.priceToWidth(init);
		$(this).Slider(
			{
				accept: '.slider',
				onSlide: function (pX, pY, x, y){$("#preco").val($(this).parent().get(0).percentToPrice(pX));},
				values: [[init_position,0]]
			}
		);
		
	});
		
	/**** EQUIPAMENTOS Menus laterais pesquisa ****/
	var pulldown_status = false;
		
    /*AMG*/
    
    jQuery.fn.SlideOutMenu = function()
    {
        $(this).parent().parent().parent().toggleClass("up");
        ul = $(this).parent().parent();
        ul.SlideOutUp("fast",function(){pulldown_status = false;});
    };
	jQuery.fn.GenerateModelsDropDowns = function(marca, PageLoad)
	{
		$.meta.setType("elem", "script");
		var modelsArray = $("div SPAN.data").data().modelsArray;
		$.meta.setType("");
		
		if (marca == "" || marca == undefined)
		{
			var pulldownMarca = $("#pulldown_marca");
			pulldownMarca.html("");
			
			var htmlMarca = '<li><a href="#">Todas</a></li>';
			
			for (theID in modelsArray)
				if (isValidNumber(theID))
					if (modelsArray[theID].id_marca != "starter")
						htmlMarca += '<li><a href="#" arrayIndex="'+theID+'" data="'+modelsArray[theID].id_marca+'">'+formatTextFromJson(modelsArray[theID].marca)+'</a></li>';

			pulldownMarca.html(htmlMarca);
		}
		else
		{
			$("#pulldown_modelo").html("");

			var htmlModelo = '';
			
			if (marca != "Todas")
            {	                
                //modelos para uma marca específica	
                // JF Begin : Correccao da Marca errada apos pesquisa
	            if (PageLoad != "PageLoad")
	            {
			        for (indexMarca in modelsArray) {
				        if (isValidNumber(indexMarca)) {
				            if (modelsArray[indexMarca].id_marca == marca)
					            break;
					    }
			        }
			    } else {
			        for (indexMarca in modelsArray) {
				        if (isValidNumber(indexMarca)) {
				            if (unescapeHTML(formatTextFromJson(modelsArray[indexMarca].marca)) == marca)
					            break;
					    }
			        }
			    }			    
                // JF End : Correccao da Marca errada apos pesquisa
			    for (theID in modelsArray[indexMarca].listaModelos)
				    if (isValidNumber(theID))
					    if (modelsArray[indexMarca].listaModelos[theID].id_modelo != "starter")
						    htmlModelo += '<li><a href="#">'+formatTextFromJson(modelsArray[indexMarca].listaModelos[theID].modelo)+'</a></li>';
		    }
		    else
		    {
		        //modelos para todas as marcas
		        for (marcaIndex in modelsArray)
		        {
			        for (theID in modelsArray[marcaIndex].listaModelos)
				        if (isValidNumber(theID))
					        if (modelsArray[marcaIndex].listaModelos[theID].id_modelo != "starter")
						        htmlModelo += '<li><a href="#">'+formatTextFromJson(modelsArray[marcaIndex].listaModelos[theID].modelo)+'</a></li>';		    		        
		        }		        
		    }		    

			$("#pulldown_modelo").html(htmlModelo);
			
			//ordernar os modelos
			sortListTlm("pulldown_modelo",false);	
			
			//adicionar o todos no início do HTML, depois da ordenação, para ficar como 1º item da lista		
			htmlModelo = '<li><a href="#">Todos</a></li>' + $("#pulldown_modelo").html();			
			$("#pulldown_modelo").html(htmlModelo);
			
			$("div.pulldown UL#pulldown_modelo LI A").bind("click",function(){
	            $(this).SlideOutMenu();
				$("#modelo").val($(this).html());
				return false;
			});
		}
	};
	if ($("#pulldown_marca").length > 0)
	{
	    $(this).GenerateModelsDropDowns();
	    $("div.pulldown UL#pulldown_marca LI A").bind("click",function(){
	        $(this).SlideOutMenu();
	        $(this).GenerateModelsDropDowns($(this).attr("data"));
	        $("#marca").val($(this).html());
	        $("#modelo").val("Todos");
		    return false;
	    });
		$("div.pulldown UL#pulldown_procuro LI A").bind("click",function(){
	        $(this).SlideOutMenu();
			$("#procuro").val($(this).html());
			return false;
		});
	}
	$("div.pulldown div.titulo").bind("click",function(){
		var ul = $("UL",$(this).parent());			
		if(pulldown_status == false || pulldown_status == ul.attr("id")){
			$("UL",$(this).parent()).SlideToggleUp("fast",function(){
				//se o css.display == block então abriu-se o menu
				if($(this).css("display") == 'block') pulldown_status = this.id;
				else pulldown_status = false;
			});
			$(this).parent().toggleClass("up");
		}
	});
	/*AMG*/
	
		
	/**** EQUIPAMENTOS METADATA ****
	{cores:[
		{
			id_cor: '1029',
			preco_offline: '359,80',
			preco_online: '300,80',
			precos_pontos:[
				{id_preco: 'p1',descricao: '310,80 + 1800 Pontos'},
				{id_preco: 'p2',descricao: '450,80 + 800 Pontos'},
				{id_preco: 'p3',descricao: '650,80 + 100 Pontos'}
			],
			url_equipamento: 'img_temp/telemoveis_nokia6103_c1.jpg',
			rgb_cor: 'FF00FF'
		},
		{
			id_cor: '1039',
			preco_online: '300,80',
			precos_pontos:[
				{id_preco: 'p4',descricao: '110,80 + 2800 Pontos'},
				{id_preco: 'p5',descricao: '250,80 + 1000 Pontos'},
				{id_preco: 'p6',descricao: '350,80 + 200 Pontos'}
			],
			url_equipamento: 'img_temp/telemoveis_nokia6103_c2.jpg',
			rgb_cor: 'FF00FF'
		}
	]}
	*********************************/
	$.meta.setType("elem", "script");
	//Sacar dados e copiá-los como prop para o container .col_equipamento
	//esconder o SPAN que contém o script JSON com os dados
	$(".col_equipamento SPAN.data").each(function(){
		$(this).css("display","none");
		$(this).parent().get(0).cores = $(this).data().cores;
		
		// AMG obter categoria de cada equipamento
		$(this).parent().get(0).categoria = $(this).data().categoria;
	});
	
	/**********************************************************************************************
	* O IE "estraga" o layout dos outros blocos na coluna quando se mostra o bloco comparar
	* para resolver a questão é necessário:
	* 	1) 'escondê-los', sse estejam visíveis
	* 	2) mostrar o block que é suposto aparecer
	* 	3) mostrar os blocos que foram escondidos
	**********************************************************************************************/
	var comparar_checkbox_group = $("#comparar_equipamentos .checkbox_group");
	comparar_checkbox_group.bind("resized",function(){
		var blocks_to_hide = new Array();
		$("#leftcol .form_block").each(function(){if( ($(this).attr("id")) && ($(this).attr("id").indexOf("comparar_equipamentos")<0) && ($(this).css("display")!="none")) blocks_to_hide.push(this);});
		
    //se têm o texto base, então retira-o e muda a src do botão:
		if($("span",this).size() > 0) {
			$("span",this).remove();
			//nmgrilo: compare only if > 1
			//$("#comparar_equipamentos A.bot_comparar img").attr("src", "/img/telemoveis_bot_comparar.gif");
		}
		
		var comparar_params = new Array();
		$("label",comparar_checkbox_group).each(function(){
			//tsousa
			$("INPUT[@type=checkbox]", this).each(function() {
			    if ($(this).attr("checked") != null)
			        comparar_params.push($(this).attr("mobile"));
			});					
		});
		var cookie = "MobileCompare=" + comparar_params + "; path=/";
		//window.alert(cookie);
		document.cookie = cookie;

    //Recontar o num_de_equipamentos 
		if($("label",this).size() > 0) {
			$(blocks_to_hide).hide();
			//$("#comparar_equipamentos").show();
			$(blocks_to_hide).show();

			//nmgrilo: compare only if > 1
			if($("label",this).size() > 1) {
			    var botComparar = $("#comparar_equipamentos A.bot_comparar");
			    $("img", botComparar).attr("src", "/img/telemoveis_bot_comparar.gif");
    			botComparar.unbind("click").bind("click",function(event){
	    			event.preventDefault();
		    		event.stopPropagation();

/*				
				var action = "Comparar";
				
				
				if(-1 == window.location.href.search("Telemoveis/Destaques"))
				    action = "Telemoveis/Comparar";
				    //$("#compare").attr('action', 'Telemoveis/Comparar');
				    
				if("/" == window.location.href.charAt(window.location.href.length-1))
				    action = "../" + action;
				
				$("#compare").attr('action', action);*/
				$("#compare INPUT[@name='compareMobiles']").val(comparar_params);
				//$("#compare INPUT[@name='compareMobiles']").val("aaa");
				$("#compare").submit();
				
				/*** A REMOVER ***/
				//var msg = "Ir para URL a designar, levando a lista de equipamentos a comparar:\n\n";
				//for(i=0;i<comparar_params.length;i++) msg += "* id_cor: "+comparar_params[i]+"\n";
				//alert(msg);
				/*****************/
			    });
			} else {
			    $("#comparar_equipamentos A.bot_comparar img").attr("src", "/img/telemoveis_bot_comparar_inactivo.gif");
			    $("#comparar_equipamentos A.bot_comparar").unbind("click");
			}
		} else {
			/*$(blocks_to_hide).hide();
			$("#comparar_equipamentos").hide();
			$(blocks_to_hide).show();
			*/
			/* mostra o texto base quando não há telemóveis para comparar:*/
			comparar_checkbox_group.empty().append("<span>Seleccione 3 telem&oacute;veis para comparar</span>");
			//nmgrilo: compare only if > 1
			$("#comparar_equipamentos A.bot_comparar img").attr("src", "/img/telemoveis_bot_comparar_inactivo.gif");
			$("#comparar_equipamentos A.bot_comparar").unbind("click");
		}
		
		if($("label",this).size() > 2) {
			$("INPUT[@name=comparar]", $(".col_equipamento")).each(function(){
				if($(this).attr("checked") == null) $(this).attr("disabled","disabled");
			});
		} else {
			$("INPUT[@name=comparar]", $(".col_equipamento")).each(function(){
				if($(this).attr("disabled") == true) $(this).attr("disabled","");
			});
		}
	});
	//Construir infra-estrutura
	$(".col_equipamento").each(function(){
		if(this.cores) {
		    
		    // AMG obter a categoria do equipamento actual
		    var categoria = this.categoria;
			
			var cores = this.cores;
			var col_equipamento = $(this);
			this.cor_idx = 0;
			//tsousa
			var now = document.getElementById('now').value;
			//adicionar imagens com idx de referência à array cores
			for(i=0;i<this.cores.length;i++){
				$(".cores",this).append('<img class="cor coloursBorder" data="'+i+'" src="/img/spacer.gif" alt="cor" style="background-color:#'+cores[i].rgb_cor+'";/>');
			    if((now >= this.cores[i].inicio || "" == this.cores[i].inicio) && (now <= this.cores[i].fim || "" == this.cores[i].fim) && '1' == this.cores[i].disponivel)
			        this.cores[i].disponivel = '1';
			    else
			        this.cores[i].disponivel = '0';
		    }
    		
    		if (this.cores.length > 0) {
    		    //redefinir o html da 1 imagem para ficar correcto com a disponibilidade
	            if( '1' == cores[0].disponivel && '0' == cores[0].descontinuado)
	            {
	              $(".comprar img",col_equipamento).attr("src","/img/telemoveis_bot_comprar.gif");
	              $(".comprar img",col_equipamento).attr("class","rosa laranja_empresas");
	              $(".comprar img",col_equipamento).attr("border","0");
                  $(".comprar img",col_equipamento).attr("alt","comprar");
                  $(".comprar a",col_equipamento).attr("rel","comprar");
                }
                if( '0' == cores[0].disponivel && '0' == cores[0].descontinuado && '1' == cores[0].reserva)
                {
                   $(".comprar img",col_equipamento).attr("src","/img/telemoveis_bot_reservar.gif");
                   $(".comprar img",col_equipamento).attr("class","rosa laranja_empresas");
	               $(".comprar img",col_equipamento).attr("border","0");
                   $(".comprar img",col_equipamento).attr("alt","reservar");
                   $(".comprar a",col_equipamento).attr("rel","reservar");
                }
                if( ('0' == cores[0].disponivel && ('1' == cores[0].descontinuado || '0' == cores[0].reserva)) || 
                    ( '1' == cores[0].disponivel && '1' == cores[0].descontinuado))
                {
                   //$("comprar a",col_equipamento).empty();
                } 

        //EM 1909007 selos onLoad:
			    arraySelos = cores[0].selos;
			    for(i=0;i<arraySelos.length;i++){
			      if(arraySelos[i] != undefined)
			      {
                    $(".texto .selos", col_equipamento).append("<p class='selo_generico'></p>");
                    //EM 1902008 novos selos com src:
                    //URL preenchido:
                    if((arraySelos[i].url).length > 0){
                        $(".texto .selos p:eq("+i+")", col_equipamento).html("<a href='"+arraySelos[i].url+"'><img src='"+arraySelos[i].src+"' alt='"+ arraySelos[i].descricao+"' title='"+ arraySelos[i].descricao+"' /></a>");
                    } else {
                        $(".texto .selos p:eq("+i+")", col_equipamento).html("<img src='"+arraySelos[i].src+"' alt='"+ arraySelos[i].descricao+"' title='"+ arraySelos[i].descricao+"' />");
                    }
				  }
			    }
            }
            
                //EM 2401008 quando não há cores
               if(this.cores.length == 0){$(".cores",this).append('<img src="/img/spacer.gif" style="background-color:#FFFFFF; height: 14px;" />')}
		    
			//Adicionar click a cada uma das cores
			$(".cores IMG[@class='cor coloursBorder']",this).each(function(){
				$(this).css("cursor","pointer");
				$(this).bind("click",function(){
					var idx = $(this).attr("data");
					col_equipamento.get(0).cor_idx = idx;
					$("IMG.img_telemovel",col_equipamento).attr("src",cores[idx].url_equipamento);
					
					//actualizar os dados da checkbox de comparação de telemóveis
					var mobile_id = cores[$(col_equipamento).get(0).cor_idx].id_cor;
					var check_id = cores[0].id_cor;
					var comparar_checkbox_group = $("#comparar_equipamentos .checkbox_group");
					
					$("label",comparar_checkbox_group).each(function(){
					    if($("INPUT[@type=checkbox]",this).val() == check_id)
					    {
					        $("INPUT[@type=checkbox]",this).attr("mobile",mobile_id);
					    }
				    });
				    
					
					if(cores[idx].url_equipamento != '')
					{
					    var imgVisibility = $("IMG.img_telemovel",col_equipamento).attr("visible");
					    
					    if(false == imgVisibility)
					        $("IMG.img_telemovel",col_equipamento)[0].style["visibility"] = "hidden";
					    else
					        $("IMG.img_telemovel",col_equipamento)[0].style["visibility"] = "visible";
					    
					    $("IMG.img_telemovel",col_equipamento).attr("src",cores[idx].url_equipamento);
					}
					else 
					{
					    $("IMG.img_telemovel",col_equipamento)[0].style["visibility"] = "hidden";
					}
					if ('1' == cores[idx].reserva)
					{
					    if('1' == cores[idx].disponivel && '0' == cores[idx].descontinuado)
                        {
                            if($(".comprar img",col_equipamento).length == 0)
                            {
                                $(".comprar>a",col_equipamento).append('<img/>');
                            }
                            $(".comprar img",col_equipamento).attr("src","/img/telemoveis_bot_comprar.gif");
                            $(".comprar img",col_equipamento).attr("class","rosa laranja_empresas");
                            $(".comprar img",col_equipamento).attr("border","0");
                            $(".comprar img",col_equipamento).attr("alt","comprar");
                            $(".comprar",col_equipamento).attr("rel","comprar");
                            $(".comprar",col_equipamento).attr("href","#");
                        }
                  
                        if( '0' == cores[idx].disponivel && '0' == cores[idx].descontinuado)
                        {
                            if($(".comprar img",col_equipamento).length == 0)
                            {
                                $(".comprar>a",col_equipamento).append('<img/>');
                            }
                            $(".comprar img",col_equipamento).attr("src","/img/telemoveis_bot_reservar.gif");
                            $(".comprar img",col_equipamento).attr("class","rosa laranja_empresas");
                            $(".comprar img",col_equipamento).attr("border","0");
                            $(".comprar img",col_equipamento).attr("alt","reservar");
                            $(".comprar",col_equipamento).attr("rel","reservar");
                            $(".comprar",col_equipamento).attr("href","#");
                        }
                        if( ('0' == cores[idx].disponivel && ('1' == cores[idx].descontinuado || '0' == cores[idx].reserva)) || 
                            ( '1' == cores[idx].disponivel && '1' == cores[idx].descontinuado) || 
                            (!cores[idx].preco_online && cores[idx].precos_pontos.length == 0))
                        {
                               $(".comprar img",col_equipamento).remove();
                        }
                    }
                    else
                    {
                        if('1' == cores[idx].disponivel && '0' == cores[idx].descontinuado)
                            {
                                if($(".comprar img",col_equipamento).length == 0)
                                {
                                    $(".comprar>a",col_equipamento).append('<img/>');
                                }
                                $(".comprar img",col_equipamento).attr("src","/img/telemoveis_bot_comprar.gif");
                                $(".comprar img",col_equipamento).attr("class","rosa laranja_empresas");
                                $(".comprar img",col_equipamento).attr("border","0");
                                $(".comprar img",col_equipamento).attr("alt","comprar");
                                $(".comprar",col_equipamento).attr("rel","comprar");
                                $(".comprar",col_equipamento).attr("href","#");
                            }
                          if( ('0' == cores[idx].disponivel && ('1' == cores[idx].descontinuado || '0' == cores[idx].reserva)) || 
                                    ( '1' == cores[idx].disponivel && '1' == cores[idx].descontinuado) || 
                                    (!cores[idx].preco_online && cores[idx].precos_pontos.length == 0))
                                {
                                       $(".comprar img",col_equipamento).remove();
                                }
                    }
                    
          //EM 1909007 selos ao clicar:
					arraySelos = cores[idx].selos;
					$(".selos", col_equipamento).html('');
					for(i=0;i<arraySelos.length;i++){
					    if(arraySelos[i] != undefined)
			            {
                            $(".texto .selos", col_equipamento).append("<p class='selo_generico'></p>");
                            //EM 1902008 novos selos com src:
                            //URL preenchido:
                            if((arraySelos[i].url).length > 0){
                                $(".texto .selos p:eq("+i+")", col_equipamento).html("<a href='"+arraySelos[i].url+"'><img src='"+arraySelos[i].src+"' alt='"+ arraySelos[i].descricao+"' title='"+ arraySelos[i].descricao+"' /></a>");
                            } else {
                                $(".texto .selos p:eq("+i+")", col_equipamento).html("<img src='"+arraySelos[i].src+"' alt='"+ arraySelos[i].descricao+"' title='"+ arraySelos[i].descricao+"' />");
                            }
                        }
					}
					
					//mudar preços
					var preco_obj = $(".comprar .preco",col_equipamento);
					var todos_precos = preco_obj.parent().parent().children(".todos_precos");
					if(preco_obj.size()>0){
						preco_obj.attr("data",0);
						preco_obj.empty();
						if(cores[idx].preco_offline) preco_obj.append("<span>&euro;"+cores[idx].preco_offline+"</span>");
						if(cores[idx].preco_online)
						{ 
						    preco_obj.append("&euro;"+cores[idx].preco_online);
						}
						else
						{
						    if(cores[idx].precos_pontos.length > 0)
						        preco_obj.append(cores[idx].precos_pontos[0].descricao);
						}
						//EM 05.01.008-------start
						$(".todos_precos",col_equipamento).trigger("rebuild");
						//EM 05.01.008-------end
						/*
						for(i=0;i<cores[idx].precos_pontos.length;i++){
						    todos_precos.append('<a href="#" data="'+cores[idx].precos_pontos[i].id_preco+'">'+cores[idx].precos_pontos[i].descricao+'</a>');
					    }
					    */
					} else {//Excepção para a página 1104 que utiliza um esquema diferente de preços
						preco_obj = $(".trocar_pontos UL",col_equipamento);
						preco_obj.attr("data",0);
						preco_obj.empty();
						for(i=0;i<cores[idx].precos_pontos.length;i++){
                            var checked="";
						    if (i == 0)
						        checked = "checked='checked' ";
							preco_obj.append('<li><label><input name="radiobutton'+cores[idx].id_cor+'" type="radio" ' + checked + 'value="'+cores[idx].precos_pontos[i].id_preco+'"/>'+cores[idx].precos_pontos[i].descricao+'</label></li>');
						}						
					}
				});
			});
			/* 	Precisamos de identificar unicamente na página a checkbox deste equipamento, para 
				que mais tarde, se necessário, o block Comparar possa aceder a ele.
				Para isso colocamos no seu valor o id_cor que identifica este equipamento específico.
			*/
			if (cores.length > 0) {
			  $("INPUT[@name=comparar]",col_equipamento).val("maincomparar_"+cores[0].id_cor).attr("checked",false);
			
			  //Adicionar evento à checkbox comparar
			  $("INPUT[@name=comparar]",col_equipamento).bind("click",function(){
			    
				var num_equipamentos_a_comparar = $("label",comparar_checkbox_group).size();
				if(num_equipamentos_a_comparar == 3 && $(this).attr("checked") == true) {//caso já existam 3 equipamentos
					return false; 
				}
				//tsousa
				var cor_id = cores[$(col_equipamento).get(0).cor_idx].id_cor;
				if(num_equipamentos_a_comparar > 0){
				
				    // AMG é necessário procurar se os que já estão seleccionados são da mesma categoria
				    if ($("label input[@category!=" + categoria + "]",comparar_checkbox_group).length > 0)
				    {
				        if ($(this).checked == true)
				        {
				            alert("Tem que seleccionar equipamentos de categorias equivalentes.");
				            return false;				        
				        }
				    }
									
					//Caso haja equipamentos na lista precisamos de procurar se o escolhido já existe.
					var objecto_a_remover = false;
					$("label input",comparar_checkbox_group).each(function(){
						if($(this).val() == cores[0].id_cor) objecto_a_remover = $(this).parent();
					});
					//Caso o id_cor do escolhido exista como value da checkbox então removemos a label e o br associado
					if(objecto_a_remover) {
						objecto_a_remover.next("br").remove();
						objecto_a_remover.remove();
						comparar_checkbox_group.trigger("resized");
					} else {
						//ainda não existe na lista logo adicionamos o equipamento e o evento para o checkbox
						//tsousa
						comparar_checkbox_group.append('<label>'+$(".texto h4 a",col_equipamento).html()+'<input class="checkbox" type="checkbox" name="compare_'+cores[0].id_cor+'" value="'+cores[0].id_cor+'" mobile="'+cor_id+'" category="' + categoria + '" checked/></label><br/>');
						$("LABEL INPUT[@name=compare_"+cores[0].id_cor+"]",comparar_checkbox_group).one("click",function(){
							$("INPUT[@value=maincomparar_"+cores[0].id_cor+"]").attr("checked",false);
							$(this).parent().next("br").remove();
							$(this).parent().remove();
							comparar_checkbox_group.trigger("resized");
						});
					}
				} else {
					//tsousa
					comparar_checkbox_group.append('<label>'+$(".texto h4 a",col_equipamento).html()+'<input class="checkbox" type="checkbox" name="compare_'+cores[0].id_cor+'" value="'+cores[0].id_cor+'" mobile="'+cor_id+'" category="' + categoria + '" checked/></label><br/>');
					$("LABEL INPUT[@name=compare_"+cores[0].id_cor+"]",comparar_checkbox_group).one("click",function(){
						$("INPUT[@value=maincomparar_"+cores[0].id_cor+"]").attr("checked",false);
						$(this).parent().next("br").remove();
						$(this).parent().remove();
						comparar_checkbox_group.trigger("resized");
					});
				}
				$("#comparar_equipamentos .checkbox_group").trigger("resized");
			  });
			}
			//Adicionar combobox ao preço e construir estrutura interactiva
			var listaPrecosOpen = 0;
			var listaPrecosTimeOut = 0;
			
			$(".comprar>SPAN.preco",this).each(function(){
				var span_preco = this;
				$(this).css("cursor","pointer");
				var todos_precos = $(this).parent().parent().children(".todos_precos");
				todos_precos.bind("rebuild",function(){
					$(this).empty();
					if (cores.length == 0)
					  return;
					var cor_idx = col_equipamento.get(0).cor_idx;
					var precos_pontos = cores[cor_idx].precos_pontos;
					todos_precos.append('<a href="#" data="0"></a>'); 
					if(cores[cor_idx].preco_offline) $("a",todos_precos).append("<span>&euro;"+cores[cor_idx].preco_offline+"</span>");
					if(cores[cor_idx].preco_online) $("a",todos_precos).append("&euro;"+cores[cor_idx].preco_online);
					for(i=0;i<precos_pontos.length;i++){
						todos_precos.append('<a href="#" data="'+precos_pontos[i].id_preco+'" pontos="1">'+precos_pontos[i].descricao+'</a>');
					}
					//EM 05.01.008-----start
					spanDoPreco = $(".comprar>SPAN.preco", $(this).parent());
					spanDoPreco.attr("numerolinks",$("a", todos_precos).length);
					if($("a", todos_precos).length > 1){spanDoPreco.addClass("preco_active").removeClass("preco_inactive");}else{spanDoPreco.removeClass("preco_active").addClass("preco_inactive");};
					//EM 05.01.008-----end
					$("a",todos_precos).bind("click",function(event){
						event.stopPropagation();
						event.preventDefault();
						$(".comprar .preco",col_equipamento).empty().html($(this).html()).attr("data",$(this).attr("data"));
						todos_precos.slideToggle();
						$(span_preco).toggleClass("preco_open");
						listaPrecosOpen = 0
						//RR 06.02.2009 CASO ESTEJA A MOSTRAR  O BOTÃO RESERVAR, SE FOR PONTOS TEM DE MUDAR PARA COMPRAR
						//caso seja uma reserva
					    if (cores[cor_idx].reserva == "1")
					    {		
					       
					        if ($(this).attr("pontos") != null && $(this).attr("pontos") == "1")
					        {
					            $(".comprar a",col_equipamento).attr("rel","comprar");
                                $(".comprar a img",col_equipamento).attr("alt","comprar");
                                $(".comprar a img",col_equipamento).attr("src","/img/telemoveis_bot_comprar.gif");
					        }
					        else
					        {
					            if( '1' == cores[cor_idx].disponivel && '0' == cores[cor_idx].descontinuado)
	                            {
	                              $(".comprar img",col_equipamento).attr("src","/img/telemoveis_bot_comprar.gif");
	                              $(".comprar img",col_equipamento).attr("class","rosa laranja_empresas");
	                              $(".comprar img",col_equipamento).attr("border","0");
                                  $(".comprar img",col_equipamento).attr("alt","comprar");
                                  $(".comprar a",col_equipamento).attr("rel","comprar");
                                }
                                if( '0' == cores[cor_idx].disponivel && '0' == cores[cor_idx].descontinuado)
                                {
                                   $(".comprar img",col_equipamento).attr("src","/img/telemoveis_bot_reservar.gif");
                                   $(".comprar img",col_equipamento).attr("class","rosa laranja_empresas");
	                               $(".comprar img",col_equipamento).attr("border","0");
                                   $(".comprar img",col_equipamento).attr("alt","reservar");
                                   $(".comprar a",col_equipamento).attr("rel","reservar");
                                }
                                if( ('0' == cores[cor_idx].disponivel && ('1' == cores[cor_idx].descontinuado || '0' == cores[cor_idx].reserva)) || 
                                    ( '1' == cores[cor_idx].disponivel && '1' == cores[cor_idx].descontinuado))
                                {
                                   //$("comprar a",col_equipamento).empty();
                                } 
					        }

						}
						else
						{
					        //se for opção com pontos muda para comprar
						    if ($(this).attr("pontos") != null && $(this).attr("pontos") == "1")
						    {    
						        if (!$(".comprar a img",col_equipamento).length)	
						        {
						          $(".comprar a",col_equipamento).append("<img border='0' class='rosa laranja_empresas' alt='comprar' src='/img/telemoveis_bot_comprar.gif'/>");
						        }
						    }
						    else
						    {
						       if('0' == cores[cor_idx].disponivel){
                                   $(".comprar a img",col_equipamento).remove();
                                } 
						    }
						
						}
					});
				});
				todos_precos.trigger("rebuild");
				
				
				/*$(this).bind("click",function(){
					$(this).toggleClass("preco_open");
					todos_precos.slideToggle();
					todos_precos.trigger("rebuild");
				});*/
				
				//EM 05.01.008-----start
				//$(".comprar SPAN.preco_active",$(this).parent().parent()).hover(function(){
				$(this).hover(function(){
						if($(this).attr("numerolinks") > 1){
					if(listaPrecosOpen == 0){
						todos_precos.slideDown();
						$(this).addClass("preco_open");
						todos_precos.trigger("rebuild");
						listaPrecosOpen = 1;
					} else {
						clearTimeout(listaPrecosTimeOut);
						listaPrecosOpen = 1;
					}
						}
				},function(){
						if($(this).attr("numerolinks") > 1){
					precoTimeOut = setTimeout(function(){
  						todos_precos.slideUp();
						$(".comprar>SPAN.preco",this).removeClass("preco_open");
						listaPrecosOpen = 0
					}, 333);
						}
				});
				//EM 05.01.008-----end
				//hover submenu:
				todos_precos.hover(function(){
						clearTimeout(precoTimeOut);
					},function(){
						listaPrecosTimeOut = setTimeout(function(){
							if(listaPrecosOpen == 1){
  								todos_precos.slideUp();
								$(".comprar>SPAN.preco",this).removeClass("preco_open");
								listaPrecosOpen = 0;
							}
					}, 333);
						
				});
			});
	
			$(".comprar A",col_equipamento).each(function(){
				$(this).bind("click",function(event){
					event.stopPropagation();
					event.preventDefault();
					comprar_params = new Object();
					//Se o id_preco = 0 quer dizer que é o preço 'normal'
					comprar_params.id_cor = cores[$(col_equipamento).get(0).cor_idx].id_cor;
					comprar_params.id_preco = $(".comprar .preco",col_equipamento).attr("data") || "0";
					comprar_params.destino = (parseInt(comprar_params.id_preco)!="0")?"com pontos":"sem pontos";
					comprar_params.id_prod = $(this).attr("idProd");
					comprar_params.marca = $(this).attr("marca");
					comprar_params.modelo = $(this).attr("modelo");

                    //nmg 20-08-2007
					//if(comprar_params.action == "comprar")
					//{
			        var path = window.location.pathname;
					var pathParts = path.split("/");
					var site = pathParts[1];
					if((-1 != (site.toLowerCase()).search("particulares")) &&
					   ($(this).attr("rel") != "reservar"))
					{
				        $("#form_add_prod INPUT[@name='prodid']").val(comprar_params.id_prod);
				        $("#form_add_prod INPUT[@name='sap']").val(comprar_params.id_cor);
				        
					    if(comprar_params.id_preco != "0") {
				            $("#form_add_prod INPUT[@name='lms']").val(comprar_params.id_preco);
				            $("#form_add_prod").attr('action', $("#form_add_prod INPUT[@name='actionComprarPontos']").val());
					    } else {
					        $("#form_add_prod INPUT[@name='lms']").remove();
				            $("#form_add_prod").attr('action', $("#form_add_prod INPUT[@name='actionComprar']").val());
					    }
					    
					    $("#form_add_prod").submit();
					}
					else
					{
                        //var actionUrl = '/' + site + '/ApoioAoCliente/ServiceRequest';
					    var actionUrl = '/' + site + '/Telemoveis/Reserva';
					    $("#form_add_prod INPUT[@name='prodid']").val(comprar_params.id_prod);
				        $("#form_add_prod INPUT[@name='sap']").val(comprar_params.id_cor);
				        $("#form_add_prod INPUT[@name='lms']").val(comprar_params.id_preco);
				        $("#form_add_prod INPUT[@name='marca']").val(comprar_params.marca);
				        $("#form_add_prod INPUT[@name='modelo']").val(comprar_params.modelo);
				        $("#form_add_prod").attr('action', actionUrl);
				        $("#form_add_prod").submit();
					}
//					}
//                  AMG: TESTE PARA ACEDER AO SERVICEREQUEST
//					else
//					{
//					    $("#form_add_prod INPUT[@name='prodid']").val(comprar_params.id_prod);
//				        $("#form_add_prod INPUT[@name='sap']").val(comprar_params.id_cor);
//				        $("#form_add_prod INPUT[@name='lms']").val(comprar_params.id_preco);
//				        $("#form_add_prod").append("<input type='hidden' name='idProblema' value='1'/>");
//				        $("#form_add_prod").append("<input type='hidden' name='marca' value='Motorola'/>");
//				        $("#form_add_prod").append("<input type='hidden' name='modelo' value='U6'/>");

//				        var e = /(\/[^\/]*\/[^\/]*)/;
//				        var path = "";
//				        if (location.pathname.match(e))
//				            path = RegExp.$1 + "/";
//				        
//			            $("#form_add_prod").attr('action', '/Particulares/ApoioAoCliente/ServiceRequest');
//					    $("#form_add_prod").submit();
//					}
				});
			});		
		
			$(".trocar_pontos A[@rel=trocar]",col_equipamento).each(function(){
				$(this).bind("click",function(event){
					event.stopPropagation();
					event.preventDefault();
					comprar_params = new Object();
					//Se o id_preco = 0 quer dizer que é o preço 'normal'
					comprar_params.id_cor = cores[$(col_equipamento).get(0).cor_idx].id_cor;
					var checked_radios = $("UL LI LABEL INPUT[@checked]",col_equipamento);
					if(checked_radios.size() > 0){
			            var path = window.location.pathname;
					    var pathParts = path.split("/");
					    var site = pathParts[1];
						comprar_params.id_preco = $(checked_radios).val() || "0";
						comprar_params.action = $(this).attr("rel");
						comprar_params.id_prod = $(this).attr("idProd");

				        $("#form_add_prod INPUT[@name='prodid']").val(comprar_params.id_prod);
				        $("#form_add_prod INPUT[@name='sap']").val(comprar_params.id_cor);
				        $("#form_add_prod INPUT[@name='lms']").val(comprar_params.id_preco);
					    if(-1 != (site.toLowerCase()).search("particulares")) {
			                $("#form_add_prod").attr('action', $("#form_add_prod INPUT[@name='actionComprarPontos']").val());
			            } else {
			                $("#form_add_prod").attr('action', '/' + site + '/ApoioAoCliente/ServiceRequest');
			            }
					    $("#form_add_prod").submit();

						/*** A REMOVER **
						var msg = "Ir para URL a designar, levando os parâmetros:\n\n";
						msg += "* id_cor: "+comprar_params.id_cor+"\n";
						msg += "* id_preco: " + comprar_params.id_preco+"\n";
						msg += "* action: " + comprar_params.action+"\n";
						alert(msg);
						****************/
					}
				});
			});
			
			$(".trocar_pontos A[@rel=reservar]",col_equipamento).each(function(){
				$(this).bind("click",function(event){
					event.stopPropagation();
					event.preventDefault();
					comprar_params = new Object();
					//Se o id_preco = 0 quer dizer que é o preço 'normal'
					comprar_params.id_cor = cores[$(col_equipamento).get(0).cor_idx].id_cor;
					var checked_radios = $("UL LI LABEL INPUT[@checked]",col_equipamento);
					if(checked_radios.size() > 0){
					    var path = window.location.pathname;
					    var pathParts = path.split("/");
					    var site = pathParts[1];
						
			            comprar_params.id_preco = $(checked_radios).val() || "0";
						comprar_params.action = $(this).attr("rel");
						comprar_params.id_prod = $(this).attr("idProd");
						comprar_params.marca = $(this).attr("marca");
				        comprar_params.modelo = $(this).attr("modelo");

				        $("#form_add_prod INPUT[@name='prodid']").val(comprar_params.id_prod);
				        $("#form_add_prod INPUT[@name='sap']").val(comprar_params.id_cor);
				        $("#form_add_prod INPUT[@name='lms']").val(comprar_params.id_preco);
				        $("#form_add_prod INPUT[@name='marca']").val(comprar_params.marca);
		                $("#form_add_prod INPUT[@name='modelo']").val(comprar_params.modelo);
					    $("#form_add_prod").attr('action', '/' + site + '/Telemoveis/Reserva');
			            $("#form_add_prod").submit();
					}
				});
			});
		}
	});
		
	/***** ENCONTRAR EQUIPAMENTOS *****/
	//adicionado por tsousa
	$.meta.setType("attr", "data");
	$("#encontrar_equipamentos").each(function(){
		var pai = $(this);
		$(".bot_limpar").bind("click",function(event){
			event.preventDefault();
			event.stopPropagation();
			$("INPUT[@type=checkbox]",pai).attr("checked",false);
			//Adicionado por G.PeCurto Defect #168 - Begin
			$("INPUT[@name='marca']").val("Todas");
			$("INPUT[@name='modelo']").val("Todos");
			$("INPUT[@name='procuro']").val("Todas");
			$("INPUT[@name='preco']").val("1000");
			$(".slider").attr("style","left: 120px; top: 0px; display: block;");
			//Adicionado por G.PeCurto Defect #168 - End
		});
	});
	
	/***** COMPARAR EQUIPAMENTOS/TARIFARIOS COMBOBOX *****/
	comparaTarifarioBt = $("#maincol .row3 .col_topo .link_topo IMG, #maincol .tarifBlock .tarifInfo .tarif .link_topo IMG");
	comparaTarifarioBt.bind("click",function(){

			//fecha os outros:
		$(".lista_equipamentos,.lista_tarifarios",$("#maincol .row3 .col_topo .link_topo IMG.comparar_combobox_trigger_open, #maincol .tarifBlock .tarifInfo .tarif .link_topo IMG.comparar_combobox_trigger_open").parent()).each(function(){																																																							
			$(this).slideUp();
			$("IMG", $(this).parent()).removeClass("comparar_combobox_trigger_open");


		});
				
		if($(".lista_equipamentos,.lista_tarifarios",$(this).parent()).css("display") == "none"){
			$(this).addClass("comparar_combobox_trigger_open");
			$(".lista_equipamentos,.lista_tarifarios",$(this).parent()).slideDown();
		}
	});
	
	/*****  EXPANDABLE GROUPS ***********/
	/*
		A estrutura html que é requerida pelo javascript é a seguinte:	
		<elem class="cgroup">
			...
			<elem class="header">Elementos que activam a acção</elem>
			...
			<elem class="expandable">Elementos que são comprimidos ou expandidos</elem>
			...
		</elem>
		
		Dentro do container cgroup poderá existir qq número de elementos 'header' e qualquer número de
		elementos 'expandable'.  A classe 'closed' é aplicada/removida automaticamente ao 'header' quando
		o elemento 'expandable' é escondido/mostrado.
		
	*/
	$(".cgroup").each(function(){
		var cgroup_row = $(this);
		var cgroup_elements_to_toggle = $(".expandable",cgroup_row);
		var cgroup_headers = $(".header",cgroup_row);
		
		cgroup_headers.css("cursor","pointer").bind("click",function(){
			cgroup_elements_to_toggle.slideToggle();
			cgroup_headers.toggleClass("closed");
		});
	});
	/***********************/
	
	/**** MENU SIDEBAR EXTRAS ****/
	
	$("div.menu_xtra_pulldown").hover(function(){$("UL",this).show();},function(){$("UL",this).hide();});
		
	/****************************************************************************
	* 	
	*		Parâmetros da combo passados em formato hash no atributo rel do select:
	*		{
	*			image: caso excepcional para o select_box de cores.
	*			writable: true -> o campo de input é editável,
	*			writable_default_first: true -> caso seja writable se existir este param então
	*											o campo é preenchido com o 1º valor da lista.
	*			empty_first:true-> Num select normal(sem ser writable ou image) faz com que
	*			a selectbox comece com o valor selected em vazio.
	*			
	*			change: callback(text,value,container) -> quando muda a selecção, a funcão
					'callback' é chamada com o texto e o valor da nova selecção e também
					uma referência ao objecto container.
					Esta função 'callback' pode ter qualquer nome e até ser uma definição
					de função na própria hash.
	*		}
	*		
	*		Se o select possuir um id, este é adicionado ao div combobox_container para
	*		poder ser referenciado.
	*		
	****************************************************************************/
	$.meta.setType("elem", "script");
	//Se existirem parâmetros de cores então colocam-se no td para futura referência
	$("TD SPAN.data").each(function(){
		$(this).css("display","none");
		$(this).parent().get(0).cores = $(this).data().cores;
	});

    /**** ACTIVAR COMBOBOXES ****/
    //tsousa
	$.meta.setType("attr", "rel");
	combobox($("SELECT.combobox"));
	
	/**** Tem que ser sempre colocado em último nestas funções genéricas ****/
	/**** EQUIPAMENTOS EQUAL HEIGHT CELLS ****/
	//$.meta.setType("elem", "div")
	var rows = $(".row_equipamentos");
	$(".row_equipamentos").each(function(){
			var max_height = 0;
			var bloco_movel_class = ".comprar";
			//teremos que adicionar os checks para blocos diferentes aqui nos 'else' caso seja necessário
			if($(".col_equipamento .trocar_pontos",this).size()>0) bloco_movel_class =".trocar_pontos";
						
			var bloco_movel = $(bloco_movel_class,this);
			if(bloco_movel.length > 0)
			{
			    var bloco_movel_altura = bloco_movel.outerHeight();
			    var padding = bloco_movel_altura+20;
    				
			    $(".col_equipamento",this).each(function(){
				    max_height = Math.max(jQuery.iUtil.getSize(this).hb,max_height);				
			    });
			    $(".col_equipamento",this).each(function(){
					    $(this).height(max_height+padding);
			    });
			}
	});
});

//Verificar se o pedido contém refreshcache na querystring
function IsRefreshCache()
{
  loc = window.location.href.toLowerCase();
  refreshcacheval = $("input[@name=rc_key]").val();
  refreshcacheparam = "refreshcache="+refreshcacheval;
  if (loc.indexOf(refreshcacheparam) > -1)
  {
    return refreshcacheval;
  }
  else
  {
    return "0";
  }
}

//REORDENAR AS CAIXAS DE MARCAS E MODELOS DE TELEMÓVEIS (CAIXAS DA ESQUERDA DE PESQUISA)
 var pTesteTlm;
 function sortListTlm(cmbId, desc) {
     pTesteTlm = $("#"+cmbId)[0];
     col = 1;
     items = pTesteTlm.getElementsByTagName("li");
     var N = items.length;
     //bubble sort
     for(var j=N-1; j > 0; j--) {
        for(var i=0; i < j; i++) {
            if(compare(getTlm(i+1), getTlm(i), desc)) exchangeTlm(i+1, i);
        }
     }
     return true;
 }
 
 function getTlm(i)
 {

    var node = items[i];
    if (node.firstChild != undefined)
    {
        var retval = node.firstChild.innerHTML;        
        return retval;
    }
    else
    {
        return undefined;
    }

 }

 function exchangeTlm(i, j)
 {
    pTesteTlm.insertBefore(items[i], items[j]);
 }

//REORDENAÇÃO DAS COMBOBOX (JÁ TRANSFORMADAS)
//O ELEMENTO listElement é a div combobox_list a ordenar
 var pTeste;
 function sortList(cmb, desc) {
     pTeste = $("#"+cmb.id)[0].childNodes[1];
     col = 1;
     items = pTeste.getElementsByTagName("a");
     var N = items.length;
     //bubble sort
     for(var j=N-1; j > 0; j--) {
        for(var i=0; i < j; i++) {
            if(compare(get(i+1), get(i), desc)) exchange(i+1, i);
        }
     }
     return true;
 }
 
 function get(i)
 {

    var node = items[i];
    if (node.firstChild != undefined)
    {
        var retval = node.firstChild.nodeValue;        
        return retval;
    }
    else
    {
        return undefined;
    }

 }
  
 function compare(val1, val2, desc)
 {
    return (desc) ? val1 > val2 : val1 < val2;
 }  
  
 function exchange(i, j)
 {
    pTeste.insertBefore(items[i], items[j]);
 }
 
 function Querystring(qs) { // optionally pass a querystring to parse
	this.params = new Object();
	this.get=Querystring_get;
	
	if (qs == null)
		qs=location.search.substring(1,location.search.length);

	if (qs.length == 0) return;

// Turn <plus> back to <space>
// See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
	qs = qs.replace(/\+/g, ' ');
	var args = qs.split('&'); // parse out name/value pairs separated via &
	
// split out each name=value pair
	for (var i=0;i<args.length;i++) {
		var value;
		var pair = args[i].split('=');
		var name = unescape(pair[0]);

		if (pair.length == 2)
			value = unescape(pair[1]);
		else
			value = name;
		
		this.params[name] = value;
	}
}

function Querystring_get(key, default_) {
	// This silly looking line changes UNDEFINED to NULL
	if (default_ == null) default_ = null;
	
	var value=this.params[key];
	if (value==null) value=default_;
	
	return value;
}

function maxlength(field, size) {
    if (field.value.length > size) {
        field.value = field.value.substring(0, size);
    }
}

/********* REDISIGN *********************/



function correctPNG() // correctly handle PNG transparency in Win IE 5.5 and 6.
{ 
    var arVersion = navigator.appVersion.split("MSIE")
    var version = parseFloat(arVersion[1])
    if ((version >= 5.5) && (document.body.filters))
    {
        for(var i=0; i<document.images.length; i++)
        {
            var img = document.images[i]
            var imgName = img.src.toUpperCase()
            if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
            {
                var imgID = (img.id) ? "id='" + img.id + "' " : ""
                var imgClass = (img.className) ? "class='" + img.className + "' " : ""
                var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
                var imgStyle = "display:inline-block;" + img.style.cssText
                if (img.align == "left") imgStyle = "float:left;" + imgStyle
                if (img.align == "right") imgStyle = "float:right;" + imgStyle
                if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
                var strNewHTML = "<span " + imgID + imgClass + imgTitle
                + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
                + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
                + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
                img.outerHTML = strNewHTML
                i = i-1
            }
        }
    }
} 
function imgSwap(id,img)
{

	var elem = document.getElementById(id);

	var agt = navigator.userAgent.toLowerCase();	
	if (agt.indexOf("msie") != -1)
	{
	    if(elem.filters.length > 0)
	    {
		    elem.filters(0).src = img;
		}
		else
		{
		    elem.src = img;
		}
	}
	else	
	{
		elem.src = img;		
	}
}

function troca_texto(ver_caixa, id, img)
{
	var agt = navigator.userAgent.toLowerCase();	

	document.getElementById(ver_caixa).style.display="block";	
	if(document.getElementById('div_texto1').style.display="none")
	{
		document.getElementById(ver_caixa).style.display="block";
	}	
	if(document.getElementById('div_texto2').style.display="none")
	{
		document.getElementById(ver_caixa).style.display="block";
	}	
	if(document.getElementById('div_texto3').style.display="none")
	{
		document.getElementById(ver_caixa).style.display="block";
	}
	if(document.getElementById('div_texto4').style.display="none")
	{
		document.getElementById(ver_caixa).style.display="block";
	}	
	if(document.getElementById('div_texto5').style.display="none")
	{
		document.getElementById(ver_caixa).style.display="block";
	}
	
	for(var i=1;i<6;i++)
	{
		obj_img="texto"+i
		obj_src="img/"+i+"_off.png"
		
		if (agt.indexOf("msie") != -1)
		{
			document.getElementById(obj_img).filters(0).src=obj_src
		}
		else	
		{
			document.getElementById(obj_img).src=obj_src
		
		}
	
	}	
	
	var elem = document.getElementById(id);
	
	if (agt.indexOf("msie") != -1)
	{
		elem.filters(0).src = img;
		
	}
	else	
	{
	    if (elem != null)
		    elem.src = img;		
	}

}

function rollover_servicos(oImg)
{   
	caixa = document.getElementById(oImg).style.height;
}

function seleccionado(oImg)
{
   var strOver  = "_on"    // image to be used with mouse over
   var strOff = "_over"     // normal image

   var strImg = oImg.filters(0).src
	alert(strImg)
   if (strImg.indexOf(strOver) != -1) {
	     alert("if "+ strImg);
      oImg.src = strImg.replace(strOver,strOff)

   }
   else{
      	     alert("else"+ strImg);
	  oImg.src = strImg.replace(strOff,strOver)
	
	}
}


function mostra_esconde_info(div_id){

	caixa = document.getElementById(div_id);

	if (caixa.style.display == "block")
	{
		caixa.style.display = "none";
	}
	else
	{
		caixa.style.display = "block";
	}

}

function marcar_menu(menu_marcar,menu_texto)
{
    try{
	    for(var i=1;i<100;i++)
	    {
		    fundo_menu="mnu"+i;
		    texto_menu="mnu"+i+"_txt";
		    document.getElementById(fundo_menu).style.background="";
		    document.getElementById(texto_menu).style.color="#505050";	
	    }	
	}
	catch(err){}

	document.getElementById(menu_marcar).style.backgroundImage="url(/img/tira-rollover-menu.jpg)";
	document.getElementById(menu_texto).style.color="#FF7000";
}

/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/

var Base64 = {
 
	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
 
	// public method for encoding
	encode : function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
 
		input = Base64._utf8_encode(input);
 
		while (i < input.length) {
 
			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);
 
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
 
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
 
			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
 
		}
 
		return output;
	},
 
	// public method for decoding
	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
 
		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
 
		while (i < input.length) {
 
			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));
 
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
 
			output = output + String.fromCharCode(chr1);
 
			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}
 
		}
 
		output = Base64._utf8_decode(output);
 
		return output;
 
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
}

function loginReferer(urlLogin){
    var location = "";
    if(window.location.href.indexOf("ReturnUrl") == -1){
        location = urlLogin + "?ReturnUrl=" + Base64.encode(window.location.href);
    }
    else{
        location = urlLogin + window.location.href.substring(window.location.href.indexOf("?ReturnUrl"));
    }
    window.location = location;
}

function PopUpDiv(popupWindowType)
{
    var popupType = 'popupWindow';
    
    if(popupWindowType != "" && popupWindowType != undefined){
        popupType = popupWindowType;
    }
    
    var elements = new Array('backgroundFilter',popupType);
   
    // For the two elements to display or hide
    for (var i = 0; i< 2; i++){
        
        var div;        
        
        if(document.getElementById)
            // Standard way to get element
            div = document.getElementById(elements[i]); 
        else if(document.all) 
            // Get the element in old IE's 
            div = document.all[elements[i]];
       
        // if the style.display value is blank we try to check it out here 
        if(div.style.display == '' && div.offsetWidth != undefined && div.offsetHeight != undefined)
        {
            div.style.display = (div.offsetWidth != 0 && div.offsetHeight != 0)? 'block':'none'; 
        }
        
        // If the element is hidden ('none') then it will display it ('block') 
        // else
        // If the element is displayed ('block') then it will hide it ('none').
        div.style.display = (div.style.display == '' || div.style.display == 'block')? 'none':'block';
    }
}

/**************************************/
/* comparação de equipamento e-escola */
/**************************************/
var portateisComparar = new Array();
function addRemoveComparacao(equipamentoId) {
    if (portateisComparar.toString().search(equipamentoId) == -1) {
        portateisComparar[portateisComparar.length] = equipamentoId;
        if (portateisComparar.length == 3) {
            $('input[@type=checkbox]:not([@checked])').each(function() { $(this).attr('disabled', 'disabled'); });
        }
    } else {
        for (i = portateisComparar.length - 1; i >= 0; i--) {
            if (portateisComparar[i] == equipamentoId) {
                portateisComparar.splice(i, 1);
                $('input[@type=checkbox][@disabled]').each(function() { $(this).attr('disabled', ''); });
            }
        }
    }    
}

function compararPortateisSeleccionados() {
    if (portateisComparar.length < 2) return;
    
	document.cookie = "portateisComparar=" + portateisComparar.toString() + "; path=/";   
	document.location = "Comparacao/";
}

function alterarPortatilSeleccionado(e, equipamentoId) {    
    if (!e) e = window.event;
    var srcElement = e.srcElement ?  e.srcElement : e.target;  
    var prevEquipamentoId = $(srcElement).parents('.link_topo').find('.topo > h2').attr('equipamentoId'); 
    
     $('h2[@equipamentoId]').each(function() {
        portateisComparar[portateisComparar.length] = $(this).attr('equipamentoId');
    });
    if (!prevEquipamentoId) {
        portateisComparar[portateisComparar.length] = equipamentoId;
    } else {
        for (var i = 0; i < portateisComparar.length; i++) {
            if (portateisComparar[i] === prevEquipamentoId) {
                portateisComparar[i] = equipamentoId;
                break;
            }
        }
    }
    
    if(portateisComparar.length > 3){
        portateisComparar.splice(3, portateisComparar.length - 3);
    }
    document.cookie = "portateisComparar=" + portateisComparar.toString() + "; path=/";   
	document.location.reload();
}

/* Entrega imediata */
var mapAddressHover = 0;

function showAddress(city){
	//esconder todos:
	o = document.getElementById(city);
	o.style.visibility = "visible";
}
function hideAddress(city){
	if (mapAddressHover != 1){
		o = document.getElementById(city);
		o.style.visibility = "hidden";
	}
	
}

function hoverMapAddress(city){
	mapAddressHover = 1;
	city.style.visibility = "visible";	
}
function outMapAddress(city){
	mapAddressHover = 0;
	city.style.visibility = "hidden";
}

/* mudar imagens "comparar" na montra de portáteis e-escola */
function mudaImg(param,param2)
{
	if(param == 'over')
		document.getElementById(param2).src = "/imagedownload.aspx?schema=f7664ca7-3a1a-4b25-9f46-2056eef44c33&channel=72F445D4-8E31-416A-BD01-D7B980134D0F&content_id=2BF15CB1-5F11-4B1C-B0B8-2DA0AE7DAF68&field=storage_image&lang=pt&ver=1";
	if(param == 'out')
		document.getElementById(param2).src = "/imagedownload.aspx?schema=f7664ca7-3a1a-4b25-9f46-2056eef44c33&channel=72F445D4-8E31-416A-BD01-D7B980134D0F&content_id=5802E04F-78D7-48A3-8AC6-FA6F346F4261&field=storage_image&lang=pt&ver=1";			
}