// merged from kadabra.js - should be rewritten when possible
// Function to parse querystring parameters
function getArgs() {
    var args = new Object();
    var query = location.search.substring(1);
    var pairs = query.split("&");
    for (var i = 0; i < pairs.length; i++) {
        var pos = pairs[i].indexOf('=');
        if (pos == -1) continue;
        var argname = pairs[i].substring(0, pos);
        var value = pairs[i].substring(pos + 1);
        args[argname] = unescape(value);
    }
    return args;
}

function showChatWindow(obj, w, h) {
    var dim = 'width=' + w + ', height=' + h;
    window.open(obj.href, "_blank", dim);
    return false;
}

function addMega(){ 
    $(this).addClass("hovering"); 
}
function removeMega(){ 
    $(this).removeClass("hovering");
}

var megaConfig = {
    interval: 500,
    sensitivity: 4,
    over: addMega,
    timeout: 500,
    out: removeMega
};

var lastTab = null;
var inactiveTab = null;

function navKadabra(zap) {
        
    var abra = document.getElementById(zap).style;
    var activeTab = document.getElementById(zap + 'A');

    if (lastTab == abra) return true;

    if (lastTab == null) lastTab = document.getElementById('tab1').style;
    if (inactiveTab == null) inactiveTab = document.getElementById('tab1A');

    lastTab.display = "none";
    inactiveTab.className = "inactive";

    abra.display = "block";
    activeTab.className = "active";

    lastTab = abra;
    inactiveTab = activeTab;

    return true
	
}
   
function megaKadabra(zap) {
    var activeTab = document.getElementById(zap);
    if (inactiveTab == null) inactiveTab = document.getElementById('drop1A');
    inactiveTab.className = "inactive";
    activeTab.className = "active";
    inactiveTab = activeTab;
    return true;
}
function selectKadabra(zap) {
    if (document.getElementById) {
        var abra = document.getElementById(zap).style;
        var bkgImg = document.getElementById('setTime');
        if (abra.display == "block") {
            abra.display = "none";
            bkgImg.className="dropBack";
        } else {
            abra.display = "block"
            bkgImg.className="dropBack2";
        }
        return false
        } else {
            return true
        }
}

// end of merged kadabra.js

// homepage carousel
(function () {
    $.fn.infiniteCarousel = function () {
        function repeat(str, n) {
            return new Array( n + 1 ).join(str);
        }

        return this.each(function () {

            var $wrapper = $('.slider_wrap'),
                $slider = $wrapper.find('> ul').width(99999),
                $items = $slider.find('> li'),
                $single = $items.filter(':first')

                singleWidth = 784,
                visible = 1,
                currentPage = 1,
                pages = 6;

            $items.filter(':first').before($items.slice(-visible).clone().addClass('cloned'));
            $items.filter(':last').after($items.slice(0, visible).clone().addClass('cloned'));
            $items = $slider.find('> li');

            $wrapper.scrollLeft(singleWidth * visible);

            function gotoPage(page) {
                var dir = page < currentPage ? -1 : 1,
                    n = Math.abs(currentPage - page),
                    left = singleWidth * dir * visible * n;

                $wrapper.filter(':not(:animated)').animate({
                    scrollLeft : '+=' + left
                }, 300, function () {

                    if (page > pages) {
                        $wrapper.scrollLeft(singleWidth * visible);
                        page = 1;
                    } else if (page == 0) {
                        page = pages;
                        $wrapper.scrollLeft(singleWidth * visible * pages);
                    }

                    currentPage = page;

                    $('.slider_nav a').removeClass('current');
                    $('.slider_nav a').eq(currentPage).addClass('current');

                });
            }

            $('.slider_nav a').click(function() {
                if($(this).hasClass('back')) {
                    gotoPage(currentPage - 1);
                    return false;
                } else if($(this).hasClass('forward')) {
                    gotoPage(currentPage + 1);
                    return false
                } else {
                    pageTarget = $(this).index();
                    gotoPage(pageTarget);
                    return false;
                }
            });

            $(this).bind('goto', function (event, page) {
                gotoPage(page);
            });

            $(this).bind('next', function () {
                gotoPage(currentPage + 1);
            });
        });
    };
})(jQuery);

// tabs interface
(function () {
    $.fn.tabbed = function () {
        this.children('div').addClass('tab_block');
        this.children('a').wrapInner('<span />');
        this.children('a').wrapAll('<div class="tab_nav" />');
        $('.tab_nav a:first-child').addClass('active');
        $('.tab_block').hide();
        $('.tab_nav + .tab_block').show();
        $('.tab_nav a').click(function(){
            $(this).addClass('active').siblings().removeClass('active');
            var tabNumber = $(this).index();
            var tabBlock = $('.tab_block');
            tabBlock.hide().eq(tabNumber).show();
        });
		$('.tab_nav a span').each(function() {
			var targetHeight = $(this).height();
			if(targetHeight > 15) {
				$(this).parent().addClass('double');
			}
		});
    };

})(jQuery);

$(function() {

    // main mav equal column widths & heights
    $('.mega_dropdown').each(function() {
        var menu_count = $('> ul > li',this).length;
        $(this).addClass('nav' + menu_count);
    });
    $('.mega_dropdown > ul > li').each(function() {
        var menu_height = $(this).parent().parent().height();
        $(this).height(menu_height);
    });
    $('.mega_dropdown ul ul:last-child li:last-child a').addClass('last');
    
    // homepage carousel
    var autoscrolling = true;

    if($('.slider').length > 0) {
        $('.slider').infiniteCarousel().mouseover(function () {
            autoscrolling = false;
        }).mouseout(function () {
            autoscrolling = true;
        });
        
        setInterval(function () {
            if (autoscrolling) {
                if(currentPage != 6) {
                    $('.slider').trigger('next');
                }
            }
        }, 4500);
        
    }


    
    //equal height columns for footer in IE
    if($('.no-flexbox').length > 0) {
        var parent = $('footer nav');
        var children = $('footer nav div');
        var h = parent.height();
        children.css('height',h + 'px');
    }
		
    $('.locales_wrapper').click(function(evt) {
        evt.stopPropagation();
    });	
    $('.selector, .map').click(function(e){
        e.stopPropagation();
        $('.locales_wrapper').show();
    });	
    $('body').click(function(evt) {
        $('.locales_wrapper').hide();	
    });
    $('.locale img').click(function() {
        $('.locales_wrapper').hide();		
    });
	    
    // vertically centers the text blurb inside the subhead	   		
    $('#subHead img + div, #subHead2 img + div').each(function() {
       var h = $(this).parent().height();	   
       var inner_h = $(this).height();
       h -= inner_h;
       h /= 2;
       h = Math.floor(h);
       $(this).css('paddingTop',h + 'px');
    });

});

// accordion
function kadabra(zap) {
    var target = $('#'+zap);
    var src = target.prev();
    src.toggleClass('arrowDown arrowUp');
    target.toggle();
}

//sniff for iOS
Modernizr.addTest('ipad', function () { return !!navigator.userAgent.match(/iPad/i); });
Modernizr.addTest('iphone', function () { return !!navigator.userAgent.match(/iPhone/i); });
Modernizr.addTest('ipod', function () { return !!navigator.userAgent.match(/iPod/i); });
Modernizr.addTest('appleios', function () { return (Modernizr.ipad || Modernizr.ipod || Modernizr.iphone); });

$(document).ready(function() {
    if($.browser.msie && $.browser.version <= 7) {
        fixIEDatepicker();
        fixIERadioEvent();
    }
});

//IE7 calendar fix
function fixIEDatepicker() {
    if(!$.datepicker) {
        return;
    }
    
    var genHTML = $.datepicker._generateHTML;
    
    //Extends calendar html creation to remove # anchors
    $.extend(true,$.datepicker,{_generateHTMLOld: genHTML,
                                _generateHTML: function(inst){
                                    var html = this._generateHTMLOld(inst);
                                    html = html.replace(/href="#"/g,'href="javascript:void(0)"');
                                    return html; 
                                }
    });
    
    //Delegates event to handle day selection
    $(document).delegate('.ui-datepicker td > a','click',function() {
        var par = $(this).parent();
        var match = /^DP_jQuery_\d+?\.datepicker._selectDay\(([^)]+?)\);return false;$/.exec(par.attr('onclick'));
        var params = match[1].split(',');
        
        var el = document.getElementById(params[0].replace(/'/g,'').replace(/[\\#]/g,''));
        var p1 = params[1] - 0;
        var p2 = params[2] - 0;
        var td = par[0];
        
        $.datepicker._selectDay(el,p1,p2,td);
    });
    
    //Delegates events to handle month selection
    $(document).delegate('.ui-datepicker-header > a','click',function() {
        var match = /^DP_jQuery_\d+?\.datepicker._adjustDate\(([^)]+?)\);$/.exec($(this).attr('onclick'));

        var params = match[1].split(',');
        
        var el = document.getElementById(params[0].replace(/'/g,'').replace(/[\\#]/g,''));
        
        $.datepicker._adjustDate(el,params[1]-0,params[2].replace(/'|\s/g,''));
    });
}

//IE7 radio event fix
function fixIERadioEvent() {
   $(document).delegate('input[type=radio],input[type=checkbox]','click',function(evt) {
       evt.stopPropagation();
       evt.stopImmediatePropagation();
       eval($(this).attr('onclick'));
   });

   $(document).delegate('input[type=radio],input[type=checkbox]','change',function(evt) {
       evt.stopPropagation();
       evt.stopImmediatePropagation();
       eval($(this).attr('onchange'));
   })
}



