
function crMT3ES (map) {
    return crMT(map, "3ES", "Tercera Edad");
}

function crMT3EN (map) {
    return crMT(map,"3EN","3 Edad");
}

function crMT (map, tlN, mtN) {
   var tl = crTL(tlN);

   var ly = [tl];
   var mt = new GMapType(ly, G_SATELLITE_MAP.getProjection(), mtN, G_SATELLITE_MAP);

   return mt;
}

function crTL (m) {
   var tl= new GTileLayer(new GCopyrightCollection("Elfenomeno"),0,10);
   tl.myLayers='country';
   tl.myFormat='image/gif';
   tl.getTileUrl = function (pt, z) {
        //var dt = document.getElementById("datos"); // DEBUG PURPOSES ONLY
        //dt.innerHTML = "/gme/3EN/z"+z+"Maps/"+pt.x+"_"+pt.y+"_"+z+".gif"; //DEBUG PURPOSES ONLY
        return "/gme/getI.php?x="+pt.x+"&y="+pt.y+"&z="+z+"&m="+m;
   };
   return tl;
}

function crMrk (map, ll, z, id) {
    var mrk = new GMarker(ll);
    map.addOverlay(mrk);
    // var pt = map.fromllToDivPixel(ll);

    GEvent.addListener(mrk, "click", function() {
        gtF(map, mrk, id, ll, z);
    });

    return mrk;
}

function gtF(map, mrk, id, ll, z) {
    var ttexto;
    //defMrk=mrk;
    var url="/gme/getF.php";
    var par="id="+id;
    var cn = new Ajax.Request(
        url,
        {
            method: 'get',
            parameters: par,
            onComplete: function(res) {
                txtRes= res.responseText;
                txtWnd="<table width='10' border='0'><tr><td align='left'>"+txtRes+"</td></tr></table>";
                mrk.openInfoWindowHtml(txtWnd);
            //map.setCenter(ll, z);
            }
        });
}

function gtV(map) {
    var ttexto;

    olink=$("otherlinks");
    if (olink) {
    	olink.innerHTML=txtWnd="<table width='100%' border='0'><tr><td align='center'>Buscando...</td></tr></table>";
    }

    z=map.getZoom();
    b=map.getBounds();
    minLL=b.getSouthWest();
    maxLL=b.getNorthEast();
    minlat=minLL.lat();
    maxlat=maxLL.lat();
    minlng=minLL.lng();
    maxlng=maxLL.lng();

    var url="/gme/getV.php";
    var par="minlat="+minlat+"&maxlat="+maxlat+"&minlng="+minlng+"&maxlng="+maxlng+"&z="+z;
    var cn = new Ajax.Request(
        url,
        {
            method: 'get',
            parameters: par,
            onComplete: function(res) {
                txtRes= res.responseText;
                txtWnd="Pulsa sobre los siguientes enlaces para viajar a estos lugares de la Tierra Media:<br>"+
                "<table width='100%' border='0'><tr><td align='center'>"+txtRes+"</td></tr></table>";
                if (olink) {
                	olink.innerHTML=txtWnd;
                }
            }
    });

}

function gtM(map, id) {
    var url="/gme/getM.php";
    var par="id="+id;
    var cn = new Ajax.Request(
        url,
        {
            method: 'get',
            parameters: par,
            onComplete: function(res) {


                if (res.status == 200) {
                    xmlRes= res.responseXML.documentElement;

                    lat = parseFloat(xmlRes.getElementsByTagName('lat')[0].childNodes[0].data);
                    lng = parseFloat(xmlRes.getElementsByTagName('lng')[0].childNodes[0].data);
                    z   = parseInt(xmlRes.getElementsByTagName('z')[0].childNodes[0].data);

                    map.clearOverlays();
                    if (hMSet.length>0) {
                        mSet=hMSet.pop();
                    }
                    ll = new GLatLng(lat, lng);

                    if (z!=map.getZoom()) {
                        map.setZoom(z);
                    }

                    mrk = crMrk (map, ll, z, id);

                    hMSet.push(new Array(map, mrk, ll, z, id));
                    gtF(map, mrk, id, ll, z);
                } else {
                    olink=$("otherlinks");
                    if (olink) {
                    	olink.innerHTML=txtWnd="<table width='100%' border='0'><tr><td align='center'><b>Error</b></td></tr></table>";
                    }
                }
        }
    });
}

function getWinHeight() {
    var myHeight = 0;
    var vertScroll = 0;
    if( typeof( window.innerWidth ) == 'number' ) {
        //Non-IE
        myHeight = window.innerHeight;
        vertScroll = window.pageYOffset;
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
        //IE 6+ in 'standards compliant mode'
        myHeight = document.documentElement.clientHeight;
        vertScroll = document.documentElement.scrollTop;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
        //IE 4 compatible
        myHeight = document.body.clientHeight;
        vertScroll = document.body.scrollTop;
    }

    //add scroll length to page height
    //myHeight = myHeight + vertScroll;

    return myHeight;
}


function getWinWidth() {
    var myWidth = 0;
    var horScroll = 0;
    if( typeof( window.innerWidth ) == 'number' ) {
        //Non-IE
        myWidth = window.innerWidth;
        horScroll = window.pageXOffset;
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
        horScroll = document.documentElement.scrollLeft;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
        //IE 4 compatible
        myWidth = document.body.clientWidth;
        horScroll = document.body.scrollLeft;
    }

    //add scroll length to page width
    myWidth = myWidth + horScroll;

    return myWidth;
}

function sM(id_search) {
    var text_to_search=$(id_search).value;
    if (text_to_search=="") {
        return;
    }

    var url="/gme/getM.php";
    var par="text="+text_to_search;
    var cn = new Ajax.Request(
        url,
        {
            method: 'get',
            parameters: par,
            onComplete: function(res) {


                if (res.status == 200) {
                    xmlRes= res.responseXML.documentElement;
                    id  = parseInt(xmlRes.getElementsByTagName('id')[0].childNodes[0].data);
                    lat = parseFloat(xmlRes.getElementsByTagName('lat')[0].childNodes[0].data);
                    lng = parseFloat(xmlRes.getElementsByTagName('lng')[0].childNodes[0].data);
                    z   = parseInt(xmlRes.getElementsByTagName('z')[0].childNodes[0].data);

                    map.clearOverlays();
                    if (hMSet.length>0) {
                        mSet=hMSet.pop();
                    }
                    ll = new GLatLng(lat, lng);

                    if (z!=map.getZoom()) {
                        map.setZoom(z);
                    }

                    mrk = crMrk (map, ll, z, id);

                    hMSet.push(new Array(map, mrk, ll, z, id));
                    gtF(map, mrk, id, ll, z);
                } else {
                    olink=$("otherlinks");
                    if (olink) {
                    	olink.innerHTML=txtWnd="<table width='100%' border='0'><tr><td align='center'><b>Error</b></td></tr></table>";
                    }
                }
        }
    });
}

function resizeWindow(eMap) {
    $(eMap).style.width=getWinWidth()-220;
    $(eMap).style.height=getWinHeight()-150;
}

function showHelp () {
	alert("Para visitar un lugar de la Tierra Media, utiliza el buscador. Escribe el nombre del lugar que quieras visitar (con ayuda de la lista desplegable). Si no ocurre nada, es que ese lugar no está ubicado en el mapa. Puedes desplazarte por el mapa arrastrando con el ratón y acercándote y alejándote con el zoom.\nCada vez que te muevas por el mapa, a la izquierda se mostrarán los lugares que están visibles en ese momento. Haz clic en ellos para viajar de un lugar a otro de la Tierra Media.");
}