var d,errori;
function init(){
  var formname=page.replace('-','_')+(subpage?"_"+subpage.replace('-','_'):"");
  if(typeof document.forms[formname]!= 'undefined'){d=document.forms[formname];}
  if(errori){if(eval("d."+errori).name){eval("d."+errori+".focus()");}}
  dummy();
  if(google_map){initialize_google_map();}
  get('combs').setAttribute("ondblclick","this.blur();log()");
  if(get('web_pk')){rotate_optimized();}
  }

var rotated_optimize=0;
function rotate_optimized(){
  get('web_pk').childNodes[0].style.bottom= -54*((rotated_optimize++)%3)-1 + "px";
  setTimeout(rotate_optimized,5000);
  }


var google_map,map,directionDisplay,directionsService;
var laRipa,laRipaImage,laRipaShadow,laRipaShape,laRipaMarker;
function initialize_google_map(){
  directionsService = new google.maps.DirectionsService();
  directionsDisplay = new google.maps.DirectionsRenderer();
  laRipa=new google.maps.LatLng(43.95405,11.37630);
  // * ROADMAP displays the normal, default 2D tiles of Google Maps.
  // * SATELLITE displays photographic tiles.
  // * HYBRID displays a mix of photographic tiles and a tile layer for prominent features (roads, city names).
  // * TERRAIN displays physical relief tiles for displaying elevation and water features (mountains, rivers, etc.).
  var myOptions={zoom:11, center:laRipa, mapTypeId:google.maps.MapTypeId.HYBRID, mapTypeControlOptions:{style:google.maps.MapTypeControlStyle.DROPDOWN_MENU}, navigationControlOptions:{style:google.maps.NavigationControlStyle.SMALL}, scaleControl:true };
  map=new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  directionsDisplay.setMap(map);

  // dimensioni, origine dell'immagine, punto attivo
  laRipaImage=new google.maps.MarkerImage('cont/immagini/comuni_flag.png', new google.maps.Size(26,39), new google.maps.Point(0,0), new google.maps.Point(12,38));
  laRipaShadow=new google.maps.MarkerImage('cont/immagini/comuni_flag-shadow.png', new google.maps.Size(46,39), new google.maps.Point(0,0), new google.maps.Point(12,38));
  // zona attiva dell'immagine, definita come poly-area tipica delle img
  laRipaShape={coord:[1,1, 1,39, 26,39, 26,1],type:'poly'};

  var marker=new google.maps.Marker({position:laRipa, map:map, icon:laRipaImage, shadow:laRipaShadow, shape:laRipaShape, title:'La Ripa Agriturismo', zIndex:10000});
  }


// gestione delle richieste di percorso in googlemaps
function calcRoute(origine,titolo,mezzo){
  directionsDisplay.setMap(map);
  if(origine.substr(0,5)=='coord'){origine=new google.maps.LatLng(origine.substr(5,-1))}
  var arrivoAllaRipa="via Ripa, 50032 Borgo San Lorenzo"; //
  if(mezzo=='piedi'){mezzo=google.maps.DirectionsTravelMode.WALKING;}
  else{              mezzo=google.maps.DirectionsTravelMode.DRIVING;}

  var request={origin:origine, destination:arrivoAllaRipa, travelMode:mezzo};
  directionsService.route(request, function(result,status){
    if(status==google.maps.DirectionsStatus.OK){directionsDisplay.setDirections(result);}
    else{alert("Scusate, ma... sembra che col circuito del Mugello proprio non ne vuole sapere di funzionare... continua a dire...\n\n"+status+"\n\n...boh?\npikappa")}
    });
  }


// zoom delle immagini galleria
var oldFoto;
function galleria(caller){
  if(oldFoto){get(oldFoto).style.background="";}
  var temp_pez=caller.id.split('_');
  get('didascalia_immagine').innerHTML=unescape(caller.alt);
  get('immagine_ingrandita').src=caller.src;
  caller.style.background='#f00';
  oldFoto=caller.id;
  }
  

function show_hide_news(id){
  var oldDisplay=get("news_"+id).style.display;
  if(oldDisplay=='none'){
    get('testo_corto_'+id).style.display='none';
    get("news_"+id).style.display="block";
    get("news_"+id).parentNode.className="news_div news_evidenziata";
    }
  return false;
  }


var old_caller='';
function show(caller,class_name,id){
  caller.blur();
  if(old_caller){
    var old_classNames=old_caller.className.split(' ');
    old_caller.className=old_classNames[0];
    }
  caller.className+=" attivo";
  old_caller=caller;
  var tutti_div=document.getElementsByTagName('div');
  for(divs in tutti_div){
    if(tutti_div[divs].className==class_name){
      if(tutti_div[divs].id==id){
        tutti_div[divs].style.display='block';
        }
      else{
        tutti_div[divs].style.display='none';
        }
      }
    }
  return false;
  }


// controlla i campi del formulario prima di inoltrare al server
function check_contact(f,opzioni){
  var fm="fm_",fe="fe_",j,i;
  var er='',il='',c2c=campi_da_controllare[f.name],cNOT2c=[]; // campi DA (e NON) controllare
  var temp_opzioni,altre_opzioni;
  var email_filter=/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,10})+$/;

  if(opzioni){                   // gestione di eventuali opzioni

     // +opzioni, separate da ; -> *opzioni* tiene la 1a e *altre_opzioni[]* le altre
    if(opzioni.indexOf(';')>0){
      temp_opzioni=opzioni.split(';')[0];
      altre_opzioni=opzioni.replace(temp_opzioni+";",'').split(';');
      opzioni=temp_opzioni;
      }

    var cond=opzioni.split(':')[0], ccond=opzioni.split(':')[1];

    // prima_(o unica)_condizione : su_quale_campo
    if(cond=='controlla_solo_scelto'){
      var opz=f[ccond];

      // radio: non controlla i campi il cui nome non comincia col valore del radio_scelto
      if(opz && opz[0] && opz[0].type && opz[0].type=="radio"){
        for(j=opz.length-1;j>=0;j--){
          if(!opz[j].checked){cNOT2c[j]=opz[j].value;}
          }
        }

      // checkbox...
      else if(opz && opz.type && opz.type=="checkbox"){}

      // text[area] o select...
      else if(opz.value!==undefined){

        // caso select con + opzioni di tipo
        // parola_chiave_nel_valore_scelto:campo_da_controllare
        if(altre_opzioni.length>0){ 
          var temp_cNOT2c=[],da_controllare='';    // carica tutti i campi_da_controllare,
          for(j=altre_opzioni.length-1;j>=0;j--){
            temp_cNOT2c[j]=altre_opzioni[j].split(':')[1];
            if(opz.value.indexOf(altre_opzioni[j].split(':')[0])>0){
              da_controllare=temp_cNOT2c[j];
              }
            }
          // NON controlla quelli non corrispondenti all'opzione scelta
          for(j=temp_cNOT2c.length-1;j>=0;j--){
            if(da_controllare!=temp_cNOT2c[j]){cNOT2c[j]=temp_cNOT2c[j];}
            }
          }
        }
      }
    }

  // c2c: x,y,z,a_b_c,w,d_e_f_g,...
  // x,y,z: individualmente // a_b_c (cig: campi in gruppo): [almeno] uno selezionato
  // cigs_campo[a|b|c] = a_b_c -> cig di riferimento dei campi [a|b|c]   

  // 1° giro: passa i c2c x estrarre i gruppi:
  var campi=c2c.split(','),cigs_campo=[],c,cs;
  for(i=campi.length-1;i>=0;i--){c=campi[i];        
    if(c.indexOf('_')>0){cs=c.split("_"); //cs=campo singolo
      for(j=cs.length-1;j>=0;j--){cigs_campo[cs[j]]=c;}
      }
    }

  // 2° giro: passa i c2c, ne estrae e testa il (val); gruppi?:sum/concat/labels x dopo
  var val,cigs_1o=[],cigs_val=[],z,qc,ii,s;
  campi=null;campi=c2c.replace(/_/g, ",").split(',').reverse();
  for(i=campi.length-1;i>=0;i--){c=campi[i];qc=f[c];val='';
    if(qc){                                      // se il campo esiste, ne legge il value
      if(qc.type=="checkbox"){val=5*qc.checked;} // campo=checkbox -> value=5*checked
      else if(qc[0] && qc[0].type=="radio"){     // campo=radio -> value=checked.value
        for(j=qc.length-1;j>=0;j--){if(qc[j].checked){val=qc[j].value.toString();}}
        }
      else if(qc.value!==undefined){val=qc.value.toString();} // campo text(area) -> value

      // se questo campo appartiene ad un gruppo [z=quale gruppo]
      if((z=cigs_campo[c])){
        // 1° incontro di z -> cigs_1o (x illumina), segnaposto per l'evnt errore
        if(!cigs_1o[z]){cigs_1o[z]=c;er+="X"+z+"\n";
          // init cigs_val (val tot del gruppo), per numeri o stringhe
          if(val*1==val){cigs_val[z]=0;}else{cigs_val[z]='';}
          }
        cigs_val[z]+=val; // e somma/concatena cigs_val
        }

      // sennò, se il campo è vuoto ma non dovrebbe esserlo, ricicla c2c
      else if(!val && undefined!==window[fm+c]){c2c=true;
        for(ii in cNOT2c){if(c.indexOf(cNOT2c[ii])===0){c2c=false;}}
        if(c2c){er+="- "+window[fm+c]+"\n";if(!il){il=(qc.name?c:qc[0]?c+'[0]':'');}}
        }
      // e se è email fornito, controllalo
      else if((" "+c).indexOf('email')>0 && !email_filter.test(val)){
        er+="- "+window[fe+c]+"\n";if(!il){il=c;}
        }
      }
    }
  // check gruppi, sostituz labels (s) con [er|''|''] se [regola|no regola|ok]
  for(z in cigs_1o){s="X"+z+"\n";val=trim(cigs_val[z].toString());
    if(val=='' || val=='0'){              // gruppo vuoto CON e SENZA regola
      if(window[fm+z]){er=er.replace(s,"- "+window[fm+z]+"\n");
        if(!il){il=(f[cigs_1o[z]].name?cigs_1o[z]:'');}}
      else{er=er.replace(s,"");}
      }
    else{er=er.replace(s,"");}                    // gruppo pieno - ok!
    }
  if(er!=''){
    f[il].focus();alert(fre.replace("((errori))","\n"+er));return false;
    }
  else{return true;}
  }

function perche_codice_antispam(){alert(perche_antispam_text);}


// zoom delle immagini
var coord=[],old_center_x,old_center_y;
function zoom(event,caller,mode){
  if(event && event.stopPropagation){event.stopPropagation();event.preventDefault()}
  else{event.cancelBubble=true;event.returnValue=true;}
  misure();
  var zoomed=get("zoomed_img"),plus_x,plus_y,center_x,center_y,img_x,img_y,larg,alt;
  zoomed.src=caller.src;
  if(zoomed.currentStyle){          // explorer
    var z=zoomed.currentStyle;
    plus_x= parseInt(z.borderLeftWidth,10) + parseInt(z.borderRightWidth,10) + parseInt(z.paddingLeft,10) + parseInt(z.paddingRight,10) ;
    plus_y= parseInt(z.borderTopWidth,10) + parseInt(z.borderBottomWidth,10) + parseInt(z.paddingTop,10) + parseInt(z.paddingBottom,10) ;
    }
  else if(window.getComputedStyle){ // mozilla
    var el=document.defaultView.getComputedStyle(zoomed,null);
    plus_x= parseInt(el.getPropertyValue('border-left-width'),10) + parseInt(el.getPropertyValue('border-right-width'),10) +  parseInt(el.getPropertyValue('padding-left'),10) + parseInt(el.getPropertyValue('padding-right'),10);
    plus_y= parseInt(el.getPropertyValue('border-top-width'),10) + parseInt(el.getPropertyValue('border-bottom-width'),10) + parseInt(el.getPropertyValue('padding-top'),10) + parseInt(el.getPropertyValue('padding-bottom'),10);
    }
  if(mode=='in'){
    coord=caller.alt.substr(caller.alt.lastIndexOf(" - ")).split('- ')[1].split('x');
    center_x=old_center_x=event.clientX;
    center_y=old_center_y=event.clientY;
    img_x=center_x-(coord[0]/2)-2;
    img_y=center_y-(coord[1]/2)-2;
    }
  else if(mode=='move'){
    center_x=event.clientX;
    center_y=event.clientY;
    img_x=(center_x-old_center_x)/10+old_center_x*1-(coord[0]/2)-2;
    img_y=(center_y-old_center_y)/10+old_center_y*1-(coord[1]/2)-2;
    }

  if(mode){
    if(img_x<10){img_x=10;}
    if(img_y<10){img_y=10;}
    larg=coord[0]*1+plus_x*1;
    alt=coord[1]*1+plus_y*1;
    if(img_x*1+larg*1>vw-10){img_x=vw-10-larg;}
    if(img_y*1+alt*1>vh-10){img_y=vh-10-alt;}
    img_x=parseInt(img_x,10);img_y=parseInt(img_y,10);
    }

  if(mode=='in'){
    zoomed.style.width=coord[0]+"px";
    zoomed.style.height=coord[1]+"px";
    zoomed.style.left=img_x+"px";
    zoomed.style.top=img_y+"px";
    zoomed.style.display='block';
    }
  else if(mode=='move'){
    zoomed.style.left=img_x+"px";
    zoomed.style.top=img_y+"px";
    }
  else{
    zoomed.style.display='none';
    }
  }


// per l'aggiornamento dei dati utente nel database
function dummy(){
  misure();
  if(get('browser_issues') && get('sw')){
    get('sw').style.color=(sw>=1024?'#060':'#c00');
    get('sh').style.color=(sh>=768?'#060':'#c00');
    get('swh').style.color=(sw>=1024?(sh>=768?'#060':'#960'):(sh>=768?'#960':'#c00'));
    get('swh').innerHTML=(sw>=1024?(sh>=768?'✓':'≈'):(sh>=768?'≈':'✘'))+' ('+sw+'x'+sh+')';
    get('jsa').style.color='#060';
    get('jsa').innerHTML='✓ (attivo)';
    if(!browser_to_update){
      get('non_mostrar_piu').style.display='none';
      get('browser_issues').style.display='none';
      }
    }
  if(osw=='setup' || !get('browser_issues')){return;}
  var update=[],update_element=0;
  if(sw>osw){update[update_element++]='sw='+sw;}
  if(sh>osh){update[update_element++]='sh='+sh;}
  if(vw>ovw){update[update_element++]='vw='+vw;}
  if(vh>ovh){update[update_element++]='vh='+vh;}
  if(dp>odp){update[update_element++]='dp='+dp;}
  if(update.length){
    var to_update=update.join("&");
    get('browser_issues').innerHTML+='<img id="dummy" src="cont\/rileva_schermo.php?'+to_update+'">';
    }
  }


// get(id)!
function get(id){
  var object=null;
  if(document.getElementById){object=document.getElementById(id);}
  else if(document.all){object=document.all[id];}
  else if(document.layers){object=document.layers[id];}
  return object;
  }


// trim(str)!
function trim(str){return str.replace(/^\s\s*/,'').replace(/\s\s*$/,'');}


// misure()!
var sw,sh,vw,vh,dp;
function misure(){sw=screen.width;sh=screen.height;dp=screen.colorDepth;if(document.body.offsetWidth && typeof document.body.offsetWidth !='undefined'){vw=document.body.offsetWidth;vh=document.body.offsetHeight;}else if(window.innerWidth && typeof window.innerWidth !='undefined'){vw=window.innerWidth;vh=window.innerHeight;}else if(document.documentElement && typeof document.documentElement!='undefined' && typeof document.documentElement.clientWidth!='undefined' && document.documentElement.clientWidth!=0){vw=document.documentElement.clientWidth;vh=document.documentElement.clientHeight;ie=1;}else if(document.body && document.body.clientWidth){vw=document.body.clientWidth;vh=document.body.clientHeight;}}


// log()!
var log_init;
function log(){
  if(!log_init){
    var dcg=document.createElement("div");
    dcg.id="div_login";
    dcg.innerHTML='<form name="login_form" method="POST" action="?p='+page+(subpage?'&s='+subpage:'')+(lingua?'&l='+lingua:'')+'" autocomplete="off"><input type="password" name="pass"><input type="submit" name="login" value="login"><\/form>';
    document.body.appendChild(dcg);
    log_init=1;
    }
  return false;
  }