var tcmOfertas = function(a){
    this.initialize(a);
}
tcmOfertas.prototype = {
    ZOOM_NACIONAL:6,
    COEF_RECTANGULO:0.75,
    mapa: null,
    centro: null,
    zum: null,
    x: '40.396764',
    y: '-3.713379',
    markers: Array(),
    infowindow: null,
    desplegableProvincias: null,
    menuProvincias: null,
    rectaguloSeguro: null,
    initialize: function(){
        $("#listadoCategoriasOfertas").fadeOut("slow");
        $("#listadoProvinciasOfertas").fadeOut("slow");
        this.zum = this.ZOOM_NACIONAL;
        var myOptions = {
            zoom: this.zum,
            mapTypeControl: false,
            disableDefaultUI: true,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        this.desplegableProvincias = document.createElement('DIV');
        this.menuProvincias = document.createElement('DIV');
        OpcionesProv(this.desplegableProvincias, this.mapa);
        OpcProvincia(this.menuProvincias, this.mapa);
        this.mapa = new google.maps.Map(document.getElementById("zonaMapaOfertas"),myOptions);
    },
    irAlNacional: function(){
        google.maps.event.clearListeners(this.mapa, 'zoom_changed');
        google.maps.event.clearListeners(this.mapa, 'dragend');
        this.mapa.controls[google.maps.ControlPosition.TOP_LEFT].pop();
        this.mapa.controls[google.maps.ControlPosition.TOP_LEFT].push(this.desplegableProvincias);
        this.centro = new google.maps.LatLng(this.x, this.y);
        this.mapa.setCenter(this.centro);
        this.mapa.minZoom=this.ZOOM_NACIONAL;
        this.mapa.maxZoom=this.ZOOM_NACIONAL;
        this.mapa.setZoom(this.ZOOM_NACIONAL);
        this.borrarMapa();
        $("#comboProvincia").attr("value",0);
    },
    irAProvincia: function(prov){
        coordenadas = this.devCoor(prov);
        var punto = new google.maps.LatLng(coordenadas[0], coordenadas[1]);
        this.mapa.controls[google.maps.ControlPosition.TOP_LEFT].pop();
        this.mapa.controls[google.maps.ControlPosition.TOP_LEFT].push(this.menuProvincias);
        this.mapa.minZoom=coordenadas[2];
        this.mapa.maxZoom=17;
        google.maps.event.addListener(this.mapa, 'zoom_changed', function() {
            mapaOferta.actualizarOfer();
        });
        google.maps.event.addListener(this.mapa, 'dragend', function() {
            if(mapaOferta.rectaguloSeguro.contains(mapaOferta.mapa.getCenter())==false){
                mapaOferta.actualizarOfer();
            }
        });
        this.mapa.setZoom(coordenadas[2]);
        this.mapa.setCenter(punto);
        this.actualizarOfer();
    },
    crearRectanguloSeguro: function() {
        //calculo un marco del 70% del tamaño total
        var bordesProv=this.mapa.getBounds();
        var xA=bordesProv.getNorthEast().lat();
        var yA=bordesProv.getNorthEast().lng();
        var xB=bordesProv.getSouthWest().lat();
        var yB=bordesProv.getSouthWest().lng();
        var xC=this.mapa.getCenter().lat();
        var yC=this.mapa.getCenter().lng();

        var Ax=xA-xC;
        var Ay=yA-yC;
        var Ix=Ax*(1-this.COEF_RECTANGULO);
        var Iy=Ay*(1-this.COEF_RECTANGULO);

        var xN=xA-Ix;
        var yN=yA-Iy;
        var xM=xB+Ix;
        var yM=yB+Iy;
        this.rectaguloSeguro=new google.maps.LatLngBounds(new google.maps.LatLng(xM, yM),new google.maps.LatLng(xN, yN));
    },
    devCoor: function(prov){
        coordenadas = Array();
        coordenadas['1']=Array(43.36762160892934, -8.395957946777344,9);
        coordenadas['2']=Array(42.846406, -2.667893,9);
        coordenadas['3']=Array(38.997652, -1.86007,9);
        coordenadas['4']=Array(38.345203, -0.481006,9);
        coordenadas['5']=Array(36.852153343396665, -2.467803955078125,9);
        coordenadas['6']=Array(43.360259, -5.844758,9);
        coordenadas['7']=Array(40.656422, -4.700322,9);
        coordenadas['8']=Array(38.878597, -6.970283,9);
        coordenadas['9']=Array(39.534179, 2.85771,9);
        coordenadas['10']=Array(41.387917, 2.169919,9);
        coordenadas['11']=Array(42.340875, -3.699731,9);
        coordenadas['12']=Array(39.476179, -6.37076,9);
        coordenadas['13']=Array(36.529688, -6.292657,9);
        coordenadas['14']=Array(43.18284, -3.987843,9);
        coordenadas['15']=Array(39.986068, -0.036024,9);
        coordenadas['16']=Array(35.888287, -5.316195,9);
        coordenadas['17']=Array(38.986096, -3.927263,9);
        coordenadas['18']=Array(37.884727, -4.779152,9);
        coordenadas['19']=Array(40.071835, -2.134005,9);
        coordenadas['20']=Array(41.981796, 2.8237,9);
        coordenadas['21']=Array(37.176487, -3.597929,9);
        coordenadas['22']=Array(40.629816, -3.166493,9);
        coordenadas['23']=Array(43.320736, -1.984421,9);
        coordenadas['24']=Array(37.257101, -6.949555,9);
        coordenadas['25']=Array(42.140102, -0.408898,9);
        coordenadas['26']=Array(37.765739, -3.789518,9);
        coordenadas['27']=Array(42.287073, -2.539603,9);
        coordenadas['28']=Array(28.124823, -15.430007,9);
        coordenadas['29']=Array(42.599876, -5.571752,9);
        coordenadas['30']=Array(41.614152, 0.625782,9);
        coordenadas['31']=Array(43.012087, -7.555851,9);
        coordenadas['32']=Array(40.416691, -3.700345,9);
        coordenadas['33']=Array(36.719646, -4.420019,9);
        coordenadas['34']=Array(35.292339, -2.938794,9);
        coordenadas['35']=Array(37.983445, -1.12989,9);
        coordenadas['36']=Array(42.817991, -1.644215,9);
        coordenadas['37']=Array(42.340009, -7.864641,9);
        coordenadas['38']=Array(42.012458, -4.531175,9);
        coordenadas['39']=Array(42.433619, -8.648053,9);
        coordenadas['40']=Array(40.964972, -5.663047,9);
        coordenadas['41']=Array(28.46981, -16.254856,9);
        coordenadas['42']=Array(40.949427, -4.119209,9);
        coordenadas['43']=Array(37.38264, -5.996295,9);
        coordenadas['44']=Array(41.763598, -2.464921,9);
        coordenadas['45']=Array(41.118663, 1.24533,9);
        coordenadas['46']=Array(40.34411, -1.10691,9);
        coordenadas['47']=Array(39.856778, -4.024476,9);
        coordenadas['48']=Array(39.470239, -0.376805,9);
        coordenadas['49']=Array(41.652947, -4.728388,9);
        coordenadas['50']=Array(43.256963, -2.923441,9);
        coordenadas['51']=Array(41.503683, -5.743778,9);
        coordenadas['52']=Array(41.656287, -0.876538,9);
        return coordenadas[prov];
    },
    todasCategorias:function() {
      $("input[name='categs[]']").attr("checked",false);
      this.actualizarOfer();
    },
    actualizarOfer:function() {
        var bordes=this.mapa.getBounds();
        var x1=bordes.getNorthEast().lat();
        var y1=bordes.getNorthEast().lng();
        var x2=bordes.getSouthWest().lat();
        var y2=bordes.getSouthWest().lng();

        var cats=Array();
        $("input[name='categs[]']").each(
            function(){
                if (this.checked){
                    cats.push(this.value);
                }
        });
        this.__datos(x1, x2, y1, y2,cats);
        mapaOferta.crearRectanguloSeguro();
    },
    borrarMapa:function() {
        var tot=this.markers.length;
        for(i=0;i<tot;i++) {
            this.markers[i].setMap(null);
        }
    },
    addOferta:function(xC,yC,nom,ruta,desc,id,idNego,nomNego) {
        var punto = new google.maps.LatLng(xC, yC);
        var marker = new google.maps.Marker({
            position: punto,
            map: this.mapa,
            title:nom,
            icon: "http://www.tuciudad.net/imagenes/categ/icono_imagen.png",
            shadow: "http://www.tuciudad.net/imagenes/categ/icono_imagenS.png"
        });
        this.markers.push(marker);
        var taman= new google.maps.Size(-10,-10);
        google.maps.event.addListener(marker, 'click', function() {
            var info = new google.maps.InfoWindow({
                content:  "<div style='text-align:left'><img src='http://www.tuciudad.net/imagenes/ofe.png'><b>"+nom+"</b><br></div>"+
                          "<div style=\"font-size:12px;\">"+desc+"</div>"+
                          "<div onclick=\"$.mapear('DATOS_FICHA','"+idNego+"')\" style=\"cursor:pointer;color:#0000cc;float:left;margin-right:20px;font-size:10px;\">"+nomNego+"</div>"+
                          "<div onclick=\"$.mapear('OFERTA_CONC_BOLETO','"+ruta+"')\" style=\"cursor:pointer;color:#0000cc;float:left;margin-right:20px;font-size:10px;\">Ticket</div>"+
                          "<div onclick=\"$.mapear('OFERTA_CONC','"+ruta+"')\" style=\"cursor:pointer;color:#0000cc;float:left;margin-right:20px;font-size:10px;\">Leer m&aacute;s...</div>",
                position: punto,
                pixelOffset:taman
            });
            if(mapaOferta.infowindow!=null) {
                mapaOferta.infowindow.close();
            }
            this.infowindow=info;
            this.infowindow.open(this.getMap());
            mapaOferta.infowindow=this.infowindow;
//            alert(ruta);
        });
    },
    __datos:function(x1,x2,y1,y2,cats) {
        $.ajax({
            'url': "ajax/mapaOfertas.php",
            'data': {
                'x1': x1,
                'x2': x2,
                'y1': y1,
                'y2': y2,
                'cats': cats
            },
            'dataType': 'json',
            'type': 'POST',
            'success': function(data) {
                mapaOferta.borrarMapa();
                var total=data.length;
                var i;
                var fila;
                for(i=0;i<total;++i) {
                    fila=data[i];
                    mapaOferta.addOferta(fila["xN"], fila["yN"], fila["nombre"],fila["ruta"],fila["desc"],fila["id"],fila["idNego"],fila["nomNego"]);
                }
            }
        });

    }
}
    function OpcionesProv(controlDiv, map) {
    var texto = $("<div>Provincias </div>");
    texto.css("cursor","pointer");
    texto.css("width","170px");
    texto.css("padding-left","4px");
    texto.css("padding-right","4px");
    texto.css("font-weight","bold");
    texto.css("align","right");
    texto.css("background-color","#cccccc");
    var opcs = $("<div id='menuOpciones'>"+
        "<table><tr><td>"+
        "<select id='comboProvincia' name='provincia' onchange='mapaOferta.irAProvincia(this.value);'>"+
            "<option value='0' selected>- selecciona -</option>"+
            "<option value='1'>A coru&#241;a</option><option value='2'>&#193;lava</option>"+
            "<option value='3'>Albacete</option><option value='4'>Alicante</option>"+
            "<option value='5'>Almer&#237;a</option><option value='6'>Asturias</option>"+
            "<option value='7'>&#193;vila</option><option value='8'>Badajoz</option>"+
            "<option value='9'>Baleares</option><option value='10'>Barcelona</option>"+
            "<option value='11'>Burgos</option><option value='12'>C&#225;ceres</option>"+
            "<option value='13'>C&#225;diz</option><option value='14'>Cantabria</option>"+
            "<option value='15'>Castell&#243;n</option><option value='16'>Ceuta</option>"+
            "<option value='17'>Ciudad Real</option><option value='18'>C&#243;rdoba</option>"+
            "<option value='19'>Cuenca</option><option value='20'>Girona</option>"+
            "<option value='21'>Granada</option><option value='22'>Guadalajara</option>"+
            "<option value='23'>Guip&#250;zcoa</option><option value='24'>Huelva</option>"+
            "<option value='25'>Huesca</option><option value='26'>Ja&#233;n</option>"+
            "<option value='27'>La rioja</option><option value='28'>Las palmas</option>"+
            "<option value='29'>Le&#243;n</option><option value='30'>Lleida</option>"+
            "<option value='31'>Lugo</option><option value='32'>Madrid</option>"+
            "<option value='33'>M&#225;laga</option><option value='34'>Melilla</option>"+
            "<option value='35'>Murcia</option><option value='36'>Navarra</option>"+
            "<option value='37'>Ourense</option><option value='38'>Palencia</option>"+
            "<option value='39'>Pontevedra</option><option value='40'>Salamanca</option>"+
            "<option value='41'>Santa cruz de tenerife</option><option value='42'>Segovia</option>"+
            "<option value='43'>Sevilla</option><option value='44'>Soria</option>"+
            "<option value='45'>Tarragona</option><option value='46'>Teruel</option>"+
            "<option value='47'>Toledo</option><option value='48'>Valencia</option>"+
            "<option value='49'>Valladolid</option><option value='50'>Vizcaya</option>"+
            "<option value='51'>Zamora</option><option value='52'>Zaragoza</option>"+
        "</select>"+
        "</td></tr></table></div>");

    opcs.css("heigth","0px");
    var menu=$("<div></div>");
    menu.css("background-color","#FFFFFF");
    menu.css("border","1px solid #000000");
    menu.css("margin-top","10px");
    menu.css("margin-right","10px");
    texto.appendTo(menu);
    menu.append(opcs);
    controlDiv.appendChild(menu.get(0));
}
function OpcProvincia(controlDiv, map) {
    var texto = $("<div>Categorias</div>");
    texto.css("cursor","pointer");
    texto.css("width","170px");
    texto.css("font-size","14px");
    texto.css("font-weight","bold");
    texto.css("align","right");
    texto.css("background-color","#cccccc");
    var imagen = $("<img id='imagenMenuMap' src='http://www.tuciudad.net/imagenes/flecha2.png'>");
    texto.append(imagen);
    texto.toggle(
        function() {
            $("#imagenMenuMap").attr("src","http://www.tuciudad.net/imagenes/flecha.png");
            $("#listadoCategoriasOfertas").slideUp();
        },
        function() {
            $("#imagenMenuMap").attr("src","http://www.tuciudad.net/imagenes/flecha2.png");
            $("#listadoCategoriasOfertas").slideDown();
        }
        );
    var c = $("<div></div>");
    texto.appendTo(c);
    c.css("font-size","12px");
    c.css("width","170px");
    c.css("border","1px solid #000000");
    c.css("font-weight","bold");
    c.css("align","right");
    c.css("background-color","#ffffff");
    var a=$("<div id='listadoCategoriasOfertas'></div>");
    var aux = "<div><input class='categs' type='checkbox' name='categs[]' onclick='mapaOferta.actualizarOfer()' ";
    $("<div><input class='todasCategorias' type='checkbox' name='categs[]' value='' onclick='mapaOferta.todasCategorias()'>Todas</div>").appendTo(a);
    $(aux+"value='52'>Abogados</div>").appendTo(a);
    $(aux+"value='20'>Alimentaci&oacute;n</div>").appendTo(a);
    $(aux+"value='39'>Animales</div>").appendTo(a);
    $(aux+"value='203'>Audiovisuales</div>").appendTo(a);
    $(aux+"value='17'>Belleza</div>").appendTo(a);
    $(aux+"value='224'>Comercio</div>").appendTo(a);
    $(aux+"value='31'>Construcci&oacute;n</div>").appendTo(a);
    $(aux+"value='201'>Deportes</div>").appendTo(a);
    $(aux+"value='197'>Despachos</div>").appendTo(a);
    $(aux+"value='5'>Educaci&oacute;n</div>").appendTo(a);
    $(aux+"value='198'>Electr&oacute;nica</div>").appendTo(a);
    $(aux+"value='18'>Hogar</div>").appendTo(a);
    $(aux+"value='6'>Inmobiliaria</div>").appendTo(a);
    $(aux+"value='11'>Moda</div>").appendTo(a);
    $(aux+"value='202'>Profesional</div>").appendTo(a);
    $(aux+"value='207'>Restauraci&oacute;n</div>").appendTo(a);
    $(aux+"value='19'>Salud</div>").appendTo(a);
    $(aux+"value='204'>Serv. P&uacute;blicos</div>").appendTo(a);
    $(aux+"value='205'>Turismo</div>").appendTo(a);
    $(aux+"value='7'>Veh&iacute;culos</div>").appendTo(a);
    $("<div onclick='mapaOferta.irAlNacional()'><center>Volver</center></div>").appendTo(a);
//    a.css("cursor","pointer");
    a.appendTo(c);
    controlDiv.appendChild(c.get(0));
}
