﻿/* Copyright (c) 2010 
 * $Author: Jeff Tucker
 * $LastChangedDate: 2010-10-18 $
 * $Rev: 6 $
 *
 * Version 0.1
 */
(function($){$.fn.heroNav=function(w,x){var y={startingIndex:-1,heroLinksSelector:'a.heroNav_hero',navTilesSelector:'li.heroNav_tile',arrowSelector:'img.heroNav_arrow',arrowEasing:'swing',transitionSpeed:750,transitionFade:500,transitionDelay:4000};var z=function(f,g){var h=$(f);var i=0;var j=false;var k,_heroes,_tiles,_pntr,_restart;k=$.extend(y,(g||{}));var l=function(a){return $(_tiles[((a>=_tiles.length)?0:(a<0?0:a))])};var m=function(){if(_restart!==null){clearTimeout(_restart);_restart=null}_heroes.stop(true,true);_pntr.stop(true,true)};var n=function(a){j=!(a===false)};var o=function(){m();n(false);_restart=setTimeout(p,k.transitionDelay)};var p=function(){if(!j){s(l(i+1),p)}};var q=function(a){n();m();r(a)};var r=function(c){if(c.data().hero.data().loaded){i=c.data().idx;var d=c.position().left;_pntr.animate({left:d},{duration:1});_heroes.each(function(a){var b=$(this);if(a==i){b.show()}else{b.hide()}})}};var s=function(b,c){if(b.data().hero.data().loaded){i=b.data().idx;var d=b.position().left;var e=(i===0);_pntr.animate({left:d},{duration:(e?1:k.transitionSpeed),easing:k.arrowEasing,complete:function(){_heroes.each(function(a){if(a==i){$(this).fadeIn(k.transitionFade)}else{$(this).hide()}})}});_pntr.animate({left:d},{duration:(((i==(_tiles.length-1)||i===0)?1.25:1)*k.transitionDelay),easing:k.arrowEasing,complete:c})}};var t=function(a,b){var c=_heroes[a];if(c){$(c).data("loaded",b)}};var u=function(){n();q($(this))};var v=function(){_heroes=h.find(k.heroLinksSelector);_tiles=h.find(k.navTilesSelector);if(_tiles.length!=_heroes.length){throw'Hero banner count must match nav tile count';}_pntr=h.find(k.arrowSelector).hide();if(k.startingIndex>0){_pntr.css({left:(l(k.startingIndex).position().left)+'px'})}_pntr.show();_heroes.each(function(a){var b=$(this);var c=b.find('img');if(c.length===0){b.data({loaded:false});var d=b.text();if(d&&d.length>0){b.empty().data({loaded:false});$('<img />').bind('load',function(){t(a,true)}).bind('error',function(){t(a,false)}).attr('src',d).attr('alt',b.attr('title')).appendTo(b);b.attr('title','')}}else{b.data({loaded:true})}if(a!=k.startingIndex){b.hide()}});_tiles.each(function(b){var c=$(this);var d=$(_heroes[b]);d.data("tile",c);c.data({idx:b,hero:d});c.bind('click',function(){var a=$(this).find('a');if(a.length>0){window.location=a.attr('href')}})});_heroes.hover(n,o);_tiles.hover(u,o);if(k.startingIndex>0){r(l(k.startingIndex));_restart=setTimeout(o,(1.5*k.transitionDelay))}else{_restart=setTimeout(o,(1*k.transitionDelay))}};return{controller:{init:function(){v()}},api:{goToTile:function(a){q(l(a))},resume:function(){o()}}}};return this.each(function(){var a=this;var b=!(a.HeroNav===undefined||a.HeroNav===null);if(w===undefined||w===null){w={}}if(w.constructor==String){if(b){switch(w){case'goToTile':a.HeroNav.goToTile(x);break;case'resume':a.HeroNav.resume();break;default:return}}return}if(!b){var c=z(a,w);a.HeroNav=c.api;c.controller.init()}})}})(jQuery);
