/*******************************************************************/
/***                                                             ***/
/***   Tokenizer.js - JavaScript String Tokenizer Function       ***/
/***                                                             ***/
/***   Version   : 0.2                                           ***/
/***   Date      : 01.05.2005                                    ***/
/***   Copyright : 2005 Adrian Zentner                           ***/
/***   Website   : http://www.adrian.zentner.name/               ***/
/***                                                             ***/
/***   This library is free software. It can be freely used as   ***/
/***   long as this this copyright notice is not removed.        ***/
/***                                                             ***/
/*******************************************************************/

String.prototype.tokenize = tokenize;

function tokenize()
  {
     var input             = "";
     var separator         = " ";
     var trim              = "";
     var ignoreEmptyTokens = true;

     try {
       String(this.toLowerCase());
     }
     catch(e) {
       window.alert("Tokenizer Usage: string myTokens[] = myString.tokenize(string separator, string trim, boolean ignoreEmptyTokens);");
       return;
     }

     if(typeof(this) != "undefined")
       {
          input = String(this);
       }

     if(typeof(tokenize.arguments[0]) != "undefined")
       {
          separator = String(tokenize.arguments[0]);
       }

     if(typeof(tokenize.arguments[1]) != "undefined")
       {
          trim = String(tokenize.arguments[1]);
       }

     if(typeof(tokenize.arguments[2]) != "undefined")
       {
          if(!tokenize.arguments[2])
            ignoreEmptyTokens = false;
       }

     var array = input.split(separator);

     if(trim)
       for(var i=0; i<array.length; i++)
         {
           while(array[i].slice(0, trim.length) == trim)
             array[i] = array[i].slice(trim.length);
           while(array[i].slice(array[i].length-trim.length) == trim)
             array[i] = array[i].slice(0, array[i].length-trim.length);
         }

     var token = new Array();
     if(ignoreEmptyTokens)
       {
          for(var i=0; i<array.length; i++)
            if(array[i] != "")
              token.push(array[i]);
       }
     else
       {
          token = array;
       }

     return token;
  };
 
if (typeof Cookie === "undefined") {
  var Cookie = {};
};

Cookie.setCookie = function( name, value, expires, path, domain, secure ) 
{
    // set time, it's in milliseconds
    var today = new Date();
    today.setTime( today.getTime() );
    
    /*
    if the expires variable is set, make the correct 
    expires time, the current script below will set 
    it for x number of days, to make it for hours, 
    delete * 24, for minutes, delete * 60 * 24
    */
    if ( expires )
    {
    expires = expires * 1000 * 60 * 60 * 24;
    }
    var expires_date = new Date( today.getTime() + (expires) );
    
    document.cookie = name + "=" +value +
    ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
    ( ( path ) ? ";path=" + path : "" ) + 
    ( ( domain ) ? ";domain=" + domain : "" ) +
    ( ( secure ) ? ";secure" : "" );
};

Cookie.readCookie = function(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return '';
};

Cookie.eraseCookie = function(name,path) {
	Cookie.setCookie(name,"",-1,path,null,null);
};

function fixIeComboBug($div){
         //console.log($div.children('iframe').length);
         if($.browser.msie && $.browser.version.indexOf('6')==0){
                  // rimuovo iframe eventualemente presente
                  $div.children('iframe').remove();
                 var height = $div.outerHeight() || 1000;
                 var width = $div.outerWidth() || 1000;
                 //console.log(height+' '+width);
                 $div.append('<iframe frameborder="0" style="position:absolute;top:0px;left:0px;width:'+width+'px;height:'+height+'px;display:block;z-index:-1;filter:mask();"></iframe>');
         }
};

function getPar(name) {
      var regexS = "[\\?&]"+name+"=([^&#]*)";
      var regex = new RegExp( regexS );
      var tmpURL = window.location.href;
      var results = regex.exec( tmpURL );
      if( results == null )
        return "";
      else
        return results[1];
};
          
// funzione per visualizzare un messaggio di errore al centro dello schermo
function buildErrorMessage(message,div,className, noAlarm){
        // se il contenitore esiste lo cancello dal dom
        var cont =$('#geocoderErrorMessage').remove();
        
        // inserisco il nuovo contenitore nel div indicato oppure nel body
        if(div && div!=''){
           $('#'+div).prepend('<div id="geocoderErrorMessage"></div>');
        }else{
           $(document.body).append('<div id="geocoderErrorMessage"></div>');
        }
        
        cont = $('#geocoderErrorMessage');
        
        if(className && className != ''){
           cont.addClass(className);
        }
        // costruzione messaggio
        var divMsg = '<div><a id="geocoderErrorMessageClose" class="chiudi" href="javascript:void(0)" title="'+msgLabel.LBL_chiudi+'"><span class="chiusura">'+msgLabel.LBL_chiudi+'</span></a>';
        if ( noAlarm == undefined || noAlarm == false ) divMsg +='<h3>'+msgLabel.LBL_attenz+'</h3>';
        divMsg +='<p id="geocoderErrorMessageCenter">'+message+'</p><span class="ombra-errore"></span></div>';
        cont.append(divMsg);        
        //associo chiusura
        $('#geocoderErrorMessageClose').click(function(e){
                                                e.stopPropagation();
                                                $('#geocoderErrorMessage')
                                                        .hide()
                                                        .remove();
                                        });
        //visualizzo
        cont.show();
        fixIeComboBug($('#geocoderErrorMessage'));
};
/*
function showLegend(){
    //console.log('showLegend');
    hidePgLink();
    $('.legend').show('slow'); return false;
};
*/
function hideLegend(){
    //console.log('hideLegend');
    $('.legend').hide('fast'); return false;
};
function showPgLink(urlPgLk, htmlIfrExtSite){
    //console.log('showPgLink');
    hideLegend();    
    $('#linkPagId').val(urlPgLk); 
    if ( htmlIfrExtSite ) {
    	$('#extSiteId').val(htmlIfrExtSite);
    	$('#WebmasterDivId').show();
			selectInput('extSiteId');
    }
    else {
			$('#LinkPagDivId').show();
			selectInput('linkPagId');
		}

    return false;
};
function showPgLinkDest(urlPgLk){
		//console.log('showPgLink');
		hideLegend();    
		$('#linkPagIdDest').val(urlPgLk); 
		$('#LinkPagDivIdDest').show();
		selectInput('linkPagIdDest');
		//fnSelect('linkPagId');   
		return false;
};

function openDealFbLink( dealPos ){
	        var urlGlamoo = encodeURIComponent($('#ins_data_' + dealPos + ' .guarda-proposta' ).attr("href"));
		var title = encodeURIComponent($('#ins_data_' + dealPos + ' .org.buetto' ).text());
                //var desc = encodeURIComponent($('#ins_data_' + dealPos + ' .glamoo-lcont' ).text());
		//window.open('http://www.facebook.com/sharer.php?u='+urlGlamoo+'&t='+title+'&d='+desc,'sharer','fullscreen=no,resizable=yes,width=626,height=436,scrollbars=yes');
                window.open('http://www.facebook.com/sharer.php?u='+urlGlamoo+'&t='+title,'sharer','fullscreen=no,resizable=yes,width=626,height=436,scrollbars=yes');
};
        
function getHtmlIfrExtSite(w, h, urlIfr, urlCerca, urlRtFrom, urlRtTo){
    var htmlIfr =
    '<iframe width="' + w + '" height="' + h + '" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" '
	+ 'src="'+ urlIfr + '"></iframe>';	
	htmlIfr += '<br/><a target="_blank" title="'+msgLabel.LBL_cercamp+'" style="font-size: 82%; color: #555; padding: 5px 0;" href="' + encodeURI(urlCerca) + '">'+msgLabel.LBL_cercamp+'</a>';
	if (urlRtFrom && urlRtFrom != '' && urlRtTo && urlRtTo != ''){
        htmlIfr += ' - <a target="_blank" style="font-size: 82%; color: #555; padding: 5px 0;" title="'+msgLabel.LBL_parti+'" href="' + encodeURI(urlRtFrom) + '">'+msgLabel.LBL_parti+'</a>';
        htmlIfr += ' - <a target="_blank" style="font-size: 82%; color: #555; padding: 5px 0;" title="'+msgLabel.LBL_arriva+'" href="' + encodeURI(urlRtTo) + '">'+msgLabel.LBL_arriva+'</a>';
    }
    return htmlIfr;
};

// funzione per selezionare il testo di un input text o textarea
function selectInput(id)
{
    document.getElementById(id).focus();
    document.getElementById(id).select();
}
// funzione per selezionare il testo di un div per poi potere fare copia e incolla 
/**
function fnSelect(objId) {
    fnDeSelect();
    if (document.selection) {
        var range = document.body.createTextRange();
        range.moveToElementText(document.getElementById(objId));
        range.select();
    }
    else if (window.getSelection) {
        var range = document.createRange();
        range.selectNode(document.getElementById(objId));
        window.getSelection().addRange(range);
    }
};
function fnDeSelect() {
    if (document.selection) document.selection.empty(); 
    else if (window.getSelection)
        window.getSelection().removeAllRanges();
};
**/
function hidePgLink(){
    //console.log('hidePgLink');
    $('.link-a-pag').hide('fast');	return false;    
};


// funzione per Ntwork Seat su IE6
$(function() {
   if($.browser.msie && $.browser.version.indexOf('6')==0){
        $('#nav').hover(
					function() {$(this).find('li').addClass('over');},
					function() {$(this).find('li').removeClass('over');}
      );
   }

		$('.bandie').click(function() {if ($(this).is('.close')) {$(this).addClass('open').removeClass('close'); return false;}
																	 else $(this).addClass('close').removeClass('open');});

    // per click su Network Seat
    $('.switch-sitiseat').click(
      function() {
        if ($(this).is('.opSitiSeat')) {
          $('.switch-sitiseat ul li ul').hide();
          $(this).removeClass('opSitiSeat');
        }	else {
          $('.switch-sitiseat ul li ul').show();
          $(this).addClass('opSitiSeat');
        }
    });

		$('body').click(function(event) {
				if (!$(event.target).is('.bandie *') && $('.bandie').is('.open')) {
					var banUl = $('.bandie ul');
					$('.bandie').removeClass('open').addClass('close'); banUl.removeClass().addClass(banUl.attr('id'));
				}
        if (!$(event.target).is('.switch-sitiseat *') && $('.switch-sitiseat').is('.opSitiSeat')) {
					$('.switch-sitiseat ul li ul').hide();
          $(this).removeClass('opSitiSeat'); 
				}
			});

		$('.bandie *').hover(
			function() {
				var vClass = $(this).attr('class');
				if (vClass == 'it' || vClass == 'fr' || vClass == 'de' || vClass == 'en' || vClass == 'es')
						$(this).parent().removeClass().addClass('x' + vClass);
			}
		);

});

// funzione per visualizzare legenda mappa
function showLegend(){
   var obj = $('.legend');
   if($.trim(obj.html()) == ''){
      // creazione legenda
      var html = '';
      html += '<h4>'+msgLabel.LBL_legenda+'</h4>';
			html += '<a class="chiudi" title="'+msgLabel.LBL_chiudi+'" href="javascript:void(0)" onclick="hideLegend();"><span class="chiusura">'+msgLabel.LBL_chiudi+'</span></a>';
			html += '<ul class="servizi">';
			html += '<li><span class="leg1">'+msgLabel.LBL_metro+'</span>'+msgLabel.LBL_metro+'</li>';
			html += '<li><span class="leg2">'+msgLabel.LBL_passante+'</span>'+msgLabel.LBL_passante+'</li>';
			html += '<li><span class="leg3">'+msgLabel.LBL_ferrovia+'</span>'+msgLabel.LBL_ferrovia+'</li>';
			html += '<li><span class="leg4">'+msgLabel.LBL_autobus+'</span>'+msgLabel.LBL_autobus+'</li>';
			html += '<li><span class="leg5">'+msgLabel.LBL_porto+'</span>'+msgLabel.LBL_porto+'</li>';
			html += '<li><span class="leg6">'+msgLabel.LBL_aeroporto+'</span>'+msgLabel.LBL_aeroporto+'</li>';
			html += '</ul>';
			html += '<ul class="strade">';
			html += '<li><span class="leg7">'+msgLabel.LBL_autostrada+'</span>'+msgLabel.LBL_autostrada+'</li>';
			html += '<li><span class="leg8">'+msgLabel.LBL_altaperc+'</span>'+msgLabel.LBL_altaperc+'</li>';
			html += '<li><span class="leg9">'+msgLabel.LBL_mediaperc+'</span>'+msgLabel.LBL_mediaperc+'</li>';
			html += '<li><span class="leg10">'+msgLabel.LBL_bassaperc+'</span>'+msgLabel.LBL_bassaperc+'</li>';
			html += '<li><span class="leg11">'+msgLabel.LBL_stradaped+'</span>'+msgLabel.LBL_stradaped+'</li>';
			html += '<li><span class="leg12">'+msgLabel.LBL_confreg+'</span>'+msgLabel.LBL_confreg+'</li>';
			html += '<li><span class="leg13">'+msgLabel.LBL_confstato+'</span>'+msgLabel.LBL_confstato+'</li>';
			html += '</ul>';
			html += '<ul class="aree">';
			html += '<li><span class="leg14">'+msgLabel.LBL_monum+'</span>'+msgLabel.LBL_monum+'</li>';
			html += '<li><span class="leg15">'+msgLabel.LBL_scuole+'</span>'+msgLabel.LBL_scuole+'</li>';
			html += '<li><span class="leg16">'+msgLabel.LBL_fiere+'</span>'+msgLabel.LBL_fiere+'</li>';
			html += '<li><span class="leg17">'+msgLabel.LBL_parchi+'</span>'+msgLabel.LBL_parchi+'</li>';
			html += '<li><span class="leg18">'+msgLabel.LBL_industria+'</span>'+msgLabel.LBL_industria+'</li>';
			html += '<li><span class="leg19">'+msgLabel.LBL_stazioni+'</span>'+msgLabel.LBL_stazioni+'</li>';
			html += '</ul>';
			html += '<span class="rcSx"> </span>';
			html += '<span class="rcDx"> </span>';
      
      obj.html(html);
   }
   hidePgLink();
   obj.show('slow');
   return false;
};
/**
function openTraffic(anchorName, pgMap){
    var zoom = pgMap.getZoom().z; var zoomVis;
    // il visual gestisce zoom da 4 a 16
    // NOTA: anche se glieli passo, per il traffico sul visual gli zoom tra 4 a 9 equivalgono a nove (gli altri vengono zoomati, cio� trasformati in 9)
    //zoom nostri: [0,1,2,3,4,5,6, 7, 8, 9 , 10, 11]
    //zoom visual: [4,5,6,7,8,9,10,11,12,13, 15, 16] //14 escluso..
    if (zoom < 10 ) zoomVis = zoom + 4;
    if (zoom >= 10 ) zoomVis = zoom + 5;    
    
	var urlTrf = $('#' + anchorName).attr("href")
				+ '?z=' + zoomVis
				+ '&lon=' + pgMap.map.getCenter().lon
				+ '&lat=' + pgMap.map.getCenter().lat;
	window.open(urlTrf);
	return false;
};**/
function readGeoIPLoc(){
  var cookieIpLoc = decodeURIComponent( Cookie.readCookie('geoip'));
  // es cookie geoip: "1348292518-1272623166~Torino+(TO)"
  var locPref = cookieIpLoc.substring( cookieIpLoc.lastIndexOf('~') + 1, cookieIpLoc.length);  
  var idxSp = locPref.lastIndexOf('+');
  var com = locPref.substring( 0, idxSp).toLowerCase();
  var prov = locPref.substring( idxSp+2, locPref.length-1);  
  return {com:com, prov:prov};
};

function readGeoIPLocFromLocs(){
  var cookieIpLoc = decodeURIComponent( Cookie.readCookie('locs'));
  // es cookie geoip: "1348292518-1272623166~Torino+(TO)"
  var locPref = cookieIpLoc.substring( cookieIpLoc.lastIndexOf('~') + 1, cookieIpLoc.length);  
  var idxSp = locPref.lastIndexOf('+');
  var com = locPref.substring( 0, idxSp).toLowerCase();
  var prov = locPref.substring( idxSp+2, locPref.length-1);  
  return {com:com, prov:prov};
};

SEAT.TC.getMiniZoomImgs = function (){
    return  [{
            lng: 1, 
            urlPfx: SEAT.TC.IMG_PFX + '/',
            ctrls: [ [0,30,'25px','28px','-5px','0px','controller_piu.png'], // left, top, width, height, xOffset, yOffset, filename
                  [0,55,'25px','28px','-5px','0px','controller_meno.png']],
            tooltips: [ [msgLabel.LBL_ingrand], // text to show on mouseover
                      [msgLabel.LBL_riduci] ]
            }];
};

SEAT.TC.addMiniZoom = function (pgMap){
    pgMap.addLayer(new SEAT.ZoomControl());
    // div esterni aggiunti per togliere i minizoom in stampa (in print.css)
    // non si pu� fare altrimenti perch� ci sono degli stili inline
    $('.minizoomOut').wrap('<div class="mzOuter"/>');
    $('.minizoomIn').wrap('<div class="mzOuter"/>');
}

function capitalize( pString ) {
        var val = pString;
        var newVal = '';
        var values = val.split(' ');
        for(var c=0; c < values.length; c++) 
        {
            newVal += values[c].substring(0,1).toUpperCase() +
            values[c].substring(1,values[c].length) + ' ';
        }
        return newVal;
};

