
var tcm = function(){
    this.initialize();
}
tcm.prototype = {
    mapa: null,
    markers: Array(),
    tam: null,
    centro: null,
    zum: null,
    rectangulo: null,
    icono: null,
    x:null,
    y:null,
    infowindow:null,
    idN:null,
    initialize: function(){
        this.zum = 15;
        var myOptions = {
            zoom: this.zum,
            mapTypeControl: false,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        this.mapa = new google.maps.Map(document.getElementById("zonaMapa"),myOptions);
        var menuDiv = document.createElement('DIV');
        var menu = new Opciones(menuDiv, this.mapa);
        //
        menuDiv.index = 1;
        this.mapa.controls[google.maps.ControlPosition.TOP_RIGHT].push(menuDiv);
    },
    iniciarBasico:function(id,xC,yC,nom,dir,loc,tel) {
        this.idN=id;
        this.x=xC;
        this.y=yC;
        this.centro = new google.maps.LatLng(this.x, this.y);
        this.mapa.setCenter(this.centro);
        this.addMarcador(xC, yC, nom, dir, loc, tel);
        var taman= new google.maps.Size(-20,-22);
        this.infowindow = new google.maps.InfoWindow({
            content: "<div style='text-align:left'><img src='http://www.tuciudad.net/imagenes/iconomapa.png'><b>"+nom+"</b><br>"+dir+"<br>"+tel+" - "+loc+"</div>",
            position: mapa.centro,
            pixelOffset:taman,
            zIndex:9
        });
        if(this.infowindow!=null) {
            this.infowindow.close();
        }
        this.infowindow.open(this.mapa);
    },
    addMarcador:function(xC,yC,nom,dir,loc,tel) {
        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/iconomapa.png",
            shadow: "http://www.tuciudad.net/imagenes/iconomapa_sombra.png"
        });
        this.markers.push(marker);
        var taman= new google.maps.Size(-20,-22);
        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/iconomapa.png'><b>"+nom+"</b><br>"+dir+"<br>"+tel+" - "+loc+"</div>",
                position: punto,
                pixelOffset:taman
            });
            if(this.infowindow!=null) {
                this.infowindow.close();
            }
            this.infowindow=info;
            this.infowindow.open(this.getMap());
        });
    },
    addImagen:function(xC,yC,nom,ruta) {
        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'><b>"+nom+"</b><br><img src='http://www.tuciudad.net/imgCity/red/imgCity"+ruta+".jpg'></div>",
                position: punto,
                pixelOffset:taman
            });
            if(this.infowindow!=null) {
                this.infowindow.close();
            }
            this.infowindow=info;
            this.infowindow.open(this.getMap());
        });
    },
    addOferta:function(xC,yC,nom,ruta) {
        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_oferta.png",
            shadow: "http://www.tuciudad.net/imagenes/categ/icono_ofertaS.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'><b>"+nom+"</b><br><img src='http://www.tuciudad.net/ofertas/red/oferta"+ruta+".jpg'></div>",
                position: punto,
                pixelOffset:taman
            });
            if(this.infowindow!=null) {
                this.infowindow.close();
            }
            this.infowindow=info;
            this.infowindow.open(this.getMap());
        });
    },
    cambiarModo:function(valor) {
        switch(valor) {
            case 'NORMAL': {
                this.mapa.setMapTypeId(google.maps.MapTypeId.ROADMAP);
                break;
            }
            case 'HYBRID': {
                this.mapa.setMapTypeId(google.maps.MapTypeId.HYBRID);
                break;
            }
            case 'SATELLITE': {
                this.mapa.setMapTypeId(google.maps.MapTypeId.SATELLITE);
                break;
            }
        }
    },
    actualizarPanel:function() {
        var nego=0;
        var imag=0;
        var ofer=0;
        $("input.inpOpcs:checked").each(
            function(index) {
                switch($(this).attr("id")) {
                    case "negocSimilares": {
                        nego=1;
                        break;
                    }
                    case "imagenesInteres": {
                        imag=1;
                        break;
                    }
                    case "ofertasZona": {
                        ofer=1;
                        break;
                    }
                }
            } );
        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();
        this.__datos(this.idN, nego, imag, ofer, x1, x2, y1, y2)
    },
    borrarMapa:function() {
        var tot=this.markers.length;
        this.infowindow.close();
        for(i=0;i<tot;i++) {
            this.markers[i].setMap(null);
        }
    },
    __datos:function(y,n,i,o,x1,x2,y1,y2) {
        $.ajax({
            'url': "ajax/mapa.php",
            'data': {
                'id':y,
                'nego': n,
                'imag': i,
                'ofer': o,
                'x1': x1,
                'x2': x2,
                'y1': y1,
                'y2': y2
            },
            'dataType': 'json',
            'type': 'POST',
            'success': function(data) {
                mapa.borrarMapa();
                var total=data.length;
                var i;
                var fila;
                for(i=0;i<total;++i) {
                    fila=data[i];
                    switch(fila["tipo"]) {
                        case "NEGO": {
                            mapa.addMarcador(fila["xN"], fila["yN"], fila["nombre"], fila["dir"], fila["loc"], fila["tel"]);
                            break;
                        }
                        case "IMAG": {
                            mapa.addImagen(fila["xN"], fila["yN"], fila["nombre"],fila["ruta"]);
                            break;
                        }
                        case "OFER": {
                            mapa.addOferta(fila["xN"], fila["yN"], fila["nombre"],fila["ruta"]);
                            break;
                        }
                    }
                  
                }
            }
        });

    }
}
function Opciones(controlDiv, map) {
    var texto = $("<div>Menú TuCiudad </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 colspan='2'><select id='tipoMapa' width='100%' onchange='mapa.cambiarModo(this.value)'><option value='NORMAL'>Normal</option><option value='SATELLITE'>Satélite</option><option value='HYBRID'>Hibrido</option></select></td></tr>"+
        "<tr><td><input class='inpOpcs' type='checkbox' id='negocSimilares' name='negocSimilares' onclick='mapa.actualizarPanel()'/></td><td>Negocios similares</td></tr>"+
        "<tr><td><input class='inpOpcs' type='checkbox' id='imagenesInteres' name='imagenesInteres' onclick='mapa.actualizarPanel()'/></td><td>Imágenes de interés</td></tr>"+
        "<tr><td><input class='inpOpcs' type='checkbox' id='ofertasZona' name='ofertasZona' onclick='mapa.actualizarPanel()'/></td><td>Ofertas en tu movil</td></tr>"+
        "</table></div>");

    opcs.css("heigth","0px");
    opcs.slideUp();
    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");
            $("#menuOpciones").slideUp();
        },
        function() {
            $("#imagenMenuMap").attr("src","http://www.tuciudad.net/imagenes/flecha2.png");
            $("#menuOpciones").slideDown();
        }
        );
    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));

}
var tcmReg = function(o) {
    this.initialize(o);
}
tcmReg.prototype= {
    mapa: null,
    marker:null,
    xIni:0,
    yIni:0,
    initialize:function(orig){
        var myOptions = {
            zoom: 9,
            mapTypeControl: false,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        this.mapa = new google.maps.Map(document.getElementById(orig),myOptions);
    },
    setCentro:function(pos) {
        this.mapa.setZoom(16);
        this.mapa.setCenter(pos);
        if(this.marker==null) {
            this.marker = new google.maps.Marker({
                position: pos,
                map: this.mapa,
                title:"Tu Posición",
                draggable:true,
                icon: "http://www.tuciudad.net/imagenes/iconomapa.png",
                shadow: "http://www.tuciudad.net/imagenes/iconomapa_sombra.png"
            });
        }else{
            this.marker.setPosition(pos);
        }
    },
    porPosicion:function(x,y) {
        var punto = new google.maps.LatLng(x, y);
        this.setCentro(punto);
    },
    porDireccion:function(direc) {
        var geocoder = new google.maps.Geocoder();
        if (geocoder) {
            geocoder.geocode( {'address': direc},
                function(results, status) {
                    if (status == google.maps.GeocoderStatus.OK) {
                        mapa.setCentro(results[0].geometry.location);
                    } else {
                        alert("No se ha encontrado ninguna ubicación para su busqueda");
                    }
                }
            );
        }

    },
    getPosicion:function() {
        if(this.marker!=null) {
            var punto= this.marker.getPosition();
            return punto.toString();
        }else {
            return "";
        }
    }
}
