﻿$(document).ready(function () {
//    //Google Maps
//    try {
//        $("body select").msDropDown();
//    } catch (e) {
//        alert(e.message);
//    }

//    var map;
//    var mgr;
//    try {
//        if (GBrowserIsCompatible()) {
//            map = new GMap2(document.getElementById("map_canvas"))
//            map.addControl(new GLargeMapControl());
//            map.setCenter(new GLatLng(-34.906218, -56.19085), 8);
//            map.enableDoubleClickZoom();
//            mgr = new MarkerManager(map, { trackMarkers: false });
//            window.setTimeout(setupOfficeMarkers, 0);
//        }
//    } catch (e) {
//        alert(e.message);
//    }

    function setupOfficeMarkers() {
        //Agregamos a las agencias
        var url = "Handlers/MantenimientoEmpresasRecuperar.ashx"
        $.ajax({
            type: 'POST',
            url: url,
            dataType: 'json',
            success: function (result) {
                var markers = [];
                jQuery.each(result, function (i, val) {
                    var icon = getIcon(val.FullName);
                    var title = val.FullName;
                    var posn = new GLatLng(val.Latitude, val.Longitude);
                    var marker = new GMarker(posn, { title: title, icon: icon, draggable: false });
                    GEvent.addListener(marker, "click", function () {
                        marker.openInfoWindowHtml("Marcador para <b>" + val.FullName + "</b><br />Aca se podria poner direccion<br />Aca el telefono<br />Resumiendo, cualquier html, foto imagen..");
                    });
                    markers.push(marker);
                });
                mgr.addMarkers(markers, 0, 17);
                mgr.refresh();
            },
            error: function (xhr) {
                alert('map');
            }
        });
    }

    function getIcon(images) {
        var icon = null;
        if (images) {
            icon = new GIcon();
            icon.image = "images/house.png";
            var size = { width: 32, height: 32 };
            icon.iconSize = new GSize(size.width, size.height);
            icon.iconAnchor = new GPoint(size.width >> 1, size.height >> 1);
            icon.shadow = "images/house-shadow.png";
            size = { width: 59, height: 32 };
            icon.shadowSize = new GSize(size.width, size.height);
            icon.infoWindowAnchor = new GPoint(9, 2);
        }
        return icon;
    }


    //Formulario de contacto
    //Dialogos
    $("#contactForm").dialog({ autoOpen: false,
        modal: true,
        height: 559,
        width: 400,
        buttons: {
            "Enviar": function () {
                if ($("#formContactenos").valid()) {
                    $('<img id="imgformContactoEnviando" src="images/ui-anim_basic_16x16.gif" alt="" style="padding-right: 10px" />').insertBefore($(this).parent().find(".ui-dialog-buttonset > button:first"));
                    var url = "Handlers/EnvioMailGenericoHandler.ashx"
                    $.ajax({
                        url: url,
                        data: $("#formContactenos").serialize(),
                        cache: false,
                        dataType: 'json',
                        success: function (data) {
                            if (data[0] == "Ok") {
                                $("#imgformContactoEnviando").remove();
                                $("#dialogOkContact").show();
                                setTimeout('$("#contactForm").dialog("close");', 1500);
                                setTimeout('$("#dialogOkContact").hide();', 1500);
                                setTimeout('$("#formContactenos").clearForm()', 1000);
                            }
                            else {
                                $("#imgformContactoEnviando").remove();
                                $("#dialogErrorContact").show();
                                setTimeout('$("#contactForm").dialog("close");', 1500);
                                setTimeout('$("#dialogErrorContact").hide();', 1500);
                            }
                        },
                        error: function (xhr) {
                            $("#imgformContactoEnviando").remove();
                            $("#dialogErrorContact").show();
                            setTimeout('$("#contactForm").dialog("close");', 1500);
                            setTimeout('$("#dialogErrorContact").hide();', 1500);
                        }
                    });
                    return false;
                }
            },
            "Cancelar": function () {
                $(this).dialog("close");
            }
        }
    })

    //Link Contactenos
    $("#contactLink").click(function () { $('#contactForm').dialog('open'); });

    //Valid
    $("#formContactenos").validate({
        rules: {
            Email: {
                required: true,
                email: true
            }
        },
        messages: {
            Email: {
                required: "*",
                email: "*"
            }
        },
        errorPlacement: function (error, element) {
            error.appendTo($('#' + $(element).attr('id') + 'Error'));
        }
    });

    function closeForm() {
        $("#messageSent").show("slow");
        setTimeout('$("#messageSent").hide();$("#contactForm").slideUp("slow")', 2000);
    }

    $(".lnkVerMas").click(function () {
        $(this).parents('.divMas').find('.divVerMas').slideDown();
        $(this).hide();
    });
    $(".lnkVerMenos").click(function () {
        $(this).parents('.divMas').find('.divVerMas').slideUp()
        $(this).parents('.divMas').find('.lnkVerMas').show()
    });

    $('#lnkSuscripcion').click(function () {
        $('#page-footer-susc').slideDown('500', function () {
        });
        return false;
    });
    $('#lnkSuscripcionClose').click(function () {
        $('#page-footer-susc').slideUp('500', function () {
        });
        return false;
    });

    //RecuperarPassword
    //Dialogos
    $("#dialogOkRecuperarPassword").dialog({ autoOpen: false, modal: true })
    $("#dialogBadRecuperarPassword").dialog({ autoOpen: false, modal: true })
    //Validate
    $("#formRecuperarPassword").validate({
        rules: {
            txtRetrieveUserName: {
                required: true,
                email: true
            }
        },
        messages: {
            txtRetrieveUserName: {
                required: "Ingrese la direccion de email registrada.",
                email: "Ingrese una direccion de email valida."
            }
        },
        errorPlacement: function (error, element) {
            error.appendTo($(element).next('span'));
        }
    });
    //Accion del boton
    $("#btnRecuperarPassword").click(function () {
        if ($("#formRecuperarPassword").valid()) {
            $('<img id="imgformRecuperarPassword" src="images/ui-anim_basic_16x16.gif" alt="" style="padding-right: 10px" />').insertBefore($(this).parent().find("#btnRecuperarPassword"));
            var url = "Handlers/MantenimientoUsuariosRecuperarPassword.ashx"
            $.ajax({
                url: url,
                data: $("#formRecuperarPassword").serialize(),
                cache: false,
                dataType: 'json',
                success: function (data) {
                    if (data[0] == "Ok") {
                        $("#imgformRecuperarPassword").remove();
                        $("#dialogOkRecuperarPassword").dialog('open')
                    }
                    else {
                        $("#imgformRecuperarPassword").remove();
                        $("#dialogBadRecuperarPassword").find('div').find('span').html('Mensaje de error: ' + data[2])
                        $("#dialogBadRecuperarPassword").dialog('open')
                    }
                },
                error: function (xhr) {
                    $("#imgformRecuperarPassword").remove();
                    $("#dialogBadRecuperarPassword").find('div').find('span').html('Mensaje de error: ' + data[2])
                    $("#dialogBadRecuperarPassword").dialog('open')
                }
            });
            return false;
        }
    });

    //Login
    //Dialogos
    $("#dialogBadLogin").dialog({ autoOpen: false, modal: true })
    //Validate
    $("#formLogin").validate({
        rules: {
            txtIngresoEmail: {
                required: true,
                email: true
            }
        },
        messages: {
            txtIngresoEmail: {
                required: "Ingrese la direccion de email registrada.",
                email: "Ingrese una direccion de email valida."
            },
            txtIngresoPassword: "Ingrese su password."
        },
        errorPlacement: function (error, element) {
            error.appendTo($('#' + $(element).attr('id') + 'Error'));
        }
    });
    $("#btnIngresar").click(function () {
        if ($("#formLogin").valid()) {
            var url = "Handlers/UsuarioLogin.ashx"
            $.ajax({
                url: url,
                data: $("#formLogin").serialize(),
                cache: false,
                dataType: 'json',
                success: function (data) {
                    if (data[0] == "Ok") {
                        //alert(data[1]);
                        window.location.replace(data[1]);
                    }
                    else {
                        $("#dialogBadLogin").find('div').find('span').html('Mensaje de error: ' + data[2]);
                        $("#dialogBadLogin").dialog('open');
                    }
                }
            });
        }
        return false;
    });

    $("#txtIngresoPassword").val($("#txtHiddenPassword").val());

    //Recuperamos contenido 
    $('#divRegistrarUsuario').load('_contenido/formsHome.htm #formRegistrarUsuario',
    function () {
        dialogoCrearUsuario();
        $("#registerUser").click(function () {
            $('#formRegistrarUsuario').dialog('open')
        });
    });

    //Recuperamos contenido local
    //El slider
    $('#slider').load('_contenidoLocal/homeSliderContent.htm', function () { $('#slider').nivoSlider(); });
    //Las condiciones generales
    $('#CondicionesGenerales').load('_contenidoLocal/CondicionesGenerales.htm', function () { $('#CondicionesGenerales').dialog({ position: ['center'], autoOpen: false, modal: true, height: 540, width: 630 }); $("#lnkCondicionesGenerales").click(function () { $('#CondicionesGenerales').dialog('open') }); });
    //Las condiciones generales
    $('#WeAreGoingGlobal').load('_contenidoLocal/contWeAreGoingGlobal.htm', function () { $('#WeAreGoingGlobal').dialog({ position: ['center'], autoOpen: false, modal: true, height: 540, width: 630 }); $("#lnkWeAreGoingGlobal").click(function () { $('#WeAreGoingGlobal').dialog('open') }); });
    //Banner de promociones
    $('#divBannerPromociones').load('_contenidoLocal/BannerPromociones.htm');
    //Banner de promociones
    $('#divContBanderas').load('_contenidoLocal/contBanderas.htm');
});

//Dialogos
function dialogoCrearUsuario() {
    //Validate
    $("#formUsuario").validate({
        rules: {
            txtUsuarioEmpresaId: {
                required: true
            },
            txtUsuarioEmail: {
                required: true,
                email: true
            }
        },
        messages: {
            txtUsuarioEmpresaId: "Debe seleccionar una empresa",
            txtUsuarioNombre: "Ingrese el nombre",
            txtUsuarioApellido: "Ingrese el apellido",
            txtUsuarioEmail: {
                required: "Ingrese una direccion de email",
                email: "Ingrese una direccion de email valida"
            }
        }
    });
    //Dialog
    $('#formRegistrarUsuario').dialog({ autoOpen: false,
        height: 540,
        width: 580,
        modal: true,
        buttons: {
            "Confirmar": function () {
                if ($("#formUsuario").valid()) {
                    $(this).parent().find('#envioAviso').attr('checked', true);
                    $('<img id="imgRegistrandoUsuario" src="images/ui-anim_basic_16x16.gif" alt="" style="padding-right: 10px" />').insertBefore($(this).parent().find("#btnRecuperarPassword"));
                    $("#insertUsuarioError").hide();
                    $.post("Handlers/MantenimientoUsuariosInsert.ashx",
                        $("#formUsuario").serialize(),
                        insertUsuarioCallback);
                }
            },
            "Cancelar": function () {
                $(this).dialog("close");
            }
        }
    });
    //AutoComplete
    $.widget("custom.catcomplete", $.ui.autocomplete, {
        _renderMenu: function (ul, items) {
            var self = this,
			currentCategory = "";
            $.each(items, function (index, item) {
                if (item.value.Rubro != currentCategory) {
                    ul.append("<li class='ui-autocomplete-category'>" + item.value.Rubro + "</li>");
                    currentCategory = item.value.Rubro;
                }
                self._renderItem(ul, item);
            });
        }
    });
    $("#txtBuscarEmpresa").catcomplete({
        source: function (request, response) {
            var url = "DataService/EntidadesNetviaxWebDataService.svc/Empresas?" +
                "$filter=substringof('" + request.term + "',FullName)" //+
            url = url + "&$orderby=Rubro"
            $.ajax({
                url: url,
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                dataFilter: function (data) { return data; },
                success: function (data) {
                    response($.map(data.d, function (item) {
                        return {
                            value: item
                        }
                    }))
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert(textStatus);
                }
            });
        },
        select: function (event, ui) {
            $("#txtUsuarioEmpresaId").val(ui.item.value.Id);
            $("#txtBuscarEmpresa").val(ui.item.value.FullName);
            $("#txtUsuarioEmail").focus()
            return false;
        },
        minLength: 2
    })
    .data("catcomplete")._renderItem = function (ul, item) {
        return $("<li></li>")
		.data("item.autocomplete", item)
		.append("<a>" + item.value.FullName + "</a>")
		.appendTo(ul);
    };
}
function insertUsuarioCallback(result) {
    $("#imgRegistrandoUsuario").remove();
    if (result == "success") {
        //alert("Movie added!");
        $("#insertUsuarioOk").show();
        setTimeout('$("#formUsuario").clearForm()', 1500);
        setTimeout('$("#insertUsuarioOk").hide()', 1500);
        setTimeout('$("#formRegistrarUsuario").dialog("close");', 1500);
    } else {
        //alert("Could not add movie!");
        $("#insertUsuarioError").find("#mensError").html("<strong>Mensaje de error: </strong>" + result);
        $("#insertUsuarioError").show();
    };
}



//plugin para borrar las forms
$.fn.clearForm = function () {
    return this.each(function () {
        var type = this.type, tag = this.tagName.toLowerCase();
        if (tag == 'form')
            return $(':input', this).clearForm();
        if (type == 'text' || type == 'password' || tag == 'textarea')
            this.value = '';
        else if (type == 'checkbox' || type == 'radio')
            this.checked = false;
        else if (tag == 'select')
            this.selectedIndex = -1;
    });
};


//plugins para la geolocalizacion
//Segun pais establezco el nivel 1
$.fn.geoLocalizacion = function () {
    return this.change(function (GeoLocalizacionNivel1, GeoLocalizacionNivel2) {
        // Pregunto si se selecciono un País
        if ($(this).val() == "") {
            $(this).closest('.divGeoAgrupacion').find('.lstGeoAgrupacionNivel1').html('<option value="">Seleccione..."</option>');
            $(this).closest('.divGeoAgrupacion').find('.txtGeoAgrupacionNivel2').val('');
        }
        else {
            switch ($(this).val()) {
                case "UY":
                    $(this).closest('.divGeoAgrupacion').find('.labelCountryGeoAgrupacionNivel1').html("Departamento:");
                    break;
                case "AR":
                    $(this).closest('.divGeoAgrupacion').find('.labelCountryGeoAgrupacionNivel1').html("Provincia:");
                    break;
            }
            getGeoAgrupacionNivel1($(this))
        }
    });
}
function getGeoAgrupacionNivel1(lst, GeoAgrupacionNivel1, GeoAgrupacionNivel2) {
    var url = "DataService/EntidadesNucleoDataService.svc/GeoAgrupacionesNivel1?" +
                     "$filter=Country/ISO31661alpha2 eq '" + $(lst).val() + "' " +
                     "&$orderby=FullName" +
                     "&$select=FullName,Id"

    $(lst).closest('.divGeoAgrupacion').find('.imgGeoAgrupacionNivel1Loading').show();
    $.ajax({
        type: "GET",
        url: url,
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            $(lst).closest('.divGeoAgrupacion').find('.lstGeoAgrupacionNivel1').setTemplate($("#TemplatelstEmpresaCountryGeoAgrupacionNivel1").html())
            $(lst).closest('.divGeoAgrupacion').find('.lstGeoAgrupacionNivel1').processTemplate(data);
            $(lst).closest('.divGeoAgrupacion').find('.imgGeoAgrupacionNivel1Loading').hide();

            if (GeoAgrupacionNivel1 != null) {
                $(lst).closest('.divGeoAgrupacion').find('.lstGeoAgrupacionNivel1').val(GeoAgrupacionNivel1);
                if (GeoAgrupacionNivel2 != null) {
                    var url = "DataService/EntidadesNucleoDataService.svc/GeoAgrupacionesNivel2?" +
                     "$filter=Id eq " + GeoAgrupacionNivel2 +
                     "&$orderby=FullName" +
                     "&$select=FullName,Id"
                    $.ajax({
                        type: "GET",
                        url: url,
                        data: "{}",
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (data) {
                            $(lst).closest('.divGeoAgrupacion').find('.txtGeoAgrupacionNivel2').val(data.d[0].FullName)
                            $(lst).closest('.divGeoAgrupacion').find('.txtGeoAgrupacionNivel2Id').val(data.d[0].Id)
                        },
                        error: function (xhr) {
                            alert(xhr.responseText);
                        }
                    });
                }
                else {
                    $(lst).closest('.divGeoAgrupacion').find('.txtGeoAgrupacionNivel2').val('')
                    $(lst).closest('.divGeoAgrupacion').find('.txtGeoAgrupacionNivel2Id').val('')
                }
            }
            else {
                $(lst).closest('.divGeoAgrupacion').find('.lstGeoAgrupacionNivel1').val('')
                $(lst).closest('.divGeoAgrupacion').find('.txtGeoAgrupacionNivel2').val('')
                $(lst).closest('.divGeoAgrupacion').find('.txtGeoAgrupacionNivel2Id').val('')
            }
        },
        error: function (xhr) {
            alert(xhr.responseText);
            $(lst).closest('.divGeoAgrupacion').find('.imgGeoAgrupacionNivel1Loading').hide();
        }
    });
    return false;
}
//Autocomplete para el nivel 2
$.fn.geoLocalizacionNivel2 = function () {
    return this.autocomplete({
        source: function (request, response) {
            var url = "DataService/EntidadesNucleoDataService.svc/GeoAgrupacionesNivel2?" +
                                 "$filter=startswith(FullName,'" + request.term + "')" +
                                 " and (GeoAgrupacionNivel1Id) eq " + $(this.element).closest('.divGeoAgrupacion').find('.lstGeoAgrupacionNivel1').val()
            url = url + "&$orderby=FullName"
            $.ajax({
                url: url,
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    response($.map(data.d, function (item) {
                        return {
                            value: item.FullName,
                            id: item.Id
                        }
                    }))
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert(textStatus);
                }
            });
        },
        minLength: 2,
        select: function (event, ui) {
            $(this).closest('.divGeoAgrupacion').find('.txtGeoAgrupacionNivel2Id').val(ui.item.id);
        }
    });
}
