/*
 * How to call a function for a specific page
 * 
 * HALO.general.functionName($("#sender"));
 */


var HALO = {};
$(document).ready(function() {
	$.extend(
		HALO,
		{
			general:{
				marginRightFix:function(sender)
				{
					sender.addClass("marginRightFix");
				},
				
				popitup:function(url, height, width)
				{	
					newwindow=window.open(url,'name','height=' + height + ',width=' + width +'');
					if (window.focus) {newwindow.focus()}
					return false;
				},
				
				tabs:function(sender)
				{
					sender.tabs();
				},
				
				carousel:function(sender, visible)
				{
					sender.jCarouselLite({
					    btnNext: sender + " .btn_next",
					    btnPrev: sender + " .btn_prev",
					    visible: visible
					});
				},
				
				altRowColors:function(sender)
				{
					sender.addClass("altBg");
				},
				
				dateFormat:function(sender)
				{
					$('.date.format').each(function(){					
						var month = parseInt($(this).text()) - 1; // Subtracting one from the month because array is base 0
						var months = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
						
						if(month + 1 >= 10) {
							var day = parseInt($(this).text().substring(3));
							if(day > 9) {
								var year = parseInt($(this).text().substring(6));
							} else {
								var year = parseInt($(this).text().substring(5));
							}
						} else {
							var day = parseInt($(this).text().substring(2));
							if(day > 9) {
								var year = parseInt($(this).text().substring(5));
							} else {
								var year = parseInt($(this).text().substring(4));
							}
						}
						
						$(this).text("");
						$(this).append('<span class="month">' + months[month] + '</span> <span class="day">' + day + '</span>'); 
					});
				},
				
				equalHeight:function(group)
				{
					tallest = 0;
					group.each(function() {
						thisHeight = 0;
						thisHeight = $(this).height();
						if(thisHeight > tallest) {
							tallest = thisHeight;
						}
					});
					group.height(tallest);
				},	//equalheight
				
				pngfix:function() 
				{
					DD_belatedPNG.fix('#contentSpace, #headerDiscoWidget, #commStatus');
				},
				
				mediaplayer:function()
				{
					var flashvars = {};
					flashvars.xml_url = "/xml/main_streaming.xml";
					
					var params = {};
					params.menu = "false";
					params.bgcolor = "#FFFFFF";
					params.wmode = "transparent";
					params.allowscriptaccess = "always";
					params.allowfullscreen = "true";
					
					var attributes = {};
					attributes.id = "player";
					attributes.name = "player";
					/* swfobject.embedSWF(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj) */
					swfobject.embedSWF("/preloadMain.swf", attributes.id, "515px", "56px", "9.0.45","/shared/js/swfobject/expressinstall.swf", flashvars, params, attributes);
				},
				
				external:function()
				{
					 if (!document.getElementsByTagName) return;  
					 var anchors = document.getElementsByTagName("a");  
					 for (var i=0; i<anchors.length; i++) {  
					   var anchor = anchors[i];  
					   if (anchor.getAttribute("href") &&  
						   anchor.getAttribute("rel") == "external")  
						 anchor.target = "_blank";  
					 }  
				},
				
				test:function()
				{
					alert('Working');	
				},
				
				fader:function()
				{
					$('.thumbnail').fader({
						selectors: ".toolTip .btnPlay",
						fadein: 1,
						fadeout: 0
					});
				}, //fader
				
				backgroundCheck:function()
				{
					if ($('.contentContainer').length) {
						$('#mainCol').css('background', 'none');	
					}
				},
				
				carousel:function()
				{
					if ($('.slideShow').length) {
						$('.slideShow').jCarouselLite({
							visible: 1,
							start: 0,
							btnNext: "#btn_next",
							btnPrev: "#btn_prev",
							btnGo:	["#pager .slide_1", "#pager .slide_2", "#pager .slide_3", "#pager .slide_4"]
						});
					}
				},
				
				carouselAltFix:function()
				{
					if ($('.slideShow').length) {
						$('#altCol #photos .slideShow img').each(function(){
							$(this).css({
								'margin-left':	($(this).parent().parent().width() - $(this).width())/2 - 3,
								'margin-top':	($(this).parent().parent().height() - $(this).height())/2 - 3
							})
						});
					}
				},
				
				carouselButtons:function()
				{
					if ($('.slideShow').length) {
						$('#btn_prev, #btn_next').click(function(){
							$('#altCol #photos .slideShow img').each(function(){
								$(this).css({
									'margin-left':	($(this).parent().parent().width() - $(this).width())/2 - 3,
									'margin-top':	($(this).parent().parent().height() - $(this).height())/2 - 3
								})
							})
						});	
					}
				}
			}
		}
	)
	
	//HALO.general.mediaplayer();
	HALO.general.external();
	HALO.general.backgroundCheck();
	HALO.general.carousel();
	HALO.general.carouselAltFix();
	HALO.general.carouselButtons();
	HALO.general.fader();
});

/*
*
* jQuery.fader 1.0
* jQuery JavaScript Library v1.3.2
* http://jquery.com/
*
* Copyright (c) 2009 Halo Media LLC.
* http://halopowered.com
*
*
* Example
* $('.box').fader({
*    time: 300,
	 selectors: ".info, .timer"
* });
*
*/

(function($){
	$.fn.fader = function(options) {
		var
		  defaults = {
		  	time: 300,
			selectors: null,
			fadeout: 1,
			fadein: 1
		  },
		  settings = $.extend({}, defaults, options);
		  
		  this.each(function() {
		  	var $this = $(this);
			
			$this.hover(function(){
				$this.find(settings.selectors).stop().animate({ 
					opacity: settings.fadein
			    }, settings.time );							   
			}, function() {
			  	$this.find(settings.selectors).stop().animate({ 
					opacity: settings.fadeout
				  }, settings.time );
			});
		  });
		  // returns the jQuery object to allow for chainability.
		  return this;
	}
})(jQuery);
/* END jQuery Fader */

(function($) {                                          // Compliant with jquery.noConflict()
$.fn.jCarouselLite = function(o) {
    o = $.extend({
        btnPrev: null,
        btnNext: null,
        btnGo: null,
        mouseWheel: false,
        auto: null,

        speed: 200,
        easing: null,

        vertical: false,
        circular: true,
        visible: 3,
        start: 0,
        scroll: 1,

        beforeStart: null,
        afterEnd: null
    }, o || {});

    return this.each(function() {                           // Returns the element collection. Chainable.

        var running = false, animCss=o.vertical?"top":"left", sizeCss=o.vertical?"height":"width";
        var div = $(this), ul = $("ul", div), tLi = $("li", ul), tl = tLi.size(), v = o.visible;

        if(o.circular) {
            ul.prepend(tLi.slice(tl-v-1+1).clone())
              .append(tLi.slice(0,v).clone());
            o.start += v;
        }

        var li = $("li", ul), itemLength = li.size(), curr = o.start;
        div.css("visibility", "visible");

        li.css({overflow: "hidden", float: o.vertical ? "none" : "left"});
        ul.css({margin: "0", padding: "0", position: "relative", "list-style-type": "none", "z-index": "1"});
        div.css({overflow: "hidden", position: "relative", "z-index": "2", left: "0px"});

        var liSize = o.vertical ? height(li) : width(li);   // Full li size(incl margin)-Used for animation
        var ulSize = liSize * itemLength;                   // size of full ul(total length, not just for the visible items)
        var divSize = liSize * v;                           // size of entire div(total length for just the visible items)

        li.css({width: li.width(), height: li.height()});
        ul.css(sizeCss, ulSize+"px").css(animCss, -(curr*liSize));

        div.css(sizeCss, divSize+"px");                     // Width of the DIV. length of visible images
		
		
        if(o.btnPrev)
            $(o.btnPrev).click(function() {
				var _curr = curr;
				
				if(1 < _curr) 
				{
					_curr--;
				}
				else _curr = _curr + o.btnGo.length - 1;
				var currentSlide = '.slide_' + (_curr);
				$('#altCol #photosAlt .nav_slide #pager a').removeClass('activeSlide');
				$(currentSlide).addClass('activeSlide');
				//alert(currentSlide);
                return go(curr-o.scroll);
            });

        if(o.btnNext)
            $(o.btnNext).click(function() {
				var _curr = curr;
				if(curr < o.btnGo.length) _curr++;
				else _curr = _curr - o.btnGo.length+1;
				var currentSlide = '.slide_' + (_curr);
				$('#altCol #photosAlt .nav_slide #pager a').removeClass('activeSlide');
				$(currentSlide).addClass('activeSlide');
				//alert(currentSlide);
                return go(curr+o.scroll);
            });

        if(o.btnGo)
            $.each(o.btnGo, function(i, val) {
                $(val).click(function() {
					$('#altCol #photosAlt .nav_slide #pager a').removeClass('activeSlide');
					$(this).addClass('activeSlide');
                    return go(o.circular ? o.visible+i : i);
                });
            });

        if(o.mouseWheel && div.mousewheel)
            div.mousewheel(function(e, d) {
                return d>0 ? go(curr-o.scroll) : go(curr+o.scroll);
            });

        if(o.auto)
            setInterval(function() {
                go(curr+o.scroll);
            }, o.auto+o.speed);

        function vis() {
            return li.slice(curr).slice(0,v);
        };

        function go(to) {
            if(!running) {

                if(o.beforeStart)
                    o.beforeStart.call(this, vis());

                if(o.circular) {            // If circular we are in first or last, then goto the other end
                    if(to<=o.start-v-1) {           // If first, then goto last
                        ul.css(animCss, -((itemLength-(v*2))*liSize)+"px");
                        // If "scroll" > 1, then the "to" might not be equal to the condition; it can be lesser depending on the number of elements.
                        curr = to==o.start-v-1 ? itemLength-(v*2)-1 : itemLength-(v*2)-o.scroll;
                    } else if(to>=itemLength-v+1) { // If last, then goto first
                        ul.css(animCss, -( (v) * liSize ) + "px" );
                        // If "scroll" > 1, then the "to" might not be equal to the condition; it can be greater depending on the number of elements.
                        curr = to==itemLength-v+1 ? v+1 : v+o.scroll;
                    } else curr = to;
                } else {                    // If non-circular and to points to first or last, we just return.
                    if(to<0 || to>itemLength-v) return;
                    else curr = to;
                }                           // If neither overrides it, the curr will still be "to" and we can proceed.

                running = true;

                ul.animate(
                    animCss == "left" ? { left: -(curr*liSize) } : { top: -(curr*liSize) } , o.speed, o.easing,
                    function() {
                        if(o.afterEnd)
                            o.afterEnd.call(this, vis());
                        running = false;
                    }
                );
                // Disable buttons when the carousel reaches the last/first, and enable when not
                if(!o.circular) {
                    $(o.btnPrev + "," + o.btnNext).removeClass("disabled");
                    $( (curr-o.scroll<0 && o.btnPrev)
                        ||
                       (curr+o.scroll > itemLength-v && o.btnNext)
                        ||
                       []
                     ).addClass("disabled");
                }

            }
            return false;
        };
    });
};

function css(el, prop) {
    return parseInt($.css(el[0], prop)) || 0;
};
function width(el) {
    return  el[0].offsetWidth + css(el, 'marginLeft') + css(el, 'marginRight');
};
function height(el) {
    return el[0].offsetHeight + css(el, 'marginTop') + css(el, 'marginBottom');
};

})(jQuery);


