function showHide(val, div_id) {
    mode = (val) ? 'block' : 'none';
    document.getElementById(div_id).style.display = mode;
}

function makeEditable(val, field_class) {
// make input fields editable
    $("input[readonly='readonly']").next().text(" is newsletter");
}

function makeReadOnly(val, field_class) {
// make input fields readonly
}

function getSelectedValues (select) {
  var r = new Array();
  for (var i = 0; i < select.options.length; i++)
    if (select.options[i].selected)
      r[r.length] = select.options[i].value;
  return r;
}

function selectPrices(obj_id, obj_val) {
    var select = document.getElementById('se_prices')
    var element = (obj_id == 'se_pk') ? 0 : 1;
    var div = (obj_id == 'se_pk') ? 'se_rebate' : 'se_pk';
    deSelect(div);
    for (var i = 0; i < select.options.length; i++) {
        select.options[i].selected = false;
        var value = select.options[i].value;
        arr = value.split('|');
        for (var j = 0; j < obj_val.length; j++) {
            if (obj_val[j] == arr[element]) {
                select.options[i].selected = true;
            }
        }
    }
    pricesCheck();
}

function deSelect(div) {
    var arr = div.split(',');
    for (var i = 0; i < arr.length; i++) {
        var select = document.getElementById(arr[i]);
        for (var j = 0; j < select.options.length; j++) {
            select.options[j].selected = false;
        }
    }
}

function pricesCheck() {

    dateActivate('uef', 'from', false);
    dateActivate('uef', 'to', false);

    var select = document.getElementById('se_prices');
    var date_from = -1;
    var date_to = -1;
    var active = '';
    var j = -1;
    var k = -1;
    var l = -1;

    for (var i = 0; i < select.options.length; i++) {
        if (select.options[i].selected) {
            value = select.options[i].value;
            var arr = value.split('|');
            // alert(arr[3]);
            if (arr[3] != date_from) {
                if (j <= 0) {
                    date_from = arr[3];
                    j++;
                }
            }
            if (arr[4] != date_to) {
                if (k <= 0) {
                    date_to = arr[4];
                    k++;
                }
            }
            if (arr[5] != active) {
                if (l <= 0) {
                    active = arr[5];
                    l++;
                }
            }
        }
    }
    document.getElementById('uef_from').style.color = document.getElementById('uef_to').style.color = '#000000';
    if (j > 0 || date_from == 0) {
        date_from = 0;
        document.getElementById('uef_from').style.color = '#ff0000';
    }
    if (k > 0 || date_to == 0) {
        date_to = 0;
        document.getElementById('uef_to').style.color = '#ff0000';
    }
    if (l > 0 || active == '?') active = '';
    setDate('from', date_from);
    setDate('to', date_to);
    document.getElementById('se_uef_status').value = active;
}

function fcValues() {

    dateActivate('uef', 'from1', false);
    dateActivate('uef', 'to1', false);
    var select = document.getElementById('se_fc');
    var date_from = -1;
    var date_to = -1;
    var active = '';
    var j = -1;
    var k = -1;
    var l = -1;

    for (var i = 0; i < select.options.length; i++) {
        if (select.options[i].selected) {
            value = select.options[i].value;
            var arr = value.split('|');
            // alert(arr[3]);
            if (arr[1] != date_from) {
                if (j <= 0) {
                    date_from = arr[1];
                    j++;
                }
            }
            if (arr[2] != date_to) {
                if (k <= 0) {
                    date_to = arr[2];
                    k++;
                }
            }
            if (arr[3] != active) {
                if (l <= 0) {
                    active = arr[3];
                    l++;
                }
            }
        }
    }
    if (j > 0 || date_from == 0) {
        date_from = 0;
        document.getElementById('uef_from').style.color = '#ff0000';
    }
    if (k > 0 || date_to == 0) {
        date_to = 0;
        document.getElementById('uef_to').style.color = '#ff0000';
    }
    if (l > 0 || active == '?') active = '';
    document.getElementById('se_act').value = active;
    setDate('from1', date_from);
    setDate('to1', date_to);

}

function setDate(obj_id, val) {

    var myDate = new Date(val*1000);
    var I_diff = myDate.getTimezoneOffset();

    var theDate = new Date((Math.abs(val) + Math.abs(I_diff*60)) * 1000);
    var d = theDate.getUTCDate();
    var m = theDate.getUTCMonth()+1;
    var Y = theDate.getUTCFullYear();
    var H = theDate.getUTCHours();
    var I = theDate.getUTCMinutes();

    // alert(d+' '+m+' '+Y+' '+H+' '+I);
    for(i=0; i<document.release.length; i++) {
        var name = document.release.elements[i].name;
        switch (name) {
            case 'uef_'+ obj_id +'[d]':
            document.release.elements[i].value = d;
            break;

            case 'uef_'+ obj_id +'[m]':
            document.release.elements[i].value = m;
            break;

            case 'uef_'+ obj_id +'[Y]':
            document.release.elements[i].value = Y;
            break;

            case 'uef_'+ obj_id +'[H]':
            document.release.elements[i].value = H;
            break;

            case 'uef_'+ obj_id +'[i]':
            document.release.elements[i].value = I;
            break;
        }
    }

    if (val == 0) {
        document.getElementById('a_uef_' + obj_id).style.display = 'block';
        dateActivate('uef', obj_id, true);

    }
    else {
        document.getElementById('a_uef_' + obj_id).style.display = 'none';
    }
}


function dateActivate(div, obj, mode) {
    for(i = 0; i<document.release.length; i++) {
        var id = document.release.elements[i].id;
        if (id == 'se_'+div+'_'+obj) {
            document.release.elements[i].disabled = mode;
        }
    }
    if (!mode) {
        document.getElementById('a_'+ div +'_' + obj).innerHTML = 'disable';
        document.getElementById('a_'+ div +'_' + obj).href = 'javascript: dateActivate(\''+div+'\', \''+obj+'\', true)';
    }
    if (mode) {
        document.getElementById('a_'+ div +'_' + obj).innerHTML = 'enable';
        document.getElementById('a_'+ div +'_' + obj).href = 'javascript: dateActivate(\''+div+'\', \''+obj+'\', false)';
    }
}


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;
}

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 disableButtonsOnSubmit()
{
    $('#shopping_process_form').submit(function(){

        $('.buttons_buy .next')
            .attr('class',    'next_disabled')
            .attr('disabled', 'disabled');

        $('.buttons_buy .purchase')
            .attr('class',    'purchase_disabled')
            .attr('disabled', 'disabled');


        $('.buttons_buy .prev')
            .attr('class', 'prev_disabled');

        $('.buttons_buy .clear')
            .addClass('clear_disabled');


    });
}

function enableSubmitButtonOnRadioClick()
{
    $('#diff_delivery_address :input').click(
        function(){
            $('.buttons_buy .next_disabled')
                .attr('class',    'next')
                .attr('disabled', false);
        }
    );
}*/

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>');

        $('#delivery_details .delivery_info_details .details').click(
            function()
            {
                var id    = $(this).attr('id');
                var index = id.charAt(id.length-1);

                // slidetoggle removed problems with ie7 and jquery v 1.2.6
                 $('#delivery_details .delivery_description').animate({
                    height: "toggle",
                    opacity:"toggle"
                    }, 400);

                return false;
            }
        );
    } 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>');

        $('#delivery_details .payment_info_details .details').click(
            function()
            {
                var id    = $(this).attr('id');
                var index = id.charAt(id.length-1);

                // slidetoggle removed problems with ie7 and jquery v 1.2.6
                 $('#delivery_details .payment_description').animate({
                    height: "toggle",
                    opacity:"toggle"
                    }, 400);

                return false;
            }
        );
    } 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;
}

$(document).ready(
    function(){
        $("input[@type=text]:visible:enabled:first").focus();

        unselectRadioOnFormInput();
        //disableButtonsOnSubmit();
        //enableSubmitButtonOnRadioClick();
        handleTickets();
        handleDeliveryDetails();

        enableDisableButtons(false);
        enableFormValidator();
        if (enableButtonsOnSetGroup() && enableButtonsOnSetSingle()){
            enableDisableButtons(true);
        } else {
        	enableDisableButtons(false);
        }

		// Terms of use for performance page
        toggleTermsOfUse();
		
		// Terms of use for order overview
		handleTermsOfUse();
    }
);
