/**
 * jQuery horizontalAccordion
 *  
 * @author Ralf Kipfmüller
 * @copyright 2010 CONCEPT IN | MEDIA OUT   
 * @link www.ci-mo.de
 * @version 1.0.1
 *      
 * Licensed under the MIT license:
 * http://www.opensource.org/licenses/mit-license.php
 * Released under the MIT, BSD, and GPL Licenses. 
 *  
 * Date: Mon Mar 11 13:00:00 2011 -0100
 */

;(function (jQuery) {
  var __horizontalAccordionObj=null;
  var __horizontalAccordionAnimationRunning=false;
  var __horizontalAccordionTotalWidth = 0;
  var __horizontalAccordionSpeed=1500;
  var __pendingRequest=null;
  var __useAlpha=true;
  var __useWidth=false;
  
  // initialize first run
  jQuery.fn.horizontalAccordionInitialize = function () {
   jQuery(this).animate(getAnimationParams(false),1).animate(getAnimationParams(true), __horizontalAccordionSpeed, horizontalAccordionAnimationCallBack).delay(2000).animate(getAnimationParams(false),__horizontalAccordionSpeed);
  },
  
  getAnimationParams=function(toggle) {
   var obj  = new Object(); 
   if ( __useAlpha ) obj.opacity=(toggle)?1:0;    
   if ( __useWidth ) obj.width=(toggle)?__horizontalAccordionTotalWidth:0;    
   return obj;  
  },
  
  //
  jQuery.fn.horizontalAccordion = function (toggle) {
    if (  __horizontalAccordionAnimationRunning ) {
      __pendingRequest=toggle;
      return;
    }
    __horizontalAccordionAnimationRunning=true;
   
    var delay=(toggle)?0:500;
    jQuery(this).delay(delay).animate(getAnimationParams(toggle), __horizontalAccordionSpeed, horizontalAccordionAnimationCallBack);
  },
  
  //
  horizontalAccordionAnimationCallBack=function() { 
   __horizontalAccordionAnimationRunning=false;
   if ( __pendingRequest!=null ) {      
    jQuery(__horizontalAccordionObj).horizontalAccordion(__pendingRequest);
    __pendingRequest=null;
   }
  }, 
  
  jQuery.fn.horizontalAccordionInit = function (options) {
    __useAlpha=options.useAlpha;
    __useWidth=options.useWidth;
    __horizontalAccordionSpeed=options.speed>0?options.speed:__horizontalAccordionSpeed;
    // total width
    __horizontalAccordionTotalWidth=jQuery(this).width();
    // innerwrap
    jQuery(this).wrapInner ('<div  id="horizontalAccordionWrapper"></div>');
    // toggle target
    __horizontalAccordionObj=jQuery(this).find('#horizontalAccordionWrapper');
    // mouse events   
    jQuery(this).bind("mouseenter", function () {jQuery(__horizontalAccordionObj).horizontalAccordion(true);}); 
    jQuery(this).bind("mouseleave", function () {jQuery(__horizontalAccordionObj).horizontalAccordion(false);}); 
    // init
    jQuery(__horizontalAccordionObj).horizontalAccordionInitialize();
  };
})(jQuery);


