/// <reference path="http://ajax.microsoft.com/ajax/jQuery/jquery-1.3.2-vsdoc.js"/>


//Variaables
///
//Variable para funciones despues de login
var LoginPendingFunction = null;

//A estas propiedades se le coloca el valor en el control userinfo
var nodoid;


$(function() {


    //navigationHome




    $('#navCategories a').click(function(event) {
        event.preventDefault();
        $('#SubCategoriasContainer').fadeOut('normal');
        $('#LoadingMapNavigatorFront').show();
        $('#SubCategoriasContainer').load($(this).attr('href'), SubcategoriaEvent);
    });


    function SubcategoriaEvent() {
//        $('.jScrollbar, .jScrollbar2, .jScrollbar3, .jScrollbar4, .jScrollbar5').jScrollbar({
//            allowMouseWheel: true,
//            scrollStep: 10
//        });
        $('#LoadingMapNavigatorFront').hide();
        $('#SubCategoriasContainer').fadeIn('normal');
        $(".vtip").tipsy({ fade: true, gravity: 'n' });
        $('.SubCategorias').click(function(event) {
            event.preventDefault();
            $('#LoadingMapNavigatorFront').show();
            $('#SubCategoriasContainer').fadeOut('normal');
            $('#SubCategoriasContainer').load($(this).attr('href'), SubcategoriaEvent);
        });

        $('.EstablecimientosDetalle').click(function(event) {
            event.preventDefault();
            var sources = '';
            var data = $(this).metadata();
            sources += data.id;
            $('#LoadingMapNavigatorFront').show();

            Mapa = Mapifies.MapObjects['FrontMap'];


            Mapa.clearOverlays();

            $.getScript("/CLusterFront.ashx?sources=" + sources, function() {
                StockMarkers();



                var latlngbounds = new GLatLngBounds();
                var latlng = new Array();

                for (var l = 0; l < markers.length; l++) {

                    Mapa.addOverlay(markers[l]);

                    var point = markers[l].getPoint();

                    lat = point.lat();
                    lng = point.lng();

                    if (lat > 0)
                        latlng.push(new GLatLng(lat, lng));
                }

                for (var i = 0; i < latlng.length; i++) {
                    latlngbounds.extend(latlng[i]);
                }
                var zoom = Mapa.getBoundsZoomLevel(latlngbounds);

                if (zoom > 15)
                    zoom = 15;

                Mapa.setCenter(latlngbounds.getCenter(), zoom);


                $('#LoadingMapNavigatorFront').hide();
            });
            $('#SubCategoriasContainer').fadeOut('normal');
        });
    }

    $('.vtip').tipsy({ fade: true, gravity: 'n' });

    //Busqueda
    $('#input_search').Watermark('Búsqueda por sector, calle, descripción, categoría o facilidad', '#999');

    var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');

    var a = $('#input_search').autocomplete({
        serviceUrl: '/SearchComplete.ashx',
        minChars: 2,
        delimiter: /(,|;)\s*/, // regex or character
        maxHeight: 400,
        width: 480,
        zIndex: 9999,
        deferRequestBy: 0, //miliseconds       
        // callback function:
        onSelect: function(value, data) { searchSelect(value, data); },
        fnFormatResult: function(value, data, currentValue) {
            var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
            var result = value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
            result = '<span class="suggestText">' + result + '</span><span class="cntRslt">' + data + ' resultados</span>'
            return result;
        }
    });


    $("#input_search").keypress(function(e) {
        if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
            $('#SearchButton').click();
            return false;
        } else {
            return true;
        }
    });

    $('h1').click(function() {
        $('#resultDiv').quicksand($('#SortDiv .company_itemW'));
    });

    $('#countSort').click(function() {

        $('company_Cont').sortElements(function(a, b) {
            return $(a).metadata().cantidad > $(b).metadata().cantidad ? 1 : -1;
        });

        $('#company_Cont').quicksand($('#sorter .company_itemW'));
    });



    $("#SearchButton").click(function() {
        $.Watermark.HideAll();
        if ($("#input_search").val() != '') {
            window.location = "/search?search=" + $("#input_search").val();
        }
        $.Watermark.ShowAll();
        return false;
    });

    function searchSelect(value, data) {
        $("#input_search").val(value);
        window.location = "/search?search=" + value;
    }

    //CineSlider----------------------
    $('.proximamente .itemsW').scrollable({ size: 3, clickable: false }).navigator();
    $('.todayMovies .itemsW').scrollable({ size: 3, clickable: false }).navigator();


    var cont = 1;
    $('.navi').each(function() {
        cont = 1;
        $(this).find(' a').each(function() {
            $(this).html(cont);
            this.cursor = 'hand';
            cont++;
        });
    });

    //Breacrumbs--------

    jQuery("#breadCrumb").jBreadCrumb();

    //Ratings----------------------------------------------
    $('.Rating :radio').rating({ split: 2, readOnly: true });
    $('.EditableRating :radio').rating();
    $('.EditableRating , .Rating').removeClass('Hidden');
    //Modals-----------------------------------------------
    var triggers = $(".LoginModal").overlay(
    { onBeforeLoad: function() {
        $('.textbox').val('').removeClass('ErrorTexBox');
        LoginWaterMarks();
        $("#LoginTitle").text('Accede o Registrate en TuSantoDomingo.com');
        getCapcha();
    }
    }
    );

    //Invitaciones de Facebook

    $('#lnkInvitar').click(function() { FacebookInviter(); });





    //Reservaciones
    var ReservaSteper = false;
    $('#btnReservar').click(function(event) {
        event.preventDefault();
        if (ReservaSteper == false) {

            ReservaSteper = true;
        }
        $('#ReservaBox').overlay({ api: true }).load();
    });


    //Modal de registro-------------------------------------
    $('#CommentButton').click(function(event) {
        event.preventDefault();
        $.getJSON("/LoginServices.ashx", { option: 'islogin', rnd: Math.random() }, function(autenticado) {
            if (autenticado.IsLogin) {
                $('.textbox').val('').removeClass('ErrorTexBox');
                $("#CommentBox").overlay({ api: true }).load();
                CommentWaterMarks();
            }
            else {

                getCapcha();
                $("#LoginTitle").text('Para Comentar, Accede o Registrate en TuSantoDomingo.com');
                LoginWaterMarks();

                $("#LoginBox").overlay({ api: true }).load();

                //Asignando la funcion a llamar despues de login
                LoginPendingFunction = function() { $("#CommentBox").overlay({ api: true }).load(); LoginPendingFunction = null; CommentWaterMarks(); }

            }
        });

    });



    $("#PlayerContainer").html('<div id="LoadingMovie"><img alt="" src="/images/ajax-loader.gif" style="width: 66px; height: 66px" /></div>');


    $('.bottonTrailer').click(function(event) {
        event.preventDefault();
        var url = $(this).parents('li').find('.linkMovie').attr('href');

        url += '/videotrailer';

        $("#PlayerContainer").html('<div id="LoadingMovie"><img alt="" src="/images/ajax-loader.gif" style="width: 66px; height: 66px" /></div>');
        $("#MovieTrailer").overlay({ api: true, expose: 'darkgray', onClose: function() { $("#PlayerContainer").html(''); } }).load();
        $("#PlayerContainer").load(url);

    });


    $('#TrailerPelicula').click(function(event) {
        event.preventDefault();
        var url = location.href;

        url += '/videotrailer';

        $("#PlayerContainer").html('<span class="LoadingText">Cargando video...</span>');
        $("#MovieTrailer").overlay({ api: true, expose: 'darkgray', onClose: function() { $("#PlayerContainer").html(''); } }).load();
        $("#PlayerContainer").load(url);

    });


    var ListingSteper = false;

    //Modal Agregar
    $('.AddListing').click(function(event) {
        event.preventDefault();

        if (ListingSteper == false) {

            ListingSteper = true;
        }

        $.getJSON("/LoginServices.ashx", { option: 'islogin', rnd: Math.random() }, function(autenticado) {
            if (autenticado.IsLogin) {
                $("#AddListing").overlay({ api: true }).load();
            }
            else {

                $("#LoginTitle").text('Para Agregar tu negocio, Accede o Registrate en TuSantoDomingo.com');

                $("#LoginBox").overlay({ api: true }).load();

                //Asignando la funcion a llamar despues de login
                LoginPendingFunction = function() { $("#AddListing").overlay({ api: true }).load(); LoginPendingFunction = null; }

            }
        });


    });


    //Modal de Guardado-------------------------------------
    $('#btnSave').click(function(event) {
        event.preventDefault();
        $.getJSON("/LoginServices.ashx", { option: 'islogin', rnd: Math.random() }, function(autenticado) {
            if (autenticado.IsLogin) {
                Save();
            }
            else {

                getCapcha();
                $("#LoginTitle").text('Para Guardar este lugar, Accede o Registrate en TuSantoDomingo.com');

                $("#LoginBox").overlay({ api: true }).load();

                //Asignando la funcion a llamar despues de login
                LoginPendingFunction = function() { Save(); LoginPendingFunction = null; }

            }
        });

    });

    var DialogGuardar = null;

    function Save() {

        $.getJSON("/Save.ashx", { nid: nodoid, rnd: Math.random() }, function(resultado) {

            $("#MensajeGuardar div").html(resultado.Mensaje);
            DialogGuardar = $("#SaveDialog").overlay({ api: true }).load();
        });
    }

    //Cerrando el dialogo de guardado
    $('#btnCerrarGuardar').click(function() { DialogGuardar.close(); });



    function CommentWaterMarks() {
        $('#txtCommentitle').Watermark('Ejemplo: Los Mejores Tacos de Sto. Dgo.', '#999');
        $('#txtComment').Watermark('¿Que hace este lugar único o especial para ti?', '#999');
    }

    function LoginWaterMarks() {
        $('#txtName').Watermark('Mostrado públicamente', '#999');
    }

    //Registro----------------------------------------------
    $('#btnRegistro').click(function(event) {
        event.preventDefault();
        $.Watermark.HideAll();
        $('.textbox').removeClass('ErrorTexBox');

        var mail = $('#txtMail').val();
        var name = $('#txtName').val();
        var sector = $('#txtSector').val();
        var clave0 = $('#txtClave0').val();
        var clave1 = $('#txtClave1').val();

        if (mail == '') {
            $('#txtMail').addClass('ErrorTexBox');
            $('#MessagesRegistro').text("Email Requerido");
            $.Watermark.ShowAll();
            return;
        }

        if (mail.indexOf(".") == -1 || mail.indexOf("@") == -1) {
            $('#txtMail').addClass('ErrorTexBox');
            $('#MessagesRegistro').text("Email no valido");
            $.Watermark.ShowAll();
            return;
        }

        if (name == '') {
            $('#txtName').addClass('ErrorTexBox');
            $('#MessagesRegistro').text("Nombre Requerido");
            $.Watermark.ShowAll();
            return;
        }

        if (clave0 == '') {
            $('#txtClave0').addClass('ErrorTexBox');
            $('#MessagesRegistro').text("Clave Requerida");
            $.Watermark.ShowAll();
            return;
        }

        if (clave1 == '') {
            $('#txtClave1').addClass('ErrorTexBox');
            $('#MessagesRegistro').text("Confirmación de clave Requerida");
            $.Watermark.ShowAll();
            return;
        }


        if (clave1 != clave0) {
            $('#txtClave0').addClass('ErrorTexBox');
            $('#txtClave1').addClass('ErrorTexBox');
            $('#MessagesRegistro').text("Las claves no concuerdan");
            $.Watermark.ShowAll();
            return;
        }



        $.getJSON("/Registro.ashx", { Email: mail, Nombre: name, Clave: clave0, IconValue: $("input[name=s3capcha]:checked").val(), Sector: sector, rnd: Math.random() }, function(data) {
            if (data.Satisfactorio) {
                $('#MessagesRegistro').text(data.Mensaje);

                if (LoginPendingFunction == null)
                    window.location.reload();
                else
                    LoginPendingFunction();

            }
            else {
                getCapcha();
                $('#MessagesRegistro').text(data.Mensaje);
            }
        });

        $.Watermark.ShowAll();
    });
    //Comments------------------------------------------------------

    $('#btnCommentSave').click(function(event) {
        event.preventDefault();
        $.Watermark.HideAll();

        $('.textbox').removeClass('ErrorTexBox');

        var title = $('#txtCommentitle').val();
        var rating = $("#CommentRating input:checked").val();
        var comment = $('#txtComment').val();

        if (title == '') {
            $('#txtCommentitle').addClass('ErrorTexBox');
            $('#MensajeRating').text("Título Requerido");
            $.Watermark.ShowAll();
            return;
        }

        if (comment == '') {
            $('#txtComment').addClass('ErrorTexBox');
            $('#MensajeRating').text("Comentario Requerido");
            $.Watermark.ShowAll();
            return;
        }

        if (rating == '') {
            $('#MensajeRating').text("Seleccione la puntuacion en estrellas");
            $.Watermark.ShowAll();
            return;
        }


        $.getJSON("/Comments.ashx", { title: title, comment: comment, rating: rating, nid: nodoid, rnd: Math.random() }, function(data) {
            if (data.Satisfactorio) {
                $('#MensajeRating').text(data.Mensaje);
                window.location.reload();
            }
            else {
                getCapcha();
                $('#MensajeRating').text(data.Mensaje);
            }
        });

        $.Watermark.ShowAll();

    });

    //Manejo del login.


    $("#txtUsuario,#txtClave").keypress(function(e) {
        if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
            $('#btnAcceder').click();
            return false;
        } else {
            return true;
        }
    });


    $('#btnAcceder').click(function(event) {
        event.preventDefault();

        var usuario = $('#txtUsuario').val();
        var clave = $('#txtClave').val();

        $('.textbox').removeClass('ErrorTexBox');

        if (usuario == '') {
            $('#txtUsuario').addClass('ErrorTexBox');
            $('#MessagesLogin').text("Usuario Requerido");
            return;
        }

        if (clave == '') {
            $('#txtClave').addClass('ErrorTexBox');
            $('#MessagesLogin').text("Clave Requerida");
            return;
        }

        $.getJSON("/LoginServices.ashx", { option: 'login', user: usuario, pass: clave, rnd: Math.random() }, function(autenticado) {
            if (autenticado.IsLogin) {
                $('#MessagesLogin').text("Bienvenido " + autenticado.Name).removeClass('Error').addClass('Msg');

                if (LoginPendingFunction == null)
                    window.location.reload();
                else
                    LoginPendingFunction();

            }
            else {
                $('#MessagesLogin').text("Usuario o clave incorrecto");
            }
        })
    });

    //si esta logiado mostrar la info del usuario

    //    $.getJSON("/LoginServices.ashx", { option: 'islogin' }, function(autenticado) {
    //        if (autenticado)
    //            alert('kl');
    //    });


    $('#lnkLogOut').click(function() { LogOut(); })
    $('#lnkFBLogIn').click(function() { FB.Connect.requireSession(function() { facebookLogin(); }); })

});


//Captcha

var getCapcha = function() {
    $.ajax({
        url: '/s3capcha.ashx',
        cache: false,
        success: function(data) {
            $('#capcha').html(data).s3Capcha();
        }
    });
};


//Login y registro

function facebookLogin() {
    $.getJSON("/FacebookServices.ashx", { rnd: Math.random() }, function(Result) {
    if (Result.IsLogin) {                        
            if (LoginPendingFunction == null)
                window.location.reload();
            else
                LoginPendingFunction();
        }
    });
}


function LogOut() {       
    
    //Closing asp session
    $.getJSON("/LoginServices.ashx", { option: 'logout', rnd: Math.random() }, function(autenticado) {
        FB.Connect.logout(function() { window.location.reload(); }); ;
    })
}


function CenterMap() {    

    if (GoogleMap == null)
        return;

    if (GoogleMap.Markers == null)
        return;
        
  
    var latlngbounds = new GLatLngBounds();
    var latlng = new Array();
    for (var l = 0; l < GoogleMap.Markers.length; l++) {
        if (GoogleMap.Markers[l].Latitude > 0)
            latlng.push(new GLatLng(GoogleMap.Markers[l].Latitude, GoogleMap.Markers[l].Longitude));
    }

    for (var i = 0; i < latlng.length; i++) {
        latlngbounds.extend(latlng[i]);
    }
    var zoom = GoogleMap.GMap.getBoundsZoomLevel(latlngbounds);

    if (zoom > 15)
        zoom = 15;

    GoogleMap.setCenter(latlngbounds.getCenter(), zoom);    
}

function FacebookInviter() {
    
    $("#FriendInviter").overlay({ api: true }).load();
    
}
      
      
      
      
      jQuery.fn.sortElements = (function(){
 
    var sort = [].sort;
 
    return function(comparator, getSortable) {
 
        getSortable = getSortable || function(){return this;};
 
        var placements = this.map(function(){
 
            var sortElement = getSortable.call(this),
                parentNode = sortElement.parentNode,
 
                // Since the element itself will change position, we have
                // to have some way of storing its original position in
                // the DOM. The easiest way is to have a 'flag' node:
                nextSibling = parentNode.insertBefore(
                    document.createTextNode(''),
                    sortElement.nextSibling
                );
 
            return function() {
 
                if (parentNode === this) {
                    throw new Error(
                        "You can't sort elements if any one is a descendant of another."
                    );
                }
 
                // Insert before flag:
                parentNode.insertBefore(this, nextSibling);
                // Remove flag:
                parentNode.removeChild(nextSibling);
 
            };
 
        });
 
        return sort.call(this, comparator).each(function(i){
            placements[i].call(getSortable.call(this));
        });
 
    };
 
})();

