var ticketPages        = new Array();
var outletsResultCache = new Array();
var outletsNavCache    = new Array();

/**
 * Sign in modal
 *
 */
function modalSigninClass() {
	// initialization comes here
	$('#registerLoginForm').delegate('input[value="login"]',	'click', selectLogin);
	$('#registerLoginForm').delegate('input[value="register"]', 'click', selectRegister);

	$checkedValue = jQuery('#registerLoginForm input[checked*="checked"]');

	// public methods
	this.showModal = function(event) {
		event.preventDefault();
		checkUserOldNew();
		$('#cartModal').reveal({
			 animation: 'fade',				   //fade, fadeAndPop, none
			 animationspeed: 300,					   //how fast animtions are
			 closeonbackgroundclick: true			//if you click background will modal close?
		});

	}

	// private methods
	function selectRegister() {
		$('#registerLoginForm #login').hide();
	}

	function selectLogin() {
		$('#registerLoginForm #login').show();
		if ($('#email').val()) { inputFocus("password");}
	}

	// check for selected sign in mode
	if ( $checkedValue.val() == 'login' ) {
		selectLogin();
	} else {
		selectRegister();
	}

}

$(function() {
    if ( jQuery('#content .sign-in-form').length > 0) {
        jQuery('#userspace #cartModal').remove();
        var $signinForm = new modalSigninClass();
    }

    // do checks here
    if (!$('#cartModal').length > 0) { return; }
    var loginForm = new modalSigninClass();

    $('#account').delegate('#accountLink',                      'click', loginForm.showModal);
    $('#checkout-form').delegate('button[type="submit"]',       'click', processCheckoutForm);

    // continue with checkout
    function processCheckoutForm(event) {
        event.preventDefault();
        // check for services
        if ($('#serviceGroup').length  && !($('#serviceGroup input[type="radio"]:checked').length)) {
            $('#serviceGroup')
                .addClass('error')
        } else {
            loginForm.showModal(event);
        }
    }
})

/**
 * OUTLETS
 *
 */
function outletsNav(id)
{
    $("#nav_results_ul > li").each(function () {
        if ($(this).attr("id") == "outletnav"+id) {
            $(this).addClass("lisel");
        }
        else {
            $(this).removeClass("lisel");
        }
    });
}

function selectNav()
{
    var c = document.getElementById("c").value;
    $("#nav_ul > li").each(function () {
        if ($(this).attr("id") == "nav_"+c) {
            $(this).addClass("selected");
        }
        else {
            $(this).removeClass("selected");
        }
    });
}

function outlets_ajax(path, cache_id) {
    if (outletsNavCache[cache_id] == null) {
        $("#nav_results").loading().load(path, function () {
            outletsNavCache[cache_id] = $("#nav_results").attr("innerHTML");
        });
    }
    else {
        $("#nav_results").attr({ innerHTML: outletsNavCache[cache_id] });
    }
}

function outlets_results(path, id) {
    outletsNav(id);
    if (outletsResultCache[id] == null) {
        $("#outlets_results").loading().load(path, function () {
            outletsResultCache[id] = $(this).attr("innerHTML");
        });
    }
    else {
        $("#outlets_results").attr({ innerHTML: outletsResultCache[id] });
    }
}

/**
 * FAQ PAGE
 *
 */
function handleFaq()
{
    /* hide all answers and set link icons closed */
    if ($("#faqs h3 q").length == 0){
        $("#faqs dl dd").css({'display' : 'none'});
        $("#faqs dl dt a").toggleClass("plus");
    } else {
        $("#faqs a.toggle_section").toggleClass("open");
    }

    /* toggle whole section */
    $("#faqs a.toggle_section").click(function () {
        $(this).toggleClass("open");
        question_minus = $(this).parent().children("dl").children("dt").children("a").not("a.plus");
        question_plus = $(this).parent().children("dl").children("dt").children("a.plus");

        if ($(this).hasClass("open")){
            /* opening */
            question_plus.toggleClass("plus").parent().next().slideToggle("normal");
        } else {
            /* closing */
            question_minus.toggleClass("plus").parent().next().slideToggle("normal");
        }
        return false;
    });

    /* toggle question */
    $("#faqs dl dt a").click(function () {
        $(this).toggleClass("plus").parent().next().slideToggle("normal");
        /* check for section toggle */
        openeditems = $(this).parents("div.dl_container").children("dl").children("dt").children("a").not("a.plus").length;
        closeditems = $(this).parents("div.dl_container").children("dl").children("dt").children("a.plus").length;
        if(openeditems == 0 || closeditems == 0){
            $(this).parents("div.dl_container").children("a.toggle_section").toggleClass("open");
        }
        return false;
    });
}

/**
 * SEARCH
 *
 */
function list_states(country, state) {
    $("#search_state").load('?liststates&liststates_country=' + country + '&liststates_state=' + state+'&ajax');
}

function submitSearch(field) {
    window.location.replace($('[name=' + field + ']').val());
}

/**
 * MY ACCOUNT
 *
 */
function prepareTables() {
    $("table.datatable").each(function () {
        /* select rows that contain td's (leave th's alone) */
        $(this).find("tr[td]").each(function (i) {
            if (i % 2 == 1) {
                $(this).addClass("alt");
            }
            $(this).hover(
                function () {
                    $(this).addClass("hover");
                },
                function () {
                    $(this).removeClass("hover");
                }
            );
        })
    })
}

function dropdown_menu() {
    $("#form").removeClass("nojs");
    $("#my_account_menu").removeClass("nojs");
    $("#my_account_menu > li").each(function () {
        $(this).hover(
            function () {
                $(this).addClass("hover");
            },
            function () {
                $(this).removeClass("hover");
            }
        );
    });
}

/**
 * EVENT PAGE
 *
 */
function ticketPaging() {

    // recursion here because of newly created
    // page links (click doesnt find them)
    switch ($('body').attr('id')) {
        case 'body_search':
        case 'body_list':
        _ajaxHolder = '#search_results';
        break;

        default:
        _ajaxHolder = '#event_tickets';
    }

    $('ul.pagging > li > a').click(function() {
        _page = $(this).attr('title');

        if (ticketPages[_page] == null) {
            url = $(this).attr('href');
            $.get(
                url + '&ajax',
                function(data) {
                    $(_ajaxHolder).fadeOut('fast');
                    ticketPages[_page] = data;
                    $(_ajaxHolder).html(ticketPages[_page]);
                    $(_ajaxHolder).fadeIn('fast');

                    ticketPaging();
                }
            );
        } else {

            $( ajaxHolder).fadeOut('fast');
            $(_ajaxHolder).html(ticketPages[_page]);
            $(_ajaxHolder).fadeIn('fast');

            ticketPaging();
        }

        $(this).attr('href', '#');
        return false;
    });
}


/**
 * Handles after-sending settings
 */
function tellFriendHandleSend(send) {
    Recaptcha.reload();
    $('#taf_main .notice').show();
    $('#tellfriend_fieldset .form-row-error').removeClass('form-row-error');

    $('#name_from').val('');
    $('#name_to').val('');
    $('#email_from').val('');
    $('#email_to').val('');
    $('#text').val('');
    $('#recaptcha').val('');

}

function tellFriendHandleErrors(data)
{
    $('#taf_main .notice').hide();
    $('#tellfriend_fieldset .error').remove();

    if (data.name_from.error != 0) {
        $($('#tellfriend_fieldset ol').children().get(0)).append('<div class="error">'+data.name_from.error_msg+'</div>');
    }
    if (data.name_to.error != 0) {
        $($('#tellfriend_fieldset ol').children().get(2)).append('<div class="error">'+data.name_to.error_msg+'</div>');
    }
    if (data.email_from.error != 0) {
        $($('#tellfriend_fieldset ol').children().get(1)).append('<div class="error">'+data.email_from.error_msg+'</div>');
    }
    if (data.email_to.error != 0) {
        $($('#tellfriend_fieldset ol').children().get(3)).append('<div class="error">'+data.email_to.error_msg+'</div>');
    }
    if (data.recaptcha.error != 0) {
        $('#recaptcha_widget').append('<div class="error">'+data.recaptcha.error_msg+'</div>');
    }
    if (data.text.error != 0) {
        $($('#tellfriend_fieldset ol').children().get(4)).append('<div class="error">'+data.text.error_msg+'</div>');
    }

    /** Add form row error class to parent container */
    $('#tellfriend_fieldset li').find('div.error').parent().addClass('form-row-error');
}

function tellFriend()
{

    $('#taf_main .notice').hide();
    $('#taf_main').hide();
    $('#user_add_container a').click(
        function() {
            $('#taf_main').slideToggle('fast');
            $('#user_add_container e').toggleClass('collapse').toggleClass('expand');
            return false;
        }
    );

    $('#user_add_container').click(
        function() {
            $('#taf_main').slideToggle('fast');
            $('#user_add_container e').toggleClass('collapse').toggleClass('expand');
        }
    );

    $('#taf_main > form').submit(
        function() {
            $.post(
                $('input[name="ajax_target"]').attr('value') + 'handle_module_data.html?module=tell_friend&ajax=1&' + $('input[name="ajax_action"]').attr('value'),
                $(this).serialize(),
                function(data){
                    tellFriendHandleErrors(data);

                    if (data.error == false) {
                        tellFriendHandleSend(data.send);
                    }
                },
                'json'
            );
            return false;
        }
    );
}

function showVideos()
{
    _c = $('#videos_container');

    $('#videos a').attr({href: '#'});

    $('#videos').click(
        function() {
            _c.is(':visible') ? _c.slideUp() : _c.slideDown();
            $('#videos a')
                .toggleClass('collapse')
                .toggleClass('expand');
            return false;
        }
    );
}


/**
 * COMMON
 * Various functions (old common.js)
 */
function external_links() {
    $("a[rel=external]").attr({ target: "_blank" });
}

jQuery.fn.loading = function () {
    var div = jQuery(this);
    div.attr({ innerHTML: '<div class="loading"></div>' });
    return(this);
}

jQuery.fn.sortOptions = function(ascending)
{
    var a = typeof(ascending) == "undefined" ? true : !!ascending;
    this.each(
        function()
        {
            if(this.nodeName.toLowerCase() != "select") return;
            // get options
            var o = this.options;
            // get number of options
            var oL = o.length;
            // create an array for sorting
            var sA = [];
            // loop through options, adding to sort array
            for(var i = 0; i<oL; i++)
            {
                sA[i] = {
                    v: o[i].value,
                    t: o[i].text
                }
            }
            // sort items in array
            sA.sort(
                function(o1, o2)
                {
                    // option text is made lowercase for case insensitive sorting
                    o1t = o1.t.toLowerCase(), o2t = o2.t.toLowerCase();
                    // if options are the same, no sorting is needed
                    if(o1t == o2t) return 0;
                    if(a)
                    {
                        return o1t < o2t ? -1 : 1;
                    }
                    else
                    {
                        return o1t > o2t ? -1 : 1;
                    }
                }
            );
            // change the options to match the sort array
            for(var i = 0; i<oL; i++)
            {
                o[i].text = sA[i].t;
                o[i].value = sA[i].v;
            }
        }
    );
    return this;
};

function popUp(URL, width, height) {
    day = new Date();
    id = day.getTime();
    leftVal = (screen.width - width)/2;
    topVal = (screen.height - height)/2;
    eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width="+ width +",height="+ height +", left="+ leftVal +", top="+ topVal +"');");
}

function inputFocus(id) {
    $('#'+id).focus();
}

function confirmLocation(string, url) {
        if (confirm(string)) {
                window.location.href = url;
                return true;
        }
        else {
            return false;
        }
}

function submitForm(f) {
    if (!document.getElementById) {
        return;
    }

    var fo = document.getElementById(f);
    fo.submit();
}

function banner(cSRC, cURL, nType, cTarget, width, height) {
    if (cTarget != '') {
        urlTarget = cTarget;
    }
    if (nType == 2) {
        document.getElementById('flash_banner').innerHTML = '<a href="'+ cURL +'" onclick="this.target=\'' + urlTarget + '\'"><img src="'+ cSRC +'" alt="" style="border:none;" /></a>';
    } else {
        var fo = new FlashObject(cSRC + '?clickthru=' + cURL, "banner", width, height, "6", "#ffffff");
        fo.write("flash_banner");
    }
}

// shopping process; on click we disable all set of buttons
function btnNav() {
    var buttons = Array('prev', 'clear', 'next')
    for(var i=0; i<buttons.length; i++) {
        document.getElementById(buttons[i]).disabled = true;
    }
}

function nav() {
    $('#main_nav li').hover(function(){
        // over
        $(this).addClass('hover');
    }, function(){
        // out
        $(this).removeClass('hover');
    });
}

function is_numeric(val) {
     if (isNaN(parseFloat(val))) {
          return false;
     }
     return true
}

function addValue(cId,cValue)
{
    document.getElementById(cId).value = cValue;
}

// collapse/expand clicked additional service form
function slideToggleAdditionalServices()
{
    $('#additional_services h3').click(
        function(){
            $(this).parent().children(':not(h3)').slideToggle('fast');
            $(this).parent().toggleClass('collapsed');
        }
    );
}

// Fix hover states for IE6
function language_switch()
{
    $('#language_switch li:first-child').css('display', 'block');
    $('#language_switch').hover(
        function(){
            $(this).find('li').css('display', 'block');
        },
        function(){
            $(this).find('li:not(:first-child)').css('display', 'none');
        }
    );
}

/**
 * SHOPPING PROCESS
 * Former buy.js
 */
function show(obj_id, mode) {
    var status = (mode ? 'block' : 'none');
    document.getElementById('a_perf_' + obj_id).style.display = status;
}


function addValue(cId,cValue)
{
    document.getElementById(cId).value = cValue;
}

// used on performance page
function checkPriceCat( cat ) {
    var frm = document.getElementById('frm_choose');
    for (i = 0; i < frm.length; i++) {
        if (frm[i].type == 'select-one') {
            // cat[123_456] => 123_456
            var str_pk = cat.name.slice(4,-1);
            var arr_pk = str_pk.split('_');

            // cat[123_456] => 123_456
            var str_elm = frm[i].name.slice(4,-1);
            var arr_elm = str_elm.split('_');

            if (arr_pk[0] != arr_elm[0]) {
                frm[i].value = 0;
            }
        }
    }

}

function unselectRadioOnFormInput()
{
    // hide the address_new radio button
    $('#address_new').hide();

    // on form click, use the address_new radio button
    $('#shopping_process_form :input').click(function(){
        if (this.type != 'submit' && this.type != 'radio') {
            $('.delivery_address_radio').attr('checked', false);
            $('#address_new').attr('checked', true);
        }
    });
}

function handleTickets()
{
    $('#basket .performance').hide();
    var states = Array();

    $('.event_info_details').each(function(i){
        var options = $(this).attr('title').split('|');
        states[i] = {status: 0, id: this.id, statusClass: Array('show', 'hide'), title: Array(options[0], options[1])};
    });

    $('.event_info_details').each(function(i){
        var obj = states[i];
        $(this).html('<a href="#" id="details_'+i+'" class="details '+obj.statusClass[obj.status]+'" alt="" title="'+obj.title[obj.status]+'">'+obj.title[obj.status]+'</a>');
    });

    $('.event_info_details').click(
        function(){

            var index = this.id.charAt(this.id.length-1);
            var obj   = states[index];

            obj.status = Math.abs(obj.status-1);

            $('#details_'+index).html(obj.title[obj.status]);
            $('#details_'+index).attr('class', 'details ' + obj.statusClass[obj.status]);

            // slidetoggle removed problems with ie7 and jquery v 1.2.6
            $('#ticket_'+index).animate({
                height: "toggle",
                opacity:"toggle"
              }, 400);

            return false;
        }
    );
}

function handleDeliveryDetails()
{
    var maxLength = 100;
    var dDetails  = $('#delivery_details .delivery_description').html();
    var pDetails  = $('#delivery_details .payment_description').html();

    // if html text is longer than maxLength then hide it
    if (dDetails != undefined && dDetails.length > maxLength ) {

        $('#delivery_details .delivery_description').hide();

        var content = $('.delivery_info_details').html();
        $('#delivery_details .delivery_info_details').html('<a href="#" class="details" alt="'+content+'" title="'+content+'">'+content+'</a>');

    } else {
        $('#delivery_details .delivery_info_details').remove();
    }

    // payment description hide/show
    // if html text is longer than maxLength then hide it
    if (pDetails != undefined && pDetails.length > maxLength ) {

        $('#delivery_details .payment_description').hide();

        var content = $('.payment_info_details').html();
        $('#delivery_details .payment_info_details').html('<a href="#" class="details" alt="'+content+'" title="'+content+'">'+content+'</a>');

    } else {
        $('#delivery_details .payment_info_details').remove();
    }
}

// iterates through form elements and validates their inputs; returns boolean
function isValid(identifier){
    var valid = null;
    if (identifier == 'enable_submit_single'){
        valid = false;
    } else if (identifier == 'enable_submit_group'){
        valid = true;
    }
    $('form .'+identifier).each(
            function(i,el){
                if (identifier == 'enable_submit_single' && el.value != 0 && el.type != 'radio' && el.type != 'radio') {
                    valid = true;
                } else if (identifier == 'enable_submit_single' && el.checked == true && (el.type == 'radio' || el.type == 'checkbox')) {
                    valid = true;
                } else if (identifier == 'enable_submit_group' && el.value == 0 && el.type != 'radio' && el.type != 'checkbox') {
                    valid = false;
                } else if (identifier == 'enable_submit_group' && el.checked == false && el.type == 'checkbox') {
                    valid = false;
                }
            }
        );
    return valid;
}

// intialize on change event for form inputs that have group validator; returns boolean(validity of inputs)
function enableButtonsOnSetGroup() {
    var valid = isValid('enable_submit_group');
    $('form .enable_submit_group').keyup(
        function(){
            var isMixedValidator = $(this).parents('form').hasClass('mixedValidator');
            valid = isValid('enable_submit_group');
            if (isMixedValidator){
                if (isValid('enable_submit_single')) {
                    enableDisableButtons(valid);
                } else {
                    enableDisableButtons(false);
                }
            } else {
                enableDisableButtons(valid);
            }
        }
    );

        $('form .enable_submit_group').change(
        function(){
            var isMixedValidator = $(this).parents('form').hasClass('mixedValidator');
            valid = isValid('enable_submit_group');
            if (isMixedValidator){
                if (isValid('enable_submit_single')) {
                    enableDisableButtons(valid);
                } else {
                    enableDisableButtons(false);
                }
            } else {
                enableDisableButtons(valid);
            }
        }
    );
    return valid;
}

// intialize on change event for form inputs that have single validator; returns boolean(validity of inputs)
function enableButtonsOnSetSingle()
{
    var valid = isValid('enable_submit_single');

    $('form .enable_submit_single').keyup(
        function(){
            var isMixedValidator = $(this).parents('form').hasClass('mixedValidator');
            valid = isValid('enable_submit_single');
            if (isMixedValidator){
                if (isValid('enable_submit_group')) {
                    enableDisableButtons(valid);
                } else {
                    enableDisableButtons(false);
                }
            } else {
                enableDisableButtons(valid);
            }
        }
    );

    $('form .enable_submit_single').change(
        function(){
            var isMixedValidator = $(this).parents('form').hasClass('mixedValidator');
            valid = isValid('enable_submit_single');
            if (isMixedValidator){
                if (isValid('enable_submit_group')) {
                    enableDisableButtons(valid);
                } else {
                    enableDisableButtons(false);
                }
            } else {
                enableDisableButtons(valid);
            }
        }
    );
    /* ie6 first click event binding */
    $('form .enable_submit_single.radio').click(
        function(){
            var isMixedValidator = $(this).parents('form').hasClass('mixedValidator');
            valid = isValid('enable_submit_single');
            if (isMixedValidator){
                if (isValid('enable_submit_group')) {
                    enableDisableButtons(valid);
                } else {
                    enableDisableButtons(false);
                }
            } else {
                enableDisableButtons(valid);
            }
        }
    );
    return valid;
}

// initialize mixed form validator
function enableFormValidator()
{
    var s = $('form .enable_submit_single').length;
    var g = $('form .enable_submit_group').length;
    if (s && g) $('form').addClass('mixedValidator');
}

// enable disable submit buttons
function enableDisableButtons(valid)
{
    if (valid) {
        $('form .disable_on_load')
            .attr('disabled', false)
            .removeClass("disabled");
    } else {
        $('form .disable_on_load')
            .attr('disabled', 'disabled')
            .addClass("disabled");
    }
}

// terms of hide/show on performance page
function toggleTermsOfUse()
{
    $('#standard_terms_content').hide();
    $('#special_terms_content').hide();
    $('#standard_terms').addClass('collapsed');
    $('#special_terms').addClass('collapsed');

    $('#standard_terms_toggler').click(
        function(){
            if ($('#standard_terms_content').is(':visible')){
                $('#standard_terms_content').fadeOut('slow');
                $('#standard_terms').removeClass('expanded');
                $('#standard_terms').addClass('collapsed');
             } else {
                $('#standard_terms_content').fadeIn('slow');
                $('#standard_terms').removeClass('collapsed');
                $('#standard_terms').addClass('expanded');
             }
             return;
        }
    );

     $('#special_terms_toggler').click(
      function(){
          if ($('#special_terms_content').is(':visible')){
              $('#special_terms_content').fadeOut('slow');
              $('#special_terms').removeClass('expanded');
              $('#special_terms').addClass('collapsed');
           } else {
              $('#special_terms_content').fadeIn('slow');
              $('#special_terms').removeClass('collapsed');
              $('#special_terms').addClass('expanded');
           }
           return;
      }
    );

    return;
}

// display terms of use on order overview page
function handleTermsOfUse()
{
    $('#standard_terms_content').show();
    $('#special_terms_content').show();

    //initializing events
    $("#tou_agree").click(
        function() {
            termsOfUseWindow('hide');
            $("#additions_to_terms_of_use_checkbox").attr({checked: "checked"});

            return false;
        }
    );

    $("#tou_reject").click(
        function() {
            termsOfUseWindow('hide');
            $("#additions_to_terms_of_use_checkbox").attr({checked: ""});

            return false;
        }
    );

    $("p.agree_box a").click(
        function() {
            termsOfUseWindow('show');

            return false;
        }
    );

    //Set window class that assignes proper CSS styling
    $("#terms_of_use_window").addClass("window");

    //Get the screen height and width
    var maskHeight = $(window).height();
    var maskWidth = $(window).width();

    //Set height and width to mask to fill up the whole screen
    $('#mask').css({'width':maskWidth,'height':maskHeight});

    //Calculate modal window position
    //var windowTop = maskHeight / 2 - $(".window").height() / 2;
    //var windowLeft = maskWidth / 2 - $(".window").width() / 2;

    var windowTop = maskHeight / 2 - 200;
    var windowLeft = maskWidth / 2 - 300;

    $(".window").css({'top':windowTop,'left':windowLeft});

    //Show modal window on load if not agreed
    var alreadyAgreed = $("#additions_to_terms_of_use_checkbox").attr("checked");

    if (!alreadyAgreed) {
        termsOfUseWindow('show');
    } else {
        termsOfUseWindow('hide');
    }

    return;
}

// Show Terms of use window
function termsOfUseWindow(action)
{
    if (action == 'show') {
        //show background mask with transition effect
        $('#mask').fadeIn(500);
        $('#mask').fadeTo("slow",0.2);

        //show window
        $(".window").show();
    } else {
        $("#mask").hide();
        $(".window").hide();
    }

    return;
}

function handleDrawer()
{
    $('.drawer-content').each(function(){
        if ($(this).hasClass('active')) {
            $(this).slideDown('fast');
        }
    });
}

function clickDrawer(_self)
{
    if ($.inArray('drawer-handler', _self.attr('class').split(' ')) == -1) {
        _elem = $(_self.parents('.drawer-handler').get(0));
    } else {
        _elem = _self;
    }

    _split = _elem.attr('id').split('-');
    _class = '#drawer-content-' + _split[_split.length - 1];

    if (!$(_class).is(':visible')) {
        $('.drawer-content').removeClass('active');
        $('.drawer-content').hide();

        $(_class).addClass('active');
        handleDrawer();
    }
}

/**
 * Used on orderoverview FOR EPS
 */
function parseEpsBank(val) {
    tmp = val.split('#');

    return tmp[0];
}



/**
 * @desc Loop trough all radio buttons on mod page
 * And checks if mod is ajax type (kontramarka) and procces ajax request on mod page.
 */
function handleModAjax() {

    // => Check if we are on mod page
    testFormExist = $('#shopping_process_form');
    postForm =false;
    if (testFormExist.length > 0 ){
        postForm = testFormExist;
        ajaxElements = $('input[name = "ra_mod"]');
    }

    if (postForm != false && postForm.length != 0) {
        originalAction = postForm.attr('action');
        ajaxPath = postForm.attr('rel');

        ajaxElements.each(function(index){
            $(this).click(function() {
                clickElement = $(this);

                // This mens we need to call ajax for this mod to get special / additinal fields for this type of mod
                // For now only kontramarka is using this type of mod (RU)
                if (clickElement.hasClass('ajaxMod')){
                    ajaxPathModFields         = clickElement.attr('rel');
                    ajaxFillelementModFields  = $('#drawer-content-'+ clickElement.val());

                    currHeight = ajaxFillelementModFields.css("height");
                    ajaxFillelementModFields.addClass('loading');

                    ajaxFillelementModFields.html('<div style="height:'+ currHeight +'" ></div>');

                    $('p#mod-desc-'+clickElement.val()).remove();
                    $.get(ajaxPathModFields,function(modData){
                        ajaxFillelementModFields.html(modData);
                        $('h2#mod-desc-title-'+clickElement.val()).insertAfter('#mod_desc legend');
                        ajaxFillelementModFields.removeClass('loading');
                        ajaxFillelementModFields.css("text-indent", "0");
                    });
                } else {
                   $('#mod_desc').html('');
                }
            });
        });
    }
}

/**
 * Toggle additional information for personalized tickets fields
 */
function personalizedAdditionalInfo() {
    $('.personalize-form .additional_info').hide();

    $('.personalize-form .more').click(function() {
        $(this).parent().find('.additional_info').slideToggle();
    });
}

/**
 * GALLERY
 *
 */
function moveSlideshow(elementID,final_x,final_y,interval) {
    if (!document.getElementById) return false;

    // if the element does not exist we have nothing to do
    if (!document.getElementById(elementID)) return false;
    var elem = document.getElementById(elementID);

    // the slideshow events stack up and the animation is not smooth anymore
    if (elem.movement) {
        clearTimeout(elem.movement);
    }

    // current slideshow position
    var xpos = parseInt(elem.style.left);
    var ypos = parseInt(elem.style.top);
    if (xpos == final_x && ypos == final_y) {
        return true;
    }

    // restrict moving to white area
    if (final_x <= -max_set_x) {
        final_x = -max_set_x;
    }
    if (final_x > 0) {
        final_x = 0;
    }

    // animation bit (taken from the book DOM Scripting by Jeremy Keith)
    if (xpos < final_x) {
        var dist = Math.ceil((final_x - xpos)/10);
        xpos = xpos + dist;
    }
    if (xpos > final_x) {
        var dist = Math.ceil((xpos - final_x)/10);
        xpos = xpos - dist;
    }

    // again, restrict showing white area
    if (xpos <= -max_set_x) {
        xpos = -max_set_x;
    }
    if (xpos > 0) {
        xpos = 0;
    }

    // fix the elements position
    elem.style.left = xpos + "px";
    elem.style.top = ypos + "px";

    // and set up the event again after an interval
    var repeat = "moveSlideshow('"+elementID+"',"+final_x+","+final_y+","+interval+")";
    elem.movement = setTimeout(repeat,interval);
}

function prepareSlideshow() {
    // need the width of the gallery so that they do not scroll vertical
    var set_width = $("#slideshow_set > li").length * 194;
    max_set_x = set_width - 388;

    // set css and append navigation
    var nav = '<ul id="navigation"><li><a id="scroll_left" href="#">Left</a></li><li><a id="scroll_right" href="#">Right</a></li></ul>';
    $("#slideshow").css({width: "430px", height: "140px"}).prepend(nav);
    $("#slideshow").addClass('advanced');
    $("#slideshow_wrapper").css({width: "388px", height: "130px", overflow: "hidden"});
    $("#slideshow_set").css({position: "absolute", top: "0px", left: "0px"}).css("width", set_width);

    // append click functions
    $("a#scroll_left").click(function () {
        // get the current position of the gallery element
        var x = parseInt($("#slideshow_set").css("left"));
        if (x % 194 == 0) {
            moveSlideshow("slideshow_set",x+194,0,10);
        }
        return false;
    });
    $("a#scroll_right").click(function () {
        // get the current position of the gallery element
        var x = parseInt($("#slideshow_set").css("left"));
        if (x % 194 == 0) {
            moveSlideshow("slideshow_set",x-194,0,10);
        }
        return false;
    });
}

/**
 * THICKBOX
 */
function tb_init(domChunk)
{
  $(domChunk).click(function(){
  var t = this.title || this.name || null;
  var a = this.href || this.alt;
  var g = this.rel || false;
  tb_show(t,a,g);
  this.blur();
  return false;
  });
}

function tb_show(caption, url, imageGroup)
{//function called when the user clicks on a thickbox link
  try {
    if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
      $("body","html").css({height: "100%", width: "100%"});
      $("html").css("overflow","hidden");
      if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6
        $("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
        $("#TB_overlay").click(tb_remove);
      }
    }else{//all others
      if(document.getElementById("TB_overlay") === null){
        $("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
        $("#TB_overlay").click(tb_remove);
      }
    }

    if(tb_detectMacXFF()){
      $("#TB_overlay").addClass("TB_overlayMacFFBGHack");//use png overlay so hide flash
    }else{
      $("#TB_overlay").addClass("TB_overlayBG");//use background and opacity
    }

    if(caption===null){caption="";}
    $("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>");//add loader to the page
    $('#TB_load').show();//show loader

    var baseURL;
     if(url.indexOf("?")!==-1){ //ff there is a query string involved
      baseURL = url.substr(0, url.indexOf("?"));
     }else{
         baseURL = url;
     }

     var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;
     var urlType = baseURL.toLowerCase().match(urlString);
    if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images

      TB_PrevCaption = "";
      TB_PrevURL = "";
      TB_PrevHTML = "";
      TB_NextCaption = "";
      TB_NextURL = "";
      TB_NextHTML = "";
      TB_imageCount = "";
      TB_FoundURL = false;
      if(imageGroup){
        TB_TempArray = $("a[rel="+imageGroup+"]").get();
        for (TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML === "")); TB_Counter++) {
          var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString);
            if (!(TB_TempArray[TB_Counter].href == url)) {
              if (TB_FoundURL) {
                TB_NextCaption = TB_TempArray[TB_Counter].title;
                TB_NextURL = TB_TempArray[TB_Counter].href;
                TB_NextHTML = "<span id='TB_next'>&nbsp;&nbsp;<a href='#'>Next &gt;</a></span>";
              } else {
                TB_PrevCaption = TB_TempArray[TB_Counter].title;
                TB_PrevURL = TB_TempArray[TB_Counter].href;
                TB_PrevHTML = "<span id='TB_prev'>&nbsp;&nbsp;<a href='#'>&lt; Prev</a></span>";
              }
            } else {
              TB_FoundURL = true;
              TB_imageCount = "Image " + (TB_Counter + 1) +" of "+ (TB_TempArray.length);
            }
        }
      }
      imgPreloader = new Image();
      imgPreloader.onload = function(){
      imgPreloader.onload = null;

      // Resizing large images - orginal by Christian Montoya edited by me.
      var pagesize = tb_getPageSize();
      var x = pagesize[0] - 150;
      var y = pagesize[1] - 150;
      var imageWidth = imgPreloader.width;
      var imageHeight = imgPreloader.height;
      if (imageWidth > x) {
        imageHeight = imageHeight * (x / imageWidth);
        imageWidth = x;
        if (imageHeight > y) {
          imageWidth = imageWidth * (y / imageHeight);
          imageHeight = y;
        }
      } else if (imageHeight > y) {
        imageWidth = imageWidth * (y / imageHeight);
        imageHeight = y;
        if (imageWidth > x) {
          imageHeight = imageHeight * (x / imageWidth);
          imageWidth = x;
        }
      }
      // End Resizing

      TB_WIDTH = imageWidth + 30;
      TB_HEIGHT = imageHeight + 60;
      $("#TB_window").append("<a href='' id='TB_ImageOff' title='Close'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TB_caption'>"+caption+"<div id='TB_secondLine'>" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a></div>");

      $("#TB_closeWindowButton").click(tb_remove);

      if (!(TB_PrevHTML === "")) {
        function goPrev(){
          if($(document).unbind("click",goPrev)){$(document).unbind("click",goPrev);}
          $("#TB_window").remove();
          $("body").append("<div id='TB_window'></div>");
          tb_show(TB_PrevCaption, TB_PrevURL, imageGroup);
          return false;
        }
        $("#TB_prev").click(goPrev);
      }

      if (!(TB_NextHTML === "")) {
        function goNext(){
          $("#TB_window").remove();
          $("body").append("<div id='TB_window'></div>");
          tb_show(TB_NextCaption, TB_NextURL, imageGroup);
          return false;
        }
        $("#TB_next").click(goNext);

      }
      document.onkeydown = function(e){
        if (e == null) { // ie
          keycode = event.keyCode;
        } else { // mozilla
          keycode = e.which;
        }
        if(keycode == 27 || keycode == 88){ // close
          tb_remove();
        } else if(keycode == 78){ // display previous image
          if(!(TB_NextHTML == "")){
            document.onkeydown = "";
            goNext();
          }
        } else if(keycode == 80){ // display next image
          if(!(TB_PrevHTML == "")){
            document.onkeydown = "";
            goPrev();
          }
        }
      };

      tb_position();
      $("#TB_load").remove();
      $("#TB_ImageOff").click(tb_remove);
      $("#TB_window").css({display:"block"}); //for safari using css instead of show
      };

      imgPreloader.src = url;
    }else{//code to show html

      var queryString = url.replace(/^[^\?]+\??/,'');
      var params = tb_parseQuery( queryString );
      TB_WIDTH = (params['width']*1) + 30 || 630; //defaults to 630 if no paramaters were added to URL
      TB_HEIGHT = (params['height']*1) + 40 || 440; //defaults to 440 if no paramaters were added to URL
      ajaxContentW = TB_WIDTH - 30;
      ajaxContentH = TB_HEIGHT - 45;

      if(url.indexOf('TB_iframe') != -1){// either iframe or ajax window
          urlNoQuery = url.split('TB_');
          $("#TB_iframeContent").remove();
          if(params['modal'] != "true"){//iframe no modal
            $("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a></div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' > </iframe>");
          }else{//iframe modal
          $("#TB_overlay").unbind();
            $("#TB_window").append("<iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'> </iframe>");
          }
      }else{// not an iframe, ajax
          if($("#TB_window").css("display") != "block"){
            if(params['modal'] != "true"){//ajax no modal
            $("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'>close</a></div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");
            }else{//ajax modal
            $("#TB_overlay").unbind();
            $("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>");
            }
          }else{//this means the window is already up, we are just loading new content via ajax
            $("#TB_ajaxContent")[0].style.width = ajaxContentW +"px";
            $("#TB_ajaxContent")[0].style.height = ajaxContentH +"px";
            $("#TB_ajaxContent")[0].scrollTop = 0;
            $("#TB_ajaxWindowTitle").html(caption);
          }
      }

      $("#TB_closeWindowButton").click(tb_remove);

        if(url.indexOf('TB_inline') != -1){
          $("#TB_ajaxContent").append($('#' + params['inlineId']).children());
          $("#TB_window").unload(function () {
            $('#' + params['inlineId']).append( $("#TB_ajaxContent").children() ); // move elements back when you're finished
          });
          tb_position();
          $("#TB_load").remove();
          $("#TB_window").css({display:"block"});
        }else if(url.indexOf('TB_iframe') != -1){
          tb_position();
          if($.browser.safari){//safari needs help because it will not fire iframe onload
            $("#TB_load").remove();
            $("#TB_window").css({display:"block"});
          }
        }else{
          $("#TB_ajaxContent").load(url += "&random=" + (new Date().getTime()),function(){//to do a post change this load method
            tb_position();
            $("#TB_load").remove();
            tb_init("#TB_ajaxContent a.thickbox");
            $("#TB_window").css({display:"block"});
          });
        }

    }
    if(!params['modal']){
      document.onkeyup = function(e){
        if (e == null) { // ie
          keycode = event.keyCode;
        } else { // mozilla
          keycode = e.which;
        }
        if(keycode == 27){ // close
          tb_remove();
        }
      };
    }

  } catch(e) {
    //nothing here
  }
}

//helper functions below
function tb_showIframe()
{
  $("#TB_load").remove();
  $("#TB_window").css({display:"block"});
}

function tb_remove()
{
   $("#TB_imageOff").unbind("click");
  $("#TB_closeWindowButton").unbind("click");
  $("#TB_window").fadeOut("fast",function(){$('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();});
  $("#TB_load").remove();
  if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
    $("body","html").css({height: "auto", width: "auto"});
    $("html").css("overflow","");
  }
  document.onkeydown = "";
  document.onkeyup = "";
  return false;
}

function tb_position()
{
$("#TB_window").css({marginLeft: '-' + parseInt((TB_WIDTH / 2),10) + 'px', width: TB_WIDTH + 'px'});
  if ( !(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
    $("#TB_window").css({marginTop: '-' + parseInt((TB_HEIGHT / 2),10) + 'px'});
  }
}

function tb_parseQuery ( query )
{
   var Params = {};
   if ( ! query ) {return Params;}// return empty object
   var Pairs = query.split(/[;&]/);
   for ( var i = 0; i < Pairs.length; i++ ) {
      var KeyVal = Pairs[i].split('=');
      if ( ! KeyVal || KeyVal.length != 2 ) {continue;}
      var key = unescape( KeyVal[0] );
      var val = unescape( KeyVal[1] );
      val = val.replace(/\+/g, ' ');
      Params[key] = val;
   }
   return Params;
}

function tb_getPageSize()
{
  var de = document.documentElement;
  var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
  var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
  arrayPageSize = [w,h];
  return arrayPageSize;
}

function tb_detectMacXFF()
{
  var userAgent = navigator.userAgent.toLowerCase();
  if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1) {
    return true;
  }
}

/**
 * Show or hide drawers on MOP,MOD,...
 *
 * @param /
 *
 * @return /
 *
 * @requireIn document.ready
 *
 * @onPage mod/mop page
*/

var manageDrawers = {
	/**
	 * Initialization of process
	 *
	 * @member manageDrawers
	*/
	init: function() {

		var section, trigger;
		if ($(".drawer").length != 1) {
			// Show radion buttons for JS users
			$(".drawer .drawer-trigger input").removeClass('hide-me');
			// Hide all drawers
			manageDrawers.hide();
		}


		// Show hand on header
		$(".drawer-trigger").css('cursor','pointer');
		$(".drawer-trigger label").css('cursor','pointer');

		// Check if any radio button are checked
		manageDrawers.check();

		// Click on trigger
		$(".drawer .drawer-trigger").click(function() {
			$(this).find('input').attr('checked', true);
			if ($(".drawer").length != 1) { manageDrawers.toggle($(this)); }
		});

	},

	/**
	 * Hide drawers
	 *
	 * @member manageDrawers
	*/
	hide: function() {$(".drawer-content").hide();},

	/**
	 * Get section
	 *
	 * @member manageDrawers
	*/
	getSection: function(trigger) {
		section = $(trigger).parent();

		return section;
	},

	check: function() {
		$(".drawer .drawer-trigger").each(function() {

			if ($(this).find('input').attr('checked')) {
				section = manageDrawers.getSection($(this));
				// Show corect drawer content
				$(section).children('.drawer-content').show().addClass('selected');
			}

		});
	},

	/**
	 * Toggle drawers
	 *
	 * @member manageDrawers
	*/
	toggle: function(trigger) {
		section = manageDrawers.getSection(trigger);

		if (!$(section).find('.drawer-content').hasClass('selected')) {
			// Hide open drawer content
			$(".drawer-content.selected").slideUp('slow').removeClass('selected');

			// Show corect drawer content
			$(section).children('.drawer-content').slideToggle('slow').addClass('selected');

			// Scroll to just clicked drawer top
			var index = $(trigger).parent().index();
			if (index > 4) {
				scrollTo($('.drawer').eq(index-3));
			} else {
				scrollTo(".page-heading");
			}

		}

	}
};

/**
 * Scroll to a specific location on the page
 *
 * @param string indicator Indicator of an element you want to scroll to
 *
 * @return /
*/
function scrollTo(indicator) { $('html, body').delay(100).animate({scrollTop: $(indicator).offset().top+"px"}, 300); }

/**
 * Check if user is new/old
 *
 * @param /
 *
 * @return /
 *
 * @requireIn document.ready
 *
 * @onPage all
*/
function checkUserOldNew() {
	// If user has email and password inputed - select register user
	setTimeout(function(){
		if ($('#email').val() == "" && $('#password').val() == "") {
			inputFocus("email");

		} else if ($('#email').val() && $('#password').val() == "") {
			$('#signin-switch input[value="login"]').attr("checked","checked");
			$('#registerLoginForm #login').show();
			inputFocus("password");

		} else if ($('#email').val() && $('#password').val()) {
			$('#signin-switch input[value="login"]').attr("checked","checked");
			$('#registerLoginForm #login').show();
		}

	},500);

}

/**
 * Get creditcard type by number
 *
 * @param int number Number inputed
 *
 * @return array card cc_key(s) of card
 *
 * @requireIn document.ready
 *
 * @onPage order overview
*/
function creditCardTypeFromNumber(number) {
	var card = new Array();
	// first, sanitize the number by removing all non-digit characters.
	num = number.replace(/[^\d]/g, '');
	// now test the number against some regexes to figure out the card type.

	/* Mastercard - 1 */
	if (number.match(/^5[1-5]/)) { card.push('1'); }

    /* Visa Paylife black card - 10 */
	else if (number.match(/^400012/)) { card.push('10'); }

    /* Visa - 2 */
	else if (number.match(/^4/)) { card.push('2'); }

	/* American Express - 3 */
	else if (number.match(/^3[47]/)) { card.push('3'); }

	/* Discover - ?
	else if (num.match(/^6011/)) { card.push('4'); }
	*/

	/* Diners Club - 4 */
	else if (number.match(/^3[06]/)) { card.push('4'); }

	/* OET Card - 9 */
	else if (number.match(/^60[0-9]/)) { card.push('9'); }

	return card;
}

/**
 * Prevent deletion of prefilled number  on a cc_number field
 * And checks if preffiled numbers matches with first numebrs of entered cc
 * and corrects input field value if
 *
 * @param integer prefillnumber
 * @return void
 */
function preventCreditCardPrefillClearing(prefillNumber) {
    if (prefillNumber.length > 0 ) {
       currVal = $('#fpayment-cc_number').val();
       prefillNumLength = prefillNumber.length;
       if (currVal.length < prefillNumLength){
            $('#fpayment-cc_number').val(prefillNumber);
       }

       // check if the fist numbers are the same as prefilled numbers
       var i = 0
       var notMatching = false;
       for(i=0; i != prefillNumLength; i++) {
          if (prefillNumber[i] != currVal[i]) {
              notMatching = true;
          }
       }

       // If we detect that current value first (n) of numbners do not match we
       // fill cc numbr field with prefiled numbers
       if (notMatching) {
            $('#fpayment-cc_number').val(prefillNumber);
       }
    }
}

/**
 * Toggle full address - if address has .collapse class next to .edit-address it will show only mandatory fields
 *
 * @param string option Option show/hide/toggle
 *
 * @return /
 *
 * @requireIn document.ready
 *
 * @onPage add/edit address
*/
function toggleFullAddress(option) {
	if (option == "hide") { $('.edit-address .form-row:not(:has(span.mandatory))').not('.form-row:last').hide(); }
	else if (option == "show") { $('.edit-address .form-row:not(:has(span.mandatory))').not('.form-row:last').show(); }
	else if (option == "toggle") { $('.edit-address .form-row:not(:has(span.mandatory))').not('.form-row:last').slideToggle(); }

}

/**
 * Manage Terms of use pop up
 *
 * @param /
 *
 * @return /
 *
 * requireIn document.ready
 *
 * @onPage order overview
*/
function manageTOU() {
	// If TOU window is to big we change position from fixed to absolute
	if (($('#termsOfUse').height()+100) > $(window).height()) {
		$('#termsOfUse').css('position', 'absolute');
		$('#termsOfUse').css('height', $(window).height()-200);}

	$('#tou_agree').click(function(event) {
		event.preventDefault();
		$('#fpayment-terms_of_use').attr('checked', true);
	});

	$('#tou_reject').click(function(event) {
		event.preventDefault();
		$('#fpayment-terms_of_use').attr('checked', false);
	});

}

/**
 * Auto fill address for delivery
 *
 * @longdesc
 * Using: name, surname, address, postal_code, city, company, country
 * NOT using: alias, middlename, address_comment, countries_metros_id, country
 *
 * @param /
 *
 * @return /
 *
 * @requireIn document.ready
 *
 * @onPage mod page
*/
function fillAddress() {
	var tmp_class;

	// Hide buttons on the top
	$("#existing-addresses form button").hide();

	$("#existing-addresses form address")
	.css('cursor', 'pointer')
	.click(function() {

		// Clear form
		clearForm('.edit-address');

		$(this).find('span').each(function() {

			tmp_class = $(this).attr('class');
			if ($('.edit-address .'+tmp_class).is("input")) {
				// Input
				$('.edit-address .'+tmp_class).val($(this).text());
			} else {
				// Dropdown
				$('.edit-address .'+tmp_class+' option:contains("'+$(this).text()+'")').attr('selected', 'selected');
			}

		});

		// Fill address id
		$("form .edit-address-id").val($(this).parent().find(".address-id").attr('value'));
		//$("form .edit-address-id").attr('name',($(this).parent().find(".address-id").attr('name')));

		// Scroll on click
		scrollTo(".edit-address");
	});

	$("form.edit-address button[type=button]").click(function() {
		//console.log('reseting...');
		// Manualy clear address id
		$('.edit-address .edit-address-id').attr('value', '');
		//$('.edit-address .edit-address-id').attr('name', '');

	});
}

/**
 * Clear form
*/
function clearForm(form_selector) {

	// Clear form
	$(':input',form_selector)
	 .not(':button, :submit, :reset, :hidden')
	 .val('')
	 .removeAttr('checked')
	 .removeAttr('selected');

	// Clear errors
	$(form_selector+' .error-desc').remove();
	$(form_selector+' .form-row-error').removeClass('form-row-error');

}


$(document).ready(function() {

	if ($(".edit-address.collapse").length > 0) {
			if ($("#toggle-fields").attr('checked') == false) {
				toggleFullAddress('hide');
			}

			$("#toggle-fields").change(function() {
				toggleFullAddress('toggle');
			});
		}

	// => Terms of use
	if ($('#termsOfUse').length > 0) {
		if (!$('#fpayment-terms_of_use').attr('checked')) {$('#termsOfUse').reveal();}
		manageTOU();}

	// => New MOD/MOP/...
	if ($(".drawer-content").length > 0) { manageDrawers.init(); }
	if ($("#registerLoginForm").length > 0) {checkUserOldNew();}
	// Auto fill MOD address
	if ($(".drawer #existing-addresses").length > 0) { fillAddress(); }
	// Credit card guesser
	if ($('#creditcards-icons').length > 0) {
		var cards = new Array();
		var i;

        // In case of prefilled cardnumber find which card is entered if any
        if ($('#fpayment-cc_number').data('prefilled') > 0) {
            var cards = creditCardTypeFromNumber($('#fpayment-cc_number').val());
            $('#creditcards-icons li.opacity-10').removeClass('opacity-10').addClass('opacity-03');
            $('#creditcards-img').removeClass();
            prefillValue = $('#fpayment-cc_number').val();
        }

		$('#fpayment-cc_number').keyup(function() {
			var cards = creditCardTypeFromNumber($(this).val());
			$('#creditcards-icons li.opacity-10').removeClass('opacity-10').addClass('opacity-03');
			$('#creditcards-img').removeClass();
			for (i = 0; i < cards.length; i++) {
				$('#creditcards-icons .card-'+cards[i]).addClass('opacity-10');
				$('#creditcards-img').addClass('card-'+cards[i]);
			}
            preventCreditCardPrefillClearing(prefillValue);
		});
	}

    // event page
    ticketPaging();
    tellFriend();
    showVideos();

    // common
    language_switch();
    external_links();
    slideToggleAdditionalServices();

    // my account
    prepareTables();
    dropdown_menu();

    // search
    var path = document.location.pathname;
    var pos = path.indexOf("/");
    pos = path.indexOf("/", pos + 1);
    pos = path.indexOf("/", pos + 1);
    path = path.substring(0,pos+1)/*+"search.html";*/;

    // faq
    handleFaq();

    // add autocomplete to quicksearch *//* add autocomplete to quicksearch
    $("#search_string").autocomplete(path, { minChars:2, maxItemsToShow:7 });
    nav();

    // close all additional service forms on load
    if (!$('#additional_services form').hasClass('opened')) {
        $('#additional_services form').addClass('collapsed');
        $('#additional_services form').children(':not(h3)').css('display', 'none');
    }

    // shopping process
    unselectRadioOnFormInput();
    handleTickets();
    handleDeliveryDetails();

    enableDisableButtons(false);
    enableFormValidator();
    if (enableButtonsOnSetGroup() && enableButtonsOnSetSingle()){
        enableDisableButtons(true);
    } else {
        enableDisableButtons(false);
    }

    // Terms of use for performance page, order overview
    /*
	toggleTermsOfUse();
    handleTermsOfUse();
	*/

    // if advanced gallery is not enabled, show only images
    if ($('.advanced_gallery').length != 0) {
        prepareSlideshow();

        // thickbox
        tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
        imgLoader = new Image();
        imgLoader.src = tb_pathToImage;
    }
    //handleDrawer();
    // this handles delivery intervals and comments on mod page
    handleModAjax();

    // This is specail event on order overview
    if ($('#triggerPopUpWindow').length > 0) {
        eval($('#triggerPopUpWindow').attr('rel'));
    }

    //=> Additional information on personalized ticketc
    if ($('.personalize-form .more').length > 0) { personalizedAdditionalInfo(); }

});

