// JavaScript Document

var Win = Class.create();

Win.prototype={

	initialize: function(id)
	{
		this.id=id;
		
		this.options = Object.extend({
									  left: '0px',
									  top: '0px',
									  width: '120px',
//									  height: '100px',
									  hideEffect: Effect.Fade,
									  showEffect: Effect.Appear,
									  title: '&nbsp;',
									  parent: document.body,
									  zIndex: 999,
									  showEffectOptions: {},
									  hideEffectOptions: {},
									  parentWin: null
									}, arguments[1] || {});

		this.element = this.createwindow();
		Wins.register(this);
	},
	createwindow: function()
	{
		divelement = document.createElement('DIV');
		divelement.id = this.id;
		divelement.style.position = 'absolute';
		divelement.style.left=parseInt(this.options.left)+'px';
		divelement.style.top=parseInt(this.options.top)+'px';

		divelement.style.width=parseInt(this.options.width)+'px';
		if (parseInt(this.options.height))
			divelement.style.height=parseInt(this.options.height)+'px';
//		divelement.style.zIndex=parseFloat(this.options.zIndex);
/*
		divelement.innerHTML="<div class=\"window window_green\">  <table cellspacing=\"0\" width=\"100%\"><tbody><tr><td rowspan=\"2\" class=\"topLeft\"><img src=\"/img/skins/default/window/green/top-l.png\"></td><td rowspan=\"1\" class=\"topMiddle\"><img src=\"/img/skins/default/window/top.png\" class=\"top\"></td><td rowspan=\"2\" class=\"topRight\" ><img src=\"/img/skins/default/window/green/top-r.png\"></td></tr><tr><td rowspan=\"1\" class=\"top\"><img src=\"/img/skins/default/window/green/head.gif\"></td></tr></tbody></table><table id=\""+this.id+"_top\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td class=\"leftwin\"><img src=\"/img/skins/default/window/left.png\"></td><td style=\"background:url(/img/skins/default/window/green/head-l.gif) top left repeat-y; \"><img src=\"/img/skins/default/1x1.gif\" width=\"12px\"></td><td  class=\"title\"><div class=\"close\" id=\""+this.id+"_close\" onclick=\"Wins.hide('"+this.id+"');\"><img src=\"/img/skins/default/window/x.gif\" style=\"-moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-top: 5px; margin-right: 5px;\" ></div>"+this.options.title+"<table><tbody><tr></tr></tbody></table></td><td style=\"background:url(/img/skins/default/window/green/head-r.gif) top left repeat-y; \"><img src=\"/img/skins/default/1x1.gif\" width=\"13px\"></td><td class=\"rightwin\"><img height='100%' width='7px' src=\"/img/inv.gif\"></td></tr></tbody></table>  <table cellspacing=\"0\" width=\"100%\">  <tbody><tr><td class=\"leftwin\"><img src=\"/img/skins/default/window/left.png\"></td><td style=\"padding: 12px 12px 12px 12px;\" class=\"content\"  valign=\"top\"><div id=\""+this.id+"_content\">&nbsp;&nbsp;&nbsp;</div>  </td><td class=\"rightwin\"><img height='100%' width='7px' src=\"/img/inv.gif\"></td></tr> </tbody>  </table>  <table class=\"bottomDark\" cellspacing=\"0\">    <tbody> <tr> <td class=\"leftBottom\"><img src=\"/img/skins/default/window/bot-l.png\"></td><td class=\"bottom\"><img src=\"/img/skins/default/window/bottom.png\"></td> <td class=\"rightBottom\"><img src=\"/img/skins/default/window/bot-r.png\"></td> </tr> </tbody>  </table><div style = 'background:url(/img/skins/default/window/wider.gif)' class='wider' onmousedown=\"Wins.startsize('"+this.id+"', event);\"></div></div>";
*/


		divelement.className ='default_win win_passive_window';
		if (this.options._class)	divelement.className += ' ' + this.options._class;
		divelement.style.display='none';
		this.options.parent.appendChild(divelement);
		$(this.id).update( "<div id='" + this.id + "_main_div' class=\"tooltip new_win\"><div id=\""+this.id+"_top\" style=\"width:100%; height:24px; background:#3f3f3f;\"><img src=\"/img/win/winclose.gif\" id=\""+this.id+"_close\" style=\"display:block;float:right;cursor:hand; margin:0px; padding:0px; cursor: pointer;\" onclick=\"Wins.hide('"+this.id+"'); return false;\"><span style=\" float:left; color:#ffffff; font-size:11px; font-family:Tahoma; padding:3px 0px 3px 4px\">"+this.options.title+"</span></div><div id=\""+this.id+"_content\"></div></div>");

		Event.observe (divelement, 'click', function () {Wins.activate(this.id); return false;}, true);

/*		if (this.options.resizable)
			$(this.id + "_main_div").innerHTML += "<img src=\"/img/skins/default/window/wider.gif\" id=\""+this.id+"_resize\" style=\"float:right;\" onmousedown=\"Wins.startsize('"+this.id+"', event);\">";
		else
			$(this.id + "_main_div").innerHTML += '';
*/
		//Event.observe(this.id+'_close', 'click', this.hide, true);
		return divelement;
	},
	show: function ()
	{
		this.options.showEffect(this.element, Object.extend(this.options.showEffectOptions, {}) );
		Wins.activate (this.id);
	},
	setContent: function (id, autoresize, autoposition)
	{
		//$(this.id+'_content').innerHTML='&nbsp;';
		$(this.id+'_content').appendChild($(id));
		$(id).show();
		if (autoresize)
		{
			d = Element.getDimensions($(id));
			//alert($(id).clientWidth);
		}
	},
	updateDimensions: function ()
	{
/*		if ($(this.id.substr(0,this.id.indexOf('_win'))))
			ob=$(this.id.substr(0,this.id.indexOf('_win')));
		else
			ob=$(this.id+'_content');*/
		//ob=$(this.id+'_content');
		ob = $(this.id);
		if (this.options.update_what)
			ob = $(this.options.update_what);
		width=0;
		height=0;
		ar=Element.immediateDescendants(ob);
		for (i=0; i<ar.length; i++)
		{
			if (width<Element.getDimensions(ar[i]).width)
				width=Element.getDimensions(ar[i]).width; 
			if (height<Element.getDimensions(ar[i]).height)
				height=Element.getDimensions(ar[i]).height;
//			alert (ob.childNodes[i].offsetHeight + Position.positionedOffset (ob.childNodes[i][1]));
		}

//		this.width=width+'px';
//		this.height=height+'px';
		ob.style.width=width+'px';
		ob.style.height=height+'px';
//		Wins.elements[this.id].width=this.width;
//		Wins.elements[this.id].height=this.height;
	},
	destroy: function ()
	{
//		Event.stopObserving($(this.id+'_close'), 'click', this.hide(), true);
//		alert(this.id);
	}
}

var Wins = new Object();

Wins = {
	elements: new Object(),
	register: function(ob)
	{
		this.elements[ob.id]=ob;
	},
	hide: function(id)
	{
		this.elements[id].options.hideEffect(this.elements[id].element, this.elements[id].options.hideEffectOptions);
		this.onCloseWin (id);
	},
	startsize: function (id, ev)
	{
		divelement=document.createElement('DIV');
		divelement.style.width=document.body.offsetWidth+'px';
		divelement.style.height=document.body.offsetHeight+'px';
		divelement.style.position='absolute';
		divelement.style.left = '0px';
		divelement.style.top = '0px';
		//divelement.style.backgroundColor = "red"
		divelement.style.display='block';
		divelement.style.zIndex=1000;
		divelement.style.cursor='move';
		divelement.id='win_sizer_blocker';
		document.body.appendChild(divelement);

		this.elements[id]['sizer']=this.movesize.bindAsEventListener(this, id);
		this.elements[id]['sizer_stop']=this.stopsize.bindAsEventListener(this, id);
		this.elements[id]['sizeX']=Event.pointerX(ev);
		this.elements[id]['sizeY']=Event.pointerY(ev);
		Event.observe(document, 'mousemove', this.elements[id]['sizer'], true);
		Event.observe(document, 'mouseup', this.elements[id]['sizer_stop'], true);
		Event.stop(ev);
	},
	stopsize: function (ev)
	{
		$('win_sizer_blocker').remove();
		Event.stopObserving (document, 'mousemove', this.elements[arguments[1]]['sizer'], true);
		Event.stopObserving(document, 'mouseup', this.elements[arguments[1]]['sizer_stop'], true);
		Event.stop(ev);
	},
	movesize: function (ev)
	{
//		if (parseInt($(arguments[1]).style.width)<=parseInt((parseInt($(arguments[1]).offsetWidth)+(Event.pointerX(ev)-this.elements[arguments[1]]['sizeX']))))
/*		if (true)
		{
			$(arguments[1]).style.width=parseInt((parseInt($(arguments[1]).offsetWidth)+(Event.pointerX(ev)-this.elements[arguments[1]]['sizeX'])))+'px';
			$(arguments[1].toString().substr(0, arguments[1].toString().lastIndexOf('_'))).style.width=parseInt((parseInt($(arguments[1].toString().substr(0, arguments[1].toString().lastIndexOf('_'))).offsetWidth)+(Event.pointerX(ev)-this.elements[arguments[1]]['sizeX']-1)))+'px';
			this.elements[arguments[1]]['sizeX']=Event.pointerX(ev);
		}
		else
		{
			$('win_sizer_blocker').remove();
			Event.stopObserving (document, 'mousemove', this.elements[arguments[1]]['sizer'], true);
			Event.stopObserving(document, 'mouseup', this.elements[arguments[1]]['sizer_stop'], true);
			Event.stop(ev);
			return false;
		}
   
//		if (parseInt($(arguments[1]).style.height)<=parseInt((parseInt($(arguments[1]).offsetHeight)+(Event.pointerY(ev)-this.elements[arguments[1]]['sizeY']))))
		if (true)
		{
			$(arguments[1]).style.height=parseInt((parseInt($(arguments[1]).offsetHeight)+(Event.pointerY(ev)-this.elements[arguments[1]]['sizeY'])))+'px';
			$(arguments[1].toString().substr(0, arguments[1].toString().lastIndexOf('_'))).style.height=parseInt((parseInt($(arguments[1].toString().substr(0, arguments[1].toString().lastIndexOf('_'))).offsetHeight)+(Event.pointerY(ev)-this.elements[arguments[1]]['sizeY'])))+'px';
			this.elements[arguments[1]]['sizeY']=Event.pointerY(ev);
		}
		else
		{
			$('win_sizer_blocker').remove();
			Event.stopObserving (document, 'mousemove', this.elements[arguments[1]]['sizer'], true);
			Event.stopObserving(document, 'mouseup', this.elements[arguments[1]]['sizer_stop'], true);
			Event.stop(ev);
			return false;
		}*/
		Event.stop (ev);
	},
	activate: function (id)
	{
		els = document.getElementsByClassName ('win_active_window');
		for (i = 0; i < els.length; i++)
		{
			els[i].style.zIndex = 501;
			Element.removeClassName (els[i], 'win_active_window');
			Element.addClassName (els[i], 'win_passive_window');
		}

		Element.removeClassName ($(id), 'win_passive_window');
		Element.addClassName ($(id), 'win_active_window');
		$(id).style.zIndex = 599;
	},
	onCloseWin: function (id)
	{
		if (this.elements[id].options.parentWin)
		{
			if ($(this.elements[id].options.parentWin))
				this.activate (this.elements[id].options.parentWin);
			else
			{
				els = document.getElementsByClassName ('win_active_window');
				if (!els.length)
				{
					els = document.getElementsByClassName ('default_win');
					if (els.length)
						this.activate (els[els.length - 1].id);
				}
			}
		}
		else
		{
			els = document.getElementsByClassName ('win_active_window');
			if (!els.length)
			{
				els = document.getElementsByClassName ('default_win');
				if (els.length)
					this.activate (els[els.length - 1].id);
			}
		}
	}
}