/*
funzioni per la gestione delle locations salvate
*/

RegisterScript('t4uMyLocations', 1, 'toscana4u custom locations');
Require([ 't4uStrings', { Name: 't4uStrings', Version: 1 } ]);


function RestoreLocation(l) {
  var pars = l.split("&");
  var loc = {}, i;
  for (i = 0; i < pars.length; i++) {
    var idx = pars[i].indexOf("=");
	if (idx == -1) continue;
	var n = pars[i].substring(0, idx);
	var v = pars[i].substring(idx + 1);
	loc[n] = v;
  }
  if (loc.e) {
	var colors = loc.e.split(","), col;
	for (col = 0; col < colors.length; col++) {
	  SetColorIcon(document.getElementById(colors[col]), colors[col]);
	  SelectedColors[colors[col]] = true;
	}
	map_animations[map_name].setEpoqueFilter(map, colors);
  }
  if (loc.f) {
	var types = loc.f.split(","), type, sel = new Array();
	for (type = 0; type < types.length; type++) {
	  var i, f = fisheye;
	  for (i = 0; i < f.length; i++)
	    if (f[i].data == types[type]) {
	      f[i].selected = true;
	      sel.push(f[i]);
	    }
	}
	f.Update();
//	      UpdateSelectedIconsBar(sel);
	map_animations[map_name].setTypeFilter(map, types);
  }
  if (loc.la && loc.lo && loc.z)
    map.SetCenterAndZoom(new VELatLong(parseFloat(loc.la), parseFloat(loc.lo)), parseInt(loc.z));
  
  if (loc.pla && loc.plo) {
    var layer = new VEShapeLayer();
    var pin = new VEShape(VEShapeType.Pushpin, new VELatLong(parseFloat(loc.pla), parseFloat(loc.plo)));
//    pin.SetCustomIcon('<img src="/images/selectedpinicon.png" style="position:relative; top: -17px"/>');
    pin.SetCustomIcon('<img src="/images/pushpin-30px.png" style="position:relative; top: -40px; left: 5px"/>');
    layer.AddShape(pin);
    layer.Show();
    map.AddShapeLayer(layer);
  }
}

function MyLocations() {	  
  var k = new Cookies();
  
  this.length = 0;
  this.data = {};

  this.Load = function () {
	if (k['_t4u_mymaps']) {
  	  var a = (k['_t4u_mymaps']).split('|_|'), i;
	  for (i = 0; i < a.length; i++) {
	    var idx = a[i].indexOf('_|_');
	    this.data[a[i].substring(0, idx)] = a[i].substring(idx + 3);
	    this.length++;
	  }
	}
  }
  this.Load();

  var cell = function (a, t) {
    return '<td width="95" valign="middle" style="white-space: normal; background: url(/images/percorsi/mymap_sfondo.png) no-repeat; padding-left: 10px; padding-right: 10px; padding-top: 5px; padding-bottom: 5px; font-size: 8pt; color: 292929;" onclick="'+a+'">'+t+'</td>';
  }
  this.mymapsrc = function () {
    return '<table height="84" width="'+((this.length + 3) * 100)+'" cellspacing="0" cellpadding="0"><tr>' + cell('GetLocation()', "Salva la mappa come indirizzo") + cell('AddLocation()', 'Aggiungi') + cell('ClearLocation()', 'Rimuovi tutti');
  }

  this.Save = function() {
    var s = "", v;
	for (v in this.data) {
	  if (s != "") s += '|_|';
	    s += v + '_|_' + this.data[v];
	}
	var year = (new Date()).getYear();
	if (year < 2000) year += 1900;
  	var expireDate = new Date(year + 10, 11, 31);
	k.Set('_t4u_mymaps', s, expireDate);
  }
  this.RemoveAll = function() {
    var k = new Cookies();
    k.Remove('_t4u_mymaps');
    this.data = {};
    this.length = 0;
  }
  this.AddCurrent = function (name) {
	this.data[name] = SerializeLocation();
	this.length++;
  }
  this.Render = function() {
    var n, ret = this.mymapsrc();
    for (n in this.data)
      ret += cell("RestoreLocation('"+this.data[n]+"')", n);
    return ret + "</tr></table>";
  }
}


	function AddLocation() {
	  var m = new ModalOverlay();
	  var d = document.createElement('div');
	  d.style.position = 'absolute';
	  d.style.textAlign = 'center';
	  d.style.top = '40%';
	  d.style.width = '100%';
	  d.Save = function (name) {
	    m.close();
	    mymap.AddCurrent(name);
	    mymap.Save();
	    mymaptab.Content = mymap.Render();
	    mymaptab.Element.SelectTab();
	  }
	  d.innerHTML = '<h1>Nome della mappa</h1><input type="text" id="mymapname"/><br/><a onclick="this.parentNode.Save(document.getElementById(\'mymapname\').value)"><b>salva</b></a>'
	  m.setContent(d);
	  m.show();
	}
	
	function ClearLocation() {
	  var m = new ModalOverlay();
	  var d = document.createElement('div');
	  d.style.position = 'absolute';
	  d.style.textAlign = 'center';
	  d.style.top = '40%';
	  d.style.width = '100%';
	  d.Delete = function () {
	    m.close();
	    mymap.RemoveAll();
	    mymaptab.Content = mymap.Render();
	    mymaptab.Element.SelectTab();
	  }
	  d.Cancel = function () { m.close(); }
	  d.innerHTML = '<h1>Eliminare tutte le mappe salvate?</h1><a onclick="this.parentNode.Delete()"><b>OK</b></a>&nbsp;<a onclick="this.parentNode.Cancel()"><b>Annulla</b></a>'
	  m.setContent(d);
	  m.show();	
	}
	
    function SerializeLocation() {
      var c = map.GetCenter();
      var z = map.GetZoomLevel();
      var f = map_animations[map_name].filter;
      var e = map_animations[map_name].epoqueFilter;
      return "la="+c.Latitude+"&lo="+c.Longitude+"&z="+z+(f == null ? "" : ("&f="+f))+(e == null ? "" : ("&e="+e));
    }

	function SendEmail(pos)
	{
        var l = document.location + "";
        if (l.indexOf('?') != -1)
          l = l.substring(0, l.indexOf('?'));          
        var url = l + "?" + SerializeLocation() + (pos ? pos : "");
        url = "mailto:?body=" + encodeURIComponent(url);
        document.location = url;
	}

	function SendFacebook(pos)
	{
        var l = document.location + "";
        if (l.indexOf('?') != -1)
          l = l.substring(0, l.indexOf('?'));          
        var url = l + "?" + SerializeLocation() + (pos ? pos : "");
        url = "http://www.facebook.com/sharer.php?u=" + encodeURIComponent(url);
        document.location = url;
	}

	function SendDelicious()
	{
        var l = document.location + "";
        if (l.indexOf('?') != -1)
          l = l.substring(0, l.indexOf('?'));          
        var url = l + "?" + SerializeLocation();
        url = "http://delicious.com/post?url=" + encodeURIComponent(url);
        document.location = url;
	}

    function GetLocation() {
      var m = new ModalOverlay();
      var d = document.createElement('div');
      d.style.position = 'absolute';
      d.style.textAlign = 'center';
      d.style.top = '20%';
      d.style.width = '100%';
      
      var save = function (p) {
        var l = document.location + "";
        if (l.indexOf('?') != -1)
          l = l.substring(0, l.indexOf('?'));
          
        var pd = "";
        if (p != null)
          pd = "&pla=" + p.Latitude + "&plo=" + p.Longitude;

        var mod = new ModalOverlay();
        var dd = document.createElement('div');
        dd.style.position = 'absolute';
        dd.style.textAlign = 'center';
        dd.style.top = '40%';
        dd.style.width = '100%';
        var url = l + "?" + SerializeLocation() + pd;
  	    dd.innerHTML = '<input type="text" id="__savedaddr__" style="width: 600px" value="'+url+'"/>';
  	    dd.innerHTML += '<br/><a href="'+url+'" target="_blank">Test</a>';
	    dd.innerHTML += '<br/><a href="javascript:SendEmail(\''+pd+'\')">'+strings['mylocations_emailtext']+'</a>';
	    dd.innerHTML += '<br/><a href="javascript:SendFacebook(\''+pd+'\')"><img src="/images/facebook.png" alt="facebook" /></a>';
	    mod.setOnLoad(function () {
	      var txt = document.getElementById('__savedaddr__');
	      txt.focus();
	      txt.select();
	    });
 	    mod.setContent(dd);
	    mod.show();
      }
      
      var selectLocation = function (e) {
        save(map.PixelToLatLong(new VEPixel(e.mapX, e.mapY)));
        map.DetachEvent("onclick", selectLocation);
      }
	  d.Save = function (pt) {
	    m.close();
	    if (pt) {
	      map.AttachEvent("onclick", selectLocation);
	    } else
	      save(null);
	  }
	  d.Cancel = function () { m.close(); }
	  d.innerHTML = strings['mylocations_text'] + '<br/><br/>';
	  d.innerHTML += '<a onclick="this.parentNode.Save(true)"><b>'+strings['mylocations_selectpoint']+'</b></a>';
	  d.innerHTML += '&nbsp;<a onclick="this.parentNode.Save(false)"><b>'+strings['mylocations_save']+'</b></a>';
	  d.innerHTML += '&nbsp;<a onclick="this.parentNode.SendEmail()"><b>'+strings['mylocations_emailtext']+'</b></a>';
	  d.innerHTML += '&nbsp;<a onclick="this.parentNode.Cancel()"><b>'+strings['mylocations_cancel']+'</b></a>'
	  d.innerHTML += '&nbsp;<a onclick="this.parentNode.SendFacebook()"><img src="/images/facebook.png" alt="facebook" /></a>';
	  m.setContent(d);
	  m.show();	
    }

