﻿// *** Accordion ***
// Requires a definitional list with pairs of title and data tags
(function($) {
    
    $.fn.accordion = function(options) {
        var opts = $.extend({}, $.fn.accordion.defaults, options);
        return this.each(function(){
            var dt = $('dt', this); var dd = $('dd', this);
            $(dd).hide();
            $(dt).click(function(){
                var i = $(dt).index($(this));
                if((opts.collapse)&&($(dd).eq(i).is(':visible'))){
                    $(dd).eq(i).toggle();
                    $(dt).eq(i).toggleClass(opts.selectedclass);
                }else{
                    $(dd).hide().eq(i).show();
                    $(dt).removeClass(opts.selectedclass).eq(i).addClass(opts.selectedclass);
                }
            });
        });
    };

    $.fn.accordion.defaults = {
        collapse: true,
        selectedclass: 'selected'
    };

})(jQuery);


// *** Clickable panels ***
// Allows you pass an element that contains an anchor (should be a single anchor but defaults to the first) and passes the click event to the entire element

(function($) {
    
    $.fn.clickpanel = function(options) {
        var opts = $.extend({}, $.fn.clickpanel.defaults, options);
        return this.each(function(){
            $(this).click(function(){
                if($('a:eq(0)', this).attr('rel') == opts.rel){
                    window.open($('a:eq(0)', this).attr('href'));return false;
                } else {
                    location.href = $('a:eq(0)', this).attr('href');return false;
                }
            }).css('cursor', opts.cursor);
        });
    };

    $.fn.clickpanel.defaults = {
        cursor: 'pointer',
        rel: 'external'
    };

})(jQuery);


// *** Image Rollover ***
// Expects images to have _off and _on suffix for states - these strings can be altered
(function($) {
    
    $.fn.rollover = function(options) {
        var opts = $.extend({}, $.fn.rollover.defaults, options);
        return this.each(function(){
            $(this).hover(function(){$(this).attr("src", $(this).attr("src").split(opts.strOff).join(opts.strOn))}, function(){$(this).attr("src", $(this).attr("src").split(opts.strOn).join(opts.strOff))});
        });    
    };

    $.fn.rollover.defaults = {
        strOn: '_on',
        strOff: '_off'
    };

})(jQuery);

// *** IE6 PNG fix ***
// Requires setting location of a single transarent pixel gif
// Also uses rollover images with _off and _on suffix for states and class of 'rollover'
// Should be called only from a conditional IE6 script or from a script that checks the browser and version
(function($) {

    $.fn.pngfix = function(options) {
        var opts = $.extend({}, $.fn.pngfix.defaults, options);
        return this.each(function(){
            if ($(this).attr('src')) {
                $(this).css({width: $(this).attr('width'), height: $(this).attr('height'), filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'" + $(this).attr('src') + "\', sizingMethod='" + opts.imagemethod + "')"}).attr('src', opts.imagesource);
                if ($(this).hasClass(opts.hoverclass)){
                    $(this).hover(function(){$(this).css({filter: $(this).css("filter").split('_off').join('_on')})},function(){$(this).css({filter: $(this).css("filter").split('_on').join('_off')})});
                }
            } else {
                var bg = $(this).css('background-image');
                if (bg.indexOf('.png') != -1)
                    $(this).css({backgroundImage: 'none', filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bg.split('url("')[1].split('")')[0] + "', sizingMethod='" + opts.imagemethod + "')"});
            }
        });
    };

    $.fn.pngfix.defaults = {
        imagesource: '/Common/Images/x.gif',
        imagemethod: 'scale',
        hoverclass: 'rollover'
    };

})(jQuery);

// *** SWF video player change
(function($) {
    $.fn.videoplay = function(options) {
        var opts = $.extend({}, $.fn.videoplay.defaults, options);
        return this.each(function(){
            $(this).click(function(){
                var swfSrc = opts.swf + '?movie=' + $(this).attr('href') + '&autoplay=' + opts.autoplay;
                var so = new SWFObject(swfSrc, "ChannelVideo", opts.width, opts.height, opts.version, opts.background);
                so.addParam("wmode", "transparent");
                so.addParam("allowFullScreen",opts.fullscreen);
                so.write(opts.player);
                return false;
            });
        });
    };

    $.fn.videoplay.defaults = {
        swf: '/Common/Flash/video.swf',
        player: 'videoPlayer',
        width: 480,
        height: 320,
        version: 9,
        background: '#000000',
        autoplay: 'true',
        fullscreen: 'false'
    };

})(jQuery);

// Cookie functions

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

$(document).ready(function() {
    $("a[href][rel='external']").attr("target","_blank");
    
    // List even & odd classes
    $('ul,ol').each(function(){
        $('li:even', this).addClass('even');
        $('li:odd', this).addClass('odd');
    });
    
    // Analytics tracker for files, media and internal layers
    $("a[href][rel='file']").attr("target","_blank").click(function(){gaEvent('file',$(this).attr('href'));});
    $("a[href][rel='media']").click(function(){gaEvent('media',$(this).attr('href'));});
    $("a[href][rel='internal']").click(function(){gaEvent('internal',$(this).attr('href'));});
    
    function gaEvent(t,l){
        try {
            urchinTracker('/'+t+l);
        }
        catch (err){
        }
    }
});

// *** Firebug fix ***
if (!window.console || !console.firebug){
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml","group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
    window.console = {};
    for (var i = 0; i < names.length; ++i)
        window.console[names[i]] = function() {}
}
