// JavaScript Document

var handler_server = 'h_server.php';

var state_lock=0;
var state_div = 1;
var show_div_due = 0;
var s_n = -1;
var links_lock=0;


function init(){
	new Effect.toggle( 'sys_div_1', 'appear',{
			afterFinish: function(){
				new Effect.toggle( 'sys_div_2', 'appear',{
						afterFinish: function(){
							update_fader('index_main','dispatcher.php','req=get_list&style=def&display=dis&pag=1','sys_div_2');		
						}
					}
				);
			}	
		}
	);		
};


function init_locks(trg_div){
	//alert(trg_div);
		
		new Effect.toggle(	trg_div, 'appear',{duration:0});
}



function lock_state(trg_div){
	if(state_lock==1){ return 0;}
	if(state_lock==0){
		state_lock=1;
		new Effect.toggle(
				trg_div, 
				'appear',
				{ 
					delay: 0.2, 
					queue: 'end',
					beforeStart: function() {
						$(trg_div).innerHTML = '<b><font color=\'red\'>busy</font>...please wait</b>' +
												'<br/>(buttons disabled until ready)'
												;
					}
				}
		);
		return 1;
	}
	return 0;
};

function unlock_state(trg_div){
	if(state_lock==1){
		new Effect.toggle(
				trg_div, 
				'appear',
				{ 
					delay: 0, 
					queue: 'end',
					beforeStart: function() {
						$(trg_div).innerHTML = '<b>ready.</b>'+
												'<br/>(...restarting buttons)';
					},
					afterFinish: function() {
						state_lock = 0;
					}
				}
		);
		
		return 1;
	}
	return 0;
};

function lock_links(trg_div){
	if(links_lock==1){ return 0;}
	if(links_lock==0){
		links_lock=1;
		new Effect.toggle(
				trg_div, 
				'appear',
				{ 
					delay: 0, 
					queue: {position:'end', scope:'links_queue'},
					duration: 0.1,
					beforeStart: function() {
						$(trg_div).innerHTML = '<b><font color=\'red\'>busy</font>...please wait</b>';
					}
				}
		);
		return 1;
	}
	return 0;
};

function unlock_links(trg_div){
	if(links_lock==1){
		new Effect.toggle(
				trg_div, 
				'appear',
				{ 
					delay: 0, 
					queue: {position:'end', scope:'links_queue'},
					duration: 0.3,
					beforeStart: function() {
						$(trg_div).innerHTML = '<b>ready.</b>';
					},
					afterFinish: function() {
						links_lock = 0;
					}
				}
		);
		
		return 1;
	}
	return 0;
};

function sl_r(uno,due,hl,s){
	if(1==lock_state(s)){
		if(s_n==3){
			s_n=0;
		}else{
			s_n=s_n + 1;
		}
		//alert(s_n+"!");
		if(show_div_due==0){
			trgt = due;
		}else{
			trgt = uno;
		}
		new Ajax.Updater(
				trgt,
				handler_server + "?req=" + s_n + "&dir=r",
				{
					method: "GET",
					onComplete: function(){
							slide_r(uno,due,hl,s);
						}
				}
			);
		
	}
};

function sl_l(uno,due,hl,s){
	if(1==lock_state(s)){
		if(s_n==0 || s_n==-1){
			s_n=3;
		}else{
			s_n=s_n - 1;
		}
		//alert(s_n+"!");
		if(show_div_due==0){
			trgt = due;
		}else{
			trgt = uno;
		}
		new Ajax.Updater(
				trgt,
				handler_server + "?req=" + s_n + "&dir=r",
				{
					method: "GET",
					onComplete: function(){
							slide_l(uno,due,hl,s);
						}
				}
			);
		
	}
};


function slide_r(uno,due,hl,s){
			//if(1==lock_state(s)){
				//alert("state1");
				if(show_div_due == 1){
					var tmp = uno;
					uno = due;
					due = tmp;
					show_div_due = 0;
				}else{
					show_div_due++;
				}
				if(hl=='_hl' || hl=='_h2'){
					new Effect.Highlight( uno,{queue: 'parallel', duration: 0.2});
					
				}
				//$(s).innerHTML = '<b><font color=\'red\'>busy</font><font color=\'white\'>...please wait</font></b>';
				new Effect.Move( uno, {
					x: 490, y:120, mode: 'absolute', delay: 0.2, queue: 'parallel', duration: 0.4,
					
					afterFinish: function() { 
						new Effect.Move (
							due, 
							{ 
								x: 250, 
								y:120, 
								mode: 'absolute',  
								queue: 'parallel', 
								duration: 0.4,
								afterFinish: function() {
									if(hl=='_h2'){
										new Effect.Highlight( due,{queue: 'parallel', duration: 0.2});
									}
								}
							}
						);
						//obscure(uno);
						
						new Effect.toggle(uno, 'appear',{ 
							queue: 'end',
							beforeUpdate: function() {
								$(uno).morph('left: 15px ');
								},
							afterFinish: function() {
									new Effect.toggle(uno, 'appear',{ 
												  delay: 0.2, queue: 'end',
													  afterFinish: function() {
														  ret = unlock_state(s);
														 // $(s).innerHTML = '<b><font color=\'white\'>ready.</font></b>';
													  	}
												  });
									}
							 });
						
						
					}
				});
			//}
		};
		
function slide_l(uno,due,hl,s){
			//if(1==lock_state(s)){
				if(show_div_due == 1){
					var tmp = uno;
					uno = due;
					due = tmp;
					show_div_due = 0;
				}else{
					show_div_due++;
				}
				if(hl=='_hl' || hl=='_h2'){
					new Effect.Highlight( uno,{queue: 'parallel', duration: 0.2});
					
				}
				//$(s).innerHTML = '<b><font color=\'red\'>busy</font><font color=\'white\'>...please wait</font></b>';
				new Effect.Move( uno, {
					x: 45, y:120, mode: 'absolute', delay: 0.2, queue: 'parallel', duration: 0.4,
					
					afterFinish: function() { 
						new Effect.Move (
							due, 
							{ 
								x: 250, 
								y:120, 
								mode: 'absolute',  
								queue: 'parallel', 
								duration: 0.4,
								afterFinish: function() {
									if(hl=='_h2'){
										new Effect.Highlight( due,{queue: 'parallel', duration: 0.2});
									}
								}
							}
						);
						//obscure(uno);
						
						new Effect.toggle(uno, 'appear',{ 
							queue: 'end',
							beforeUpdate: function() {
								$(uno).morph('left: 450px');
								},
							afterFinish: function() {
									new Effect.toggle(uno, 'appear',{ delay: 0.2, queue: 'end',
													  afterFinish: function() {
														  ret = unlock_state(s);
														  //$(s).innerHTML = '<b><font color=\'white\'>ready.</font></b>';
													  	}
													 });
								}
							 });
						
						
					}
				});
			//}
		};
		
	
		function update_fader_simple(div,server,pars){
            new Effect.Opacity( div, {
               queue: {position:'end', scope:'upd_simple_queue'},
               duration: 0.4,
               from: 1,
               to: 0,
               afterFinish: function() { 
						$(div).innerHTML = "&nbsp;";
						reportFadeSimple(div,server,pars); 
					}
            });
      };

		function reportFadeSimple(div,server,pars){
         //alert(div);
         new Effect.Opacity( div, {
            queue: {position:'end', scope:'upd_simple_queue'},
            duration: 0.7,
            from: 0,
            to: 1,
				delay: 0.7,
            beforeStart: function() { load(server,pars,div); }
         });
      };
	
		
		
		function update_fader(div,server,pars,s){
			
			if(1==lock_links(s)){
				
				new Effect.Opacity( div, {
					queue:  {position:'end', scope:'upd_queue'},			 
					duration: 0.1,
					from: 1,
					to: 0,
					afterFinish: function() { 
						$(div).innerHTML = "";
						reportFade(div,server,pars,s); 
					}
				});
			}
		};
		
		function reportFade(div,server,pars,s){
			//alert(div);
			new Effect.Opacity( div, {
				queue:  {position:'end', scope:'upd_queue'},			   
				duration: 0.1,
				from: 0,
				to: 1,
				delay: 0.5,
				beforeStart: function() { load(server,pars,div); },
				afterFinish: function() { 
					ret = unlock_links(s);
				}
			});
		};

	function load(server, pars, targhet_div){
	
		new Ajax.Updater(
			targhet_div,
			server + "?" + pars,
			{
				method: "GET",
				onComplete: process
			}
		)
	};

	function process(res){
		//alert("");
		$(targhet_div).innerHTML=res.responseText;
	};
