/**
 **********************************************************************************
 *  Global calls
 **********************************************************************************
 */
(function()
{
    /**
     *  Fix IE background image flicker
     *  http://www.mister-pixel.com/
     */
    try
    {
	    document.execCommand('BackgroundImageCache', false, true);
    }
    catch(e) {}
})();

/**
 **********************************************************************************
 *  LouAna namespace
 **********************************************************************************
 */
LouAna = {};

/**
 **********************************************************************************
 *  sIFR
 **********************************************************************************
 */
LouAna.SIFR = {
	init: function()
	{
	    if (typeof sIFR != "function" || $('#home').size() > 0) return;

	    sIFR.replaceElement(".one-column h2, .two-column h2, .excluded h2", named({ sFlashSrc: "flash/avenir-65-medium.swf", sColor: "#e51837", sWmode: "transparent" }));
	    sIFR.replaceElement("#products #content ul li strong", named({ sFlashSrc: "flash/avenir-65-medium.swf", sColor: "#e51837", sWmode: "transparent" }));
	}
};

/**
 **********************************************************************************
 *  Button hover, focus, blur effects. Print button click. Expand/Collapse buttons
 **********************************************************************************
 */
LouAna.Buttons = {
    init: function() {
        var thisClass = this;
        
         $("#overview ul li a[class=disabled], .paging ul li a[class=disabled]").click(function(){ return false; });
        
        // print
        $("#print a").click(function(){
            //if (pageTracker) pageTracker._trackEvent('Recipe', 'Print', window.location.href); // Google Anaylitics event tracking
            
            window.print();
            
            return false;
        });
        
        // expand/collapse
        $("#site-map li ul").hide();
        $("#site-map li:has(ul)").prepend("<strong class=\"col\">Collapsed</strong> ").addClass("parent");
        $("#site-map li strong").click(function(){
            // toggle content visibility
            $(this).siblings("ul").toggle();
            
            // update UI
            $(this).empty();
            if ($(this).attr("class") == "col")
            {
                $(this).removeClass("col");
                $(this).html("Expanded");
                $(this).addClass("exp");
            }
            else
            {
                $(this).removeClass("exp");
                $(this).html("Collapsed");
                $(this).addClass("col");
            }
        });
    }
};

/*
*  Product tabs
*/
LouAna.ProductTabs = {
	init: function()
	{
		$.address.change(function(event)
		{
			$.address.value($(this).attr('href'));

			$('#product-tabs li a').removeClass('active');
			$('.product-panel').hide();

			if (event.value == '/' || $('#' + event.value).length == 0)
			{
				$('#product-tabs li a:first').addClass('active');
				$('.product-panel:first').show();
			}
			else
			{
				$('a[href=#' + event.value + ']').addClass('active');
				$('#' + event.value).show();
			}
		});
	}
};

/*
 * Checkbox validation (used by the venturafoods.core.Validation validation logic)
 */
 var CheckBoxValidation = {
    DisableSubmitButton : function(chkId, mustBeChecked, btnId)
    {
        var button = document.getElementById(btnId);
        var chkbox = document.getElementById(chkId);
        
        if (button && chkbox)
        {
            button.disabled = (chkbox.checked != mustBeChecked);
        }
    },

    EvaluateCheckBoxIsValid : function(val)
    {
        var control = document.getElementById(val.controltovalidate);
        var mustBeChecked = Boolean(val.mustBeChecked == 'true');

        return control.checked == mustBeChecked;
    },

    EvaluateCheckBoxListIsValid : function(val)
    {
        var control = document.getElementById(val.controltovalidate);
        var minimumNumberOfSelectedCheckBoxes = parseInt(val.minimumNumberOfSelectedCheckBoxes);
        var maximumNumberOfSelectedCheckBoxes = parseInt(val.maximumNumberOfSelectedCheckBoxes);

        var selectedItemCount = 0;
        var liIndex = 0;
        var currentListItem = document.getElementById(control.id + '_' + liIndex.toString());
        while (currentListItem != null)
        {
            if (currentListItem.checked) selectedItemCount++;
            liIndex++;
            currentListItem = document.getElementById(control.id + '_' + liIndex.toString());
        }
        
        return ((selectedItemCount >= minimumNumberOfSelectedCheckBoxes) && (selectedItemCount <= maximumNumberOfSelectedCheckBoxes));
    }
}

LouAna.SignUpQuestions = {
    init: function()
    {
        this.setupDOMElements();
        this.setupEventHandlers();
    },
    
    setupDOMElements: function()
    {
        // hide all additional fields
        $('p.please-clarify').hide();
        // show additional fields if corresponding "other" field is checked
        $('.more-info-list-item input').each(function(){
            var input = $(this);
            if (!input.attr('checked')) return;
            $(input.parent().parent().nextAll("p.please-clarify")[0]).show();
        });
    },
    
    setupEventHandlers: function()
    {
        var thisClass = this;
        $('.radio-answer input, .checkbox-answer input').click(function(event){
            var target = $(event.target);
            var parent = target.parent();
            parent = (parent.hasClass('more-info-list-item')) ? parent.parent() : parent;
            if (parent.children('.more-info-list-item').size() == 0) return;
            // only toggle if answer group has "other" option
            thisClass.toggleAdditionalField(target, parent, event.target.type);
        });
    },
    
    toggleAdditionalField: function(el, parent, type)
    {
        var additionalField = $(parent.nextAll("p.please-clarify")[0]); // get first "please clarify/specify" field after answer group
        var isOtherField = el.parent().hasClass('more-info-list-item');
        
        if (isOtherField) // "other" field -> show if checked, hide otherwise
        {
            additionalField[(el.attr('checked')) ? 'show' : 'hide']("normal");
            return;
        }
        if (type == 'checkbox') return;
        additionalField.hide('normal');
    }
};

/**
 **********************************************************************************
 *  methods to run on DOM ready
 **********************************************************************************
 */
$(document).ready(function() {
	LouAna.SIFR.init();
	LouAna.Buttons.init();
	if ($('#southern-fryers').length > 0)
	{
	    LouAna.SignUpQuestions.init();
	}
	if ($('#product-tabs').length > 0)
	{
		LouAna.ProductTabs.init();
	}
});
