/**
 * @author Moretti Paolo & Talon Andrea
 */
var currentHoverArea = "";
var currentActiveTab = [];
var currentActiveTabTimeout = [];
var jq = jQuery.noConflict();

if (jq.browser.safari && navigator.platform != "Win32")
	document.write('<style type="text/css">@import url("css/safari-fix.css");</style>');

var Edi = {
	
	menuDelayTime: 100,
	resetMenu: function() 
	{
		jq('#menuPrimoLiv ul:first a').removeClass("hover");
		jq('#menuPrimoLiv ul:first li').removeClass("on");
	},
	
	showHelp: function(id)
	{
	//~ jq(id).toggle();
	},
	setTooltipSkin: function()
	{
		jq('.tooltip-opener').removeAttr("href");
		if (jq('.tooltip-opener').size() > 0)
			jq('.tooltip-opener').each(function() {
				jq(this).removeAttr("href").unbind("click").bind("click", function() {
					if (jq(this).attr("rel")) {
						var tt = jq('#' + jq(this).attr("rel"));
						jq(tt).css({
							position: "absolute",
							top: (jq(this).offset().top - 125),
							left: (jq(this).offset().left - jq(tt).width() - 20),
							visibility: "visible",
							zIndex: 99999
						});
						jq("body").append(jq(tt));
						
						jq(tt).toggle();
					}
					else 
						alert("Funzionalita' non attiva");
				});
			})	

		jq('.tooltip-opener-promo').removeAttr("href");
		if (jq('.tooltip-opener-promo').size() > 0)
			jq('.tooltip-opener-promo').each(function() {
				jq(this).removeAttr("href").unbind("click").bind("click", function() {
					if (jq(this).attr("rel")) {
						var tt = jq('#' + jq(this).attr("rel"));
						jq(tt).css({
							position: "absolute",
							top: (jq(this).offset().top - 45),
							left: (jq(this).offset().left - jq(tt).width() + 65),
							visibility: "visible",
							zIndex: 99999
						});
						jq("body").append(jq(tt));
						
						jq(tt).toggle();
					}
					else 
						alert("Funzionalita' non attiva");
				});
			})
	},
	getCurrentHoverArea: function(item) {
		var urlPage = jq(item).attr("href");
		var regexUrl = "";
	
		if (urlPage.indexOf('index.html') > -1)
		    regexUrl = /.*?\/([-\w]+)\/index\.html/;
		else
		    regexUrl = /.*?\/([-\w]+)\.html/;
	
		if (urlPage.indexOf('.jsp') > -1)
		    regexUrl = /.*?\/([-\w]+)\.jsp/;
		
		
		var sections = regexUrl.exec(urlPage);
		return sections != null ? sections[1] : "";
	},
	
	setSkin: function() 
	{
		/*
		 * SELECT
		 */
		
		/* Calendars */
		jq(".calendar-input").each(function() {
			jq(this).datepicker({
				dateFormat: 'dd/mm/yy'
			});
		})
		
		/* Print button */
		jq('.print-button').each(function() {
			jq(this).unbind("click").bind("click", function() { window.print(); });
		});
		
		/* Datagrid dimension */
		if (jq('.data-grid-rows').height() > 260) 
			jq('.data-grid-rows').height(260)
			
		/* Help tooltip 
		jq('.widget-help').removeAttr("href");
		if (jq('.widget-help').size() > 0)
			jq('.widget-help').unbind("click").bind("click", function() {
				jq('#helpDescription').toggle();
			})
		*/
		this.setTooltipSkin();
		jq('.tooltip-opener').removeAttr("href");
		if (jq('.tooltip-opener').size() > 0)
			jq('.tooltip-opener').each(function() {
				jq(this).removeAttr("href").unbind("click").bind("click", function() {
					if (jq(this).attr("rel")) {
						var tt = jq('#' + jq(this).attr("rel"));
						jq(tt).css({
							position: "absolute",
							top: (jq(this).offset().top - 125),
							left: (jq(this).offset().left - jq(tt).width() - 20),
							visibility: "visible",
							zIndex: 99999
						});
						jq("body").append(jq(tt));
						
						jq(tt).toggle();
					}
					else 
						alert("Funzionalit� non attiva")
				});
			})

		jq('.tooltip-opener-promo').removeAttr("href");
		if (jq('.tooltip-opener-promo').size() > 0)
			jq('.tooltip-opener-promo').each(function() {
				jq(this).removeAttr("href").unbind("click").bind("click", function() {
					if (jq(this).attr("rel")) {
						var tt = jq('#' + jq(this).attr("rel"));
						jq(tt).css({
							position: "absolute",
							top: (jq(this).offset().top - 45),
							left: (jq(this).offset().left - jq(tt).width() + 65),
							visibility: "visible",
							zIndex: 99999
						});
						jq("body").append(jq(tt));
						
						jq(tt).toggle();
					}
					else 
						alert("Funzionalita' non attiva")
				});
			})

		
		jq(".data-grid-row").hover(
			function() {
				jq(this).addClass("hover");
			},
			function() {
				jq(this).removeClass("hover");
			}
		);
		
		
		
		/* Main menu settings */
		jq('#menuPrimoLiv ul:first a').each(function(j, item) {
			if(jq(item).hasClass('hover')) {
				if(location.pathname.indexOf("public")!=-1){
					jq('#menuSub').append(jq(item).parent().find('span.description').html()).attr("close", "false").show();
					jq('#menuSubArrow').css("left", (jq(item).parent().position().left + (jq(item).parent().width() / 2) - jq('#menuSubArrow').width() / 2));
				}
			}
			jq(item).parent().hover(
				function() {	// Mouseover
					clearTimeout(currentActiveTabTimeout);
					Edi.resetMenu();
					Edi.menuItemHover = jq(item);
					jq(item).addClass("hover");
					jq('#menuSub ul, #menuSub p').remove();
					
					if(location.pathname.indexOf("public")!=-1){
						jq('#menuSub').append(jq(item).parent().find('span.description').html()).attr("close", "false").show();
						jq('#menuSubArrow').css("left", (jq(item).parent().position().left + (jq(item).parent().width() / 2) - jq('#menuSubArrow').width() / 2));
					}
					currentActiveTab = jq(item);
				},
				function() {	// Mouseout
					
					if(location.pathname.indexOf("public")!=-1){
						//clearTimeout(currentActiveTabTimeout);
						currentActiveTabTimeout = setTimeout(function(){
							jq('#menuPrimoLiv ul:first a').each(function(j, item2) {
								currentHoverArea = Edi.getCurrentHoverArea(item2);
								if(currentHoverArea && currentHoverArea == navigationPublicArea) {
									Edi.resetMenu();
									Edi.menuItemHover = jq(item2);
									jq(item2).addClass("hover");
									jq('#menuSub ul, #menuSub p').remove();
									jq(item2).parent().addClass("on");
									
									jq('#menuSub').append(jq(item2).parent().find('span.description').html()).attr("close", "false").show();
									jq('#menuSubArrow').css("left", (jq(item2).parent().position().left + (jq(item2).parent().width() / 2) - jq('#menuSubArrow').width() / 2));
								}
							});
						}, Edi.menuDelayTime);
					} else {
						//clearTimeout(currentActiveTabTimeout);
						currentActiveTabTimeout = setTimeout(function() {
							
							jq('#menuSub').attr("close", "true");
							
							if (jq('#menuSub').attr("close") == "true") {
								
								Edi.resetMenu();
								jq('#menuSub').hide();
							}
							
						}, Edi.menuDelayTime);
					}
				}
			);
		});
		
		jq('#menuSub').hover(
			function() {
				clearTimeout(currentActiveTabTimeout);
//				Edi.menuItemHover.addClass("hover");
				if(Edi.menuItemHover)
					Edi.menuItemHover.parent().addClass("on");
				jq(this).attr("close", "false")
			},
			function() {
				//clearTimeout(currentActiveTabTimeout);
				currentActiveTabTimeout = setTimeout(function() {
					if(location.pathname.indexOf("public")!=-1){
						jq('#menuPrimoLiv ul:first a').each(function(j, item2) {
							currentHoverArea = Edi.getCurrentHoverArea(item2);
							if(currentHoverArea && currentHoverArea == navigationPublicArea) {
								Edi.resetMenu();
								Edi.menuItemHover = jq(item2);
								jq(item2).addClass("hover");
								jq(item2).parent().addClass("on");
								jq('#menuSub ul, #menuSub p').remove();
								
								jq('#menuSub').append(jq(item2).parent().find('span.description').html()).attr("close", "false").show();
								jq('#menuSubArrow').css("left", (jq(item2).parent().position().left + (jq(item2).parent().width() / 2) - jq('#menuSubArrow').width() / 2));
							}
						});
					}
					
				}, Edi.menuDelayTime);
				/*
				jq('#menuSub').attr("close", "true");
				setTimeout(function() {
					if (jq('#menuSub').attr("close") == "true") {
						jq('#menuSub').hide();
						Edi.resetMenu();
					}
				}, Edi.menuDelayTime);
				*/
			}
		);
		
	  
		/* DIV select like */
		jq('.div-select').each(function() {
			jq(this).unbind("click").bind("click", function() {
				jq(this).css("overflow", (jq(this).css("overflow") == "visible" ? "hidden" : "visible"));
			});
			if (jq(this).hasClass("absolute-right")) {
				jq(this).parent().css("position", "relative");
				jq(this).css({
					position: 'absolute',
					top: '-4px',
					right: '10px'
				});
			}
		});
		
		/* EMERGENZA GAS */
		jq('.skin-select').linkselect();
		/*
		jq.ajax({
			url: 'js/dati_min.xml', 
			success: function(data) {
				$(data);
			}
		});
		*/
		
		
		jq('#sel_regione_list span').each(function() {
			jq(this).unbind("click").bind("click", function() {
				/* Reset */
				jq('#sel_provincia').linkselect("replaceOptions", [{value: '-', text: ' Caricamento... '}]);
				jq('#sel_citta').linkselect("replaceOptions", [{value: '-', text: ' - seleziona la citt&agrave; - '}]);
				var reg = jq(this).parent().attr('rel');
				
				jq.ajax({
					url: 'xml/'+reg+'.xml',
					dataType: "text/xml", //(jq.browser.msie) ? "text" : "xml",
					error: function(XMLHttpRequest, textStatus, errorThrown) {
						alert(XMLHttpRequest)
						alert(textStatus)
						alert(errorThrown)
					},
					success: function(data) {
						var xml;
						var added_prov = new Array();
						var options = [ {value: 0, text: " - Seleziona la provincia - "} ];
						if (typeof data == "string" && jq.browser.msie) {
							xml = new ActiveXObject("Microsoft.XMLDOM");
							xml.async = false;
							xml.loadXML(data);
						} else {
							xml = data;
						}
						jq(xml).find("Row").each(function(j) {
							var prov_key = jq(this).find("Cell:eq(1) Data:first").text();
							if (jq.inArray(prov_key, added_prov) == -1) {
								added_prov.push(prov_key);
								options.push({ value: prov_key, text: prov_key });
							}
						});
						jq('#sel_provincia').linkselect("replaceOptions", options);
						jq('#sel_provincia_list span').each(function() {
							
							jq(this).unbind("click").bind("click", function() {
								jq('#sel_citta').linkselect("replaceOptions", [{value: '-', text: ' Caricamento... '}]);
								var prov = jq(this).parent().attr('rel');
								
								var com = new Array({ value: "-", text: " - Seleziona il comune - " });
								var added_com = new Array();
								jq(xml).find("Row").find("Cell:eq(1) Data").each(function() {
									if (jq(this).text() == prov) {
										var com_key = jq(this).parents("Row").find("Cell:eq(2) Data:first").text();
										if (jq.inArray(com_key, added_com) == -1) {
											added_com.push(com_key);
											com.push({
												value: com_key,
												text: com_key
											});
										}
									}
								});
								jq('#sel_citta').linkselect("replaceOptions", com);
								
								jq('#sel_citta_list span').unbind("click").bind("click", function() {
									var soc = '';
									var count = 0;
									var ser = jq(this).text();
									jq(xml).find("Row").find("Cell:eq(2) Data").each(function() {
										if (jq(this).text() == ser) {
											var rr = jq(this).parents("Row");
											jq().each(function(){
												if(count==0){
												soc += '<span class="formTitle1"><strong>RISULTATI</strong></span><p><br />';
												}
												soc += '<strong>' + rr.find("Cell:eq(3) Data:first").text() + '</strong><br />Tel:' + rr.find("Cell:eq(4) Data:first").text() + '</p><br />';
												count++;
											})
										}
									})
									jq('#gas_search_result').empty().html(soc);
								});
								
							});
						});
					},
					complete: function(data) {
						//
					}
				});
				
			});
		});
		
		// accordion FAQ
		//jq("#faqs-accordion").accordion();
		jq('#faqs-accordion .faqItem div.t a').click(function(e){
			var obj = jq(this).parent().next()
			if(jq(obj).hasClass('open')){
				jq(obj).slideUp(200,function(){
					jq(obj).removeClass('open');
				});
			}
			else{
				jq(obj).slideDown(200,function(){
					jq(obj).addClass('open');
				});
			}
			jq(this).parent().toggleClass("open");
			e.preventDefault();
		});
	


	
	}
	
}
jq(document).ready(function() {
	if (jq.browser.mozilla){
		jq('.colCentr.formDati TABLE.riep').css('border-collapse','separate');
	}
});
jq(document).ready(function() {
	
	
		/* IE6 png fix */
		if (jq.browser.msie && jq.browser.version < 7) {
			jq('img').each(function(j, i){
				if (jq(this).attr('src').indexOf('.png') > -1) {
					DD_belatedPNG.fixPng(i);
				}
			});
			DD_belatedPNG.fix('.png-bkg');
		}
	var settings = { 
	  tl: { radius: 4 }, 
	  tr: { radius: 4 }, 
	  bl: { radius: 4 }, 
	  br: { radius: 4 }, 
	  antiAlias: true 
	}; 
/*
	jq('.rounded-box').each(function(i, rd) { 
	  curvyCorners(settings,rd); 
	});
*/	
	
	Edi.setSkin();
		
});
  
function parseXml(xml)
{
	if (jQuery.browser.msie)
	{
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.loadXML(xml);

		xml = xmlDoc;
	}
	return xml;
}


function client_remove(el)
{
  ref = jq(el).parent().children('label').text();
  labels = jq('.ws-list ul li');
  labels.each(function(i,val){
    if(jq(labels[i]).children('label').text() == ref) jq(labels[i]).children('input').attr('checked',false);
  });
  jq(el).parent().remove();
  checkout();
  checkValue();
  return false;
}

function showTooltip (opener, id) {
	jq(document.body).unbind("click").bind("click", function() {
		jq('.wdgt-tooltip').hide();
	});
	setTimeout(function() {
		jq('#' + id).css ({
			top: (jq(opener).offset().top - jq('#' + id).height() + 5),
			left: (jq(opener).offset().left - jq('#' + id).width() + 10)
		}).show();
	}, 50)
}

jq(document).ready(function() {
	  
  /* HELP form */
  jq('.form-help').hide();
  jq('.form-help.alarm').show();
  jq('.btn_help').unbind("click").bind("click", function(){
    jq(this).parent().next().toggle();
  });
	
  
  /* DIALOG */
  jq('.form-btn').unbind("click").bind("click", function(){
    jq('#dialog').dialog({
        resizable: true,
        modal: true,
        width: 500,
        height: 350,
        overlay: { backgroundColor: "#fff", opacity: 0.5 }
        //~ buttons: { "Close": function() { $(this).dialog("close"); } },
        //~ close: function(ev, ui) { $(this).remove();}
    });
  });
  jq('#close_dialog').unbind("click").bind("click", function(){
    jq('#dialog').dialog('close');
  });
  
  
  /* WIDGET SHARE */
  jq('.ws-list ul li input[type=checkbox]').click(function(){
    if(jq(this).is(':checked')){
    	checkin();
      jq('.ws-selected ul').append('<li><a rel="'+jq(this).parent().children("label").text()+'" href="#" title="Cancel" onclick="client_remove(this); return false;"><img src="/i/btn_cancel.gif" alt="Cancel" /></a> <label>'+ jq(this).parent().children('label').text() +'</label></li>');
    }else {
    	checkout();
      jq('.ws-selected ul li a[rel='+jq(this).parent().children('label').text()+']').parent().remove();
    }
  }).next('label').hover(
    function(){jq(this).css({'cursor':'pointer','color':'#093'})},
    function(){jq(this).css({'cursor':'default','color':'#888'})}
  );
  
  
  /* SLIDER */
  //~ jq('.slider').slider({
    //~ range: 'min',
    //~ min: 0,
    //~ max: 100,
    //~ value: 60,
    //~ animate: true,
    //~ orientation: 'vertical',
    //~ change: function(e, ui){
      //~ var maxScroll = jq('.slided').attr('scrollHeight') - jq('.slided').width();
      //~ jq('.slided').animate({scrollBottom: ui.value * (maxScroll / 100) }, 1000);
    //~ },
    //~ slide: function(e, ui){
      //~ var maxScroll = jq('.slided').attr('scrollHeight') - jq('.slided').width();
      //~ jq('.slided').attr({scrollBottom: ui.value * (maxScroll / 100) });
    //~ }
  //~ });
  
  
  /* OVERLAY */
  var divWidth=0;
  jq('.overlay-btn').click(function(e){
	var div = jq('#'+jq(this).attr('rel'));
	if(divWidth==0)divWidth=jq(div).width();
	var pos={
		y:jq(this).position().top,
		x:jq(this).position().left	
	}

	jq('.colCentrCont').append('<div class="dettagli-div" id="clone_'+jq(this).attr('rel')+'" style="position:absolute; z-index:998; top:'+pos.y+'px; left:20px; width:'+divWidth+'px; margin:17px 0px 0px 0px;">'+jq(div).html()+'</div>');
  },function(e){});
  
  jq('.overlay-btn').click(function(e){
	var ref = this;
	var div = jq('#clone_'+jq(ref).attr('rel'));
	if(jq(div).hasClass('div-open')){jq(div).fadeOut(200,function(){jq(div).removeClass('div-open');});}	
	else{
		jq('.dettagli-div.div-open').fadeOut(200,function(){
			jq('.dettagli-div').removeClass('div-open');
		});
		jq(div).fadeIn(200,function(){
			jq(div).addClass('div-open');
		});
	}
	e.preventDefault();
  });



    jq('*').not('.overlay-btn,.overlay-btn *,.dettagli-div,.dettagli-div *').click(function(){
	jq('.dettagli-div.div-open').fadeOut(200,function(){jq('.dettagli-div').removeClass('div-open');});
  })
  
 /* ACCORDION */
  jq('.accordion-btn').click(function(e){
	var div = jq('#'+jq(this).attr('rel'));
	var isIE7 = (jq.browser.msie && jq.browser.version==7);
	var isIE = (jq.browser.msie);
	
	if(jq(div).hasClass('div-open')){
		
			jq(div).slideUp(200,function(){
				jq(div).removeClass('div-open');
			});
	}
	else{
		jq(div).slideDown(200,function(){
			
				jq(div).addClass('div-open');
		});
	}
	e.preventDefault();
  });

  
});
function accovclose(el){
	var div = jq(el).closest('.dettagli-div');
	var isIE7 = (jq.browser.msie && jq.browser.version==7);
	
	var isIE = (jq.browser.msie);
	
	if(jq(el).is('.acc-close')){
		
		jq(div).slideUp(200,function(){
			jq(div).removeClass('div-open');
		});
	}
	if(jq(el).is('.ov-close')){
		jq(div).fadeOut(200,function(){
			jq(div).removeClass('div-open');
		});
	}
	return false;
} 

function hideElement(idElement) {
	document.getElementById(idElement).style.visibility= "hidden";
}

function fireValidationError(elemId,msg){
	jq("#"+elemId).trigger("errorValidation",msg);
}


jq(document).ready(function() {
	try {
		if (reg_check_elements == null || reg_check_elements === undefined ) return;
	} catch (err) {
	    return;
		// reg_check_elements non esiste oppure c'e' stato un errore durante l'esecuzione delle 
		// righe all interno del try. In caso di errore non faccio niente.
	}		
		var iC = 0;
		var alertRequiredField	= 'Il campo richiesto &egrave; obbligatorio.';
		var alertMsgLengthPref	= 'Il campo deve contenere almeno ';
		var alertMsgLengthSuff	= ' caratteri.';
		var alertMsgFixLengthPref = 'Il campo deve contenere ';
		var alertMsgFixLengthMiddle = ' oppure ';
		var alertMessageLength	= 'Lunghezza del campo non corretta.';
		var alertMessageFormat	= 'Formato campo errato';
		var alertMessageDifferent = 'Il campo di conferma differisce dal precedente';
		var checkRegEvento = "blur";
		
		/*
		 * Rimuovo il bind dai pusanti help. 
		 * Qui lo aggiungero man mano che creo i campi.
		 */

		while (iC < reg_check_elements.length) {
			elem_curr = reg_check_elements[iC];
		
			var elem_id   = "#" + elem_curr['id'];	
			var $mioElem = jq(elem_id);	
			var elemDivContainer = $mioElem.parent();
			var elemImg = $mioElem.siblings('img:first');
			var elemDivErrorContainer = elemDivContainer.next('div');

            // creo una copia del messaggio informativo, se serve, e lo posiziono prima del messaggio di help.
			var errorMessage = null;
			var appendErrorMessageObj = false;
			if(elemDivErrorContainer != null 
				&& elemDivErrorContainer !== undefined 
				&& elemDivErrorContainer.hasClass("alarm")) {
					errorMessage = elemDivErrorContainer;
			} else {
				errorMessage = elemDivErrorContainer.clone();
				appendErrorMessageObj = true;
			}
			
			if(appendErrorMessageObj) {
				errorMessage.find('div.form-help-int:first').html("errore generico");
				errorMessage.addClass("hide");
				elemDivErrorContainer.before(errorMessage);
			}
			var helpMessageFirst = elemDivContainer.next("div:first").next("div:first");
//			console.log("setto il check per : " + elem_id);
			// 
			/**
			 * Rifaccio il bind sull'immagine di help se esiste per non impattare 
			 * altre possibili funzionalita' non legate ai check di registrazione.
			 */
			
			if(elemImg != null 
				&& elemImg !== undefined 
				&& elemImg.length > 0 
				&& !elemImg.hasClass("btn_alarm")) {
				jq(elemImg).unbind("click").bind("click", function() {
				    jq(this).parent().next().next().toggle();
				});
			}
			
            // per ogni elemento definisco le operazioni da effettuare al blur (checkRegEvento)
            
      checkRegEvento=elem_curr['bind'] != null ? elem_curr['bind'] : "blur";      
			jq(elem_id).bind(checkRegEvento, function(e){

                
				var $mioElem = jq(e.target); // elemento da cui si parte (inputbox)
				// prelevo i controlli da effettuare sul contenuto del campo.
				var elem_curr = getJSONObject(reg_check_elements, $mioElem.attr('id'));
				var elem_isRequired  = elem_curr['required']=='y';
				var elem_validation_rules = elem_curr['validation'];

				var testo = $mioElem.attr('value');
                testo = (testo == null || testo === undefined) ? '' : testo;

// codice di esempio da prendere come riferimento
/*          <div class="form-voice">Codice di accesso</div>
              <div class="form-input">
   --->        <input type="text" class="form-input-text-big" id="CheckUserCode_datiUtente_codiceAccesso" value="" size="40" name="datiUtente.codiceAccesso">
	        	&nbsp;<img class="btn_help" src="/i/btn_help.gif" alt="btn_help">
              </div>
            
           <div class="form-help" style="display: none;"><div class="form-help-int">
                    Il Codice di Accesso coincide con il POD per i contratti di Energia Elettrica e con il PDR per i contratti gas.<br>
                    Puoi trovarlo sulla tua bolletta di energia, sul contratto e nel messaggio di accettazione del contratto che ti � stato inviato da Edison Energia.
                </div></div><div class="form-help hide" style="display: none;"><div class="form-help-int">errore generico</div></div>
            <div class="cl"></div>

*/
				var elemDivContainer = $mioElem.parent();	//div.form-input	
				var elemImg = $mioElem.siblings(':first');  //img.btn_help
				
				var elemDivErrorContainerJs = elemDivContainer.next('div.form-help:first');  // elemento con l'errore
				var helpMessage = elemDivErrorContainerJs.next('div.form-help:first'); // div con il messaggio informativo
				var elemDivErrorMessage = elemDivErrorContainerJs.find('div.form-help-int:first');

                // Check della validita' degli elementi
				var isErrorField = false;
                var errorMsg = "";
                
                var validObj = {isErrorField:false, errorMsg:""};
                
				if (elem_isRequired && testo.length == 0) {
                        validObj['isErrorField'] = true;
						validObj['errorMsg'] = alertRequiredField;			
	
				}
				
				if (!validObj['isErrorField']){

                    for (var i=0;i<elem_validation_rules.length; i++){
                        var validationObject = elem_validation_rules[i];
                        
            			if((elem_curr['id'])=="CheckUserCode_datiUtente_codiceFiscale"){
                        	if(!checkCodiceFiscale(testo)){
                        		validObj = checkErrorField(testo, validationObject);
                        	}
                        }
                        else{
                        	validObj = checkErrorField(testo, validationObject);
                        }
                        
                        if (validObj['isErrorField']){
                            break;
    		            }
   		                
        	        }// for

                }
               
               if(validObj['isErrorField'])
                		fireValidationError(this.id,'');
                
              
              	elemDivErrorMessage.html(validObj['errorMsg']);
              	updateCheckField(validObj['isErrorField'], elemDivContainer, elemImg, helpMessage, elemDivErrorMessage,validObj['errorMsg']);
              
			});
			

			//checkLengthForElement(elem_id,elem_len);
			iC++;
		}

});


function checkCodiceFiscale(codiceFiscale){
	if(codiceFiscale == "" || codiceFiscale == null )
		return true;

	codiceFiscale = codiceFiscale.toUpperCase();

	if( codiceFiscale.length != 16 )
		return false;

	var i;
	var validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

	for( i = 0; i < 16; i++ )
		if( validi.indexOf( codiceFiscale.charAt(i) ) == -1 )
			return false;

	var set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
	var s = 0;

	for( i = 1; i <= 13; i += 2 )
		s += setpari.indexOf( set2.charAt( set1.indexOf( codiceFiscale.charAt(i) )));
	for( i = 0; i <= 14; i += 2 )
		s += setdisp.indexOf( set2.charAt( set1.indexOf( codiceFiscale.charAt(i) )));
	if( s%26 != codiceFiscale.charCodeAt(15)-'A'.charCodeAt(0) )
		return false;
	return true;
}


function checkErrorField(objValue, validationObject) {
    var validationReturn = {isErrorField:false, errorMsg:""};
    var elem_action = validationObject['action'];
    
				if( elem_action !== undefined ) {
					switch(elem_action) {
						case 'equalto':
            				var elem_equalto  = validationObject['equalto'];
            				
				            // il valore del campo deve essere uguale a quello presente in equalto
                			if (objValue != jq('#'+elem_equalto).val()){
                                validationReturn['isErrorField'] = true;
				            }
                            
		    				break;
						case 'interval':
            			    var elem_minlen = validationObject['minlen'];
			            	var elem_maxlen = validationObject['maxlen'];
							// se il testo e' minore della lunghezza stabilita
							if (objValue.length < elem_minlen || objValue.length > elem_maxlen){
                                validationReturn['isErrorField'] = true;
                            }
	    					break;
						
						case 'fixedlength':
            			    var elem_minlen = validationObject['minlen'];
			            	var elem_maxlen = validationObject['maxlen'];
							// se il testo e' diverso dalle lunghezze stabilite
							if (objValue.length != elem_minlen && objValue.length != elem_maxlen) {
                                validationReturn['isErrorField'] = true;
							}
    						break;
						case 'fixedlengthmn':
            			    var elem_minlen = validationObject['minlen'];
			            	var elem_maxlen = validationObject['maxlen'];
							// se il testo e' diverso dalle lunghezze stabilite
							if (objValue.length != elem_minlen) {
                                validationReturn['isErrorField'] = true;
							}
						    break;
						case 'regex':
            				var elem_regex  = new RegExp(validationObject['regex']);
        				    if (!elem_regex.test(objValue)) {
                                validationReturn['isErrorField'] = true;
	    	        		}
		    				break;
	    			case 'function':
          				var func  = validationObject['func'];
      				    if (eval(func+"()")) {
                     validationReturn['isErrorField'] = true;
    	        		}
	    				break;
					}
				}
    
        
    if (validationReturn['isErrorField']) validationReturn['errorMsg'] = validationObject['errorMsg'];

    return validationReturn;
}

function getJSONObject(elements, idSelected){
	var returnObj = null;
	var elem;
	for (var ctl in elements){
		elem = elements[ctl];
		if (elem['id'] == idSelected){ returnObj = elem;break;}
	}
	return returnObj;
}

/**
				elemDivContainer	//div.form-input	
				elemImg             // img.btn_help
				helpMessage         div.form-help:1
				errorMessage        div.form-help:2


*/
function updateCheckField(isErrorField, elemDivContainer, elemImg, helpMessage, errorMessage,textErrorMessage){
	var tr =jq(elemDivContainer).parents("tr");
	
	if (isErrorField){
		
		var msg = tr.find(".riep-alert");	
		
		
		msg.html("<br/>\n"+textErrorMessage);
		msg.show();
		tr.addClass("error");
		tr.children().css('border','1px solid #FE1A1B');
		if(tr.children().length==3){
			tr.children(':eq(2)').css('border','none');
			tr.children(':eq(0)').css('border-right','none');
			tr.children(':eq(1)').css('border-left','none');
		}else{
			tr.children(':last').css('border-left','none');
			tr.children(':first').css('border-right','none');
		}
		if(!(tr.parent().parent().parent().prev().is('br')))
			tr.parent().parent().parent().prev().after('<br>')
		
		/*
        // aggiungo la classe alarm alla inputbox
    	if (!elemDivContainer.hasClass('alarm'))
	           elemDivContainer.addClass('alarm');

        // se non esiste l'immagine l'aggiungo con classe btn_alarm e  src= btn_alarm.gif
        // e l'accodo alla inputbox
    	if (elemImg == null || elemImg === undefined || elemImg.length == 0) {
	    	elemImg = jq('<img/>');

		    elemImg.attr({alt:"nohelp"});
		    
		
	    	jq(elemDivContainer).append(elemImg);
	    }
	    
	    elemImg.unbind('click');
	    // setto src e class nel caso esista e sia btn_help
        elemImg.attr({ 'class' :"btn_alarm", src:"/i/btn_alarm.gif", style:'cursor:default;'});
	    
	    // evidenzio il contenitore dell'errore
	    var elemDivErrorContainer = errorMessage.parent();
    	if (!elemDivErrorContainer.hasClass('alarm')) elemDivErrorContainer.addClass('alarm');
    	elemDivErrorContainer.attr({style: 'display:block;'});
    	if (errorMessage.hasClass("hide")) errorMessage.removeClass("hide");	
    	*/			


	} else {
		tr.removeClass("error");
		tr.children().css('border','none');
		if((tr.parent().parent().parent().prev().is('br')))
			tr.parent().parent().parent().prev().remove();		
		var msg = tr.find(".riep-alert");		
		msg.hide();
		/*
        // aggiungo la classe alarm alla inputbox
    	if (elemDivContainer.hasClass('alarm'))
	           elemDivContainer.removeClass('alarm');

        // se esiste l'immagine l'aggiungo con classe btn_alarm e  src= btn_alarm.gif
        // e l'accodo alla inputbox
    	if (elemImg != null && elemImg !== undefined && elemImg.length > 0){
    	    if (elemImg.attr("alt") == "nohelp") {
			    jq(elemImg).remove();
			    elemImg=null;
			} else {
        		elemImg.attr({alt:"", "class":"btn_help",src:"/i/btn_help.gif", style:''});
                jq(elemImg).unbind("click").bind("click", function(){
                    helpMessage.toggle();
                });
	        		
			}
		}
			
	    // evidenzio il contenitore dell'errore
	    var elemDivErrorContainer = errorMessage.parent();
	    
    	if (elemDivErrorContainer.hasClass('alarm')) elemDivErrorContainer.removeClass('alarm');
    	elemDivErrorContainer.attr({style: 'display:none;'});
    	if (!errorMessage.hasClass("hide")) errorMessage.addClass("hide");				
 
		*/
		
    }
	    	
}


/**
 * Se l'elemento con id passato in input esiste 
 * lo rende invisibile.
 */
function chiudi(/**String*/objId) {
	var obj2hide = document.getElementById(objId);
	if(obj2hide != null && obj2hide !== undefined) {
		obj2hide.style.display= "none";
	}
}

//------------- Validazione campi Delega ------------------------------------------------------------>
jq(document).ready(function() {
	try {
	
		if (deleghe_check_elements == null || deleghe_check_elements === undefined ) return;
	} catch (err) {
	    return;	
	}	
	
	var alertRequiredField	= 'Il campo richiesto &egrave; obbligatorio.';
	var alertMsgLengthPref	= 'Il campo deve contenere almeno ';
	var alertMsgLengthSuff	= ' caratteri.';
	var alertMsgFixLengthPref = 'Il campo deve contenere ';
	var alertMsgFixLengthMiddle = ' oppure ';
	var alertMessageLength	= 'Lunghezza del campo non corretta.';
	var alertMessageFormat	= 'Formato campo errato';
	var alertMessageDifferent = 'Il campo di conferma differisce dal precedente';
	
	var iC=0;
	while(iC < deleghe_check_elements.length){
		elem_curr = deleghe_check_elements[iC];		
		var elem_id   = "#" + elem_curr['id'];
		
		var elem = jq(elem_id);
		
		//elem.parent().siblings().html();
	
		elem.bind("blur",function(e){
						var $mioElem = jq(e.target); // elemento da cui si parte (inputbox)
						// prelevo i controlli da effettuare sul contenuto del campo.
						var elem_curr = getJSONObject(deleghe_check_elements, $mioElem.attr('id'));
						var elem_isRequired  = elem_curr['required']=='y';
						var elem_validation_rules = elem_curr['validation'];
			
						var testo = $mioElem.attr('value');
			            testo = (testo == null || testo === undefined) ? '' : testo;
			
			//codice di esempio da prendere come riferimento
			/*
			          <img width="20" src="/i/ico_alert_small.gif" alt="Alert">
			   	      <span class="riep-alert red">Il campo richiesto e' obbligatorio.</span>
			
			*/
					
			           
						var isErrorField = false;
            var errorMsg = "";            
            var validObj = {isErrorField:false, errorMsg:""};
			            
						if (elem_isRequired && testo.length == 0) {
			      	validObj['isErrorField'] = true;
							validObj['errorMsg'] = alertRequiredField;
						}
						
						if (!validObj['isErrorField']){
										
										if(elem_validation_rules !== undefined)
			                for (var i=0;i<elem_validation_rules.length; i++){
			                    var validationObject = elem_validation_rules[i];
			                    validObj = checkErrorField(testo, validationObject);
			            
			
			                    if (validObj['isErrorField']){			                    	
			                        break;
					                }
					                
			    	          }// for
			
			      }
			      
			     
							setDelegheErrorMessage(validObj['isErrorField'],$mioElem,	validObj['errorMsg']);				      	
			     
			          
					});//--------------------------------->
					
			
					
					iC++;
		}
			
						
				
	
	
});

function setDelegheErrorMessage(error,elem,errorMessage){
	if(error){
		elem.parent().parent().addClass('error');	
		elem.parent().children(':last').html(' <br/><span class="riep-alert red">'+errorMessage+'</span>');
	}else{
		elem.parent().parent().removeClass('error');		
		elem.parent().children(':last').html('');
	}
}

var firstOpeningPopoUpProspect = true;

function closePopupFromBodyProspect(event, actualObj) {
	var targetElem = event.target;
	try { 
		var targetElemClass	= "form-helper-grn";
		if(jq(targetElem).hasClass(targetElemClass)) {
			return;
		}
		
		if(!firstOpeningPopoUpProspect) {
			var popupContainer = jq(targetElem).parents();
			var closePopUp = true;
			for(var i=0; i < popupContainer.length; i++) {
				var hasTargetClass = jq(popupContainer[i]).hasClass(targetElemClass);
				if(hasTargetClass) {
					closePopUp = false;
					break;
				}
			}
			if(closePopUp)
				jq(actualObj).hide();
		}
		firstOpeningPopoUpProspect = false;
	} catch(err) {
		jq(actualObj).hide();
	}
}

jq(document).ready(function() {
	if(jq(".form-help").length>0) {
		jq(".form-help").hide();
		jq(".form-helper").click(function(e){
			jq(this).siblings(".form-help").toggle();
			e.preventDefault();
		});
	}
		if(jq(".form-help").length>0) {
			jq(".form-help").hide();
			jq(".form-helper-grn").click(function(e){
				jq(".form-help").hide();
				
				jq(this).children(".form-help").toggle();
				e.preventDefault();
				
				firstOpeningPopoUpProspect = true;

				jq("body").unbind('click');

				jq("body").click(function(evt){closePopupFromBodyProspect(evt,jq('.form-help'))});
			});
		}
	if(jq("#inputBoxRicercaSuggerimento") != null && jq("#inputBoxRicercaSuggerimento").length > 0) {
		var boxInputWidth = jq("#boxRicerca").width();
		try {
			jq("#inputBoxRicercaSuggerimento").autocomplete("/servlet/edisonSearchXml", {
				delay:10,  
				minChars:3,  
				dataType: 'jsonp',
				parse: function(data) {
				var rows = new Array();
				var linksFound = data.linksFound ? data.linksFound : 5;
				var result = data.result;
				if(result) {
					for(var i=0; i<result.length; i++) {
						rows[i] = { data: {"title":result[i].titolo, "url":result[i].url, "summary":result[i].suggerimento } };
					}
					jq("#hitsPerDup").attr("value", linksFound);
					jq("#hitsPerPage").attr("value", linksFound);
				}
				return rows;
			},
			formatItem: function(row, i, n) {
				if(row) {
					var element2Return = jq("<div style=\"text-align:left;\" onclick='goSomewhere(\"" + row.url + "\");' rel='" + row.url + "' ><h2>" + row.title + "</h2><p>" + row.summary + "</p></div>");
					/*
					element2Return.bind((jq.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) {
					//element2Return.addEvent("keypress" : "keydown", function(evt) {
						return handleEnter(evt, row.url);
					});
					*/
					return element2Return;
				}
			},
			width: '200px',//boxInputWidth,
			queryArgument:'query',
			max: 100,
			highlight: false,
			scroll: true,
			scrollHeight: 300,
			cacheLength: 0,
			selectFirst: false,
			submitHandlerFcx: handleEnter,
			extraParams: { 
				hitsForPageForced:'10',
				hitsPerDup:'10',
				startCategory:'0',
				hitsPerPage:'10',
				sortedBy:'score',
				start:'0'
			}
			});
		} catch(err) {
			
		}
	}
	
	
	//-------------- new elements ------------------>
	logPanel.init();
	boxSearch.init();
	boxFilters.init();
	formTabs.init();
	
	if(jq('#homeSlider').length > 0) {
		jq('#homeSlider').show().bxSlider({
			auto: true,
			controls: false,
			autoHover: true,
			pager: true
		});
	}
	
});
document.write('<style type="text/css">#homeSlider{display:none;}</style>')


function goSomewhere(url) {
	setTimeout(function(){ window.location.href = url; }, 10);
	return false;
}

function handleEnter (event, url) {
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which :
		event.charCode;
	if (keyCode == 13) {
		goSomewhere(url);
		return false;
	}
} 

//------------- End Validazione campi Delega ------------------------------------------------------------>

function certificazionePrezzi(a) {
	jQuery('#1').hide(); 
	jQuery('#2').hide(); 
	jQuery('#3').hide(); 
	jQuery('#4').hide(); 
	jQuery('#5').hide(); 
	jQuery('#6').hide(); 
	jQuery('#'+a).show();
}
function diagnosiCertificazionePrezzi(a) {
	jQuery('#7').hide(); 
	jQuery('#8').hide(); 
	jQuery('#9').hide(); 
	jQuery('#10').hide(); 
	jQuery('#11').hide(); 
	jQuery('#12').hide(); 
	jQuery('#'+a).show();
}

function diagnosiEnergeticaPrezzi(a){
	jQuery('#13').hide(); 
	jQuery('#14').hide(); 
	jQuery('#'+a).show();
}


//--------------------------- logPanel --------------------------------------------------------------->
document.write('<style type="text/css">.logPanelShow, .formTab {display:none;} .formTab.ftActive {display:block;}</style>')

var logPanel = {
	init: function() {
		jq('.logPanel').each(function(i,el){
			
			jq('.logPanelCloseButton',el).click(function(e){
				jq('.logPanelShow',el).slideUp(200);
				jq('.logPanelHidden',el).slideDown(100);
				e.preventDefault();
			})
			
			jq('.logPanelHidden',el).click(function(e){
				jq('.logPanelHidden',el).slideUp(100);
				jq('.logPanelShow',el).slideDown(200);
				e.preventDefault();
			});
			
		});
	}
}

var boxSearch = {
	init: function() {
		jq('.boxSearch').each(function(i,el){
			
			jq('.boxSearchTitle',el).click(function(e){
				if( jq('.boxSearchCont',el).hasClass('bscOpen') ) {
					jq('.boxSearchCont').removeClass('bscOpen').animate({
						height	: '9px'
					,	width	: '10px'
					},200,function(){
						//jq('.boxSearchCont').removeClass('bscOpen');
					});
				} else {
					jq('.boxSearchCont').addClass('bscOpen').animate({
						height	: '141px'
					,	width	: '130px'
					},200,function(){
						// jq('.boxSearchCont')
					});
				}
				e.preventDefault();
			})
			
		});
	}
}

var boxFilters = {
	init: function() {
		jq('.boxFilters').each(function(i,el){
			jq('.boxFiltersClose',el).show();
//			jq(el).hover(function(e){
//				jq('.boxFiltersClose',el).show()
//			},function(e){
//				jq('.boxFiltersClose',el).hide()
//			});
			
		});
	}
}

var formTabs = {
	init: function() {
		jq('.formTabs').each(function(i,el){
			
			jq('.formTabLink',el).click(function(e){
				
				if( !jq(this).hasClass('ftlActive') ) {
					
					jq(this).addClass('ftlActive').siblings('.formTabLink').removeClass('ftlActive');
					jq('.formTab').hide();
					jq(jq(this).attr('href')).show();
				}
				
				e.preventDefault();
			});
			
		});
	}
}

function attivaValidate() {
	jQuery('#form-Email').validate({
		rules:
        {
			emailConfirm:
            {
                required: true,
                equalTo: "#email"
            },
            email:
            {
                required: true,
                email: true
            }
        },
        messages:
        {
            email: 
            {
        		required: "Il campo &egrave obbligatorio! ",
        		email: " Inserisci un indirizzo email valido!"
        		
        	
        	} ,
        	emailConfirm: 
            {
        		required: "Il campo &egrave obbligatorio! ",
        		equalTo: "Inserire la stessa mail precedente!"
        	}
        }
		
	});
	//jQuery("#dialog-form").css("height","280px !important");
	//setTimeout(function(){ jQuery("div").removeClass('ui-dialog');  }, 100);
	jQuery("div.ui-dialog").addClass('ui-dialog-email');
	
}

function closeDialogForm(){
	jQuery('#dialog-form').dialog('close');
//	jQuery("div").addClass('.ui-dialog');
	jQuery("div.ui-dialog").removeClass('ui-dialog-email');
	//disattivaValidate();
}

function showConfirmMail(){
	jQuery('#dialog-form').dialog({
		autoOpen: false,
		height: 300,
		width: 350,
		modal:true
	});
	
	jQuery('#dialog-form').dialog('open');
	attivaValidate();
	
}

function apriDialogBollette(){
	jq('#dialogBollette').dialog({
        resizable: false,
        modal: false,
        overlay: {backgroundColor: "#fff", opacity: 0.5}
    });
    jq('#dialogBollette').dialog("open");
    
}

function chiudiDialogBollette(){
    jq('#dialogBollette').dialog("close");
}

var firstOpeningPopoUp = true;

function apriPopUpServiziOnLine(){
	jq('#dialog').dialog({
        resizable: false,
        modal: true,
        overlay: {backgroundColor: "#fff", opacity: 0.5}
    });
    jq('#dialog').dialog("open");
    
	firstOpeningPopoUp = true;

	jq("body").unbind('click');

	jq("body").click(function(evt){closePopupFromBody(evt, jq('#dialog'))});
}

function closePopupFromBody(event, actualObj) {
	var targetElem = event.target;
	try { 
		var actualObjId	= jq(actualObj).attr("id");
		var targetElemClass	= "ui-dialog";
		if(jq(targetElem).hasClass(targetElemClass)) {
			return;
		}
		
		if(!firstOpeningPopoUp) {
			var popupContainer = jq(targetElem).parents();
			var closePopUp = true;
			for(var i=0; i < popupContainer.length; i++) {
				var hasTargetClass = jq(popupContainer[i]).hasClass(targetElemClass);
				if(hasTargetClass) {
					closePopUp = false;
					break;
				}
			}
			if(closePopUp)
				jq(actualObj).dialog("close");
		}
		firstOpeningPopoUp = false;
	} catch(err) {
		jq(actualObj).dialog("close");
	}
}

function apriPopUpServiziOnLineGA(){
	jq('#dialogGrandiAziende').dialog({
        resizable: false,
        modal: true,
        overlay: {backgroundColor: "#fff", opacity: 0.5}
    });
    jq('#dialogGrandiAziende').dialog("open");
    
    firstOpeningPopoUp = true;

	jq("body").unbind('click');

	jq("body").click(function(evt){closePopupFromBody(evt, jq('#dialogGrandiAziende'))});
}

