function preLd() {
	c = new Image();
	c.src = 'http://www.macwebos.com/close_hover.png';
	max = new Image();
	max.src = 'http://www.macwebos.com/max_hover.png';
	min = new Image();
	min.src = 'http://www.macwebos.com/min_hover.png';
}

// WINDOW

function createWindow(id,params) {
	if(ge(id+"_win")) {
		frontMe(id);
		return;
	}
	var close = params['close'];
	var maxmin = params['maxmin'];
	var type = params['type'];
	var width = params['width'];
	var height = params['height'];
	var title = params['title'];
	var cent = params['center'];
	var resize = params['resize'];
	var x = params['x'];
	var y = params['y'];
	var parent = params['parent'];
	
	if(!cent) cent='';
	
	if(type=='info' || type=='msg') {
		maxmin=0;
		close=1;
	}
	
	var maxed = false;
	var mined = false;
	if(width=='' || width==0) basewidth = 640;
	else basewidth = width;
	if(height=='' || height==0) baseheight = 480;
	else baseheight = height;

	var win = createElm('div',id+"_win",'window',ge('main'));
	win.onmousedown=goToFront;
		setCSS(win,'display','none');
		setCSS(win,'width',basewidth+'px');
		setCSS(win,'height',baseheight+'px');
	var win_main = createElm('div',id+"_win_main",'window_main',win);
		setCSS(win_main,'width',basewidth+'px');
		setCSS(win_main,'height',baseheight+'px');
	var header = createElm('div',id+"_header",'window_header',win_main);
		setCSS(header,'width',basewidth+'px');
		setCSS(header,'height','25px');
	var header_content = createElm('div','','window_header_content',header);
	var header_left = createElm('div','','window_header_left',header_content);
	
	if(type!='panel') {
		header_left.onmouseover = mouseover_icons;
		header_left.onmouseout = mouseout_icons;
	}
	
	//window buttons
	
	var close_div = createElm('div','','window_header_button',header_left);
		var closeBtn = createElm('img',id+'_win_close','',close_div);
		if(close==1) {
			if(type!='panel') closeBtn.setAttribute("src","http://www.macwebos.com/img/close.png");
			else closeBtn.setAttribute("src","http://www.macwebos.com/img/panel_close.png");
			closeBtn.onclick=closeWin;
		}
		else closeBtn.setAttribute("src","http://www.macwebos.com/img/icon_fade.png");
		
	if(type!='panel') {
		var min_div = createElm('div','','window_header_button',header_left);
			var minBtn = createElm('img',id+'_win_min','',min_div);
			if(maxmin==1) {
				minBtn.setAttribute("src","http://www.macwebos.com/img/min.png");
				minBtn.onclick=minWin;
			}
			else minBtn.setAttribute("src","http://www.macwebos.com/img/icon_fade.png");
		var max_div = createElm('div','','window_header_button',header_left);
			var maxBtn = createElm('img',id+'_win_max','',max_div);
			if(maxmin==1) {
				maxBtn.setAttribute("src","http://www.macwebos.com/img/max.png");
				maxBtn.onclick=maxWin;
			}
			else maxBtn.setAttribute("src","http://www.macwebos.com/img/icon_fade.png");
	}
			
	var win_title = createElm('div',id+'_win_title','window_header_title',header_content);
		setCSS(win_title,'width',(basewidth-140)+'px');
		if(title) win_title.innerHTML = title;
		else win_title.innerHTML="&nbsp;&nbsp;&nbsp;&nbsp;";
	
	var header_right = createElm('div',id+'_header_right','window_header_right',header_content);
	
	var content = createElm('div',id+'_content','window_content',win_main);
		setCSS(content,'width',basewidth+'px');
	
	if(!params['footer'] && type==1) {
		var footer = createElm('div',id+'_footer','window_footer',win_main);
			setCSS(footer,'width',basewidth+'px');
			setCSS(content,'bottom','10px');
	}
	
	if(type=='msg') {
		setCSS(content,'background','url(http://www.macwebos.com/img/msg_win.png)');
		setCSS(content,'border','0px');
		setCSS(content,'padding','10px');
		setCSS(content,'width',(basewidth-20)+'px');
	}
	else if(type=='panel') {
		setCSS(header,'background','url(http://www.macwebos.com/img/panel_header.png)');
		setCSS(content,'background','url(http://www.macwebos.com/img/panel_bg.png)');
	}
	
	if(type=='info') {
		closeBtn.setAttribute("width","16");
		maxBtn.setAttribute("width","16");
		minBtn.setAttribute("width","16");
		setCSS(content,'top','15px');
		setCSS(header,"height","15px");
		setCSS(header,"fontSize","11px");
		setCSS(header_left,"padding","0 0 0 2px");
		setCSS(win_title,"fontWeight","normal");
		setCSS(win_title,"padding","1px 0");
	}
	if(type!='msg') xEnableDrag(id+'_win_title',begindrag,barOnDrag,callafter);
	
	center();
	setCSS(win,'display','block');

	function begindrag() {}
	function callafter() {}

	function barOnDrag(e, mdx, mdy) {
		var leftBorder=0;
		var rightBorder=0;
		var parent = document.getElementById('main');
		var widget = document.getElementById(id+'_win');
		var x = xLeft(widget) + mdx;
		var y = xTop(widget) + mdy;
		var xright = xWidth(parent) - xWidth(widget) - rightBorder;
		var ybottom = xHeight(parent) - xHeight(widget);
		
		if (x < leftBorder - xWidth(widget) + 75) x = leftBorder - xWidth(widget) + 75;
		if (x > xright + xWidth(widget) - 75) x = xright + xWidth(widget) - 75;
		if (y > ybottom + xHeight(widget) - 50) y = ybottom + xHeight(widget) - 50;
		
		if (y < 30) y = 30;
		xMoveTo(widget, x, y);
	}
	
	/*
		center()
		+ which=='' ? center on browser
		+ which=='x' ? center x
		+ which=='y' ? center y
		+ which=='parent' ? center in parent
	*/
	
	function center(which) {
		if(x) win.style.left=(x+20)+"px";
		if(y) win.style.top=(y+40)+"px";
		else {
			var bwidth = xWidth(xGetElementById("main"));
			var bheight = xHeight(xGetElementById("main"));
			var xcent = (bwidth - width)/2;
			var ycent = (bheight - height)/2;
			if(which=='x' || !which) win.style.left=xcent+"px";
			if(which=='y' || !which) {
				if(ycent<30) ycent=30;
				win.style.top=ycent+"px";
			}
		}
	}
	
	function goToFront() {
		if(activeWin) deactivate(activeWin);
		activeWin=id;
		activate(id);
		xZIndex(win,zwindows);
		zwindows++;
		if(msg_show) {
			xZIndex(msg_show,zwindows);
			zwindows++;
		}
	}
	
	function mouseover_icons() {
		if(close==1) closeBtn.src="http://www.macwebos.com/img/close_hover.png";
		if(maxmin==1) {
			maxBtn.src="http://www.macwebos.com/img/max_hover.png";
			minBtn.src="http://www.macwebos.com/img/min_hover.png";
		}
	}
	
	function mouseout_icons() {
		if(close==1) closeBtn.src="http://www.macwebos.com/img/close.png";
		if(maxmin==1) {
			maxBtn.src="http://www.macwebos.com/img/max.png";
			minBtn.src="http://www.macwebos.com/img/min.png";
		}
	}
	
	function closeWin() {
		if(params['warnbeforeclose']) {
			if(!confirm("Are you sure you want to close?")) return;
		}
		if(params["ontop"]==1 || type=='msg') msg_show=null;
		shortenWindowOrder(id);
		var test = id.split("_");
		if(test.length>1) {
			activateNextWin(test[0]);
		}
		else if(curSlot>=0) activate(windowOrder[curSlot]);
		ge('main').removeChild(win);
		removeCSS(id+"_css");
		if(id=='base') return;
		if(ge(id+"_menubar")) ge('topbar').removeChild(ge(id+"_menubar"));
		if(windowOrder.length==0) {
			ge('base_menubar').style.display="";
			curMenu = 'base';
		}
		AjaxIt('services.php?mod='+id+"&end");
	}
	
	function minWin() {
		win.style.display="none";
		mined=true;
		//$('#'+win.id).Shrink(500);
	}
	
	function maxWin() {
		if(maxed) {
			resizeTo(basewidth,baseheight);
			resizeMain();
			win
			maxed=false;
		}
		else {
			resizeTo(xWidth(xGetElementById('main'))-20,xHeight(xGetElementById('main'))-150);
			resizeMain();
			win.style.left="15px";
			win.style.top="45px";
			maxed=true;
		}
	}
	
	function resizeMain() {
		if(ge(id+'_content_main')) {
			main = ge(id+'_content_main');
			main.style.left = xWidth(id+"_sidebar")+"px";
			main.style.width = (xWidth(content) - xWidth(id+"_sidebar"))+"px";	
		}
	}
	
	function resizeTo(w,h) {
		setCSS(win,"width",w+"px");
		if(h) setCSS(win,"height",h+"px");
		setCSS(win_main,"width",w+"px");
		if(h) setCSS(win_main,"height",h+"px");
		setCSS(win_title,"width",(w-140)+"px");
		setCSS(header,"width",w+"px");
		setCSS(content,"width",w+"px");
		setCSS(footer,"width",w+"px");
		center();
	}
	
	if(resize==1) {
		setCSS(footer,"height","20px");
		var rBtn = createElm('div','','',id+"_footer");
		setCSS(rBtn,"position","absolute");
		setCSS(rBtn,"background","url(http://www.macwebos.com/img/resize.png) no-repeat bottom right");
		setCSS(rBtn,"bottom","0px");
		setCSS(rBtn,"right","0px");
		setCSS(rBtn,"height","10px");
		setCSS(rBtn,"width","10px");
		setCSS(rBtn,"cursor","se-resize");
		xEnableDrag(rBtn, wndsresize, resOnDrag, wndresize);
	}
	
	function wndsresize() {}
	
	function wndresize() {}
	
	function resOnDrag(e, mdx, mdy) {
		var x = xWidth(win) + mdx;
		var y = xHeight(win) + mdy;
		if (x < 200) x = 200;
		if (y < 200) y = 200;
		xResizeTo(win, x, y);
		xResizeTo(win_main,x,y);
		xResizeTo(header,x);
		if(ge(id+"_toolbar")) {
			xResizeTo(ge(id+"_toolbar").parentNode,x);
		}
		xResizeTo(win_title,(x-140));
		xResizeTo(content,x);
		setCSS(content,"overflow","auto");
		if(ge(id+'_sidebar')) {
			ax = xWidth(ge(id+"_sidepanel")) - x;
			xResizeTo(ge(id+"_content_main"),ax);
			//xResizeTo(ge(id+"_content_main_inner"),ax);
		}
		else {
		}
		xResizeTo(footer,x);
	}
	
	curSlot++;
	if(curSlot>0) deactivate(windowOrder[curSlot-1]);
	activeWin = id;
	windowOrder[curSlot]=this.id;
	goToFront();
	if(params['ontop']==1 || type=='msg') msg_show=win;
	return win;
}

//closes ALL windows

function closeAll(base) {
	var b = new Array();
	var a = 0;
	var count=0;
	for(i=0;i<windowOrder.length;i++) {
		if(windowOrder[i].indexOf(base)>=0 && windowOrder[i]!=base) {
			ge('main').removeChild(ge(windowOrder[i]+"_win"));
		}
		else {
			b[a] = windowOrder[i];
			a++;
			count++;
		}
	}
	windowOrder=b;
	curSlot=(count-1);
	close(base);
}

function close(id) {
	shortenWindowOrder(id);
	if(curSlot>=0) activate(windowOrder[curSlot]);
	ge('main').removeChild(ge(id+"_win"));
	removeCSS(id+"_css");
	if(id=='base') return;
	if(ge(id+"_menubar")) ge('topbar').removeChild(ge(id+"_menubar"));
	if(windowOrder.length==0) {
		ge('base_menubar').style.display="";
		curMenu = 'base';
	}
}

function createMsg(id,params) {
	var d = new Date();
	var elmid = id+"_msg";
	params["type"]="msg";
	params["maxmin"]=0;
	createWindow(id,params);
	ge(id+"_content").innerHTML=content;
}

function createInfoWin(title,head,img,content) {
	var d = new Date();
	var arr = new Array();
	var id = "msg_"+d.getTime();
	arr["type"]='info';
	arr["title"]=title;
	arr["width"]=300;
	arr["height"]=350;
	arr["maxmin"]=0;
	arr["ontop"]=1;
	createWindow(id,arr);
	var elm = createElm('div','','info_win',ge(id+"_content"));
	var cent = document.createElement('center');
	var tt = document.createElement('h1');
	tt.innerHTML=head;
	var image = new Image();
	image.src=img;
	image.setAttribute("width","70");
	image.style.padding="25px 0 10px 0";
	cent.appendChild(image);
	elm.appendChild(cent);
	cent.appendChild(tt);
	var div = createElm('div','','',elm);
	//setCSS(elm,"background","white url(http://www.interactivefish.com/logo_new.gif) no-repeat top left");
	setCSS(div,"padding","10px 15px 10px 15px");
	div.innerHTML=content;
}

// TABLE

function createTable(id,params) {
	var parent = params["parent"];
	var height = params["height"];
	var div = document.createElement('div');
	div.setAttribute("class","data");
	div.setAttribute("id",id+"_datatable_div");
	div.style.height=height+"px";
	ge(parent).appendChild(div);
	var table = createElm('table',id+"_datatable",'datatable',div);
	if(height) table.style.height=height+"px";
	table.setAttribute("width",xWidth(ge(parent))+"px");
	table.setAttribute("cellspacing","0");
	var div2 = document.createElement('div');
	ge(parent).appendChild(div2);
	div2.setAttribute("class","datatable_bar");
	addTableRolloverEffect(id+"_datatable",'reg','reg_click');
}

function addTableHeaders(id,params) {
	var table = ge(id+"_datatable");
	var tr = document.createElement('tr');
	table.appendChild(tr);
	for(var i in params) {
		var th = document.createElement('th');
		th.innerHTML=params[i];
		if(params[i]=="") th.innerHTML="&nbsp;";
		tr.appendChild(th);
	}
}

function addTableData(id,params,callback,pass) {
	var table = ge(id+"_datatable");
	var tr = document.createElement('tr');
	table.appendChild(tr);
	for(var i in params) {
		var td = document.createElement('td');
		td.innerHTML=params[i];
		if(params[i]=="") td.innerHTML="&nbsp;";
		tr.appendChild(td);
		tr.style.cursor="pointer";
		tr.onclick = function() { clickOnTableRow(this); sendMsg(id,callback,pass); }
	}
}

// TOOLBAR

function createToolbar(parentid) {
	var div = createElm('div',parentid+'_toolbar_outer',"window_toolbar",ge(parentid+"_header"));
	createElm('div',parentid+'_toolbar','window_toolbar_content',div);
	setCSS(ge(parentid+'_header'),'height','75px');
	setCSS(ge(parentid+'_content'),'top','75px');
	setCSS(div,"width",xWidth(ge(parentid+"_header"))+"px");
	var img = createElm('img',parentid+'_min_toolbar','',ge(parentid+'_header_right'));
	img.setAttribute("src","http://www.macwebos.com/img/toolbar_min.png");
	img.setAttribute("onclick","toggleToolbar(\'"+parentid+"')");
}

function createToolbarIcon(parentid,image,text,callback,params,attr) {
	var items = ge(parentid+"_toolbar").childNodes.length;
	var div = createElm('div',parentid+'_toolbar_item_'+items,'window_toolbar_item',ge(parentid+"_toolbar"));
	var imgDiv = createElm('div','','window_toolbar_img',div);
	var textDiv = createElm('div','','window_toolbar_text',div);
	if(callback == 'js') {
		imgDiv.innerHTML='<a onclick="'+params+'"><img src="'+image+'"></a>';
		textDiv.innerHTML='<a onclick="'+params+'">'+text+'</a>';
	}
	else if(callback == 'ajax') {
		var a = document.createElement('a');
		a.onclick = function() { AjaxIt('services.php?mod='+parentid+'&ajax='+params); }
		var img = document.createElement('img');
		img.src=image;
		a.appendChild(img);
		imgDiv.appendChild(a);
		var a2 = document.createElement('a');
		a2.onclick = function() { AjaxIt('services.php?mod='+parentid+'&ajax='+params); }
		a2.innerHTML=text;
		textDiv.appendChild(a2);
	}
	else if(callback == 'href') {
		imgDiv.innerHTML='<a href="'+params+'"><img src="'+image+'"></a>';
		textDiv.innerHTML='<a href="'+params+'">'+text+'</a>';
	}
	var right = attr['right'];
	if(right) div.className="window_toolbar_item_floatRight";
	var width = attr['width'];
	if(width) setCSS(div,"width",width+"px");
}

function createToolbarLine(parentid) {
	var div = createElm('div','','window_toolbar_separator',ge(parentid+"_toolbar"));
}

function createToolbarSpace(parentid,width) {
	var div = createElm('div','','window_toolbar_space',ge(parentid+"_toolbar"));
	setCSS(div,"width",width+"px");
}

// SIDE PANEL

function createSidePanel(parentid) {
	var div = createElm('div',parentid+"_sidebar","window_sidepanel",ge(parentid+"_content"));
	var div2 = createElm('div',parentid+"_content_main","window_content_main",ge(parentid+"_content"));
	var div3 = createElm('div',parentid+"_content_main_inner","window_content_main_inner",div2);
	var width = xWidth(ge(parentid+"_win")) - xWidth(div);
	setCSS(div2,"width",width+"px");
	setCSS(div2,"left",xWidth(div)+"px");
	setCSS(div,"bottom",(xHeight(ge(parentid+"_footer"))-10)+"px");
}

function createSideList(id) {
	var ul = createElm('ul',id+"_sidetree",'',ge(id+"_sidebar"));
}

function createSideListTree(id,title) {
	var items = ge(id+"_sidetree").childNodes.length/2;
	var li = createElm('li',id+"_sidetree_list_"+items,'list_title',ge(id+"_sidetree"));
	var arr = new Image();
	arr.src="http://www.macwebos.com/img/d_arrow.gif";
	arr.style.cursor="pointer";
	arr.setAttribute("onclick","toggleList(this,'"+id+"_sidetree_list_"+items+"_sublist')");
	li.appendChild(arr);
	li.innerHTML+=title;
	var ret = createElm('ul',id+"_sidetree_list_"+items+"_sublist",'',ge(id+"_sidetree"));
	return ret;
}

function createSideListItem(id,parent,icon,title,onclick,params) {
	if(ge(parent)) parent = ge(parent);
	var items = parent.childNodes.length/2;
	var el = createElm('li',id+"_sidetree_listitem_"+items,'',parent);
	el.onclick=function() { highlight(this); sendMsg(id,onclick,params) };
	var t = createElm('table','','',el);
	var tr = createElm('tr','','',t);
	var td1 = createElm('td','','',tr);
	td1.setAttribute("width","20");
	var img = createElm('img','','',td1);
	img.setAttribute("src","http://www.macwebos.com/"+icon);
	var td2 = createElm('td','','',tr);
	td2.setAttribute("align","left");
	td2.innerHTML=title;
}

function addAction(id,mod,onclick,params) {
	ge(id).onclick = function() { sendMsg(mod,onclick,params); }
}

function toggleToolbar(id) {
	var toolbar = ge(id+"_toolbar").parentNode;
	if(toolbar.style.display!="none") {
		setCSS(toolbar,"display","none");
		setCSS(ge(id+"_header"),"height","25px");
		setCSS(ge(id+"_content"),"top","25px");
	}
	else {
		setCSS(toolbar,"display","");
		setCSS(ge(id+"_header"),"height","85px");
		setCSS(ge(id+"_content"),"top","85px");
	}
}

function createSearch(id,parent,params) {
	var div = createElm('div',id,'search',ge(parent));
	var input = document.createElement('input');
	input.setAttribute("type","text");
	input.setAttribute("name","search");
	var span = document.createElement('span');
	span.setAttribute("class","sbox_l");
	var span2 = document.createElement('span');
	span2.setAttribute("class","sbox");
	span2.appendChild(input);
	span3 = document.createElement('span');
	span3.setAttribute("class","sbox_r");
	div.appendChild(span);
	div.appendChild(span2);
	div.appendChild(span3);
	var width = params["width"];
	var base = id.split("_");
	var callback = params["callback"];
	var live = params["live"];
	var text = createElm('div','','',div);
	text.innerHTML='Search';
	var send = function() { sendMsg(base[0],callback,this.value); }
	input.setAttribute("onblur",send);
}

// DETAIL LIST

function createDetailList(id,parent,params) {
	var elm = createElm('div',id,'detail_list',ge(parent));
	var t = createElm('table','','',elm);
	for(var i in params) {
		var tr = createElm('tr','','',t);
		var td1 = createElm('td','','',tr);
		var td2 = createElm('td','','',tr);
		td1.setAttribute("class","detail_left");
		td2.setAttribute("class","detail_right");
		td1.innerHTML=i+":";
		td2.innerHTML=params[i];
	}
	elm.style.padding="10px";
	elm.style.borderBottom="1px solid #ccc";
	elm.style.margin="0 10px 5px 10px";
}

function setDetailList(id,params) {
	ge(id).removeChild(ge(id).childNodes[0]);
	var t = createElm('table','','',ge(id));
	for(var i in params) {
		var tr = createElm('tr','','',t);
		var td1 = createElm('td','','',tr);
		var td2 = createElm('td','','',tr);
		td1.setAttribute("class","detail_left");
		td2.setAttribute("class","detail_right");
		td1.innerHTML=i+":";
		td2.innerHTML=params[i];
	}
}

// HELPERS

function ge(id) {
	return document.getElementById(id);
}

function setCSS(elm,prop,val) {
	eval('elm.style.'+prop+'=\''+val+'\'');
}

function setInnerHTML(elm,html) {
	ge(elm).innerHTML=html;
}

function createElm(type,id,class,parent,params) {
	var ret = document.createElement(type);
	if(class!="\'\'") ret.setAttribute("class",class);
	if(id!="\'\'") ret.setAttribute("id",id);
	var t = typeof(parent);
	if(t!='object') parent = ge(parent);
	if(params && params["center"]) {
		var cent = document.createElement('center');
		parent.appendChild(cent);
		cent.appendChild(ret);
	}
	else parent.appendChild(ret);
	if(params) {
		if(params["content"]) ret.innerHTML=params["content"];
		if(params["src"]) ret.src=params["src"];
		if(params["width"]) ret.width=params["width"];
		if(params["href"]) ret.href=params["href"];
	}
	//xZIndex(ret,zwindows);
	//zwindows++;
	return ret;
}

function highlight(elm) {
	var els = elm.parentNode.parentNode.getElementsByTagName('li');
	for(i=0;i<els.length;i++) {
		if(els[i].className!="list_title") els[i].className="";	
	}
	elm.className="active";
}

function toggleList(elm,id) {
	ge(id).style.display = (ge(id).style.display=="none")?"":"none";	
	elm.src = (elm.src.indexOf("d_")>0)?"http://www.macwebos.com/img/r_arrow.gif":"http://www.macwebos.com/img/d_arrow.gif";
}
