/* Copyright (c) 2007 Paul Bakaus (paul.bakaus@googlemail.com) and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * $LastChangedDate: 2007-12-20 08:43:48 -0600 (Thu, 20 Dec 2007) $
 * $Rev: 4257 $
 *
 * Version: 1.2
 *
 * Requires: jQuery 1.2+
 */
(function($){
    $.dimensions = {
        version: '1.2'
    };
    $.each(['Height', 'Width'], function(i, name){
        $.fn['inner' + name] = function(){
            if (!this[0]) 
                return;
            var torl = name == 'Height' ? 'Top' : 'Left', borr = name == 'Height' ? 'Bottom' : 'Right';
            return this.is(':visible') ? this[0]['client' + name] : num(this, name.toLowerCase()) + num(this, 'padding' + torl) + num(this, 'padding' + borr);
        };
        $.fn['outer' + name] = function(options){
            if (!this[0]) 
                return;
            var torl = name == 'Height' ? 'Top' : 'Left', borr = name == 'Height' ? 'Bottom' : 'Right';
            options = $.extend({
                margin: false
            }, options ||
            {});
            var val = this.is(':visible') ? this[0]['offset' + name] : num(this, name.toLowerCase()) + num(this, 'border' + torl + 'Width') + num(this, 'border' + borr + 'Width') + num(this, 'padding' + torl) + num(this, 'padding' + borr);
            return val + (options.margin ? (num(this, 'margin' + torl) + num(this, 'margin' + borr)) : 0);
        };
    });
    $.each(['Left', 'Top'], function(i, name){
        $.fn['scroll' + name] = function(val){
            if (!this[0]) 
                return;
            return val != undefined ? this.each(function(){
                this == window || this == document ? window.scrollTo(name == 'Left' ? val : $(window)['scrollLeft'](), name == 'Top' ? val : $(window)['scrollTop']()) : this['scroll' + name] = val;
            }) : this[0] == window || this[0] == document ? self[(name == 'Left' ? 'pageXOffset' : 'pageYOffset')] || $.boxModel && document.documentElement['scroll' + name] || document.body['scroll' + name] : this[0]['scroll' + name];
        };
    });
    $.fn.extend({
        position: function(){
            var left = 0, top = 0, elem = this[0], offset, parentOffset, offsetParent, results;
            if (elem) {
                offsetParent = this.offsetParent();
                offset = this.offset();
                parentOffset = offsetParent.offset();
                offset.top -= num(elem, 'marginTop');
                offset.left -= num(elem, 'marginLeft');
                parentOffset.top += num(offsetParent, 'borderTopWidth');
                parentOffset.left += num(offsetParent, 'borderLeftWidth');
                results = {
                    top: offset.top - parentOffset.top,
                    left: offset.left - parentOffset.left
                };
            }
            return results;
        },
        offsetParent: function(){
            var offsetParent = this[0].offsetParent;
            while (offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && $.css(offsetParent, 'position') == 'static')) 
                offsetParent = offsetParent.offsetParent;
            return $(offsetParent);
        }
    });
    function num(el, prop){
        return parseInt($.curCSS(el.jquery ? el[0] : el, prop, true)) || 0;
    };
    })(jQuery);
/**
 * jquery.simpletip 1.3.1. A simple tooltip plugin
 *
 * Copyright (c) 2009 Craig Thompson
 * http://craigsworks.com
 *
 * Licensed under GPLv3
 * http://www.opensource.org/licenses/gpl-3.0.html
 *
 * Launch  : February 2009
 * Version : 1.3.1
 * Released: February 5, 2009 - 11:04am
 */
(function($){
    function Simpletip(elem, conf){
        var self = this;
        elem = jQuery(elem);
        var tooltip = jQuery(document.createElement('div')).addClass(conf.baseClass).addClass((conf.fixed) ? conf.fixedClass : '').addClass((conf.persistent) ? conf.persistentClass : '').html(conf.content).appendTo(document.body);
        if (!conf.hidden) 
            tooltip.show();
        else 
            tooltip.hide();
        if (!conf.persistent) {
            elem.hover(function(event){
                self.show(event)
            }, function(){
                self.hide()
            });
            if (!conf.fixed) {
                elem.mousemove(function(event){
                    if (tooltip.css('display') !== 'none') 
                        self.updatePos(event);
                });
            };
                    }
        else {
            elem.click(function(event){
                if (event.target === elem.get(0)) {
                    if (tooltip.css('display') !== 'none') 
                        self.hide();
                    else 
                        self.show();
                };
                            });
            jQuery(window).mousedown(function(event){
                if (tooltip.css('display') !== 'none') {
                    var check = (conf.focus) ? jQuery(event.target).parents('.tooltip').andSelf().filter(function(){
                        return this === tooltip.get(0)
                    }).length : 0;
                    if (check === 0) 
                        self.hide();
                };
                            });
        };
        jQuery.extend(self, {
            getVersion: function(){
                return [1, 2, 0];
            },
            getParent: function(){
                return elem;
            },
            getTooltip: function(){
                return tooltip;
            },
            getPos: function(){
                return tooltip.offset();
            },
            setPos: function(posX, posY){
                var elemPos = elem.offset();
                if (typeof posX == 'string') 
                    posX = parseInt(posX) + elemPos.left;
                if (typeof posY == 'string') 
                    posY = parseInt(posY) + elemPos.top;
                tooltip.css({
                    left: posX,
                    top: posY
                });
                return self;
            },
            show: function(event){
                conf.onBeforeShow.call(self);
                self.updatePos((conf.fixed) ? null : event);
                switch (conf.showEffect) {
                    case 'fade':
                        tooltip.fadeIn(conf.showTime);
                        break;
                    case 'slide':
                        tooltip.slideDown(conf.showTime, self.updatePos);
                        break;
                    case 'custom':
                        conf.showCustom.call(tooltip, conf.showTime);
                        break;
                    default:
                    case 'none':
                        tooltip.show();
                        break;
                };
                tooltip.addClass(conf.activeClass);
                conf.onShow.call(self);
                return self;
            },
            hide: function(){
                conf.onBeforeHide.call(self);
                switch (conf.hideEffect) {
                    case 'fade':
                        tooltip.fadeOut(conf.hideTime);
                        break;
                    case 'slide':
                        tooltip.slideUp(conf.hideTime);
                        break;
                    case 'custom':
                        conf.hideCustom.call(tooltip, conf.hideTime);
                        break;
                    default:
                    case 'none':
                        tooltip.hide();
                        break;
                };
                tooltip.removeClass(conf.activeClass);
                conf.onHide.call(self);
                return self;
            },
            update: function(content){
                tooltip.html(content);
                conf.content = content;
                return self;
            },
            load: function(uri, data){
                conf.beforeContentLoad.call(self);
                tooltip.load(uri, data, function(){
                    conf.onContentLoad.call(self);
                });
                return self;
            },
            boundryCheck: function(posX, posY){
                var newX = posX + tooltip.outerWidth();
                var newY = posY + tooltip.outerHeight();
                var windowWidth = jQuery(window).width() + jQuery(window).scrollLeft();
                var windowHeight = jQuery(window).height() + jQuery(window).scrollTop();
                return [(newX >= windowWidth), (newY >= windowHeight)];
            },
            updatePos: function(event){
                var tooltipWidth = tooltip.width();
                var tooltipHeight = tooltip.outerHeight();
                if (!event && conf.fixed) {
                    if (conf.position.constructor == Array) {
                        posX = parseInt(conf.position[0]);
                        posY = parseInt(conf.position[1]);
                    }
                    else 
                        if (jQuery(conf.position).attr('nodeType') === 1) {
                            var offset = jQuery(conf.position).offset();
                            posX = offset.left;
                            posY = offset.top;
                        }
                        else {
                            var elemPos = elem.offset();
                            var elemWidth = elem.outerWidth();
                            var elemHeight = elem.outerHeight();
                            switch (conf.position) {
                                case 'top':
                                    var posX = elemPos.left - (tooltipWidth / 2) + (elemWidth / 2);
                                    var posY = elemPos.top - tooltipHeight;
                                    break;
                                case 'bottom':
                                    var posX = elemPos.left - (tooltipWidth / 2) + (elemWidth / 2);
                                    var posY = elemPos.top + elemHeight;
                                    break;
                                case 'left':
                                    var posX = elemPos.left - tooltipWidth;
                                    var posY = elemPos.top - (tooltipHeight / 2) + (elemHeight / 2);
                                    break;
                                case 'right':
                                    var posX = elemPos.left + elemWidth;
                                    var posY = elemPos.top - (tooltipHeight / 2) + (elemHeight / 2);
                                    break;
                                default:
                                case 'default':
                                    var posX = (elemWidth / 2) + elemPos.left + 20;
                                    var posY = elemPos.top;
                                    break;
                            };
                                                    };
                                    }
                else {
                    var posX = event.pageX;
                    var posY = event.pageY;
                };
                if (typeof conf.position != 'object') {
                    posX = posX + conf.offset[0];
                    posY = posY + conf.offset[1];
                    if (conf.boundryCheck) {
                        var overflow = self.boundryCheck(posX, posY);
                        if (overflow[0]) 
                            posX = posX - (tooltipWidth / 2) - (2 * conf.offset[0]);
                        if (overflow[1]) 
                            posY = posY - (tooltipHeight / 2) - (2 * conf.offset[1]);
                    }
                }
                else {
                    if (typeof conf.position[0] == "string") 
                        posX = String(posX);
                    if (typeof conf.position[1] == "string") 
                        posY = String(posY);
                };
                self.setPos(posX, posY);
                return self;
            }
        });
    };
    jQuery.fn.simpletip = function(conf){
        var api = jQuery(this).eq(typeof conf == 'number' ? conf : 0).data("simpletip");
        if (api) 
            return api;
        var defaultConf = {
            content: 'A simple tooltip',
            persistent: false,
            focus: false,
            hidden: true,
            position: 'default',
            offset: [0, 0],
            boundryCheck: true,
            fixed: true,
            showEffect: 'fade',
            showTime: 150,
            showCustom: null,
            hideEffect: 'fade',
            hideTime: 150,
            hideCustom: null,
            baseClass: 'tooltip',
            activeClass: 'active',
            fixedClass: 'fixed',
            persistentClass: 'persistent',
            focusClass: 'focus',
            onBeforeShow: function(){
            },
            onShow: function(){
            },
            onBeforeHide: function(){
            },
            onHide: function(){
            },
            beforeContentLoad: function(){
            },
            onContentLoad: function(){
            }
        };
        jQuery.extend(defaultConf, conf);
        this.each(function(){
            var el = new Simpletip(jQuery(this), defaultConf);
            jQuery(this).data("simpletip", el);
        });
        return this;
    };
})();

/*lead story carousel scripts*/
(function($){ // Compliant with jquery.noConflict()
    $.fn.leadStoryCarousel = function(o){
        o = $.extend({
            btnContainerSelector: '.lead-stories-header',
            slideContainerSelector: '.slideContainer',
            btnPageNumberClass: 'page',
            btnPrevClass: 'prev',
            btnNextClass: 'next',
            storySelector: '.story',
            storyTransitionOutClass: 'transition-out',
            auto: true,
            maxEntries: 5,
            interval: 4000,
            transitionLength: 700,
            pauseIfOver: true,
            defaultActive: 0,
            onInit: function(o){
                return false;
            },
            onLoad: function(o){
                return false;
            },
            onAfterLoad: function(o){
                return false;
            },
			onAfterButtonsAdded:function() {
				return false;
			},
            onShowSlide: function(num){
                return false;
            },
            onHideSlide: function(num){
                return false;
            },
            parseData: function(data){
                return $(data);
            }
        }, o ||
        {});
        return this.each(function(){
            var obj = $(this);
            var controls = $('<div class="button-controls">').appendTo($(this).find(o.btnContainerSelector));
            var numberOfItems = 0;
            var currentItem = 0;
            var cycle = '';
            var toCycle = true;
            var animateWidth = obj.width();
            var slideContainer = '';
            var slides = '';
            var slideToHide = '';
            var slideToShow = '';
            var animating = false;
            var images = '';
            var isImageLoaded = '';
            o.onInit();
            controls.click(function(e){
                var disableTimer = false;
                var clickTarget = $(e.target);
                if (clickTarget.is('a.page')) {
                    if (currentItem != clickTarget.attr('rel')) {
                        slideTo(clickTarget.attr('rel'));
                    }
                }
                if (clickTarget.is('a.next')) {
                    showNext();
                }
                if (clickTarget.is('a.prev')) {
                    showPrev();
                }
                e.preventDefault();
                return false;
            });
            obj.find('.' + o.btnContainerClass)
            function init(){
				slideContainer = obj.find(o.slideContainerSelector).css({
					'left': 0
				});
				obj.css({
                    'width': animateWidth 
                });
                slides = obj.find(o.storySelector).css('width', animateWidth);
                numberOfItems = slides.length - 1;
                slideContainer.css({
                    'width': animateWidth * 2
                });
				images = obj.find('img.leadstory-image:gt(0)');
                addPageButtons();
				o.onAfterLoad();
                o.onLoad();
            }
            function startTimer(){
                pauseTimer();
				if (o.interval > 0)
                	cycle = window.setTimeout(showNext, o.interval);
            }
            function pauseTimer(){
				if (o.interval > 0)
	                window.clearTimeout(cycle);
            }
            function showNext(){
                var num = currentItem + 1;
                slideTo(num);
            }
            function showPrev(){
                var num = currentItem - 1;
                slideTo(num);
            }
            function slideTo(num){
                num = parseInt(num);
                if (!animating && currentItem != num) {
                    animating = true;
                    slides.hide()
                    slideToShow = obj.find(o.storySelector + ':eq(' + num + ')').show()
                    slideToHide = obj.find(o.storySelector + ':eq(' + currentItem + ')').show()
                    slideContainer.css({
                        'position': 'absolute'
                    });
                    if (num > currentItem) {
                        if (num > numberOfItems) { //if forward was clicked and going back to 1
                            num = 0;
                        }
                        slideToShow = obj.find(o.storySelector + ':eq(' + num + ')').show().css({
                            'position': 'absolute',
                            'left': 310
                        });
                        slideToHide.css({
                            'position': 'absolute',
                            'left': 0
                        });
                        toggleActive(num);
                        slideContainer.animate({
                            'left': '-' + animateWidth
                        }, o.transitionLength, function(){
                            slideEnd(num);
                        });
                    }
                    else 
                        if (num < currentItem) {
                            if (num < 0) {
                                num = numberOfItems;
                            }
                            slideToShow = obj.find(o.storySelector + ':eq(' + num + ')').show().css({
                                'position': 'absolute',
                                'left': 0
                            });
                            slideToHide.css({
                                'position': 'absolute',
                                'left': 310
                            });
                            toggleActive(num);
                            animating = true;
                            slideContainer.css({
                                'left': '-' + animateWidth + 'px'
                            }).animate({
                                'left': 0
                            }, o.transitionLength, function(){
                                slideEnd(num);
                            });
                        }
                }
                return false;
            }
            function slideEnd(num){
                slideToHide.css({
                    'position': 'static',
                    'left': '0px'
                }).hide();
                slideToShow.css({
                    'position': 'relative',
                    'left': '0px'
                });
                slideContainer.css({
                    'left': '0px'
                });
                animating = false;
                if (toCycle) {
                    startTimer();
                }
            }
            function toggleActive(num){
                o.onShowSlide(num);
                o.onHideSlide(currentItem);
                currentItem = num;
                unselectAllButtons();
                controls.find('a.page:eq(' + num + ')').addClass('selected');
            }
            function unselectAllButtons(){
                controls.find('a').removeClass('selected');
            }
            function addPageButtons(){
				var allLoaded = true;	
                isImageLoaded = new Array();
				images.each(function() {
					if (!$(this)[0].complete) {
						allLoaded = false;
					} 
				});
				if(allLoaded) {
					if(controls.html() == "" && numberOfItems > 0) {
						controls.append('<div class="arrow button"><a href="#" class="prev arrow">&laquo;</a></div>');
						for (var i = 0; i <= numberOfItems; i++) {
							lastString = (i==numberOfItems) ? " last" : "" ;
							controls.append('<div class="number button'+lastString+'"><a href="#story-' + i + '" class="page' + ((i == currentItem) ? ' selected' : '') + '" rel="' + i + '">' + (i + 1) + '</a></div>');
						}
						controls.append('<div class="arrow button"><a href="#" class="next arrow">&raquo;</a></div>');
						startTimer();
						o.onAfterButtonsAdded();
					}
					if (o.pauseIfOver && numberOfItems > 0) {
		                obj.mouseover(function(){
		                    pauseTimer();
		                    toCycle = false;
		                }).mouseout(function(){
		                    startTimer();
		                    toCycle = true;
		                });
		            }
				} else {
					window.setTimeout(addPageButtons,3000);	
				}
				return false;
			}
            init();
        });
    };
})(jQuery);

$(document).ready(function(){
    var tooltips = new Array();
	$('.standalone-slideshow').each(function(i,el) {
		if ($(el).find('.standalone-footer').length > 0) {
			$(el).addClass('with-footer');
		}
	});
 	/*if($('.standalone-slideshow .standalone-footer').length > 0) {
 		$('.standalone-slideshow').attr('style', 'height:400px !important');
	} */
		
	$('.rotate').leadStoryCarousel({
		interval:4000,
        onAfterButtonsAdded: function(){
            $('.rotate .button-controls div.number').each(function(i){
				 $(this).simpletip({
				 fixed: true,
				 content: '<div class="tooltip-content">'+$('.rotate .story h1:eq(' + i + ')').text()+"</div>",
				 position: 'bottom',
				 showEffect :'none'
				 });
             });
             $('.rotate .button-controls div.number').eq(0).simpletip().getTooltip().addClass('hidden-tooltip');
        },
        onShowSlide: function(num){
            $('.rotate .button-controls div.number').eq(num).simpletip().getTooltip().addClass('hidden-tooltip').text();
        },
        onHideSlide: function(num){
            $('.rotate .button-controls div.number').eq(num).simpletip().getTooltip().removeClass('hidden-tooltip');
        }
    });
	
});



