/*
Carusel-Menu
2009.11.16
Dmitrij Sosnovsenko
pietzpluswild.de
*/

function smenu(id,options){
	var id= id;
	var options= options;
	// Menu params
	var menu_elm_w= options.elem_w;
	var menu_eml_h= options.elem_h;
	var menu_elm_count= options.elem_count;


	//Anim params
	var isCarusel= options.carusel;
	var k_a2= 1.2; // Beschleunigung Koeff.
	var min_step= 0.3; // Min. Scroll step
	var max_step= 4; // Max. Scroll step
	var tReady= null;
	var menu_elm_w1= menu_elm_w*menu_elm_count;
	
	create();
	
	var menu_view_w;
	var menu_scroll_w
	var sx_end;
	var center;
	var k_step;
	
	var elm_img_menu;
	var elm_menu_elms;
	
	var menu_pos;
	var mpos_x;
	var mpos_y;
	var lastElementN= 0; // last onOver element
	var currNum= 0;
	
	var isStop= true;
	var isBusy= false;
	var timer= 0;
	
	var sx= 0;
	var dir= 1;
	var sx_step= 1;
	
	$('#img_menu').ready(function(){
		
		$('#menu_elms').css('width',menu_elm_w1*2+4);
		menu_view_w= parseInt($('#img_menu').css('width'));
		menu_scroll_w= parseInt($('#menu_elms').css('width'));

		sx_end= menu_elm_w1-menu_view_w;		
		center= Math.round(menu_view_w / 2);	
		k_step= (k_a2/center).toFixed(3); 

		elm_img_menu= $('#img_menu')[0];
		elm_menu_elms= $('#menu_elms')[0];
	
		// for event onOver
		menu_pos= $('#img_menu').offset();
		$(window).bind('resize',function(e){
			menu_pos= $('#img_menu').offset();
		})
		
		$('#arrow_left')[0].onmouseover= 
		$('#arrow_right')[0].onmouseover= 
			elm_menu_elms.onmouseover= function(evt){
				isStop= false;
				if(tReady == null){
					tReady= setInterval(function(){menuScroll()},15);
				}
				if(this.id == 'arrow_left'){
					dir= 1;
					sx_step= center*k_step*max_step+min_step;
					return;
				}
				if(this.id == 'arrow_right'){
					dir= -1;
					sx_step= center*k_step*max_step+min_step;
					return;
				}
	
				event_onMouseOver(currNum);		
			}//
	
			$('#arrow_left')[0].onmouseout= 
			$('#arrow_right')[0].onmouseout=
			elm_menu_elms.onmouseout= function(evt){
				isStop= true;
				event_onMouseOut(currNum);
			}//
			
		$('#img_menu').bind('mousemove',function(e){
			var x = e.pageX - this.offsetLeft;
			var y = e.pageY - this.offsetTop;
			mpos_x= x;
			mpos_y= y;			
	
			//get beschleunigung		
			dir= (center + menu_pos.left < x) ? -1 : 1;
			var zx= dir*(center + menu_pos.left - x);		 
	 
			var alfa= (zx*k_step).toFixed(2);
			sx_step= (Math.sin(alfa)*max_step+min_step).toFixed(2); // sinusoid
			//sx_step= alfa*max_step+min_step; // linear	
		})
		
	})// ready img_menu
	
	function create(){
		$('#'+id).ready(function(){
			var tmpl= 
			'<div class="menu" style="position:relative;">'+
				'<div id="arrow_left" class="arrow-left arrow-left-out iePNG">&nbsp;</div>'+
				'<div id="img_menu" class="menu" style="position:relative;">'+
					'<div id="menu_elms" style="position:absolute;left:0;"></div>'+
				'</div>'+
				'<div id="arrow_right" class="arrow-right arrow-right-out iePNG">&nbsp;</div>'+
			'</div>';
			
			$('#'+id).html(tmpl);
					
		})// ready options.id
		
		$('#arrow_left').ready(function(){
			try{DD_belatedPNG.fix('.iePNG');}catch(e){}// nur für IE6!
			for(var i=1;i<=menu_elm_count;i++){
				var bg_x= (i-1)*menu_elm_w;
				$('#menu_elms').append('<a href="'+options.elem_url[(i-1)]+'"><div id="menu_elm_'+i+'" class="img-menu-elm menu_'+i+'" style="background-position: -'+bg_x+'px 100%;">&nbsp;</div></a>');
			}
			for(var i=1;i<=menu_elm_count;i++){
				var bg_x= (i-1)*menu_elm_w;
				$('#menu_elms').append('<a href="'+options.elem_url[(i-1)]+'"><div id="menu_elm_'+i+'" class="img-menu-elm menu_'+i+'" style="background-position: -'+bg_x+'px 100%;">&nbsp;</div></a>');
			}

			$('#arrow_left').bind('mouseover',function(){$('#arrow_left')[0].style.backgroundPosition= '0 100%'});
			$('#arrow_left').bind('mouseout', function(){$('#arrow_left')[0].style.backgroundPosition= '0 0'});
			
			$('#arrow_right').bind('mouseover',function(){$('#arrow_right')[0].style.backgroundPosition= '0 100%'});
			$('#arrow_right').bind('mouseout', function(){$('#arrow_right')[0].style.backgroundPosition= '0 0'});
		})// ready img_menu
	}// create
	
	function getElementNum(){
		var mmpos_x= mpos_x - menu_pos.left + parseInt(sx); // mouse pos im menu
		var enn= Math.floor(mmpos_x/menu_elm_w);
		if(enn >= menu_elm_count){enn= enn -menu_elm_count;}// current element number
		return enn;
	}

	var menuScroll= function(){
		if(isStop){return;}
		sx-= dir*sx_step;
		sx= sx.toFixed(2);
		
		if(!isCarusel){
			// Start|<-->|End
			if(sx < 0){sx= 0;}else
			if(sx > sx_end){sx= sx_end;}
		}else{
			// Carusel
			if(sx < 0){sx= menu_elm_w1 - sx;}else
			if(sx > menu_elm_w1){sx= sx - menu_elm_w1;}
		}

		elm_menu_elms.style.left= (-1*sx)+'px';

		// onOver fix
		currNum= getElementNum();
		if(lastElementN != currNum){
			event_onMouseOut(lastElementN);
			event_onMouseOver(currNum);
			lastElementN= currNum;
		}
	}// _menu_scroll
	
	function event_onMouseOver(n){
		var elm= '.menu_'+(n+1);
		var pos= $(elm).css('backgroundPosition');//
		if(pos == 'undefined' || pos == null){pos = $(elm).css("background-position-x");}
		else{pos= pos.split(' ')[0];}
		$(elm).css('backgroundPosition',pos+' 0');
	}

	function event_onMouseOut(n){
		var elm= '.menu_'+(n+1);
		var pos= $(elm).css('backgroundPosition');
		if(pos == 'undefined' || pos == null){pos = $(elm).css("background-position-x");}
		else{pos= pos.split(' ')[0];}
		$(elm).css('backgroundPosition',pos+' 100%');
	}

	
	
}//
