// global function =========
function getObject (objID) {
	return (document.getElementById (objID));
}
function createObject (tag, prop, styleProp) {
	var newObject = document.createElement(tag);
	//alert(tag);
	for (var mc in prop) {	
		//alert(mc+":"+prop[mc]);
		newObject[mc] = prop[mc];	
	}
	if (styleProp) {
		for (var mc in styleProp) {
			newObject.style[mc] = styleProp[mc];
		}
		tag == 'div' ? (newObject.style.position = 'absolute') : null;
	}
	return (newObject);
}
function appendChildren () {
	for (var i=0,L=arguments.length-1;i<L;i++){
		arguments[i+1].appendChild (arguments[i]);
	}
}
// mainmenu =============
function mainmenuRollover () {
	this.style.backgroundPosition = this.prop.bgxp + 'px -30px';
	window.displayFloatMenu (window.getObject(this.id+'_div'), true);
	
}
function mainmenuRollout () {
	this.style.backgroundPosition = this.prop.bgxp + 'px 0px';
	window.displayFloatMenu (window.getObject(this.id+'_div'), false);
}
function mRollover (t) {
	t.style.backgroundPosition = t.prop.bgxp + 'px -30px';
//	window.displayFloatMenu (window.getObject(this.id+'_div'), true);
	
}
function mRollout (t) {
	t.style.backgroundPosition = t.prop.bgxp + 'px 0px';
	//window.displayFloatMenu (window.getObject(this.id+'_div'), false);
}
function mainmenuClick () {
	window.location = this.prop.linkURL;

}

function createMainMenu () {
	var mm = window.json.mainmenu;
	var xp = [0,110,266,374,497,657,793,900];
	var tdW, tdH = 30;
	var tb, ty, tr, td, cro = window.createObject;
	tb = cro ('table', {border:0, height:tdH, cellSpacing:0, cellPadding:0});
	ty = cro ('tbody', {});
	tr = cro ('tr', {});
	for (var i=0;i<xp.length-1;i++){
		tdW = xp[i+1]-xp[i]; 
		td = cro ('td', {id:'mm_' + i, width:tdW, height:tdH}, {background:'url(../images/mainmenu.gif) no-repeat -' + xp[i] + 'px 0px', cursor:'pointer'});
		td.prop = {jsonBranch:mm.sub[i], bgxp:-xp[i], linkURL:mm.sub[i]['@linkURL']};
		td.onmouseover = window.mainmenuRollover;
		td.onmouseout = window.mainmenuRollout;
		td.onmouseup = window.mainmenuClick;
		tr.appendChild (td);
	}
	var mmContainer = window.getObject ('mainMenuContainer');
	window.appendChildren (tr,ty,tb,mmContainer);
}
// floatMenu ================
function floatMenuTableRollover () {

	window.procDivDisplay (this.prop.parDiv, true);
		var t = window.getObject(this.id.replace(/(mm_[0-9]+).*/,"$1"));
		//alert(this.id.replace("_table",""));
		mRollover(t);
}
function floatMenuTableRollout () {
	window.procDivDisplay (this.prop.parDiv, false);
	var t = window.getObject(this.id.replace(/(mm_[0-9]+).*/,"$1"));
		mRollout(t);
}
function floatMenuTdRollover () {
	
	this.className = 'floatMenuTableFocus';
	window.displayFloatMenu (window.getObject(this.id + '_div'), true, this);
	fRollover(window.getObject(this.id.replace(/_[0-9]$/,"")));
	
}
function floatMenuTdRollout () {
	this.className = '';
	window.displayFloatMenu (window.getObject(this.id + '_div'), false, this);
	fRollout(window.getObject(this.id.replace(/_[0-9]$/,"")));
}
function fRollover (t) {
	
	t.className = 'floatMenuTableFocus';
	//window.displayFloatMenu (window.getObject(this.id + '_div'), true, this);
	//alert(this.id);
	
}
function fRollout (t) {
	t.className = '';
	//window.displayFloatMenu (window.getObject(this.id + '_div'), false, this);
}


function floatMenuTdRelease () {
	window.location = this.prop.linkURL;
}
function procDivDisplay (divArr, state) {
	for (var mc in divArr) {
		//alert(mc);
		divArr[mc].style.left = state ? divArr[mc].newPosX +"px": "-500px";
	}
}
function displayFloatMenu (subDiv, state, td) {
	if(subDiv){
		if(state){
			if(td){
				var currentTable = window.getObject(td.prop.containerTable);
				var currentDiv = td.prop.containerDiv;
				
				if (subDiv.pos=="L"){
				subDiv.newPosX = currentDiv.newPosX - subDiv.clientWidth+1;
				//subDiv.style.background_image= "/images/l2idle-left.gif";
				} else {
				subDiv.newPosX = currentDiv.newPosX + currentTable.clientWidth -1;
				}
			}
			subDiv.style.left =  Math.ceil(subDiv.newPosX) + "px";
		}else{
			subDiv.style.left = "-500px";
		}
	}
}
function createContentTable (jsonTree, depth, idStr, divContainer, parentDiv) {
	if (jsonTree.sub){
		
		var tb, ty, tr, td, span, cro = window.createObject, L;
		// floatMenu item
		var ppos =  (jsonTree.pos)?"-left":"";
var w =  (jsonTree.width)?jsonTree.width:"";
		tb=cro('table',{border:0,cellSpacing:0,cellPadding:0,width: w,className:'floatMenuTable'+ppos});
		ty=cro('tbody', {});
		var cn = 'floatMenuTable'
		if(jsonTree.sub.length){
			L = jsonTree.sub.length;
			for(var i=0;i<L;i++){
				
				cn = 'floatMenuTable'+ ppos;
				//alert(i);
				window.createContentTableTR (idStr, (idStr + '_' + i), jsonTree.sub[i]['#text'], jsonTree.sub[i]['@linkURL'], ty, divContainer);
			}
		}else{
			L = 1;
			window.createContentTableTR (idStr, (idStr + '_' + 0), jsonTree.sub['#text'], jsonTree.sub['@linkURL'], ty, divContainer);
		}
		window.appendChildren (ty, tb);
		var tmpTable = tb;
		// floatMenu Board
		tb=cro('table',{id:idStr+'_table',border:0,cellSpacing:0,cellPadding:0,className:'floatMenuBoard'});
		tb.prop = {containerDiv:divContainer, parDiv:parentDiv};
		tb.onmouseover = window.floatMenuTableRollover;
		tb.onmouseout = window.floatMenuTableRollout;
		ty = cro('tbody',{});
		tr = cro('tr',{});
		td = cro('td', {});
		window.appendChildren (tmpTable, td, tr);
		td = cro('td', {vAlign:'bottom'});
		window.appendChildren (td, tr, ty);
		tr = cro('tr',{});
		td = cro('td', {align:'right'});
		window.appendChildren (td, tr);
		td = cro('td', {innerHTML:'<img src=floatMenuShadow.gif width="1" height="1">'});
		window.appendChildren (td, tr, ty, tb);
		window.appendChildren (tb, divContainer, document.body);
	}
}
function createContentTableTR (idStr, tdID, txt, url, tbody, divContainer) { //sub-sub menu
	var tr, td, span, cro = window.createObject;
	tr=cro('tr', {});
	
	td=cro('td', {id:tdID});
	span=cro('span', {className:'link', innerHTML:txt});
	td.onmouseover = window.floatMenuTdRollover;
	td.onmouseout = window.floatMenuTdRollout;
  td.onmouseup = window.floatMenuTdRelease;
	td.prop = {containerDiv:divContainer, containerTable:idStr+'_table', linkURL:url};
	window.appendChildren (span, td, tr, tbody);
}
function createFloatMenu (jsonTree,divDepth,divInitX,divInitY,idStr,parentObj) {
	if (jsonTree.sub) {
		var xp = [17,123,280,387,510,671,807], divID, divObj, divProp, divStyle, divPosY;
		//var xp = [0,230,395,513,638,788,900];
		if(!(jsonTree.sub.length) && jsonTree.sub.sub){
			window.createFloatMenuItem (jsonTree.sub, (idStr + '_' + 0), divDepth, divInitX, divInitY, 1, parentObj,"R");
			return;
		}
		for (var i=0; i < xp.length; i++) {
			//alert(i);
			if(jsonTree.sub[i] && jsonTree.sub[i].sub){
				var bodyW = document.body.clientWidth;
				if (divDepth > 0) {

					divPosY=i * 32 + divInitY;

				} else {
					divPosY=divInitY;

					divInitX=((bodyW > 900 ? bodyW : 900) - 900) / 2 + xp[i];
					divInitX=xp[i];
				//	alert(bodyW+":"+xp[i]+":"+divInitX);
				
				}
				var pos =  (jsonTree.sub[i] && jsonTree.sub[i].pos)?"L":"R";
				window.createFloatMenuItem (jsonTree.sub[i], (idStr + '_' + i), divDepth, divInitX, divPosY, i+1, parentObj,pos);
			}
		}
	}
}
function createFloatMenuItem (jsonTree, divID, divDepth, divX, divY, itemCount, parentObj, cpos) {
	var divObj, divProp, divStyle;
	divProp = {id:divID + '_div',className:('floatMenuType' + (divDepth > 0 ? 2 : 1)),initPosX:divX,newPosX:divX,pos:cpos};
	divStyle = {top:divY+"px",left:"-500px",height:itemCount * 18,zIndex:divDepth + 1};
	divObj=window.createObject('div',divProp,divStyle);
	window.createContentTable (jsonTree,divDepth,divID,divObj,parentObj.concat([divObj]));
	window.createFloatMenu (jsonTree,divDepth +1,divX ,divY,divID,parentObj.concat([divObj]));
	window.divObjectArray.push (divObj);
	
}
// adjustment div position ==========
function dynamicDivPos () {
	var divObj, bodyW = document.body.clientWidth;
	for(var mc in window.divObjectArray){
		divObj = window.divObjectArray[mc];
		divObj.newPosX = Math.ceil(divObj.initPosX + (((bodyW > 900 ? bodyW : 900) - 900)/2));
		
		divObj.style.left = -500+"px";
	}
}
var divObjectArray = [];
window.onresize = dynamicDivPos;
// initialize mainmenu and floatmenu ==========
function init () {
	window.createMainMenu ();
	var iy = 102;
	if (document.all){
		if(parseFloat(navigator.appVersion.match(/MSIE (\d\.*\d*)/i)[1])<=6){
		iy = 103;
		}
	}
	window.createFloatMenu (window.json.mainmenu, 0, 0, iy, 'mm', []);
	//var keyVisual = new SWFObject("keyvisual/main.swf", "keyvisual", "850", "228", "9", "#FF6600", true);
//	keyVisual.write("keyVisualContainer");
	window.dynamicDivPos ();
}
//var json = eval ('(' + jsonString + ')');
init();

