var oUlId;
var loadCount = new Object();
var mContent = new Array();   //content of menu
var lastClick = '';           //last link clicked by user
var dynamicScript = "/cgi-bin/kernel.cgi?module=portal_navigation&act=show_part&conflineid=";
var staticScript = "http://www.yuga.ru/portalnavigationjs/portalnavigation";
var isAuthorised = false;      //stub
//var useSubdomains = (document.domain == 'yuga.ru' || document.domain == 'www.yuga.ru') ? false : true;
var useSubdomains = true;
var scriptSrc = isAuthorised ? dynamicScript : staticScript;
if (!top.mData) {                   //menu data
	var mData = new Array();
}
if(!top.mDomainHref){                   //menu data
	var mDomainHref = new Array();
}

function mo() {
	var arg = mo.arguments[0];
	var obj = document.getElementById('menu'+arg);
	if (mo.arguments[1]) { //if link is clicked
		if ((lastClick != 'menu'+arg) && (document.getElementById('menu'+arg).name != 'nohide')) { //if other link is clicked
			var tmpobj = document.getElementById(lastClick);
			if (lastClick && tmpobj && tmpobj.name != 'nohide') {
				tmpobj.innerHTML = '';
				tmpobj.style.display='none';
			}
		} else {                     //if the same link is clicked
			return true;
		}

		lastClick = 'menu'+arg;
	} else if (lastClick != 'menu'+arg) {  //if data loaded not equals data requested
		if(!(document.getElementById('menu'+arg) && document.getElementById('menu'+arg).name == 'nohide')) return false;
	}

	if ((!mData[arg]) || (!mData[arg][0]) || (mData[arg][mData[arg].length-1][mData[arg][mData[arg].length-1].length-1] != 'loaded')){     //if data is not loaded or loaded incorrectly
		if (!loadCount['menu'+arg]) {
			loadCount['menu'+arg] = 1;
		} else {
			loadCount['menu'+arg]++;
		}

		if (obj) {
			if (loadCount['menu'+arg] > 10) {
				obj.innerHTML = '<ul class="catalogue"><li><a style="font-style: italic;">Ошибка загрузки</a></li></ul>';
			} else {
				obj.innerHTML = '<ul class="catalogue"><li><a style="font-style: italic;">Загрузка...</a></li></ul>';
			}

			obj.style.display='inline';
		}

		mData[arg] = new Array();
		if (loadCount['menu'+arg] <= 10) LoadData(arg);

		return false;
	}

	if(obj){
		if(!mContent[arg]) mContent[arg] = ArrayMerge(arg);
		obj.innerHTML = mouldContent(arg, 0)[0];
		obj.style.display = 'inline';
	} else {
		window.alert('Object not found: '+arg);
	}

	return false;
}


function mouldContent(menuid, startlevel) {
	var sClass;
	var sLink;
	var sCaption;
	var j_start =  mouldContent.arguments[2] || 2;
	var idOption = mouldContent.arguments[3]?"id='"+mouldContent.arguments[3]+"' style='display: none; position: absolute; visibility: hidden;'":'';
	var out = new Array("<ul class='catalogue'"+idOption+">\n", 0);
	if(mContent[menuid].length/3 != Math.round(mContent[menuid].length/3)) window.alert('Warning!\nData is corrupted!');
	for(var j=j_start; j < mContent[menuid].length; j+=3){
		if(mContent[menuid][j] > startlevel){
			var tmp = mouldContent(menuid, mContent[menuid][j], j, idOption);
			out[0] += tmp[0];
			j = tmp[1];
			if(j >= mContent[menuid].length){
				break;
			}
		}
		if(mContent[menuid][j] == startlevel){
			idOption = 'ul' + Math.round(Math.random()*10000) + 10;
			sClass = ' class="drop'+startlevel+'"';
			sLink = 'href="';
			if(mContent[menuid][j-2] == ''){
				sLink += '#" onClick="return flip(\''+idOption+'\');"';
			}
			else{
				if(useSubdomains){
					sLink += (mContent[menuid][j-2].indexOf('http://') >= 0) ? mContent[menuid][j-2]+'"' : (mDomainHref[menuid]?mDomainHref[menuid]:'') + mContent[menuid][j-2] + '"';
				}
				else{
					if(mDomainHref[menuid] && mContent[menuid][j-2].indexOf('http://') == -1){
						var ar = mDomainHref[menuid].split('.');
						sLink += 'http://www.yuga.ru';
						sLink += (ar[1] == 'yuga') ? (ar[0].indexOf('www') == -1) ? '/'+ar[0].substr(7) : '' : '/'+ar[1];
					}
					sLink += mContent[menuid][j-2] + '"';
				}
			}
			if(mContent[menuid][j-1].substr(mContent[menuid][j-1].length-6) == "_blank"){
				sCaption = mContent[menuid][j-1].substr(0, mContent[menuid][j-1].length-6);
				sLink += ' target="_blank"';
			}
			else{
				sCaption = mContent[menuid][j-1];
			}
			out[0] += '<li'+sClass+'><a '+sLink+'title="'+sCaption+'">' + sCaption + '</a></li>\n';
		}
		if(mContent[menuid][j] < startlevel){
			break;
		}
	}
	out[0] += '</ul>\n'
	out[1] = j;
	return out;
}


function LoadData(m){
	var script  = document.createElement("SCRIPT");
	var src;
	var tm = new Date();
	if(isAuthorised) src = (mDomainHref[m] || 'http://www.yuga.ru') + scriptSrc + m;
	else src = scriptSrc + m + '.js?rnd=' + Math.round(tm.getTime() / 900000).toString();
	script.type = "text/javascript";
	script.src  = src;
	script.onerror = scriptError;
	script.onerrorupdate = scriptError;
	head = document.getElementsByTagName("HEAD")[0];
	head.appendChild(script);
}

function scriptError(e){
	window.alert('Error!');
}

function ArrayMerge(id){
	var i;
	var tmpAr = new Array();
	for(i = 0; i < mData[id].length; i++){
		var tmp = new Array();
		tmp = tmp.concat(mData[id][i]);
		if(tmp[tmp.length-1] != 'loaded' || tmp.length == 1) continue;
		tmpAr = tmpAr.concat(tmp.reverse().slice(1).reverse());
	}
	return tmpAr;
}

function flip(ulid){
	var obj;
	if(oUlId){
		if(obj=document.getElementById(oUlId)){
			obj.style.display = "none";
			obj.style.visibility = "hidden";
			obj.style.position = "absolute";
		}
	}
	if(ulid==oUlId){
		oUlId = false;
		return false;
	}
	if(obj=document.getElementById(ulid)){
		obj.style.display = "block";
		obj.style.visibility = "visible";
		obj.style.position = "static";
	}
	oUlId = ulid;
	return false;
}

function preOpen(){
	var e = preOpen.arguments[0];
	if (e && e.shiftKey){
		window.status = 'Menu opening cancelled!';
		return false;
	}

	if (top.menuOpen && menuOpen.length > 0) {
		var i;
		var target;
		for (i in menuOpen) {
			if (target = document.getElementById('menu'+menuOpen[i])) {
				mo(menuOpen[i], true);
				target.name = 'nohide';
			}
		}

		if (menuOpen.length > 1) {
			for(i = 100; i < 102; i++){
				target = document.getElementById('menu' + i);
				/*mo([i], true);*/
				/*target.name = 'nohide';*/
				if (target) {
					target.innerHTML = '';
					target.style.display='none';
				}
			}
		}
	}
	//	window.removeEventListener('keypress', keyCapture, false);
}
document.write("<a id='disablepreopen' onclick='preOpen(window.event)' style='display: none;'>&nbsp;</a>");
var starterObj = document.getElementById('disablepreopen');
if(starterObj && starterObj.click) starterObj.click();
else preOpen();

/******************************************************************************/

var yuga = {
	VERSION        : "0.0.1",
 	formValues     : {},
 	lastCopiedTime : 0,

init:function(){
	window.onload += yuga.instant_init;
},

instant_init:function(){
	this._init_forms();
//	this._init_navlinks();
},

_init_navlinks:function(){
	document.onkeydown = yuga._navlink_click;
},

_navlink_click:function(e){
	var evt = e || window.event;
	if(evt && evt.ctrlKey){
		var obj;
		if((evt.keyCode == 39 && (obj = document.getElementById('link_next')) && obj.href) || (evt.keyCode == 37 && (obj = document.getElementById('link_prev')) && obj.href)){
			document.location = obj.href;
		}
	}
	else{
//		window.status = 'KeyPress not implemented yet.';
	}
},

_init_forms:function(){
	var obj = document.getElementsByTagName('INPUT');
	var obj1 = document.getElementsByTagName('TEXTAREA');
	for(var i in obj1){
		if(!obj1[i].tagName) continue;
		obj[obj.length] = obj1[i];
	}
	for(var i in obj){
		if(!obj.className || obj.className.indexOf('js_clear') == -1) continue;
		this.formValues[obj[i].name] = obj[i].value;
		obj[i].onfocus = function(){
			this.value = (this.value == yuga.formValues[this.name]) ? '' : this.value;
			yuga.assignClassName(this, 'active');
		};
		obj[i].onblur = function(){
			this.value = (this.value.length == 0) ? yuga.formValues[this.name] : this.value;
			yuga.removeClassName(this, 'active');
		};
	}
},

removeClassName:function(obj, name){
	var classes = obj.className.split(' ');
	var res = '';
	for(var i=0; i<classes.length; i++){
		res += ((classes[i] == name) || !classes[i]) ? '' : classes[i]+' ';
	}
	obj.className = res;
},

assignClassName:function(obj, name){
	obj.className += obj.className ? ' '+name : name;
},

onCopy:function(){
	var dat = new Date();
	dat = Math.round(dat.getTime()/1000);
	if(this.lastCopiedTime && (dat - this.lastCopiedTime == 0)) return true;
	window.event.cancelBubble = true;
	alert('При любом использовании материалов\nобязательна ссылка на портал\nКраснодарского края ЮГА.ру\nwww.yuga.ru');
	this.lastCopiedTime = new Date();
	this.lastCopiedTime = Math.round(this.lastCopiedTime.getTime()/1000);
	return true;
}

};

yuga.init();

if (!window.$) {
	window.$ = function () {
		yuga.instant_init();
	}
}
