// JavaScript Document

var scrollWW = function () {	
    
		var config = {
				currentXPos : 0,
				minXpos : -800,
				maxXpos : 0,
		    scrollIncrement : 200,
				scrollSpeed : 1,	
				scrolling : false,
				leftDown : false,
				rightDown : false				
    }		
		
		
		var init = function() { 
				//console.log('initWW');
				setWWEventListeners(); 
				config.currentXPos = document.getElementById("WeatherWarningList").style.left;
				//console.log((parseInt(YAHOO.util.Dom.getElementsByClassName('Warning', 'li').length) * 250) + 'px');
		    document.getElementById('WeatherWarningList').style.width = (parseInt(YAHOO.util.Dom.getElementsByClassName('Warning', 'li').length) * 275) + 'px';
        document.getElementById('WeatherWarningList').style.display = 'block';
		    config.minXpos = -(document.getElementById("WeatherWarningList").style.width.replace(/px/,"")) + 'px';//get list item total widths
	      //console.log(config.minXpos);
	  }
		
		var setWWEventListeners = function() {
				//console.log('setWWEventListeners');
				YAHOO.util.Event.addListener("WWLeftArrow", "mousedown", function(){lftArrowDownHandler();});
				YAHOO.util.Event.addListener("WWLeftArrow", "mouseup", function(){lftArrowUpHandler();});
				YAHOO.util.Event.addListener("WWRightArrow", "mousedown", function(){rgtArrowDownHandler();});
				YAHOO.util.Event.addListener("WWRightArrow", "mouseup", function(){rgtArrowUpHandler();});		
		}
		
		var lftArrowDownHandler = function(e) {
			//console.log('lftArrowDownHandler');
				config.leftDown = true;
				wWScroll(config.scrollIncrement);
		} 
		 	
		var lftArrowUpHandler = function(e) { 
			//console.log('lftArrowUpHandler');	
				config.leftDown = false;
		} 
		 
		var rgtArrowDownHandler = function(e) {
			//console.log('rgtArrowDownHandler');		
				config.rightDown = true;
				wWScroll(-(config.scrollIncrement));
		}		 
		 
		var rgtArrowUpHandler = function(e) {
			//console.log('rgtArrowUpHandler');		
				config.rightDown = false;
		}	
		
		var wWScroll = function(byX) {
			//console.log('wWScroll');
				if (config.scrolling) {
						//console.log('animation in progress');
						return false;
				} else {
					  //console.log('gather attributes');
						config.scrolling = true;
						//console.log(' - config.scrolling : ' + config.scrolling);
						
						config.currentXPos = (document.getElementById("WeatherWarningList").style.left) ? document.getElementById("WeatherWarningList").style.left.replace(/px/,"") : '0';		
						//console.log(' - config.currentXPos : ' + config.currentXPos);			
					
					  //console.log('- byX : ' + byX);
					  //console.log('- minXpos : ' + config.minXpos);
						//console.log('- maxXpos : ' + config.maxXpos);
					
						if((config.currentXPos >= config.maxXpos) && (byX > 0)) {
							//console.log('(config.currentXPos >= config.maxXpos) && (byX > 0) - passed');
							document.getElementById('WWLeftArrowImg').style.display = "none";
							config.scrolling = false;
							return false;
						} else {
							document.getElementById('WWLeftArrowImg').style.display = "block";
							//console.log('(config.currentXPos >= config.maxXpos) && (byX > 0) - failed');
							
							if((config.currentXPos <= config.minXpos) && (byX < 0)) {
									//do nothing;
									document.getElementById('WWRightArrowImg').style.display = "none";
									//console.log('(config.currentXPos <= config.minXpos) && (byX < 0)) - passed');
									//console.log('over or under');
									config.scrolling = false;
									return false;
							}	else {		
							    document.getElementById('WWRightArrowImg').style.display = "block";
									//console.log('in the zone');
									var attributes = {points: { by: [byX, 0] }};
									var anim = new YAHOO.util.Motion('WeatherWarningList', attributes, config.scrollSpeed);
									anim.animate();
	
									//Set Recursive Call
									anim.onComplete.subscribe(function(){wWRecursiveScroll()});
							}
	
					  }
				}
		}
				
		var wWRecursiveScroll = function() {
			  config.scrolling = false;
				if ((config.leftDown) && (config.rightDown)) {
					  //console.log('left right');
						return false;
				} else if(config.leftDown) {
					  //console.log('left');
						wWScroll(config.scrollIncrement);
				} else if(config.rightDown) {
					  //console.log('right');
						wWScroll(-(config.scrollIncrement));	
				} else {
					  //console.log('default');
						return false; 	
				}
		}
	
    return { 
        init: init,
     		lftArrowDownHandler: lftArrowDownHandler,
				lftArrowUpHandler: lftArrowUpHandler,
     		rgtArrowDownHandler: rgtArrowDownHandler,
				rgtArrowUpHandler: rgtArrowUpHandler				
    }
}();

//window.loadFirebugConsole();
scrollWW.init();
