
var netopGlobal = {
	initReady: function() {		
		if($('#countries').length) {
			this.countryNav.init();
		}
		if($('#rotator').length) {
			this.rotator.init();	
		}
		this.overlabels.init();
		this.accordions.init();
		this.quicklinks.init();
		this.slider({
		    widthOnUl: 'yes',
		    rotateSpeed: 4000
		});
	},
	initLoad: function() {
		if($('ul#primaryNav').length) {
			this.primaryNav.init();
		}		
	},	
	quicklinks: {
		init: function() {
			$('ul.netopQuickLinks').each(function() {
				var ul = $(this);
				var nav = $('<select></select>');				
				ul.find('li a').each(function() {
					var option = new Option;
					$(option).attr('value',$(this).attr('href')).html($(this).html());
					nav.append(option);
				});
				$(nav).change(function() {
					if(nav.val() != '') {
						document.location.href = '/'+nav.val();						
					}
				})
				ul.after(nav);
				ul.hide();
			});
		}	
	},
	overlabels: {
		init: function() {	
			$("label.overlabel").overlabel();
		}
	},
	primaryNav: {
		init: function() {	
			// we hide these drop-downs on page load for non-js browsers, then show for js browsers 
			// so we can figure the widths.
			$('ul#primaryNav li ul').each(function() {
				$(this).show();
			})
			if($.browser.msie && $.browser.version > 6) {
				var conf = {
					autoArrows: false,
					dropShadows: false,
					speed : 1
				}
			} else {
				// opacity fix for FF2 Mac
				jQuery.each(jQuery.browser, function(i, val) {
				  if(i=="mozilla" && jQuery.browser.version.substr(0,3)=="1.8")
					$('ul#primaryNav').css('opacity', 0.9999);	// fix for opacity bug in mac FF		
				});
				var conf = {
					autoArrows: false,
					dropShadows: false,
					speed: 'fast'
				}
			}
			$('ul#primaryNav').supersubs({
				minWidth: 5,
				maxWidth: 500,
				extraWidth: .5
			}).superfish(conf);
			$('ul#primaryNav li ul').each(function() {
				var elW = $(this).width();
				 if (elW % 2 == 0) {
					// even
				} else {
					elW++;
					$(this).css({width:elW +'px'});					
				}
				$(this).removeClass('hideOnLoad');
			})
		}
	},
	rotator: {
		autoAdvance: true,
		interval: 4000,
		showing: 0,
		rItems: new Array(),
		rControls: new Array(),
		pause: false,
		count: 0,
		init: function() {
			// opacity fix for FF2 Mac
			jQuery.each(jQuery.browser, function(i, val) {
			  if(i=="mozilla" && jQuery.browser.version.substr(0,3)=="1.8")
				$('ul#primaryNav').css('opacity', 0.9999);	// fix for opacity bug in mac FF		
			});
			this.rItems = $('#rotator .rItem');
			this.rControls = $('#rotator .rBottom ul li');
			this.count = this.rItems.size();
			this.setTriggers();
			setTimeout(function() {netopGlobal.rotator.change('advance',true)},netopGlobal.rotator.interval);
		},
		setActiveItem: function(pos) {
			this.rControls.each(function() {
				if($(this).hasClass('active')) $(this).removeClass('active');
			})
			$(this.rControls[pos+1]).addClass('active');
		},
		setTriggers: function() {
			this.rItems.each(function(index) {
				$(this).hover(function(){
					netopGlobal.rotator.pause = true;
				},function(){
					netopGlobal.rotator.pause = false;
				});
			});
			this.rControls.each(function(index) {
				var control = $(this);
				control.netopIndex = index;
				if(control.hasClass('rPrev')) {
					control.click(function() {
						netopGlobal.rotator.rBreak();
						netopGlobal.rotator.change('retreat');
						return false;
					});
				} else if(control.hasClass('rNext')) {
					control.click(function() {
						netopGlobal.rotator.rBreak();
						netopGlobal.rotator.change('advance');
						return false;
					});
				} else {
					control.click(function() {
						if(control.netopIndex - 1 != netopGlobal.rotator.showing) {
							netopGlobal.rotator.rBreak();
							var goTo = index - 1;
							netopGlobal.rotator.change(goTo);
							return false;
						} else {
							return false;
						}
					});					
				}
			});
		},
		rBreak: function() {
			this.autoAdvance = false;
		},
		change: function(action,isAuto) {
			if(!isNaN(parseInt(action))) {
				show = parseInt(action);
			} else {
				if(action == 'advance') {
					var show = this.showing + 1;
				} else if(action == 'retreat') {
					var show = this.showing - 1;
				}				
			}
			if(show < 0) show = this.count - 1;
			if(show == this.count) show = 0;
			if((isAuto != true) || (isAuto == true && this.autoAdvance == true)) {
				// do it
				if(this.pause == false) {
					$(this.rItems[this.showing]).fadeOut();
					$(this.rItems[show]).fadeIn();
					this.setActiveItem(show);
					this.showing = show;
				}
				if(this.autoAdvance == true) {
					setTimeout(function() {netopGlobal.rotator.change(action,true)},netopGlobal.rotator.interval);				
				}
			} 
		}
	},
	accordions: {
		init: function() {
			$('.accordion').each(function() {
				var trigger = $(this).children('.aTop');			
				var height = trigger.height();
				$(this).hover(function(){
					trigger.animate(
						{
							top: (0 - height) +'px'
						},{
							queue: false,
							duration: 'fast',
							easing: 'swing'
						}
					);				
				},function(){
					trigger.animate(
						{
							top: '-29px'
						},{
							queue: false,
							duration: 'fast',
							easing: 'swing'
						}
					);				
				});

			});
		}
	},
	countryNav: {
		init: function() {
			$('#countries').hover(
				function() {$('#countries').addClass('active');},
				function() {$('#countries').removeClass('active');}
			);			
		}
	},
	slider: function(newoptions) {
		var prop = {
			containerselector: '.theslider',
			panelselector: '.thesliderpanel',
			easeTime: 750,
			easeFunc: "easeInOutExpo",
			activeClass: "current",
			rotateClass: "rotator",
			rotateSpeed: 2500,
			starterClass: "starthere",
			leftArrowClass: "slider_leftarrow",
			rightArrowClass: "slider_rightarrow",
			numberNavClass: "slider_numbernav",
			numberNavWrapClass: "slider_numbernavwrap",
			viewportClass: "slider_viewport",
			panelContainerClass: "slider_panelcontainer",
			widthOnUl: 'no'
		}
		var options = {};
		jQuery.extend(options, prop, newoptions);
		jQuery(options.containerselector).each(function(){
			var $currSlider = jQuery(this);
			var numPanels = jQuery('div'+options.panelselector,$currSlider).length;
			var $leftArrow = jQuery('<div class="' + options.leftArrowClass + '"><a href="#"></a></div>');
			var $rightArrow = jQuery('<div class="' + options.rightArrowClass + '"><a href="#"></a></div>');
			$rightArrow.insertAfter($currSlider)
			$leftArrow.insertAfter($currSlider)
			var $numberNav = jQuery('<ul class="' + options.numberNavClass + '"></ul>')
			var defaultSelected=false;
			var currPanel = 1;
			jQuery('div'+options.panelselector,$currSlider).wrapAll('<div class="' + options.viewportClass + '"></div>').wrapAll('<div class="' + options.panelContainerClass + '"></div>').each(function(index){
				if(jQuery(this).hasClass(options.starterClass)){
					defaultSelected=true;
					currPanel=index+1;
				}
				$numberNav.append('<li><a href="#">' + (index+1) + '</a></li>');
			});
			var panelWidth
			if(jQuery.browser.safari){
				panelWidth = $currSlider.attr("rel").length>0 ? $currSlider.attr("rel") : parseInt(jQuery('div'+options.panelselector+':first',$currSlider).outerWidth());
			}else{
				panelWidth = parseInt(jQuery('div'+options.panelselector+':first',$currSlider).outerWidth())
			}
			var $panelContainer = jQuery("div."+options.panelContainerClass,$currSlider)
			jQuery("a:first",$numberNav).addClass(options.activeClass);

			//function to move the panels
			var movePanel = function(panel){
				var leftPos = (panel*panelWidth)*-1;
				$panelContainer.stop().animate({ left: leftPos}, options.easeTime, options.easeFunc);
			};

			//events for numeric nav
			jQuery("a",$numberNav).each(function(index){
				jQuery(this).click(function(){
					jQuery("a",$numberNav).removeClass(options.activeClass);
					jQuery(this).addClass(options.activeClass);
					currPanel = index+1;
					movePanel(index);
					return false;
				});					
			})

			var addclassSelector;

			//left arrow event
			jQuery("a",$leftArrow).click(function(){
				if(currPanel==1){
					currPanel=numPanels;
				}else{
					currPanel--;
				}
				jQuery("a",$numberNav).removeClass(options.activeClass);
				addclassSelector="a:eq(" + (currPanel-1) + ")"
				jQuery(addclassSelector,$numberNav).addClass(options.activeClass);
				movePanel(currPanel-1);
				return false;
			});

			//right arrow event
			jQuery("a",$rightArrow).click(function(){
				if(currPanel==numPanels){
					currPanel=1;
				}else{
					currPanel++;
				}
				jQuery("a",$numberNav).removeClass(options.activeClass);
				addclassSelector="a:eq(" + (currPanel-1) + ")"
				jQuery(addclassSelector,$numberNav).addClass(options.activeClass);
				movePanel(currPanel-1);
				return false;
			});
			$numberNavWrap=jQuery('<div class="' + options.numberNavWrapClass + '"></div>');
			$numberNavWrap.append($numberNav);
			$currSlider.append($numberNavWrap);
			$panelContainer.width(panelWidth*numPanels);

			var navWidth=numPanels*2;

			var setnavWidth = function(){
				jQuery("li",$numberNavWrap).each(function(){
					navWidth+=jQuery(this).width();
				})
				if(options.widthOnUl=='no'){
					$numberNavWrap.width(navWidth);
				}else{
					$numberNavWrap.find("ul").width(navWidth);
				}
			}

			if(jQuery.browser.safari){
				setTimeout(setnavWidth,200)
			}else{
				setnavWidth();
			}
			//selected default code
			if(defaultSelected===true){
				jQuery("a",$numberNav).removeClass(options.activeClass);
				addclassSelector="a:eq(" + (currPanel-1) + ")"
				jQuery(addclassSelector,$numberNav).addClass(options.activeClass);
				var leftstatic = ((currPanel-1)*panelWidth)*-1;
				$panelContainer.css({left: leftstatic+'px'});
			}
			//rotator code
			if($currSlider.hasClass(options.rotateClass)){
				var rotateit = function(){
					if(currPanel==numPanels){
						currPanel=1;
					}else{
						currPanel++;
					}
					jQuery("a",$numberNav).removeClass(options.activeClass);
					addclassSelector="a:eq(" + (currPanel-1) + ")";
					jQuery(addclassSelector,$numberNav).addClass(options.activeClass);
					movePanel(currPanel-1);
				}
				var rotateInterval = setInterval(rotateit,options.rotateSpeed);
				$currSlider.mouseover(function(){
					clearInterval(rotateInterval)
				});
			}
		});
	}
};

$(document).ready(function(){	
	netopGlobal.initReady();
	netopGlobal.initLoad();
});

( function( $ ) {
    // plugin definition
    $.fn.overlabel = function( options ) { 
        // build main options before element iteration
        var opts = $.extend( {}, $.fn.overlabel.defaults, options );
        var selection = this.filter( 'label[for]' ).map( function() { 
            var label = $( this );
            var id = label.attr( 'for' );
            var field = document.getElementById( id ); 
            if ( !field ) return; 
            // build element specific options
            var o = $.meta ? $.extend( {}, opts, label.data() ) : opts;
            label.addClass( o.label_class ); 
            var hide_label = function() { label.css( o.hide_css ) };
            var show_label = function() { this.value || label.css( o.show_css ) }; 
            $( field )
                 .parent().addClass( o.wrapper_class ).end()
                 .focus( hide_label ).blur( show_label ).each( hide_label ).each( show_label ); 
            return this; 
        } );
         return opts.filter ? selection : selection.end();
    };
 
    // publicly accessible defaults
    $.fn.overlabel.defaults = {
        label_class:   'overlabel-apply',
        wrapper_class: 'overlabel-wrapper',
        hide_css:      { 'text-indent': '-10000px' },
        show_css:      { 'text-indent': '0px', 'cursor': 'text' },
        filter:        false 
    };
} )( jQuery );


function theslider(newoptions){

}

