
(function() {
    escape_re = /[#;&,\.\+\*~':"!\^\$\[\]\(\)=>|\/\\]/;
    jQuery.escape = function jQuery$escape(s) {
      var left = s.split(escape_re, 1)[0];
      if (left == s) return s;
      return left + '\\' +
        s.substr(left.length, 1) +
        jQuery.escape(s.substr(left.length+1));
    };
})();

$.extend({
      getUrlVars: function(){
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
        for(var i = 0; i < hashes.length; i++)
        {
          hash = hashes[i].split('=');
          vars.push(hash[0]);
          vars[hash[0]] = hash[1];
        }
        return vars;
      },
      getUrlVar: function(name){
        return $.getUrlVars()[name];
      }
});




$(document).ready( function() {
    Shadowbox.init();
    var toBeHighlighted = $.getUrlVar('highlight');
    if(toBeHighlighted !== undefined)$("#center").highlight(toBeHighlighted.replace(/%22/gi, ''));
    var brokenLink      = $.getUrlVar('broken_link');
    if(brokenLink      !== undefined){
        brokenLink = $.escape(brokenLink);
        $('a[href="' + brokenLink + '"]').attr('class', 'brokenlink');
    }
});


function reloadBox(idbox,url){
    $.ajax({
        type: "POST",
        cache: false,
        url: url,
        success: function(data){
			$('#'+idbox).replaceWith(data);
        }
    });	
}


function linkJS(url){
        window.location.replace(url);
}


//Unique Script for Google Maps
function initializeGoogleMaps(boxId, position, zoom, disableUI, disableZoom, listOfLocations,typeMap){

    // Check inputs
    if(boxId===undefined){
        alert('initializeGoogleMaps: parameter BoxId undefined');
        return;
    }

    if(position===undefined){
        alert('initializeGoogleMaps: parameter position undefined');
        return;
    }

    if(zoom === undefined)        zoom = 5;
    if((disableUI === undefined)   || (disableUI   == '')) disableUI = false;
    else                                                   disableUI = true;

    if((disableZoom === undefined) || (disableZoom == '')) disableZoom = false;
    else                                                   disableZoom = true;

    if($('#'+boxId).length == 0) {
        alert('initializeGoogleMaps: Cannot Find box with id: '+boxId);
        return;
    }
	

    if(typeMap == 'SATELLITE') 	typeMaps = google.maps.MapTypeId.SATELLITE;
    else						typeMaps = google.maps.MapTypeId.ROADMAP;					


    var geocoder;
    var map;
    var myLatlng;
    var lat;
	var title;
	var position;
	var coord;
	var pointer;
	
    geocoder = new google.maps.Geocoder();
    geocoder.geocode({ 'address': position},
            function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            myLatlng = results[0].geometry.location;
            var myOptions = {
                    zoom: zoom,
                    center: myLatlng,
                    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
                    scrollwheel: false,
                    draggable: true,
                    disableDefaultUI: disableUI,
                    navigationControlOptions: {
                        style: google.maps.NavigationControlStyle.DEFAULT,
                        position: google.maps.ControlPosition.TOP_LEFT,
                    	mapTypeControl: true
                    },
                    navigationControl: disableZoom,
                    mapTypeId: typeMaps
            };
            var map = new google.maps.Map(document.getElementById(boxId), myOptions);
            if((listOfLocations !== undefined) && (listOfLocations !== '')){
                var listOfPositions = jQuery.parseJSON(listOfLocations);

                for(var i=0; i < listOfPositions.length; i++){

					title    	= listOfPositions[i]['title'];
                    position 	= listOfPositions[i]['position'];
                    coord 		= listOfPositions[i]['coord'];
                    pointer 	= listOfPositions[i]['pointer'];

					if(coord == undefined){
						coord = '';
					}
					
                    if(position != '' || coord != '' ){
						if(coord != ''){
							addToMap(map,listOfPositions[i]);
						}else{
							addToMapGeoCoder(map,listOfPositions[i]);
						}	
                  	}
                }
            }
        }else {
            alert('Geocode was not successful for the following reason: ' + status);
        }
    });
}


function addToMap(map, point) {
    var html = point['title'];
	var lat;

	coord = point['coord'];
  	latArr 	= coord.split(',');
    lat0 	= parseInt(latArr[0]);
    lat1 	= parseInt(latArr[1]);
	lat 	= new google.maps.LatLng(lat0,lat1);

    // create the marker
    var marker = new google.maps.Marker( {
        position: lat,
        map: map,
		icon: point['pointer'],
        title: point['title']
    });

    //return;
    addInfo(map, marker, point);
    
}

function addToMapGeoCoder(map, point) {
    var html = point['title'];
    var geocoder;
    geocoder = new google.maps.Geocoder();

	geocoder.geocode( { 'address': point['position']}, function(results, status) {	
	    // create the marker
	    var marker = new google.maps.Marker({
	        position: results[0].geometry.location,
	        map: map,
			icon: point['pointer'],
	        title: point['title']
	    });
    	addInfo(map, marker, point);
	});

}


function loadScriptMaps() {
  var script = document.createElement("script");
  script.type = "text/javascript";
  script.src = "http://maps.google.com/maps/api/js?sensor=false";
  document.head.appendChild(script);
}
  



// stesso link del marker ma un p˜ pi sotto
function addInfo(map, marker, point) {
    var contentString = point['title'];
    
   	if(point['url'] != '' && point['url'] != undefined){
    	contentString += '<br /><b><a href="'+point['url']+'">>> Vai alla scheda</a></b>'
    }
    
    var infowindow = new google.maps.InfoWindow({
        content: contentString
    });

    google.maps.event.addListener(marker, 'click', function() {
        infowindow.open(map, marker);
    });
}


function changeLanguage(){
	lang = $("#langChange").val();
    window.location.replace("/lingua/index/"+lang);
}


