﻿
var spin = spin || {
    context: { culture: "", app_path: "" }
};

spin.utils = spin.utils || {
    external_links: function() {
        $('a[rel=external]').attr('target', '_blank');
    },
    rollover_menu: function() {
        $('a[rel^=rollover]').each(function() {
            var $this = $(this);
            var rollover_class = $this.attr('rel');
            rollover_class = rollover_class.substring(rollover_class.indexOf("[") + 1, rollover_class.length - 1);
            $this.parent().data('rollover', rollover_class).data('is_hover', false).hover(function() { var $this = $(this); $this.data('is_hover', true); $('.' + $this.data('rollover')).show(0); }, function() { var $this = $(this); $this.data('is_hover', false); });
            $('.' + rollover_class).data('is_hover', false).hover(function() { $(this).data('is_hover', true); }, function() { $(this).data('is_hover', false).hide(); });
        });
        
    }
};

spin.subscription = spin.subscription || {
    _steps: undefined,
    _current_index: 1,
    init: function() {
        this._steps = $('#form_steps');
    },
    next_step: function(index) {
        $('li:eq(' + (this._current_index - 1) + ')', this._steps).removeClass('selected');
        this._current_index = index;
        $('li:eq(' + (this._current_index - 1) + ')', this._steps).addClass('selected');
    }
};


spin.dialogs = spin.dialogs || {
    _ids: { info: "info", partenaire: "partenaire", contacts: "contact", portfolio_form: "portfolioForm", portfolio_view: "portfolioView" },
    _dialogs_ids: { info: "dialogs_info", partenaire: "dialogs_partners", contacts: "dialogs_contacts", portfolio_form: "dialogs_portfolioform", portfolio_view: "dialogs_portfolioView" },
    _dialogs_config: { autoOpen: false, closeOnEscape: true, dialogClass: 'dialog', draggable: 'false', width: 'auto', height: 'auto', modal: true },
    current: undefined,
    auto_open: undefined,
    init: function() {
        $('a[rel^=popup]').each(function() {
            var $this = $(this);
            var popup_id = $this.attr('rel');
            popup_id = popup_id.substring(popup_id.indexOf("[") + 1, popup_id.length - 1);
            $this.data('dialog_url', $this.attr('href'))
              .attr('href', 'javascript:;')
              .click(function() { spin.dialogs.open(popup_id, $(this).data('dialog_url'), {}); });
            if (spin.dialogs.auto_open == popup_id)
                $this.click();
        });
    },
    open: function(id, url, dialog_config) {
        var dialog_id = "";
        if (id == this._ids.info)
            dialog_id = this._dialogs_ids.info;
        else if (id == this._ids.partenaire)
            dialog_id = this._dialogs_ids.partenaire;
        else if (id == this._ids.contacts)
            dialog_id = this._dialogs_ids.contacts;
        else if (id == this._ids.portfolio_form)
            dialog_id = this._dialogs_ids.portfolio_form;
        else if (id == this._ids.portfolio_view)
            dialog_id = this._dialogs_ids.portfolio_view;

        if (spin.dialogs.current != undefined)
            $('#' + spin.dialogs.current).dialog('close');

        if ($('#' + dialog_id).length == 0) { // create dialog
            var dialog = $('<div>' +
                                '<div class="top"></div>' +
                                '<div class="mid"></div>' +
                                '<div class="bottom"></div>' +
                            '</div>')
                            .attr('id', dialog_id)
                            .prependTo($('body'));
            dialog.dialog($.extend({}, this._dialogs_config, dialog_config));
            dialog.bind('dialogopen',
                function() {
                    var $this = $(this);
                    spin.dialogs.current = dialog_id;
                    $('.ui-dialog').css('overflow', 'visible');
                    $this.prev().width($this.width());
                    $('.ui-widget-overlay').css({ 'opacity': '0.75', 'top': '0px', 'position': 'absolute' });
                    /*.click(function() {
                    $('#' + spin.dialogs.current).dialog('close');
                    });*/
                });
            $('.mid', '#' + dialog_id).load(url + ' #popup > *',
                function(responseText, textStatus, XMLHttpRequest) {
                    $(this).parent().dialog('open');
                    if (spin.dialogs.current == spin.dialogs._dialogs_ids.portfolio_view) {
                        spin.slider.init();
                    } else if (spin.dialogs.current == spin.dialogs._dialogs_ids.contacts)
                        $('#subscribe_email').submit(function() {
                            var $this = $(this);
                            $.post(this.action, { 'email': $('input[name=email]', $this).val(), 'submit': 'submit' }, function() { $('input[type=submit]', '#subscribe_email').hide().after('<span class="bold" style="display:block; float:left; margin:12px 0px 0px 5px;">' + (spin.context.culture == 'fr' ? 'Merci' : 'Thank you') + '!</span>'); });
                        });
                });
        } else {
            $('#' + dialog_id).dialog('open');
        }
    }

};

spin.slider = spin.slider || {
    container: undefined,
    content: undefined
};

spin.slider.init = function() {
    spin.slider.container = $('#slider_container');
    spin.slider.content = $('#slider_content');
    spin.folio.init();
    $('#slider_up').click(function() { spin.slider.up(); }).hover(function() { $('img', $(this)).attr('src', spin.context.app_path + "resources/images/common/bt_slider_up_over.png"); }, function() { $('img', $(this)).attr('src', spin.context.app_path + "resources/images/common/bt_slider_up.png"); });
    $('#slider_down').click(function() { spin.slider.down(); }).hover(function() { $('img', $(this)).attr('src', spin.context.app_path + "resources/images/common/bt_slider_down_over.png"); }, function() { $('img', $(this)).attr('src', spin.context.app_path + "resources/images/common/bt_slider_down.png"); });
};
spin.slider.up = function(page) {
    var top = spin.slider.content.css('top').replace('px', '');
    if(top == 'auto') top = 0;
    var current = parseInt(top, '10');
    var movement;
    if (page == undefined)
        movement = current + spin.slider.container.height();
    else
        movement = current + spin.slider.container.height() * page;

    if (movement < spin.slider.container.height())
        spin.slider.content.animate({ 'top': movement }, 1000, 'swing');
};
spin.slider.down = function(page) {
    var top = spin.slider.content.css('top').replace('px', '');
    if (top == 'auto') top = 0;
    var current = parseInt(top, '10');
    var movement;
    if (page == undefined)
        movement = current - spin.slider.container.height();
    else
        movement = current - spin.slider.container.height() * page;
    if (Math.abs(movement) < spin.slider.content.height())
        spin.slider.content.animate({ 'top': movement }, 1000, 'swing');
};

spin.folio = spin.folio || {
    current_index: 1,
    count: 1,
    ITEM_PER_PAGE: 8,
    path: "",
    objects: {
        detail: undefined,
        image: undefined,
        candidat: undefined,
        description: undefined,
        ori_link: undefined,
        info_mailto: undefined
    }
};

spin.folio.init = function() {
    spin.folio.objects.detail = $('#folio_detail');
    spin.folio.objects.image = $('#folio_image', spin.folio.objects.detail);
    spin.folio.objects.candidat = $('#folio_candidat', spin.folio.objects.detail);
    spin.folio.objects.description = $('#folio_description', spin.folio.objects.detail);
    spin.folio.objects.ori_link = $('#folio_ori_link', spin.folio.objects.detail);
    spin.folio.objects.info_mailto = $('#folio_info_mailto', spin.folio.objects.detail);
    spin.folio.load(spin.folio.current_index);
    var folio_links = $('a', spin.slider.content);
    spin.folio.count = folio_links.length;
    folio_links.click(function() {
        spin.folio.load(this.id.substring(this.id.indexOf("_") + 1));
    });
};

spin.folio.next = function() {
    var index = spin.folio.current_index + 1;
    if (index > 1 && index % spin.folio.ITEM_PER_PAGE == 1)
        spin.slider.down();
    if (index > spin.folio.count) {
        index = 1;
        spin.slider.up(Math.floor(spin.folio.count / spin.folio.ITEM_PER_PAGE));
    }
    spin.folio.load(index);
};

spin.folio.previous = function() {
    var index = spin.folio.current_index - 1;
    if (index > 0 && index % spin.folio.ITEM_PER_PAGE == 0)
        spin.slider.up();
    if (index <= 0) {
        index = spin.folio.count;
        spin.slider.down(Math.floor(spin.folio.count / spin.folio.ITEM_PER_PAGE));
    }
    spin.folio.load(index);
};

spin.folio.load = function(index) {
    // remove arrow from previous selected
    $('#folio_' + (spin.folio.current_index.toString().length == 1 ? "0" + spin.folio.current_index : spin.folio.current_index) + ' .arrow').remove();

    spin.folio.current_index = parseInt(index, '10');

    if (index.toString().length == 1)
        index = "0" + index;

    // add arrow from previous selected
    $('<img src="' + spin.context.app_path + 'resources/images/common/arrow_selected.gif" class="arrow" />').prependTo('#folio_' + index);

    // change right side of portofolio with candidate informations
    spin.folio.objects.candidat.text((spin.context.culture == 'en' ? 'CANDIDAT ' : 'CANDIDAT ') + '#' + index);
    $.get(spin.folio.path + index + '/folio.xml',
        function(data, textStatus) {
            if (textStatus == "success") {
                var folio = $(data);
                spin.folio.objects.description.text($('description', folio).text());
                spin.folio.objects.ori_link.attr('href', spin.folio.path + index + '/' + $('media > ori', folio).text());
                var mail_to = spin.folio.objects.info_mailto.attr('href');
                spin.folio.objects.info_mailto.attr('href', mail_to.substring(0, mail_to.indexOf('_') + 1) + index);
                // writing media, can be an image or swf
                var media = spin.folio.path + index + '/' + $('media > large', folio).text();
                var type = media.substr(media.lastIndexOf('.') + 1, 3);
                if (type == "flv") {
                    if (swfobject.hasFlashPlayerVersion("9.0.0")) {
                        spin.folio.objects.image.hide(0);
                        if ($('#folio_media').length == 0)
                            $('<span id="folio_media" />').insertAfter(spin.folio.objects.image);
                        var params = { wmode: "window" };
                        var flashvars = { VideoUrl: media, SkinPath: spin.context.app_path + 'resources/flash/common/SkinOverPlaySeekMute.swf' };
                        swfobject.embedSWF(spin.context.app_path + 'resources/flash/common/video_player2.swf',
                         "folio_media", "440px", "360px", "9.0.0", "", flashvars, params, null);
                    }
                } else if (type == "jpg" || type == "jpeg" || type == "gif" || type == "png") {
                    $('#folio_media', spin.folio.objects.detail).remove();
                    spin.folio.objects.image.attr('src', media).show(0);
                }
            }
        }, 'xml');
};