if (!window.DED) {
  DED = {};
}
(function() {
  var Y = YAHOO.util,
      Event = Y.Event,
      Dom = Y.Dom;
  var onTour = false;
  var getRandomPoint = function() {
  		return [ Math.floor(Math.random() * Dom.getViewportWidth()), 
  		Math.floor(Math.random() * Dom.getViewportHeight()) ];
  };
  var showTour = function(e, o) {
  		Event.stopEvent(e);
  		if ( onTour === true ) {
  			return;
  		}
  		onTour = true;
  		var bee = document.createElement('div');
  		var msg = document.createElement('div');
  		Dom.addClass(msg, 'tour-msg');
  		var x = Dom.getViewportWidth()-50;
  		var y = Dom.getViewportHeight()-50;
  		var counter = 0;
  		var current = [];
  		Dom.setStyle(bee, 'position', 'absolute', 'z-index:99999');
  		Dom.setXY(bee, [0, 0]);
  		bee.id = 'buzzy';
  		Dom.get('tour').appendChild(msg);
  		Dom.get('tour').appendChild(bee);
  		var fn = function() {
  			current = o[counter];
  			var endPoint = Dom.getXY(current.id);
  			var attr = {
  				points : {
  					to : endPoint,
  					control : [getRandomPoint(), getRandomPoint(), getRandomPoint()]
  				}
  			};
  			var a = new Y.Motion(bee, attr, 2, YAHOO.util.Easing.easeOut);
  			a.onStart.subscribe(
  				function() {
  					msg.style.visibility = 'hidden';
  				}
  			);
  			a.onComplete.subscribe(
  				function() {
  					counter++;
  					Dom.setXY(msg, [endPoint[0]+50, endPoint[1]+30]);
  					msg.innerHTML = '<p>'+current.msg+'</p>';
  					msg.style.visibility = 'visible';
  				}
  			);
  			if ( counter < (o.length)-1 ) {
  				window.setTimeout(arguments.callee, 9000);	
  			}
  			else {
  				onTour = false;
  				Dom.get('tour').innerHTML = '';
  			}
  			a.animate();
  		}();
  	};
  	
  	
  	
  	
  	
  	
  	
		
		

		
		var $cookie = jimAuld.utils.cookieLib;
		// get, set, del
		function clearCookie() {
		  if ( $cookie.get('contrast') ) {
		    $cookie.del('contrast');
		  }
	  }
		var toggleContrast = function(e) {
		  Event.preventDefault(e);
		  var b = document.body;
		  if ( Dom.hasClass(b, 'contrast') ) {
		    clearCookie();
		    $cookie.set('contrast', 'false');
		    Dom.removeClass(b, 'contrast');
	    } else {
	      clearCookie();
	      $cookie.set('contrast', 'true');
	      Dom.addClass(b, 'contrast');
      }
		};
		var sizes = ['normal', 'large', 'larger'];
    var scaleBridge = function(e) {
      Event.preventDefault(e);
      var which = this.id.split('-')[1];
      scale(which);
      
    };
    var scale = function(i) {
      var size = sizes[i];
      var b = document.body;
      Dom.replaceClass(b, 'normal', size);
      Dom.replaceClass(b, 'large', size);
      Dom.replaceClass(b, 'larger', size);
    };
		Event.on('tour-bee', 'click', showTour, tourStops);
		Event.on('contrast', 'click', toggleContrast);
		
		Event.on('scale-0', 'click', scaleBridge);
		Event.on('scale-1', 'click', scaleBridge);
		Event.on('scale-2', 'click', scaleBridge);
		Event.onDOMReady(function() {
      if ( $cookie.get('contrast') == 'true' ) {
		    Dom.addClass(document.body, 'contrast');
		  }
	  });

	  var SearchPlay = function(el) {
    	var el = Dom.get(el);
    	var orig = el.defaultValue;
    	var f = function() {
    		if ( el.value == orig ) {
    			el.value = '';
    		}
    	};
    	var b = function() {
    		if ( el.value == '' ) {
    			el.value = orig;
    		}
    	};
    	Event.on(el, 'focus', f);
      Event.on(el, 'blur', b);
    };
    function openLightBoxBridge (e) {
      Event.preventDefault(e);
      var target = Event.getTarget(e, true);
      DED.LightBox.open(this, target);
    }
    
    DED.LightBox = {
      open: function(element, target) {
        var href = element.href;
        if ( target.tagName.toLowerCase() === 'img' ) {
          var bd = document.getElementsByTagName('body')[0];
          var top = (document.documentElement.scrollTop ? 
            document.documentElement.scrollTop :
            document.body.scrollTop);
          var lightbox = Dom.get('lightbox');
          var overlay = Dom.get('overlay');
          Dom.setStyle(overlay, 'width', Dom.getDocumentWidth()+'px');
          Dom.setStyle(overlay, 'height', Dom.getDocumentHeight()+'px');
          
          Dom.setStyle(lightbox, 'top', top+50+'px');
          var img = element.getAttribute('rel');
          lightbox.innerHTML = '<p class="view-photo"><a target="_blank" href="'+ href + '">view photo on flickr</a> | ' + 
          '<a href="#close" onclick="return DED.LightBox.closeBridge();">close [x]</a></p>' + 
          '<p><img id="flickr-photo" onload="DED.LightBox.loaded()" src="'+img+'" alt="" /></p>' + 
          '<p class="photo-title">'+element.getAttribute('title')+'</p>';
          
        }
      },
      close: function() {
        Dom.removeClass(document.getElementsByTagName('body')[0], 'lightbox');
      },
      closeBridge: function(e) {
        DED.LightBox.close();
        return false;
      },
      loaded: function() {
        
        Dom.setStyle('lightbox', 'visibility', 'hidden');
        Dom.addClass(document.body, 'lightbox');
        var w = parseInt(Dom.get('flickr-photo').offsetWidth);
        Dom.setStyle('lightbox', 'left', Dom.getViewportWidth()/2 - (w/2) + 'px');
        Dom.setStyle('lightbox', 'visibility', 'visible');
      }
    };
    var overlay = Dom.get('overlay');
    var lightbox = Dom.get('lightbox');
    Dom.setStyle(overlay, 'width', Dom.getViewportWidth()+'px');
    //var lightboxes = Dom.get('flickr').getElementsByTagName('a');
    //Event.on(lightboxes, 'click', openLightBoxBridge);
    
	  Event.onAvailable('s', SearchPlay, 's');
})();
