// JavaScript Document
xSlider = {
	_sliderTikX: 0 ,
	_comboContentX: 0 ,
	_ratio: 0,
	_comboBar: new Object,
	_comboContent: new Object,
	_sliderBar: new Object,
	_sliderTik: new Object,
	
	_sliderBarWidth : 0,
	_comboBarWidth: 0,
	_comboContentWidth: 0,
	
	scroolStep:0,
	
	_initSliderTikPosition : 0,
	_endSliderTikPosition : 0,
	_animationXStep :0,
	_animationFrameRate : 1,
	_animationTimer : 0,
    _slideInitSliderTikPosition: 0,
    _sliderEndSliderTikPosition: 0,
    _animationFrameCounter: 0,
	
	_breakPoint : new Array(),
    _comboBreakPoint : new Array(),
	_section : 0,
	
	_magnetRange : 1000,
    _frameMinSpeed :2 ,
	_direct : 'right',
	
	_sliderTikPageX : 0,
	
	
	init : function(comboBar, comboContent, sliderBar, sliderTik){
		xSlider._comboBar = (comboBar)?comboBar:jQuery("#comboBar");
		xSlider._comboContent = (comboContent)?comboContent:jQuery("#comboContent");
		xSlider._sliderBar = (sliderBar)?sliderBar:jQuery("#sliderBar");
		xSlider._sliderTik = (sliderTik)?sliderTik:jQuery("#sliderTik");

        xSlider._getComboBarWidth();
		xSlider._getComboContentWidth();
		xSlider._getSliderBarWidth();
		xSlider._getSliderTikX();
        xSlider._getSliderBarToRatio();
		xSlider._section = Math.abs(xSlider._comboContentWidth / xSlider._comboBarWidth);
		xSlider.scroolStep = Math.round(xSlider._sliderBarWidth * (1/xSlider._section));
        xSlider._setAnimationXStep();
		xSlider._setBreakPoint();
		xSlider._setComboBreakPoint();

        //init html element event function;
        jQuery("#sliderTik").draggable( {containment:"parent"});

		jQuery("#sliderTik").bind('drag', function(event,ui){
            xSlider._getSliderTikX();
			xSlider._setComboContentX();
            //xSlider.scroolAnimation();
			//xSlider._endSliderTikPosition = xSlider._getSliderTikX();
		});

        jQuery("#sliderTik").bind('dragstart', function(event, ui){
            xSlider._slideInitSliderTikPosition = xSlider._sliderTikX;
            xSlider._initSliderTikPosition = xSlider._slideInitSliderTikPosition;
		});
        
        jQuery("#sliderTik").bind('dragstop', function(event, ui){
            xSlider._slideEndSliderTikPosition = xSlider._getSliderTikX();
            xSlider._slideInitSliderTikPosition = xSlider._initSliderTikPosition
            xSlider._endSliderTikPosition = xSlider._magnetPoistion();
            xSlider.scroolAnimation();
		});

		jQuery("#leftButton").bind("click", function(){
            xSlider._slideInitSliderTikPosition = xSlider._getSliderTikX();
			xSlider._slideEndSliderTikPosition = xSlider._getSliderTikX() - xSlider.scroolStep/2;
            xSlider._endSliderTikPosition = xSlider._magnetPoistion();
			xSlider.scroolAnimation();
		});
		jQuery("#rightButton").bind("click", function(){
            xSlider._slideInitSliderTikPosition = xSlider._getSliderTikX();
            xSlider._slideEndSliderTikPosition = xSlider._getSliderTikX() + xSlider.scroolStep/2;
            xSlider._endSliderTikPosition = xSlider._magnetPoistion();
            
			xSlider.scroolAnimation();
		});

        jQuery("#header a").each(function(i){
			bindFunction = function(i){
				var index = i;
				xSlider._slideInitSliderTikPosition = xSlider._getSliderTikX();
				xSlider._slideEndSliderTikPosition = xSlider._breakPoint[index];
				xSlider._endSliderTikPosition = xSlider._magnetPoistion();
				xSlider.scroolAnimation();
			};
			//alert(xSlider._section);
			sliderBarItemWidth = Math.floor(parseInt(jQuery(xSlider._sliderBar).width())/(xSlider._section+1));
			slideBarItem = jQuery("<li style=\"width:"+ sliderBarItemWidth +"px;  float:left; height:19px; list-style-type: none;\"></li>");
			jQuery(slideBarItem).bind("click", function(){bindFunction(i);});
			jQuery("#sliderBar").append(slideBarItem);
			jQuery(this).bind("click", function(){bindFunction(i);});

        });
		
		
		libraryName = jQuery("#comboContent div").eq(0).attr("rel");
		
		jQuery.get(libraryName, function(content){
			jQuery("#comboContent div").eq(0).html(content);
			jQuery("#comboContent div").each(function(i){
				if (i>0) { 
					var libraryName = jQuery(this).attr("rel");
					//var contentContainer = jQuery(this);
					jQuery.get(libraryName, function(content){jQuery("#comboContent div").eq(i).html(content); jQuery('.product a').lightBox();});
				}
			})
		});
		
		
		jQuery(".scrollbar").show();
	},
	
	_getSliderTikPageX : function(){
		PageLeft = 0;
		PageLeft += parentPageX();
		parentPageX = function(e){
			if (jQuery(e).is(""))
			jQuery();
		}
	},

    _setAnimationXStep:function(){
        xSlider._animationXStep =xSlider.scroolStep * 0.5;
    },

	_setBreakPoint : function(){
		for(var i=0; i<xSlider._section+1; i++){
			xSlider._breakPoint.push(xSlider.scroolStep*i);
		}
	},

    _setComboBreakPoint: function(){
        for(var i=0; i<xSlider._section+1; i++){
			xSlider._comboBreakPoint.push(xSlider._comboBarWidth*i);
		}
    },
	
	_getComboBarWidth:function(){
		xSlider._comboBarWidth = jQuery(xSlider._comboBar).width()
		return xSlider._comboBarWidth;
	},
	
	_getComboContentWidth:function(){
		comboContentWidth = jQuery(xSlider._comboContent).width() - xSlider._comboBarWidth;
		xSlider._comboContentWidth = comboContentWidth;
		return xSlider._comboContentWidth;
	},


    _getSliderBarWidth : function(){
		sliderBarWidth = parseInt(jQuery(xSlider._sliderBar).width()) - parseInt(jQuery(xSlider._sliderTik).width());
		xSlider._sliderBarWidth = sliderBarWidth;
		return xSlider._sliderBarWidth;
	},
	
	_setComboContentX:function(){
		x = xSlider._comboContentWidth * xSlider._getSliderBarToRatio();
		xSlider._comboContentX = parseInt(x);
		jQuery(xSlider._comboContent).css("left", -(Math.abs(xSlider._comboContentX)));
	}, 
    
    _getComboContentX:function(){
        //alert(jQuery(xSlider._comboContent).css("left"));
		return parseInt(jQuery(xSlider._comboContent).css("left"));
	},

	_setSliderTikX: function(x){
		jQuery(xSlider._sliderTik).css("left", x);
        
		xSlider._setComboContentX();
	},
	
	_getSliderTikX: function(){
        //xSlider._sliderTikX = parseInt(document.getElementById("sliderTik").style.left);
		xSlider._sliderTikX = parseInt(jQuery(xSlider._sliderTik).css("left"));
        xSlider._slideInitSliderTikPosition = xSlider._sliderTikX
		return xSlider._sliderTikX;
	},
	
	_getSliderBarToRatio: function(){
		xSlider._ratio = xSlider._sliderTikX / xSlider._sliderBarWidth;
		return xSlider._ratio;
	},
	
	scroolAnimation: function(){

        xSlider._animationFrameCounter++;
		xSlider._initSliderTikPosition =  xSlider._sliderTikX;

		if ( ( xSlider._direct == 'right' && xSlider._initSliderTikPosition >= xSlider._endSliderTikPosition) ||
            ( xSlider._direct == 'left' && xSlider._initSliderTikPosition <= xSlider._endSliderTikPosition) ){
            xSlider.stopAnimation();
			return false;
		}

        var speed = xSlider._animationXStep/xSlider._animationFrameCounter;
        speed = (speed > xSlider._frameMinSpeed)?speed:xSlider._frameMinSpeed;
		
		jQuery('.debug').html("SliderTikX:"+xSlider._initSliderTikPosition+",<br />xSlider._ratio:"+xSlider._ratio+",<br />xSlider._getComboContentX:"+xSlider._getComboContentX()+",<br/>xSlider._animationXStep:"+xSlider._animationXStep+",<br/>speed:"+speed+",<br/>xSlider.scroolStep:"+xSlider.scroolStep);
        
		if (xSlider._endSliderTikPosition > xSlider._initSliderTikPosition){
			xSlider._sliderTikX = xSlider._initSliderTikPosition + speed;
            if (xSlider._sliderTikX>xSlider._endSliderTikPosition)
                xSlider._sliderTikX = xSlider._endSliderTikPosition;
		}else if(xSlider._endSliderTikPosition < xSlider._initSliderTikPosition){
			xSlider._sliderTikX = xSlider._initSliderTikPosition- speed;
            if (xSlider._sliderTikX<xSlider._endSliderTikPosition)
                xSlider._sliderTikX = xSlider._endSliderTikPosition;
		}

		maxWidth = xSlider._getSliderBarWidth();

		if (xSlider._sliderTikX < 0){
			xSlider._sliderTikX = 0;
			xSlider._endSliderTikPosition = xSlider._sliderTikX;
		}else if(xSlider._sliderTikX>maxWidth){
			xSlider._sliderTikX = maxWidth;
			xSlider._endSliderTikPosition = xSlider._sliderTikX;
		}
		
        xSlider._setSliderTikX(xSlider._sliderTikX);
		xSlider._initSliderTikPosition = xSlider._sliderTikX
		xSlider._animationTimer = setTimeout( "xSlider.scroolAnimation()", xSlider._animationFrameRate );
        return false;
		
	},
	
    _magnetPoistion:function(){
        var t = xSlider._slideEndSliderTikPosition;
        var diff = xSlider._slideEndSliderTikPosition - xSlider._slideInitSliderTikPosition;
//        alert(xSlider._slideInitSliderTikPosition);
//        alert(xSlider._slideEndSliderTikPosition);
//        alert("diff:"+diff);
		var i = 0;
        if ( diff > 0 ){
            xSlider._direct = 'right';

            for(i=0; i<xSlider._breakPoint.length; i++){
				
				//alert(xSlider._breakPoint[i]);
                if ( xSlider._breakPoint[i] >= xSlider._slideEndSliderTikPosition ){
                    t = xSlider._breakPoint[i];
					xSlider._labelEffect(i)
                    break;
                }
            }
        }else{
            xSlider._direct = 'left';
            for(i=(xSlider._breakPoint.length)-1; i>=0; i--){
                if ( xSlider._breakPoint[i] <= xSlider._slideEndSliderTikPosition ){
                    t = xSlider._breakPoint[i];
					xSlider._labelEffect(i)
                    break;
                }
            }
        }
		
		;
//        alert(xSlider._direct);
//        alert(t);
//        alert("xSlider.scroolStep:"+xSlider.scroolStep);
//        alert("xSlider._animationXStep:"+xSlider._animationXStep);
        xSlider.stopAnimation();
		_v = (Math.abs(diff)/xSlider.scroolStep);
		//alert(_v);
		//alert(xSlider._animationXStep);
		if ( _v >= 1){
			//_v = 0.5;
			_v = _v/2;
			//xSlider._animationFrameCounter = _v * 56; 
		};
		///alert(_v);
        xSlider._animationXStep = _v * xSlider._animationXStep;
//        alert("xSlider._animationXStep:"+xSlider._animationXStep);
        return t;
    },
    
    _fixComboFrameError : function(){
        tempRange = 0;
        targetPosition = xSlider._getComboContentX();
        //alert("targetPosition:"+targetPosition);
        switch(xSlider._direct){
            case "left":
                //alert(targetPosition);
                for(i=xSlider._comboBreakPoint.length-1; i>=0; i--){
                    //alert(i+":"+xSlider._comboBreakPoint[i]);
                    if(xSlider._comboBreakPoint[i] < Math.abs(xSlider._getComboContentX())){
                        targetPosition = xSlider._comboBreakPoint[i+1];
                        break;
                    }
                }
                break;
            case "right":
                for(i=0; i<xSlider._comboBreakPoint.length; i++){
					//alert(i+":"+xSlider._comboBreakPoint[i]);
                    if(xSlider._comboBreakPoint[i] > Math.abs(xSlider._getComboContentX())){
                        targetPosition = xSlider._comboBreakPoint[i];
                        break;
                    }
                }
                break;
        }
        jQuery(xSlider._comboContent).css("left", -(Math.abs(targetPosition)));
    },

    stopAnimation: function(){
        clearTimeout(xSlider._animationTimer);
        xSlider._fixComboFrameError();
		//alert(xSlider._animationFrameCounter);
        xSlider._animationFrameCounter = 0;
        xSlider._setAnimationXStep();
    },
	
	_labelEffect: function(i){
		jQuery("ul.level1 li").removeClass("active");
		jQuery("ul.level1 li").eq(i).addClass("active");
	}
}
