/*
Carusel-Menu
2009.11.16
Dmitrij Sosnovsenko
pietzpluswild.de
*/

function smenu(id,options){
	var id= id;
	var options= options;

	//
	var menu_elm_count= 0;
	var menu_elm_w= 0;
	var menu_eml_h= 0;
	var elm= document.getElementById(id);
	if(!elm){return false;}
	elm= elm.firstChild;
	if(!elm){return false;}
	while(elm){
		if(elm.tagName){
			if(!menu_eml_h){
				menu_eml_h= parseInt($(elm).css('height'),10);
			}
			menu_elm_w+= parseInt($(elm).css('width'),10);
			menu_elm_w+= parseInt($(elm).css('margin-left'),10);
			menu_elm_w+= parseInt($(elm).css('margin-right'),10);
			menu_elm_w+= parseInt($(elm).css('padding-left'),10);
			menu_elm_w+= parseInt($(elm).css('padding-right'),10);
			menu_elm_count++;
		}
		elm= elm.nextSibling;
	}

	var isCarusel= options.carusel;

	//var k_a2= 1.6; // Beschleunigung Koeff.
	var k_a2= 1; // Beschleunigung Koeff.
	var min_step= 1; // Min. Scroll step
	//var max_step= 5; // Max. Scroll step
	var max_step= 2; // Max. Scroll step

	var tReady= null;
	var menu_elm_w1= menu_elm_w; //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;

	//$('#menu_elms_'+id).ready(function(){
	js('menu_elms_'+id).onReady('onDisplay',function(){

		$('#menu_elms_'+id).css('width',menu_elm_w1*2);
		menu_view_w= parseInt($('#'+id).css('width'),10);
		menu_scroll_w= parseInt($('#menu_elms_'+id).css('width'),10);
		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= $('#'+id)[0];
		elm_menu_elms= $('#menu_elms_'+id)[0];

		// for event onOver
		menu_pos= $('#'+id).offset();
		$(window).bind('resize',function(e){
			js('menu_elms_'+id).onReady('onDisplay',function(){
				menu_pos= $('#'+id).offset();
			});
		})

		//$('#'+options.scrollbar_id)[0].onmouseover=
		$('#'+options.arrow_left_id)[0].onmouseover=
		$('#'+options.arrow_right_id)[0].onmouseover=
			elm_menu_elms.onmouseover= function(evt){
				isStop= false;
				if(tReady == null){
					tReady= setInterval(function(){menuScroll()},35);
				}
				if(this.id == options.arrow_left_id ){
					dir= 1;
					sx_step= center*k_step*max_step+min_step;
					return;
				}
				if(this.id == options.arrow_right_id){
					dir= -1;
					sx_step= center*k_step*max_step+min_step;
					return;
				}

				event_onMouseOver(currNum);
			}//

		//$('#'+options.scrollbar_id)[0].onmouseout=
		$('#'+options.arrow_left_id)[0].onmouseout=
		$('#'+options.arrow_right_id)[0].onmouseout=
		elm_menu_elms.onmouseout= function(evt){
			isStop= true;
			event_onMouseOut(currNum);
		}//

		$('#'+id).bind('mousemove',function(e){onMouseMove(e);});
		//$('#'+options.scrollbar_id).bind('mousemove',function(e){onMouseMove(e);})

	})// ready img_menu

	function create(){
		$('#'+id).ready(function(){

			var tmpl=
				'<div id="menu_elms_'+id+'" style="position:absolute;left:0;">'+
					$('#'+id).html()+
					$('#'+id).html()+
				'</div>'+
			'';

			$('#'+id).html(tmpl);

		})// ready options.id
	}//

	function onMouseMove(e){
		var x = e.pageX;
		var y = e.pageY;
		mpos_x= x;
		mpos_y= y;
		//$('#debug').html(x);
		//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
	}//

	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);
		sx= parseInt(sx,10);

		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;
			}
			if(sx > menu_elm_w){sx= menu_elm_w;}
		}

		//$('#debug').html($('#debug').html()+'<br>#: '+sx);
		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%');
		*/
	}



}//

