$(document).ready(
    function(){
        oMicrosite = new Microsite(microsite_id, microsite_path, background_color, foreground_color);
        oMicrosite.setContent(microsite_content);
        oMicrosite.getFansViewer('fansViewer');

        $('#becomeFan').corner('top 12px');

        $('#navMenu table tr td a').mouseover(function(){
            var img_src = $(this).find('img').attr('src');
            img_src = img_src.replace('.png', '_hover.png');
            $(this).find('img').attr('src', img_src);
            $(this).css('cursor', 'pointer');
        });
        $('#navMenu table tr td a').mouseout(function(){
            var img_src = $(this).find('img').attr('src');
            img_src = img_src.replace('_hover.png', '.png');
            $(this).find('img').attr('src', img_src);
            $(this).css('cursor', 'default');
        });

        //$('#bodyCenter #contentBody h1').css('color', this.background_color);
    }
);

/**
 * Clase Javascript Microsite
 */

function Microsite(id, path, background_color, foreground_color)
{
    this.id = id;
    this.path = path;
    this.background_color = background_color;
    this.foreground_color = foreground_color;
	
    this.setContent = function setContent(content, id)
    {
        if(id == undefined){
            switch(content){
              case 'news':
                var url = './?c=news&a=show&microsite_id='+this.id;
                var active = 'News';
              break;

              case 'list_news':
                var url = './?c=news&a=list&microsite_id='+this.id;
                var active = 'News';
              break;

              case 'trajectory':
                var url = './?c=microsite&a=trajectory&microsite_id='+this.id;
                var active = 'Trajectory';
              break;

              case 'events':
                var url = './?c=events&a=show&microsite_id='+this.id;
                var active = 'Events';
              break;

              case 'portfolio':
                var url = './?c=portfolio&a=show&microsite_id='+this.id;
                var active = 'Portfolio';
              break;

              case 'messages':
                var url = './?c=messaging&a=write&microsite_id='+this.id;
                var active = 'Messages';
              break;

              case 'login':
                var url = './?c=account&a=login&microsite_path='+this.path;
              break;

              case 'password':
                var url = './?c=account&a=password&microsite_path='+this.path;
              break;

              case 'logout':
                var url = './?c=account&a=logout&microsite_path='+this.path;
              break;

              case 'profile':
                var url = './?c=account&a=profile&microsite_id='+this.id;
              break;

              case 'settings':
                alert('próximamente!');
                return true;
              break;
            }
        } else {
            switch(content){
              case 'news':
                var url = './?c=news&a=show&microsite_id='+this.id+'&news_id='+id;
                var active = 'News';
              break;

              case 'events':
                var url = './?c=events&microsite_id='+this.id+'&a=show&event_id='+id;
                var active = 'Events';
              break;

              case 'portfolio':
                var url = './?c=portfolio&a=show&microsite_id='+this.id+'&portfolio_id='+id;
                var active = 'Portfolio';
              break;

              case 'messages':
                var url = './?c=messaging&a=write&microsite_id='+this.id;
                var active = 'Messages';
              break;
            }
        }

        oItemsList = new ItemsList(content);
        oItemsList.options.microsite_id = this.id;

        $('#contentBody').load(url);

        //set navMenu button active
        this.setNavMenuActive(active);
    };
	
    this.setNavMenuActive = function setNavMenuActive(id)
    {
        this.setNavMenuInactive();
        $('#navMenuTd'+id).css('background', 'none');
    };
	
    this.setNavMenuInactive = function setNavMenuInactive()
    {
        $('td[rel="navMenuTd"]').css('background', 'url(img/icons/navMenuBackground.png)');
    }
	
    this.edit = function edit(content, id)
    {
        var url = './?c=microsite&a=edit&content='+content+'&microsite_id='+this.id;
        url += undefined != id ? '&content_id='+id : '';

        $('#contentBody').load(url);
    };
	
    this.create = function create(content)
    {
        var url = './?c=microsite&a=create&content='+content+'&microsite_id='+this.id;

        $('#contentBody').load(url);
    };

    this.deleteContent = function deleteContent(id)
    {
        alert('proximamente!');
    };
	
    this.loginFormValidate = function loginFormValidate(formData, jqForm, options)
    {
        //FIXME: validar campos y tipos de datos
        return true;
    };
	
    this.redirect = function redirect(controller, action, params)
    {
        params = undefined != params ? params : '';
        location.href = './?c='+controller+'&a='+action+'&microsite_id='+this.id+'&'+params;
    };

    this.showFormMessage = function showFormMessage(message)
    {
        $('#msg').html(message);
        $('#msg').show();
        setTimeout("$('#msg').fadeOut();", 10000);   
    }

    this.getValidationRules = function getValidationRules(form)
    {
        switch(form){
            case 'messaging_write':
                return {
                    rules: {
                        name: 'required',
                        email: {
                            required: true,
                            email: true
                        },
                        subject: 'required'//,
                        //body: 'required'
                    },
                    messages: {
                        name: 'Por favor escribe tu nombre',
                        email: 'Por favor escribe tu email',
                        subject: 'Por favor escribe el asunto del mensaje'//,
                        //body: 'Por favor escribe el texto del mensaje'
                    }
                };
            break;

            case 'news_create':
            case 'news_edit':
                var picture_required = form == 'news_create';
                return {
                    rules: {
                        'data[title]': 'required',
                        picture: { required: picture_required },
                        'data[summary]': 'required',
                        'data[author_email]': {
                            email: true
                        }
                    },
                    messages: {
                        'data[title]': 'Debe escribir un título',
                        picture: 'Debe especificar una imagen para mostrar',
                        'data[summary]': 'Debe escribir un resumen',
                        'data[author_email]': 'Debe escribir una dirección de email válida'
                    }
                };
            break;

            case 'events_edit':
            case 'events_create':
                var picture_required = form == 'events_create';
                return {
                    rules: {
                        'data[title]': 'required',
                        picture: { required: picture_required },
                        'data[summary]': 'required',
                        'data[author_email]': {
                            email: true
                        },
                        'data[author_name]': 'required',
                        'data[event_datetime]': 'required'
                    },
                    messages: {
                        'data[title]': 'Debe escribir un título',
                        picture: 'Debe especificar una imagen para mostrar',
                        'data[summary]': 'Debe escribir un resumen',
                        'data[author_email]': 'Debe escribir una dirección de email válida',
                        'data[author_name]': 'Debe ingresar el nombre del autor',
                        'data[event_datetime]': 'Debe ingresar una fecha y hora válidos'
                    }
                }
            break;
        }
    }
	
    this.getFansViewer = function getFansViewer(target_id, offset)
    {
        var url = './?c=microsite&a=fansviewer&microsite_id='+this.id;
        url += undefined != offset ? '&offset='+offset : '';
        $('#'+target_id).load(url);
    };

    this.updateFansViewer = function updateFansViewer(offset)
    {
        this.getFansViewer('fansViewer', offset);
    }
	
    this.becomeFan = function becomeFan(user_id)
    {
        var data = {
            c: 'microsite',
            a: 'becomefan',
            microsite_id: this.id,
            user_id: user_id
        };

        var that = this;

        $.ajax({
            url: './',
            type: 'post',
            data: data,
            success: function(response){
                    alert(response);
                    location.href = './'+that.path;
            }
        });
    };

    this.sendMessage = function sendMessage()
    {
        var data = {
            c: 'messaging',
            a: 'send',
            microsite_id: this.id,
            name: $('#msg_name').val(),
            email: $('#msg_email').val(),
            subject: $('#msg_subject').val(),
            body: $('#msg_body').val()
        };

        var that = this;

        $.ajax({
            url: './',
            type: 'post',
            data: data,
            success: function(response){
                $('*[rel="msg"]').val('');
                that.showFormMessage(sipro.jsonValue(response, 'message'));
            }
        });
    }

    this.getSecretQuestion = function getSecretQuestion()
    {
        var data = {
            c: 'account',
            a: 'password',
            microsite_id: this.id,
            step: $('#password_step').val(),
            username: $('#password_username').val()
        };

        var that = this;

        $.ajax({
           url: './',
           type: 'post',
           data: data,
           dataType: 'json',
           success: function(response){
               $('#password_get_secret_question_button').remove();
               $('#password_username').attr('readonly', 'readonly');

               var input_user_id = document.createElement('input');
               input_user_id.type = 'hidden';
               input_user_id.id = 'password_user_id';
               input_user_id.value = response.id;

               var text_label_secret_question = document.createTextNode('Pregunta Secreta');
               var label_secret_question = document.createElement('label');
               $(label_secret_question).attr('for', 'password_secret_question');
               label_secret_question.appendChild(text_label_secret_question);

               var input_secret_question = document.createElement('input');
               input_secret_question.type = 'text';
               input_secret_question.value = response.secret_question;
               $(input_secret_question).attr('readonly', 'readonly');
               input_secret_question.id = 'password_secret_question';

               var text_label_secret_answer = document.createTextNode('Respuesta Secreta');
               var label_secret_answer = document.createElement('label');
               $(label_secret_answer).attr('for', 'password_secret_answer');
               label_secret_answer.appendChild(text_label_secret_answer);
               var input_secret_answer = document.createElement('input');
               input_secret_answer.type = 'password';
               input_secret_answer.id = 'password_secret_answer';

               var text_button_recover = document.createTextNode('Recuperar la Constraseña!');
               var button_recover = document.createElement('button');
               button_recover.type = 'button';
               button_recover.addEventListener('click', oMicrosite.recoverPassword, false);

               button_recover.appendChild(text_button_recover);

               $('#password_fields').append(input_user_id);
               $('#password_fields').append(label_secret_question);
               $('#password_fields').append(input_secret_question);
               $('#password_fields').append(label_secret_answer);
               $('#password_fields').append(input_secret_answer);
               $('#password_fields').append(button_recover);

               $('#password_step').val(2);

           }
        });
    }

    this.recoverPassword = function recoverPassword()
    {
        alert('proximamente');
    }
}
