/**
 * @version     $Id$
 * @copyright   2010 exozet interact
 * @author      frank.fiebig <frank.fiebig@exozet.com>
 * @since       06/2010
 * @package     ClubTV
 * @subpackage  Frontend
 */

/**
 * dom ready - do jquery stuff inside here
 * pay attention to use only jQuery() as selector to avoid side effects with other frameworks
 */
jQuery(document).ready(function(e){

    // captcha reset ***********************************************************
    jQuery('#captcha_reset').live('click', function(e){
        e.preventDefault();
        var nocache = new Date().getTime();
        jQuery('#captcha_image').attr('src', jQuery(this).attr('href')+'?'+nocache)
    });
    
    // noscript/nocookie header ************************************************
    jQuery.cookie('test', 'foo');
    if (jQuery.cookie('test') == 'foo') {
        jQuery('#noscript').addClass('hide');
    } else {
        jQuery('#noscript').removeClass('hide');
    }

    // content folder navigation ***********************************************
    jQuery('.folder').live('click', function(e){
        e.preventDefault();

        var arr     = jQuery(this).attr('href').split('#');
        var target  = jQuery('#'+arr[1]);

        if (target.hasClass('hide')) {
            jQuery('.folder_box').slideUp('fast').addClass('hide');
            target.slideDown('fast').removeClass('hide');
        } else {
            target.slideUp('fast').addClass('hide');
        }
    });
    
    // player seek *************************************************************
    jQuery('.seek').live('click', function(e){
        e.preventDefault();
        var position = jQuery(this).attr('href').replace('#','');
        remote('playerSeekTo', {position:position});
    });
    
    // playlist/player trigger *************************************************
    jQuery('.player').live('click', function(e){
        e.preventDefault();
        jQuery('#page_overlay').fadeOut('fast');
        jQuery('html, body').animate({scrollTop:0}, 'slow');
        var element = jQuery(this);
        remote('playerStartVideo', {url:element.attr('href')});
    });
    jQuery('.playlist').live('click', function(e){
        e.preventDefault();
        jQuery('#page_overlay').fadeOut('fast');
        var element = jQuery(this);
        var params = {
            element     : element,
            layer       : 'playlist',
            showloader  : true,
            totop       : true
        };
        loadLayer(params);
        remote('playerStartVideo', {url:element.attr('href')});
    });
    
    // playlist overlay toggle *************************************************
    jQuery('.playlist_overlay').live('click', function(e){
        e.preventDefault();
        jQuery('#playlist_overlay').slideToggle('fast');
        if(jQuery('.playlist_overlay').hasClass('active')) {
            jQuery('.playlist_overlay').removeClass('active');
        } else {
            jQuery('.playlist_overlay').addClass('active');
        }
    });
    
    // page_overlay loader *****************************************************
    jQuery('.page_overlay_form').live('submit', function(e){
        e.preventDefault();
        var params = {
            element     : jQuery(this),
            layer       : 'page_overlay',
            showloader  : true,
            totop       : true,
            addclass    : 'po_small'
        };
        loadLayer(params);
        loadUserInfo();
        remote('playerPause');
    });
    jQuery('.page_overlay_form input[type="submit"]').live('click', function(e){
        e.preventDefault();
        var params = {
            element     : jQuery(this).parents('form'),
            layer       : 'page_overlay',
            showloader  : true,
            totop       : true,
            addclass    : 'po_small'
        };
        loadLayer(params);
        loadUserInfo();
        remote('playerPause');
    });
    jQuery('.page_overlay_link').live('click', function(e){
        e.preventDefault();
        var params = {
            element     : jQuery(this),
            layer       : 'page_overlay',
            showloader  : true,
            totop       : true,
            addclass    : 'po_small'
        };
        loadLayer(params);
        loadUserInfo();
        remote('playerPause');
    });
    jQuery('.page_overlay_form_medium').live('submit', function(e){
        e.preventDefault();
        var params = {
            element     : jQuery(this),
            layer       : 'page_overlay',
            showloader  : true,
            totop       : true,
            addclass    : 'po_medium'
        };
        loadLayer(params);
        loadUserInfo();
        remote('playerPause');
    });
    jQuery('.page_overlay_form_medium input[type="submit"]').live('click', function(e){
        e.preventDefault();
        var params = {
            element     : jQuery(this).parents('form'),
            layer       : 'page_overlay',
            showloader  : true,
            totop       : true,
            addclass    : 'po_medium'
        };
        loadLayer(params);
        loadUserInfo();
        remote('playerPause');
    });
    jQuery('.page_overlay_link_medium').live('click', function(e){
        e.preventDefault();
        var params = {
            element     : jQuery(this),
            layer       : 'page_overlay',
            showloader  : true,
            totop       : true,
            addclass    : 'po_medium'
        };
        loadLayer(params);
        loadUserInfo();
        remote('playerPause');
    });
    jQuery('.page_overlay_form_large').live('submit', function(e){
        e.preventDefault();
        var params = {
            element     : jQuery(this),
            layer       : 'page_overlay',
            showloader  : true,
            totop       : true,
            addclass    : 'po_large'
        };
        loadLayer(params);
        loadUserInfo();
        remote('playerPause');
    });
    jQuery('.page_overlay_form_large input[type="submit"]').live('click', function(e){
        e.preventDefault();
        var params = {
            element     : jQuery(this).parents('form'),
            layer       : 'page_overlay',
            showloader  : true,
            totop       : true,
            addclass    : 'po_large'
        };
        loadLayer(params);
        loadUserInfo();
        remote('playerPause');
    });
    jQuery('.page_overlay_link_large, a.intern').live('click', function(e){
        e.preventDefault();
        var params = {
            element     : jQuery(this),
            layer       : 'page_overlay',
            showloader  : true,
            totop       : true,
            addclass    : 'po_large'
        };
        loadLayer(params);
        loadUserInfo();
        remote('playerPause');
    });
    
    // page overlay close ******************************************************
    jQuery('#page_overlay_close, .close_button').live('click', function(e){
        e.preventDefault();
        jQuery('#page_overlay').fadeOut('fast');
        jQuery('#page_overlay').html('');
        loadUserInfo();
    });
    
    // contactform layer *******************************************************
    jQuery('#contact_form').live('submit', function(e){
        e.preventDefault();
        var params = {
            element         : jQuery(this),
            layer           : 'contactform'
        };
        loadLayer(params);
    });
    jQuery('#contact_submit').live('click', function(e){
        e.preventDefault();
        var params = {
            element         : jQuery(this).parents('form'),
            layer           : 'contactform'
        };
        loadLayer(params);
    });
    
    // bank account layer ******************************************************
    jQuery('#abo_type').live('change', function(e) {
        e.preventDefault();
        switch (this.value) {
            case '0':
                jQuery('#payment, #coupon').hide();
                break;
            case '-1':
                jQuery('#payment').hide();
                jQuery('#coupon').show();
                break;
            default:
                jQuery('#coupon').hide();
                jQuery('#payment').show();
                break;
        }
    });
    jQuery('#payment_type').live('change', function(e){
        e.preventDefault();
        switch (this.value) {
            case 'bank':
                jQuery('#credit_card').hide();
                jQuery('#bank').show();
                break;
            case 'cc':
                jQuery('#bank').hide();
                jQuery('#credit_card').show();
                break;
        }
    });

    // search fulltext layer ***************************************************
    jQuery('#search_form').live('submit', function(e){
        e.preventDefault();
        jQuery('#page_overlay').fadeOut('fast');
        var params = {
            element     : jQuery(this),
            layer       : 'teaser',
            showloader  : true,
            tobottom    : true
        };
        loadLayer(params);
    });
    jQuery('#search_submit').live('click', function(e){
        e.preventDefault();
        jQuery('#page_overlay').fadeOut('fast');
        var params = {
            element     : jQuery(this).parents('form'),
            layer       : 'teaser',
            showloader  : true,
            tobottom    : true
        };
        loadLayer(params);
    });
    
    // search match layer ***************************************************
    jQuery('.search_match').live('click', function(e){
        e.preventDefault();
        jQuery('#page_overlay').fadeOut('fast');
        var params = {
            element     : jQuery(this),
            layer       : 'teaser',
            showloader  : true,
            tobottom    : true
        };
        loadLayer(params);
    });
    
    // search match overlay ****************************************************
    jQuery('.search_match_overlay').live('click', function(e){
        e.preventDefault();
        jQuery('#page_overlay').fadeOut('fast');
        //jQuery('#search_match_overlay').slideToggle('fast');
        var params = {
            element     : jQuery(this),
            layer       : 'search_match_overlay',
            showloader  : true
        };
        loadLayer(params);
    });
    jQuery('.search_match_overlay_close').live('click', function(e){
        e.preventDefault();
        jQuery('#page_overlay').fadeOut('fast');
        jQuery('#search_match_overlay').fadeOut('fast');
    });
    
    // form input value reset **************************************************
    jQuery('.reset').live('focus', function(e){
        e.preventDefault();
        jQuery(this).attr('value', '');
    });
    
    // videolist layer *********************************************************
    jQuery('.teaser').live('click', function(e){
        e.preventDefault();
        var params = {
            element     : jQuery(this),
            layer       : 'teaser',
            showloader  : true
        };
        loadLayer(params);
    });
    
    // tooltip z-index *********************************************************
    jQuery('.tooltip_trigger').live('mouseover', function(e){
        e.preventDefault();
        var x = Math.floor(jQuery(this).offset().left - jQuery('#search_match_overlay').offset().left)+5;
        var y = -55;

        jQuery('#club_tooltip').css('display', 'none');
        jQuery('#club_tooltip').html(jQuery(this).siblings('div').html());
        jQuery('#club_tooltip').animate({left:x, top:y}, 0);
        jQuery('#club_tooltip').css('display', 'block');
    })
    jQuery('.tooltip_trigger').live('mouseout', function(e){
        e.preventDefault();
        jQuery('#club_tooltip').css('display', 'none');
        jQuery('#club_tooltip').html('');
    })
    jQuery('.tooltip_item, #club_tooltip').live('mouseover', function(e){
        e.preventDefault();
        jQuery(this).addClass('ontop'); // ie6 convinience to set the tooltip ontop
    });
    jQuery('.tooltip_item, #club_tooltip').live('mouseout', function(e){
        e.preventDefault();
        jQuery(this).removeClass('ontop'); // ie6 convinience to set the tooltip ontop // ie6 convinience to set the tooltip ontop
    });
    
    // client injections *******************************************************
    if (jQuery('meta[name="portal.client"]').attr('content') === 'fcn') {
        jQuery('#header').append('<div class="top_banner"><div class="kulmbacher_top_text">präsentiert von</div><div class="kulmbacher_top_logo" title="Kulmbacher"></div></div>');
        jQuery('.kulmbacher_top_logo').live('click', function (e){
            e.preventDefault();
            window.open('http://www.kulmbacher.biz');
        });
        
        jQuery('.page').append('<div class="bottom_banner"><div class="ligatotal" title="Liga Total">In Kooperation mit</div><div class="kulmbacher_bottom_logo" title="Kulmbacher"></div></div>');
        jQuery('.ligatotal').live('click', function (e){
            e.preventDefault();
            window.open('http://www.liga-total.de');
        });
        jQuery('.kulmbacher_bottom_logo').live('click', function (e){
            e.preventDefault();
            window.open('http://www.kulmbacher.biz');
        });
    }
});

// loader functions ************************************************************
function loadUserInfo() {
    setTimeout(function(){
        var params = {
            target  : jQuery('#welcome'),
            layer   : 'welcome',
            url     : jQuery('meta[name="user.info"]').attr('content'),
            method  : 'get'
        };
        processLayer(params);
    }, 600);
}
function hideLoader() {
    setTimeout(function(){
        jQuery('#loader').addClass('hide');
    }, 100);
}
function loadLayer(params) {
    params.target  = jQuery('#'+params.layer);
    // extract loading informations
    if(params.element.attr('href') !== undefined && params.element.attr('href') !== '') {
        params.url      = params.element.attr('href');
        params.method   = 'get';
    }else if(params.element.attr('action') !== undefined && params.element.attr('action') !== '') {
        params.form     = params.element;
        params.url      = params.form.attr('action');
        params.method   = params.form.attr('method');
    }else if(params.element.attr('name') != undefined && params.element.attr('name') !== '') {
        params.form     = jQuery(params.element.attr('name'));
        params.url      = params.form.attr('action');
        params.method   = params.form.attr('method');
    }
    
    // switch to payone if payment is cc
    if (jQuery('#payment_type').attr('value') == 'cc') {
        var datearray   = jQuery('#credit_card_valid_to').attr('value').split('.');
        var mon         = datearray[0];
        var year        = datearray[1];
        var data        = {
            cardholder      : jQuery('#credit_card_owner').attr('value'),
            cardpan         : jQuery('#credit_card_number').attr('value'),
            cardtype        : jQuery('#credit_card_type').attr('value'),
            cardexpiremonth : mon,
            cardexpireyear  : year,
            cardcvc2        : jQuery('#credit_card_sec_number').attr('value'),
            request         : jQuery('#request').attr('value'),
            mode            : jQuery('#mode').attr('value'),
            mid             : jQuery('#mid').attr('value'),
            aid             : jQuery('#aid').attr('value'),
            portalid        : jQuery('#portalid').attr('value'),
            encoding        : jQuery('#encoding').attr('value'),
            storecarddata   : jQuery('#storecarddata').attr('value'),
            language        : jQuery('#language').attr('value'),
            hash            : jQuery('#hash').attr('value')
        }
        requestPayone(data);
    } else {
        processLayer(params);
    }
}
function processLayer(params) {
    var html = '';
    
    // move browser window to top
    if(params.totop !== undefined && params.totop === true) {
        jQuery('html, body').animate({scrollTop:0}, 0);
    }
    // move browser window to bottom
    if(params.tobottom !== undefined && params.tobottom === true) {
        jQuery('html, body').animate({scrollTop: jQuery('body').attr('scrollHeight')}, 0);
    }
    // append given uri param
    if(params.uri_append !== undefined && params.uri_append !== null) {
        params.url = params.url+params.uri_append;
    }
    // show loading info
    if(params.showloader !== undefined && params.showloader === true) {
        jQuery('#loader').removeClass('hide');
    }
    // remove certain class
    if(params.removeclass !== undefined && params.removeclass !== null) {
        params.target.removeClass(params.removeclass);
    }
    // add certain class
    if(params.addclass !== undefined && params.addclass !== null) {
        params.target.removeClass('po_small po_medium po_large');
        params.target.addClass(params.addclass);
    }
    // inect close button
    if (params.layer === 'page_overlay') {
        html += '<a href="'+jQuery('meta[name="index"]').attr('content')+'" id="page_overlay_close" class="close cursor" title="Fenster schliessen">Schliessen</a>';
    }
    
    // method switch
    if(params.method == 'get'){
        jQuery.get(params.url, { 'ajax': 1 }, function(data) {
            html += data;
            params.target.html(html);
            hideLoader();
        });
    }else if(params.method == 'post'){
        jQuery.post(params.url, params.form.serialize(), function(data) {
            html += data;
            params.target.html(html);
            hideLoader();
        });
    }
    params.target.fadeIn('fast');
}
// payment functions ***********************************************************
function processPayoneResponse(response) {
    if (response.get('status') == 'VALID') {
        // reset cc values we are not allowed to save
        jQuery('#credit_card_number').attr('value', response.get('truncatedcardpan')); // for further usage (masked cc number)
        jQuery('#credit_card_sec_number').attr('value', response.get('pseudocardpan')); // for further usage (cc identifier)
        var params = {
            element     : jQuery('#bank_form'),
            layer       : 'page_overlay',
            showloader  : true,
            totop       : true,
            addclass    : 'po_medium',
            form        : element,
            url         : element.attr('action'),
            method      : element.attr('method')
        }
        // finally send the form
        processLayer(params);
    }
    else {
        alert(response.get('customermessage'));
        /*
        // reset cc values we are not allowed to save
        jQuery('#credit_card_number').attr('value', response.get('truncatedcardpan')); // for further usage (masked cc number)
        jQuery('#credit_card_sec_number').attr('value', response.get('pseudocardpan')); // for further usage (cc identifier)
        var params = {
            target      : jQuery('#page_overlay'),
            element     : jQuery('#bank_form'),
            layer       : 'page_overlay',
            showloader  : true,
            totop       : true,
            addclass    : 'po_medium',
            form        : jQuery('#bank_form'),
            url         : jQuery('#bank_form').attr('action'),
            method      : jQuery('#bank_form').attr('method')
        }
        // finally send the form
        // processLayer(params);
        */
    }
}
function requestPayone(data) {
    var options = {
        return_type : 'object',
        callback_function_name : 'processPayoneResponse'
    }
    var request = new PayoneRequest(data, options);
    request.checkAndStore();
}
