wwsI18N=false;
wwsI18NDelay=true;
// DOM manipulation
function crel(e) {
	if (e.indexOf('.')!=-1) {
		var tks=e.split('.');
		var res=document.createElement(tks[0]);
		res.className=tks[1];
		return res
	} else
		return document.createElement(e);
}
function crtn(e) {
if (wwsI18N){
try {
   if (e.indexOf("wwsJqModalRepl")!=-1){s = document.createElement('span');$(s).html(e);return s;
   } else {return document.createTextNode(e);}
} catch(ex) {}
} 
return document.createTextNode(e);
}
function aptn(e,t) {var tn=crtn(t);e.appendChild(tn);}
function insertAfter(brother, elem) {
	var father = brother.parentNode;
	if (brother.nextSibling==null)
		father.appendChild(elem);
	else
		father.insertBefore(elem, brother.nextSibling); 
}
function dump(obj) {
	var res="";
	for(var prop in obj) {
		res+=prop+":"+obj[prop]+"\n";		
	}
	return res;
}


var menuTimer=null;
var menus=[null, null];
var menuCurrnt=null;

function mn_FillMenu(menu, level, obj, wishX, wishY){
	// get viewport width/height IE6 compatible
	var windowW = 0, windowH = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
	  windowW = window.innerWidth;
	  windowH = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
	  windowW = document.documentElement.clientWidth;
	  windowH = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
	  windowW = document.body.clientWidth;
	  windowH = document.body.clientHeight;
	}
	// get scroll x/y IE6 comptaible
	var scrollX = 0, scrollY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
	  scrollY = window.pageYOffset;
	  scrollX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
	  scrollY = document.body.scrollTop;
	  scrollX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
	  scrollY = document.documentElement.scrollTop;
	  scrollX = document.documentElement.scrollLeft;
	}

	// find out nb of columns	
	var itemH = obj.offsetHeight+1;
	var colLg, colNb = 0;
	if (level==1)
		colLg = (windowH+scrollY-wishY)/itemH;
	else
		colLg = windowH/itemH;
	colNb = Math.floor(menu.length / colLg)+1;
	colLg = Math.ceil(menu.length / colNb);
	colLg = Math.min(colLg,menu.length);
	
	var row = 0;
	var table=crel("table"),tableb=crel("tbody"),tr=crel("tr"),td=crel("td"),div=crel("div"),div2=crel("div");
	table.appendChild(tableb); tableb.appendChild(tr); tr.appendChild(td); td.appendChild(div); div.appendChild(div2);
	for(var i=0; i<menu.length; i++) {
		var el = menu[i];
		if (el==null) continue;
		var a = crel("a");
		var sp1 = crel("span");
		var sp2 = crel("span");
		var sp3 = crel("span");
		a.mcontent = el[3];
		a.mlevel = level+1;
		if (el[3]) {
			a.onmouseover=menuShowA;
			sp1.className='menusub';
		} else {
			a.onmouseover=menuHideA;
		}
		if (el.selected) 
			sp2.className='menucheck';
		if (el[4]) sp3.className=el[4];
		a.href=el[2];
		a.appendChild(sp1); sp1.appendChild(sp2); sp2.appendChild(sp3); sp3.innerHTML = el[1];
		div2.appendChild(a);
		row++;
		if (row>=colLg && i<menu.length-1) {
			td=crel("td"),div=crel("div"),div2=crel("div");
			tr.appendChild(td); td.appendChild(div); div.appendChild(div2);
			row=0;
		}
	}
	if(menus[level].firstChild)
		menus[level].removeChild(menus[level].firstChild);
	menus[level].appendChild(table);
	// position
	if (level>1) {
		var menuH = table.offsetHeight;
//		window.status = 'wishY='+wishY+', menuH='+menuH+', windowH='+windowH+', scrollY='+scrollY+', itemH='+itemH;
		if (wishY+menuH>windowH+scrollY)
			wishY = windowH+scrollY-menuH-5;
	}
	menus[level].style.left=wishX+"px";
	menus[level].style.top=wishY+"px";
}

function dump(obj) {
	var res="";
	for(var prop in obj) {
		res+=prop+":"+obj[prop]+"\n";		
	}
	return res;
}

function menuDrawPath(insertTo, smenu, path, text, img) {
	var content="";
	content += "<table class='path'><tr>";
	if (img)
		content+="<td><img src='img/"+img+"'>";
	if (text) {
		content += "<td class='menut'>";
		content += "<a href='javascript:;' onMouseover='menuShowId(\""+smenu+"a\", "+smenu+", 1)' onMouseout='menuHide()'>" + text + "</a></td>";
	}
	content += menuDrawSub(smenu, path, 0);
	content += "</tr></table>";
	$("#"+insertTo).html(content);
}

function menuDrawSub(smenu, path, level) {
	var menu = eval(smenu);
	for(var i=0; i<menu.length; i++) {
		var el = menu[i];
		if (el==null) continue;
		if (el[0]==path[0]) {	
			el.selected=true;
			var spath=[];
			for(var j=1; j<path.length; j++)
				spath[j-1]=path[j];
			var content="";
			content += "<td class='menui'>";
			content += "<a href='"+el[2]+"' onMouseover='menuShow(this, "+smenu+", 1)' onMouseout='menuHide()'";
			if (level==0)
				content += " id='"+smenu+"a'"
			content += ">";
			if (el[4]) content+="<span class='"+el[4]+"'>";
			content += el[1];
			if (el[4]) content+="</span>";
			content += "</a>";
			content += "</td>";
			if (spath.length>0)
				content += menuDrawSub(el[3], spath, level+1);
			return content;
		}
	}	
} 

function getOffset(elem){
	var x=0, y=0;
	while(elem) {
		x+=elem.offsetLeft;
		y+=elem.offsetTop;
		elem=elem.offsetParent;
	}
	return [x,y];
}

function bindI18N(){
  if (wwsI18N){
	$('#wwsi18nbox').jqm({overlay: 0, modal: false, trigger: false});
  	$(".wwsJqModalKo").bind('click',openI18N);
  	$(".wwsJqModalOk").bind('click',sendI18NChoice);
    wwsI18NDelay=false;  	
  }
}

function reBindI18N(){
  if (wwsI18N){
    if (!wwsI18NDelay){
  		$(".wwsJqModalOk").unbind('click',sendI18NChoice);
  		$(".wwsJqModalKo").unbind('click',openI18N);
  		$(".wwsJqModalOk").bind('click',sendI18NChoice);
  		$(".wwsJqModalKo").bind('click',openI18N);
  	}
  }
}

function menuShowA() {
	menuShow(this, eval(this.mcontent), this.mlevel);
}
function menuHideA() {
	menuHideLevel(this.mlevel);
}
function menuShowId(id, content, level){
	menuShow(document.getElementById(id), content, 1);
}

function menuShow(obj, content, level){
	if (menuCurrnt!=obj) {
		clearTimeout(menuTimer);
		menuDontHide();
		menus[level]=document.getElementById("drop"+level);
		var o = getOffset(obj);
		var wishX=0, wishY=0;
		if (level==1) {
			wishX = o[0];
			wishY = o[1]+obj.offsetHeight;
		} else {
			wishX = o[0]+obj.offsetWidth;
			wishY = o[1];
		}
		mn_FillMenu(content, level, obj, wishX, wishY);
		menus[level].style.visibility="visible";
		menuHideLevel(level+1);
		menuCurrnt = obj;
	}
	reBindI18N();
}

function menuHideLevel(level){
	if (menus[level])
		menus[level].style.visibility="hidden";
}

function menuDoHide(e){
	if (menuCurrnt==null) {
		if (menus[1]) menus[1].style.visibility="hidden";
		if (menus[2]) menus[2].style.visibility="hidden";
		if (menus[3]) menus[3].style.visibility="hidden";
	}
}

function menuHide(){
	clearTimeout(menuTimer);
	menuCurrnt = null;
	menuTimer=setTimeout("menuDoHide()",200);
}

function menuDontHide(obj){
	menuCurrnt = this;
	clearTimeout(menuTimer);
}

//------- dynamic table
function dynTable(id) {
	var table = document.getElementById(id);
	var trs = table.getElementsByTagName("tr");
	for (var j = 0; j < trs.length; j++)
		trs[j].onclick=dynClick;
}
function dynClick() {
	if (this.getAttribute('url'))
		location=this.getAttribute('url');
}

//------- tabs
WWS = {
	_setHashNoHist : function(hash) {
		var href = window.location.href;
		if (href.indexOf("#")>-1)
			href = href.split("#")[0];
		window.location.replace(href+"#"+hash);
	},
	tabsInit : function(divId, def) {
		var div = document.getElementById(divId);
		var tabNumber = def.length / 2;
		var table = crel('table.dyn-preset'), tbody=crel('tbody'), td;table.appendChild(tbody);
		var tr=crel('tr');tbody.appendChild(tr);
		table.def = def;
		var tdSel;
		var tdSelName = "t_"+window.location.hash.substring(1);
		for (var i=0; i<tabNumber; i++) {
			td = crel('td.ul');tr.appendChild(td);
			td = crel('td.um');
			a=crel('a');aptn(a,def[i*2]);td.appendChild(a);
			td.divName=def[i*2+1];
			td.onclick=this.tabSelect; 
			td.index=i;
			tr.appendChild(td);
			if (tdSelName!='t_' && td.divName==tdSelName)
				tdSel=td;
			else
				if (i==0) tdSel=td;
			td = crel('td.ur');tr.appendChild(td);
		}
		div.appendChild(table);
		WWS.tabSelect(null, tdSel, true);
	},
	tabSelect : function (e, tdsel, init) {
		if (!tdsel) tdsel=this;
		var tr = tdsel.parentNode;
		var tds = tr.childNodes;
		for (var i=0; i<tds.length; i++) {
			var td = tds[i];
			if (td.className=='al') td.className='ul';
			if (td.className=='am') td.className='um';
			if (td.className=='ar') td.className='ur';
			if (td.divName!=null) {
				var div = document.getElementById(td.divName);
				if (td==tdsel) 
					div.className='tabon';
				else
					div.className='taboff';
			}
		}
		tdsel.previousSibling.className='al';
		tdsel.className='am';
		tdsel.nextSibling.className='ar';
		if (!init)
			WWS._setHashNoHist(tdsel.divName.substring(2));
	}
};

