var initCarousels = function(sizeNum) 
{
    carousel = new YAHOO.extension.Carousel("mycarousel", 
        {
            numVisible:        7,
            animationSpeed:    0.7,
            scrollInc:         6,
            navMargin:         12,
            prevElement:       "prev-arrow",
            nextElement:       "next-arrow",
            size:              sizeNum,
            prevButtonStateHandler:   handlePrevButtonState,
            nextButtonStateHandler:   handleNextButtonState
        }
    );   
};

var handlePrevButtonState = function(type, args) {
    var enabling = args[0];
    var leftImage = args[1];
    if(enabling) {
        leftImage.className = "arrow_enabled";	
    }
     else {
        leftImage.className = "arrow_disabled";	
    }
	
};

var handleNextButtonState = function(type, args) {
    var enabling = args[0];
    var rightImage = args[1];
	
    if(enabling) {
        rightImage.className = "arrow_enabled";	
    } else {
        rightImage.className = "arrow_disabled";	
    }
};

function tooltip(){
    var self             = this;
    var element          = null;
    var YUIOverlay       = null; // = new YAHOO.widget.Overlay
    var offset           = []; // Offset from mouse cursor in pixels
    var hideTimeout      = null;
    var isHoverable      = null;
    var constantCoords   = []; // Will bypass all calculated XY coordinates. Leave null if undefined.
    var evTarget         = null;
    var locked           = false;
    
    this.render = function(isHoverable1, offset1){
        isHoverable = (isHoverable1) ? isHoverable1 : false;
        offset = offset1;
        
        YUIOverlay = new YAHOO.widget.Overlay
        (
            "tooltip", 
            {
                visible: false,
                monitorresize: false,
		        iframe: false
            }
        );
        
        YUIOverlay.setHeader(""); 
        YUIOverlay.setBody("");
        YUIOverlay.setFooter("");        
        
        var tooltipContainer = YAHOO.util.Dom.get("tooltipContainer")
        YUIOverlay.render(tooltipContainer);
        element = YAHOO.util.Dom.get("tooltip");
        
        YAHOO.util.Dom.setStyle(element, "position", "absolute");
        YAHOO.util.Dom.setStyle(element, "top", 0);
        
        if (isHoverable){
            YAHOO.util.Event.addListener(element, "mouseover", onMouseOver);
            YAHOO.util.Event.addListener(element, "mouseout", onMouseOut)
        }
    }
    
    this.show = function(evTarget1, ev){
        clearTimeout(hideTimeout);
        if (evTarget==evTarget1) return; // If the event fires from the same target that previously did - don't do anything.
        evTarget=evTarget1;
        setPosition(ev);
    }
    
    this.delayedHide = function(carouselOverlayName, hideDelay){
        hideTimeout = setTimeout(carouselOverlayName+".hide()", hideDelay);               
    }
    
    this.hide = function(){
        clearTimeout(hideTimeout);
        YUIOverlay.hide();
        evTarget = null; 
    }
    
    this.changeContent = function(HTMLContent){
        element.innerHTML = HTMLContent;
        locked = false;
    }
    
    var setPosition = function(ev){
        if (locked) {YUIOverlay.hide(); return};
        locked = true;
        ev = ev || window.event;
        var cursorPos = YAHOO.util.Event.getXY(ev);        
        YUIOverlay.cfg.setProperty("x", cursorPos[0]); 
        
        /*var overlayRight = parseInt(YAHOO.util.Dom.getStyle(element, "left"), 10)+element.offsetWidth;
        var viewportWidth = document.body.offsetWidth;
        var difference = overlayRight - viewportWidth;
        document.title = [overlayRight, viewportWidth, difference];
        if (difference>0){
             var currentX = parseInt(YAHOO.util.Dom.getStyle(element, "left"), 10);
             YAHOO.util.Dom.setStyle(element, "left", currentX-difference+"px");
        }*/
        YUIOverlay.show();
    }
    
    var onMouseOver = function(){
       clearTimeout(hideTimeout); 
    }
    
    var onMouseOut = function(event){
       var containee = YAHOO.util.Event.getRelatedTarget(event);
       if (containee && !containsDOM(element, containee)) self.hide(); 
    }
    
    function containsDOM (container, containee) {
      var isParent = false;
      do {
        if ((isParent = container == containee))
          break;
        containee = containee.parentNode;
      }
      while (containee != null);
      return isParent;
    }
}

