ALInterface = Class.create();

ALInterface.prototype = {
	
	initialize : function() {
		this.url = 'lib/data.php';
	  	this.init();
  	},
  	
  	init: function()
  	{
  		this.ajaxRequest('init');
  	},
  	
  	ajaxRequest: function(command)
  	{
  		this.command = command;
  		new Ajax.Request(this.url, 
  		Object.extend( 
  		{ 	method:'get', 
  			parameters:'cm=' + command,
  			onSuccess: this.succFunc.bind(this), 
  			onFailure: this.failFunc.bind(this) 
  		}));
  	},
	
  	addSubMenuElement: function (num,txt,cmd)
  	{
  		var self = this;
  		
//  		m = $("cenmenu");
 		mHref = document.createElement("a");
		mHref.className = 'ds';
		mHref.style.cursor = "pointer";
		mHref.style.fontWeight = 'bold';
		mHref.innerHTML = txt;
		mHref.href = 'javascript:void(0)';
		if (cmd) mHref.onclick = function() { self.ajaxRequest(cmd); return true; };

		mDiv2 = document.createElement("div");
		mDiv2.className = 'button_text';
//		mDiv2.style.display = 'none';
//		mDiv2.innerHTML = txt;

		mDiv1 = document.createElement("div");
		mDiv1.className = 'button';
		mDiv1.id = 'm'+num;

//		mDiv1.appendChild(mHref);
		mDiv2.appendChild(mHref);
		mDiv1.appendChild(mDiv2);
//		m.appendChild(mDiv1); 		
		div1.appendChild(mDiv1); 		
  	},
  	
	succFunc: function (transport) 
	{
		var self = this;
		var json = eval(''+transport.responseText+'');

//		alert(headers);
//		alert(json);

		if (!json)
		{	this.errMsg("No JSON Object!");
			return 0;		
		}
		
		if ($("mainTXT")) { Element.remove('mainTXT'); }
		mt = document.createElement("div");
		mt.id = 'mainTXT';
		mt.style.display = 'none';
		mt.innerHTML = json.text;
		$("teksto").appendChild(mt); 
		
//		$('mainTXT').hide();
//		$('mainTXT').innerHTML = json.text;
		Effect.Appear('mainTXT', { duration: 2.0 });


		// Don't load submenu again if clicked on submenu item
		if (json.loadSubMenu == false) 
		{	
			// Remove submenu container if there isn't one
			if (json.delSubMenu)
			{	
				if ($("cenmenu")) { Element.remove('cenmenu'); }
				$('teksto').style.width = '650px';
			}
			return 0; 
		}
		else
		{	
			if ($("cenmenu")) 
			{	Element.remove('cenmenu');
			}			
		}
		
		div1 = document.createElement("div");
		
		subMenu = document.createElement("div");
		subMenu.id = 'cenmenu';
		subMenu.style.display = 'none';
		$('teksto').style.width = '463px';
		$("textch").appendChild(subMenu); 
		
//		$("cenmenu").innerHTML = "";
		
		for(i=0; i < json.sm_links.length; i++)
		{	
			this.addSubMenuElement(i,json.sm_texts[i],json.sm_links[i]);
		}
				 
		subMenu.appendChild(div1);	 

		Effect.SlideDown('cenmenu', { duration:1.5 }); 

	},

	failFunc: function ()
	{ 	this.errMsg('Ajax Request Failed!');
	},
	
	errMsg: function (text)
	{ 	
		$('errMsg').innerHTML = "&nbsp;<b>Error:</b> " + text;
	 	$('errMsg').style.display = "block";
	}
}

function menuH()
{
	if (BrowserDetect.browser == 'Safari'
		|| BrowserDetect.browser == 'Opera') return 17;
	return 23;
}
function menuW()
{
	if (BrowserDetect.browser == 'Safari'
		|| BrowserDetect.browser == 'Opera') return 168;
	return 187;
}

Effect.SlideRightIntoView = function(element) {
  $(element).style.width = '0px';
  $(element).style.overflow = 'hidden';
  $(element).firstChild.style.position = 'relative';
  Element.show(element);
  new Effect.Scale(element, 100,
    Object.extend(arguments[1] || {}, {
      scaleContent: false,
      scaleY: false,
      scaleMode: { originalHeight: menuH(), originalWidth: menuW() },
      scaleFrom: 0,
      afterUpdate: function(effect){}
    })
  );
}

Effect.SlideRightOutOfView = function(element) {
  $(element).style.overflow = 'hidden';
  $(element).firstChild.style.position = 'relative';
  Element.show(element);
  new Effect.Scale(element, 0,
    Object.extend(arguments[1] || {}, {
      scaleContent: false,
      scaleY: false,
      afterUpdate: function(effect){},
      afterFinish: function(effect)
        { Element.hide(effect.element); }
    })
  );
}

Effect.SlideLeftAndRight = function(element) {
  element = $(element);
  if(Element.visible(element)) new Effect.SlideRightOutOfView(element);
  else new Effect.SlideRightIntoView(element);
}
