﻿/// <reference path="jquery-1.4.2.js" />
 function Portal() { }

    //Begin Menu Functions
   
    Portal.Tabs = function (url) {
        $('#coursesTab').click(function () {
            location.href = url + "?tag=/cursos";
        });

        $('#aboutUsTab').click(function () {
            location.href = url + "?tag=/nosotros";
        });

        $('#articlesTab').click(function () {
            location.href = url + "?tag=/artículos";
        });

        $('#servicesTab').click(function () {
            location.href = url + "?tag=/servicios";
        });

        $('#contactTab').click(function () {
            location.href = "#contact";
        });
    }

    //End Menu Functions

    //Begin NextCourses Functions

     Portal.GetNextCourses = function () {
         $('#nextCoursesLoader').css('display', 'block');
         $('#nextCoursesList').css('display', 'none');

         $.ajax({
             url: $.url('Portal/GetNextCourses'),
             type: 'POST',
             dataType: 'json',
             data: {},
             contentType: 'application/json; charset=utf-8',
             success: Portal._renderNextCourses,
             error: function (xhr, status, error) {
             }
         });
     }

    Portal._renderNextCourses = function (nextCourses) {
        $('#nextCoursesList').empty();

        $.each(nextCourses, function (i, nextCourse) {
            //Add a Next Course to the <ul> NextCoursesList
            $('#nextCoursesList').append($('<li/>')
                .append(_getNextCourseLinkHTML(nextCourse)));

            $('#nextCoursesList li:first').toggleClass('current');

            if (i == 0)
                Portal.GetNextCourse(nextCourse.NextCourseId);
        });

        $('#nextCoursesLoader').css('display', 'none');
        $('#nextCoursesList').css('display', 'block');

        $('#nextCoursesList li a').click(function () {
            var nextCourseId = parseInt($(this).attr('id'));
            Portal.GetNextCourse(nextCourseId);
            _removeClases();
            $($(this)).parent().addClass('current');
        });

        function _getNextCourseLinkHTML(nextCourse) {
            return '<a style="cursor: pointer" id="' + nextCourse.NextCourseId + '">' + nextCourse.Course.ShortName + '<br/> <small>' + nextCourse.StartDate + '</small> </a>';
        }

        function _removeClases() {
            $('#nextCoursesList li').removeClass('current');
        }
    }

    //NextCourse Details

    Portal.GetNextCourse = function (id) {
        $('#nextCourseLoader').css('display', 'block');
        $('#nextCourseDetails').css('display', 'none');

        $.ajax({
            url: $.url('Portal/GetNextCourse/') + id,
            type: 'POST',
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            success: Portal._renderNextCourse,
            error: function (xhr, status, error) {
            }
        });
    }

    Portal._renderNextCourse = function (nextCourse) {
        $("#nextCourseDetails").empty();

        $('#nextCourseDetails').append(_getNextCoursePhotoHTML(nextCourse))
                    .append(_getNextCourseTitleHTML(nextCourse))
                    .append(_getNextCourseDatesHTML(nextCourse))
                    .append(_getNextCourseDescriptionHTML(nextCourse))
                    .append(_getNextCourseUrlLinkHTML(nextCourse));

        $('#nextCourseLoader').css('display', 'none');
        $('#nextCourseDetails').css('display', 'block');

        function _getNextCoursePhotoHTML(nextCourse) {
            return '<a href="#" class="right"> <img src="' + nextCourse.Course.PhotoPath + '" alt="" title="' + nextCourse.Course.Title + '" height="136" width="160" /> </a>';
        }

        function _getNextCourseTitleHTML(nextCourse) {
            return '<h1>' + nextCourse.Course.Title + '</h1>';
        }

        function _getNextCourseDatesHTML(nextCourse) {
            return '<p><span class="fechaCurso"> Del ' + nextCourse.StartDate + ' al ' + nextCourse.EndDate + '</span></p>';
        }

        function _getNextCourseDescriptionHTML(nextCourse) {
            return '<p>' + nextCourse.Course.Description + '</p>';
        }

        function _getNextCourseUrlLinkHTML(nextCourse) {
            return '<p><a href="' + nextCourse.Course.Url + '">Ver m&aacute;s &raquo;</a></p>';
        }
    }

    //End NextCourses Functions

    //Begin Services Functions

    Portal.GetServices = function () {
        $('#servicesLoader').css('display', 'block');
        $('#servicesList').css('display', 'none');

        $.ajax({
            url: $.url('Portal/GetServices'),
            type: 'POST',
            dataType: 'json',
            data: {},
            contentType: 'application/json; charset=utf-8',
            success: Portal._renderServices,
            error: function (xhr, status, error) {
            }
        });
    }

    Portal._renderServices = function (services) {
        $("#servicesList").empty();

        $.each(services, function (i, service) {
            //Add a Service to the <ul> ServicesList
            $('#servicesList').append($('<li/>')
                .append(_getServiceHTML(service)));
        });

        $('#servicesLoader').css('display', 'none');
        $('#servicesList').css('display', 'block');

        function _getServiceHTML(service) {
            return '<a href="'+ service.Url +'"><span title="' + service.Description + '">' + service.Title + '</span></a>';
        }
    }

    //End Services Functions

    //Begin Courses Functions

    Portal.GetCourses = function () {
        $('#coursesLoader').css('display', 'block');
        $('#coursesList').css('display', 'none');

        $.ajax({
            url: $.url('Portal/GetCourses'),
            type: 'POST',
            dataType: 'json',
            data: {},
            contentType: 'application/json; charset=utf-8',
            success: Portal._renderCourses,
            error: function (xhr, status, error) {
            }
        });
    }

    Portal._renderCourses = function (courses) {
        $("#coursesList").empty();

        $.each(courses, function (i, course) {
            //Add a Course to the <ul> CourseList
            $('#coursesList').append($('<li/>')
                .append(_getCourseHTML(course)));
        });

        $('#coursesLoader').css('display', 'none');
        $('#coursesList').css('display', 'block');

        function _getCourseHTML(course) {
            return '<a href="' + course.Url + '" title="' + course.Description + '">' + course.Title + '</a>';
        }
    }

    //End Courses Functions

    //Begin Articles Functions

    var _maxPages = 0;
    var _articlesPage = 0;

    Portal.LoadArticles = function () {

        $.ajax({
            url: $.url('Portal/CountArticles'),
            type: 'POST',
            dataType: 'json',
            data: {},
            contentType: 'application/json; charset=utf-8',
            success: Portal._renderCountArticles,
            error: function (xhr, status, error) {
            }
        });

    }

    Portal._renderCountArticles = function (value) {
        _maxPages = Math.ceil(value / 4) - 1;

        $('#prevPageArticles').click(function () {
            _articlesPage = _articlesPage - 1;
            Portal.GetArticles();
        });

        $('#nextPageArticles').click(function () {
            _articlesPage = _articlesPage + 1;
            Portal.GetArticles();
        });

        Portal.GetArticles();
    }

    Portal.GetArticles = function () {
        $('#prevPageArticles').hide();
        $('#nextPageArticles').hide();
        $('#articlesLoader').css('display', 'block');
        $('#articlesList').css('display', 'none');
        
        var json = JSON.stringify({ "limInf": _articlesPage });

        $.ajax({
            url: $.url('Portal/GetArticles'),
            type: 'POST',
            dataType: 'json',
            data: json,
            contentType: 'application/json; charset=utf-8',
            success: Portal._renderArticles,
            error: function (xhr, status, error) {
            }
        });
    }

    Portal._renderArticles = function (articles) {
        $("#articlesList").empty();

        $.each(articles, function (i, article) {
            //Add a Article to the <ul> ArticleList
            $('#articlesList').append($('<li/>')
                .append(_getArticleHTML(article)));
        });

        function _getArticleHTML(article) {
            return '<a href="' + article.Url + '">' + article.Title + '<br /> <small>' + article.PublicationDate + '</small> </a>';
        }
   
        if (_articlesPage <= 0)
            $('#prevPageArticles').hide();
        else
            $('#prevPageArticles').show();

        if (_articlesPage >= _maxPages)
            $('#nextPageArticles').hide();
        else
            $('#nextPageArticles').show();

        $('#articlesLoader').css('display', 'none');
        $('#articlesList').css('display', 'block');
    }
    
    //End Articles Functions

    //Begin Members Functions

    var _members = new Array();
    var _posMember = 0;

    Portal.LoadMembers = function () {
        $('#memberDetailsLoader').css('display', 'block');
        $('#memberDetails').css('display', 'none');

        $.ajax({
            url: $.url('Portal/GetMembers'),
            type: 'POST',
            dataType: 'json',
            data: { "limInf": _articlesPage },
            contentType: 'application/json; charset=utf-8',
            success: Portal._renderMembers,
            error: function (xhr, status, error) {
            }
        });
    }

    Portal._renderMembers = function (members) {
        _members = members;

        $.each(members, function (i, val) {
            $('#memberDetails').append(Portal._getMemberHTML(val));
        });

        $('#memberDetailsLoader').css('display', 'none');
        $('#memberDetails').css('display', 'block');
    }

    Portal.GetMember = function () {
        var member = _members[_posMember];
        $("#memberDetails").empty();

        //Add a Member to the MemberDetails
        $('#memberDetails').append(_getMemberHTML(member));

        $('#memberDetailsLoader').css('display', 'none');
        $('#memberDetails').css('display', 'block');

        _posMember++;
        if (_posMember == _members.length)
            _posMember = 0;

        function _getMemberHTML(member) {
            return '<p> <a href="' + member.Url + '"> <img src="' + member.PhotoPath + '" alt="" title="' + member.DisplayName + '" width="160" height="136" /> </a> </p> <p>' +
             member.Description + '</p>';
        }
    }

    Portal._getMemberHTML = function (member) {
        return '<p> <a href="' + member.Url + '"> <img src="' + member.PhotoPath + '" alt="" title="' + member.DisplayName + '" width="160" height="136" /> </a> </p> <p>' +
             member.Description + '</p>';
    }

    //End Members Functions

    //Begin Contact Functions

    var _regExp = new RegExp("(^[0-9a-zA-Z]+(?:[._][0-9a-zA-Z]+)*)@([0-9a-zA-Z]+(?:[._-][0-9a-zA-Z]+)*\.[0-9a-zA-Z]{2,3})$");

    Portal.SendMail = function () {
        $('#sendMailButton').click(function () {
            if (_isValid()) {
                var name = $('#nombre').val();
                var subject = $('#asunto').val();
                var phone = $('#tel').val();
                var from = $('#email').val();
                var address = $('#direccion').val();
                var message = $('#msj').val();
                $.post($.url('Portal/SendMail'), { "name": name, "subject": subject, "phone": phone, "from": from, "address": address, "message": message }, _onCallback);
            }
        });

        function _onCallback() {
            alert('¡Su mensaje se ha enviado correctamente!');
            _clean();
        }

        function _isValid() {
            if ($('#nombre').val() == "") {
                $('#nombre').focus();
                alert("El nombre es requerido");
                return false;
            }
            else if ($('#tel').val() == "") {
                $('#tel').focus();
                alert("El teléfono es requerido");
                return false;
            }
            else if ($('#email').val() == "") {
                $('#email').focus();
                alert("El E-mail es requerido");
                return false;
            }
            else if (!_regExp.test($('#email').val())) {
                $('#email').focus();
                alert("Debe ser del formato cuenta@dominio");
                return false;
            }
            else if ($('#direccion').val() == "") {
                $('#direccion').focus();
                alert("La dirección es requerida");
                return false;
            }
            else if ($('#asunto').val() == "") {
                $('#asunto').focus();
                alert("El asunto es requerido");
                return false;
            }
            else if ($('#msj').val() == "") {
                $('#msj').focus();
                alert("El mensaje es requerido");
                return false;
            }
            else {
                return true;
            }
        }

        function _clean() {
            $('#nombre').val("");
            $('#tel').val("");
            $('#email').val("");
            $('#direccion').val("");
            $('#asunto').val("");
            $('#msj').val("");
        }
    }

  //End Contact Functions 
