// JavaScript Document

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function isCookies(){
	return true;
}

var aas_flip_00="v_navigation";

function addEvent(someObj, someEvent, someFunction) {
	if (someObj.addEventListener) 
		{ 
			someObj.addEventListener(someEvent, someFunction, true);
			return true; 
		} else if (someObj.attachEvent) 
				return someObj.attachEvent("on" + someEvent, someFunction); 
		else return false;
}

function isIE(){
	return  (String(navigator.appVersion).indexOf("MSIE") > -1);
}

function isIE6(){
	return  (String(navigator.appVersion).indexOf("MSIE 6") > -1);
}

addEvent(document, 'click', flipMenu);
function _get_item_name_old(obj){
	//window.alert(obj.nodeName);
	var child=obj.firstChild;
	//window.alert(child.nodeName);
	if (child.nodeName=='#text' & child.nodeValue=='  ') window.alert("empty");
	if (child.nodeName=='A') {
		child=child.firstChild;
	}
	if (child.nodeName=='#text') {
			return child.nodeValue;
	}
	else {
		window.alert("false");
		return false;
	}
}


// Изтрива всички интервали в началото, всички интервали в края
// и всички дублиращи се интервали
function strip_string(str){
	var trimmed = str.replace(/^\s+|\s+$/g, '') ;
	trimmed=trimmed.replace(/\s+/g, ' ');
	return trimmed;
}

// Извежда съобщение за грешка!
//TODO - В оригиналния вариант да се промени да не прави нищо!
function die(str){
	window.alert(str);
	return false;
}

// Намира текста на съответния LI елемент и го връща като резултат
function _get_item_name(obj) {
	var name;
	if (obj) {
		if (obj.nodeName=="#text") {
			name=strip_string(obj.nodeValue);
			
			if (name=='') {
				return _get_item_name(obj.nextSibling);
			}
			else {
				//window.alert(name);

				return name;
			}
		}
		else {
			if (obj.nodeName=='A') {
				return _get_item_name(obj.firstChild);
			}
			else {
				die("Warning: Incorrect menu structure!");
			}
		}
	}
	else {
		die("Warning! Incorect menu structure!");
	}
}

function aasInitFlip(){
	aasInitHor();
	aasInitDropDown();
}

function aasInitHor(){
	
		
		ULs=document.getElementsByTagName("ul");
		//window.alert(ULs.length);
		for(var i=0; i<ULs.length; i++){
			// Проверява дали този UL таг е началото на 
			// менюто 
			if (ULs[i].className==aas_flip_00) {
				
				// Обхожда всички LI тагове на UL със
				// стил aas_flip_00 и им налага стил 
				// v_navigation_01. Този стил се използва 
				// за да могат елементите да бъдат разпознати 
				// от функцията проследяваща кликванията
				
				// ВАЖНО: Всяко странично навигационно меню трябва 
				// да има уникален идентификатор. Този идентификатор
				// се използва за да могат да се различават имената 
				/// на cookies в различните менюта. Ако не се различават 
				// и в Academic отворим ниво две то ще бъде отворено
				// и в Community

				//Меню-памет
				//Прочита cookies с име openitem. Ако то съществува
				// значи е било изпратено от предишна сесия и съдържа
				// номера на подменюто което в текущата сесия трябва да остане отворено
				
				var menu_id=ULs[i].id;
				var c=readCookie("openitem_"+menu_id);
				
				// Това е новодобавения код
				var c1=readCookie("openitem_");
				if (c1!=null) {
					// window.alert(c1);					
					c=c1;
					eraseCookie("openitem_");					
					createCookie("openitem_"+menu_id, 0);
				}
				//
			
				

				
				for(var j=0; j<ULs[i].childNodes.length; j++) {
						//window.alert(ULs[i].childNodes[j].nodeName);
						//window.alert(ULs[i].childNodes[j].nodeName); //delme
						if (ULs[i].childNodes[j].nodeName=='LI') {
							ULs[i].childNodes[j].className="v_navigation_01";
							var name=_get_item_name(ULs[i].childNodes[j].firstChild);
							//window.alert(name);
							ULs[i].childNodes[j].id="vnav_"+name;
						}
						 
						 //Меню-паме
						 // Проверява дали номера в прочетеното
						 // cookies съвпада с текущия. Ако има съвпадение
						 // това означава че съответното подменю тябва да остане отворено.
						 
						 var flag=false;
						 if (c==ULs[i].childNodes[j].id) {
								//window.alert("ok");
								flag=true;
							}
						
						var LI=ULs[i].childNodes[j];
						for(var k=0; k<LI.childNodes.length; k++) {
							//window.alert(LI.childNodes[k].nodeName+"inside");
							if (LI.childNodes[k].nodeName=="UL")
								{LI.childNodes[k].className="v_navigation_02";				
								
								//Меню-памет
								// Ако е вдигнат този флаг значи изтегленото cookies
								// съвпада с номера на родителското меню. Т.е.
								// това подменю трябва да бъде отворено.
								if (flag) LI.childNodes[k].style.display="block";
							}
						}
						//window.alert(j);// delme
				}
				ULs[i].style.display="block";
			}
			//ULs[i].className="myclass";	
			//window.alert(i+"ok");		
		}
}

function aasInitDropDown(){
	
		
		ULs=document.getElementsByTagName("ul");
		for(var i=0; i<ULs.length; i++){

			if (ULs[i].id=="cssmenu1") {


				for(var j=0; j<ULs[i].childNodes.length; j++) {
						
						for(var k=0; k<ULs[i].childNodes[j].childNodes.length; k++) 
						{
							if (ULs[i].childNodes[j].childNodes[k].nodeName=='UL') {
								var lis=ULs[i].childNodes[j].childNodes[k];
								for(var l=0; l<lis.childNodes.length; l++)
								{
									if (lis.childNodes[l].nodeName=='LI') {
										var name=strip_string(_get_item_name(lis.childNodes[l].firstChild));
										lis.childNodes[l].id="vnav_"+name;
									}
								}
							}
						}
							 
				}
			
			}
		}
}



// Нова версия!
function closePreview(obj){
		sib=obj;
		while(sib.previousSibling) {
				current=sib.previousSibling
				//window.alert("sibling");
				closeMenuLevel_2(current);
				sib=current;
				
		}
}
function closeNext(obj){
		sib=obj;
		while(sib.nextSibling) {
				current=sib.nextSibling
				//window.alert("sibling");
				closeMenuLevel_2(current);
				sib=current;
				
		}
}

function closeMenuLevel_2(obj)
{
		if (obj.className=="v_navigation_01") {
	
			for(var i=0; i<obj.childNodes.length; i++ ) {
					//window.alert(i+''+obj.childNodes[i].nodeName)
					if (obj.childNodes[i].nodeName=="UL") {
							//window.alert("UL");
							if(obj.childNodes[i].style.display) {
								if(obj.childNodes[i].style.display=='block') {
								obj.childNodes[i].style.display='none';
								obj.childNodes[i].style.paddingLeft='5px';

								}
								else {
										obj.childNodes[i].style.display='none';
										obj.childNodes[i].style.paddingLeft='5px';

								}
							}
							else {
									obj.childNodes[i].style.display='none';
									obj.childNodes[i].style.paddingLeft='5px';

							}
					//CLOSE OTHER ITEMS HERE!
					//closePreview(obj);
					}
					
			}
			return true;
		}
		else {
			return false;
		}
}

function get_father_class_name(obj){
	  if(obj.parentNode.parentNode.parentNode.parentNode && obj.parentNode.parentNode.parentNode.parentNode.parentNode) {
		  //window.alert(obj.parentNode.parentNode.parentNode.parentNode.parentNode.className);
		  return obj.parentNode.parentNode.parentNode.parentNode.parentNode.className;
		  
	  }
}

function is_ul_link(obj) {
	//window.alert(obj.nodeName);
	for(i=0; i<obj.childNodes.length; i++) if(obj.childNodes[i].nodeName=='A') return true; else return false;
}
function makeNonameCookie(obj){
	//window.alert("Create Noname Cookie! "+obj.id);
	createCookie("openitem_", obj.id, 0);
}

function flipMenuLevel_2(obj)
{		
	
	// Проверява дали потребителят е щракнал върху заглавие на оранжево меню
	// и ако проверката е положителна затваря подменютата на синьото меню
	if(obj.parentNode.parentNode.parentNode && obj.parentNode.parentNode.parentNode.className) {
		var menu_id=obj.parentNode.id;
		eraseCookie("openitem_"+menu_id);
	}
	
	//Проверява дали потребителят е щракнал върху елемент от оранжево меню
	if (get_father_class_name(obj)=="navigation") {
		var menu_id=obj.parentNode.parentNode.parentNode.id
		createCookie("openitem_"+menu_id, obj.parentNode.id, 0);
	}
		
	// Проверява дали потребителят е щракнал върху заглавие на синьото меню
	if (obj.className=="v_navigation_01") {
			var menu_id=obj.parentNode.id;
			
			// Разглеждаме случая в който сме щракнали не безименно меню
			// т.е. меню кеото не дублира някое от хоризонаталните менюта
			if (menu_id==="")
				{
					
					makeNonameCookie(obj);	
					return true;
				}

			
			var $nosub=false;
			for(var i=0; i<obj.childNodes.length; i++ ) {

					// Намира съответното синьо подмненю
					if (obj.childNodes[i].nodeName=="UL") {
							var $nosub=true;
							if(obj.childNodes[i].style.display) {
								
								if(obj.childNodes[i].style.display=='block') {
										// Синьото подменю е отворено и трябва са се затвори
										
										// Проверява дали обекта върху който е щракнал потребителя е линк,
										// т.е. дали ще се отвори нова страничка или в браузъра ще остане 
										/// текущата.
										
										if (!(is_ul_link((obj)))) {
											// Остава отворена текущата страничка, следователно 
											// трябва да се затвори подменюто.
											// Вероятно в този случай изпращането на кукито не е необходимо
											obj.childNodes[i].style.display='none';
											obj.childNodes[i].style.paddingLeft='5px';
											eraseCookie("openitem_"+menu_id);
										}
										
										else {
											// Отиваме в нова страничка следователно се нуждаем от куки.
											// В случая то трябва да бъде изтрито тъй като затваряме меню
											eraseCookie("openitem_"+menu_id);
										}

								}
								else {
										// Поведението в този случай е аналогично на горното с тази разлика 
										// че отваряме менюто
										
										if (!(is_ul_link((obj)))){
											obj.childNodes[i].style.display='block';
											obj.childNodes[i].style.paddingLeft='5px';
											createCookie("openitem_"+menu_id, obj.childNodes[i].parentNode.id, 0);
										}
										else {
											
											
											createCookie("openitem_"+menu_id, obj.childNodes[i].parentNode.id, 0);
										}


								}
							}
							else {
									// Свойството display не е зададено с JavaScrip
									// и по подразбиране е none.
									// Останалото поведение е аналогично на горното
									if (!(is_ul_link((obj)))) {
										obj.childNodes[i].style.display='block';
										obj.childNodes[i].style.paddingLeft='5px';
										createCookie("openitem_"+menu_id, obj.childNodes[i].parentNode.id, 0);
									}
									
									else {
										createCookie("openitem_"+menu_id, obj.childNodes[i].parentNode.id, 0);
									}
									

							}
							// В случай че потребителят е щракнал върху обект който не е хипервръзка
							// т.е. не се презарежда нова страница се налага останалите менюта да бъдат 
							// затворени.
							if (!(is_ul_link((obj)))) {
								closePreview(obj);
								closeNext(obj);
							}
					}
								
		
					
		}
			if ($nosub) {
				// Това е случаят в които има подменюта. Не се налага да правим нищо
				//window.alert("yes");
			}
			else {
				//Няма подменюта, и съответно не са предприети никаки действия. Това означава
				// че задължително елемента върху който сме щракнали е линк. Т.е. отиваме в нова
				// страничка. 
				// window.alert("no");
				eraseCookie("openitem_"+menu_id);
			}
			return true;
			

		}		
		else {
			// TODO: Налага ли се тук да връщаме false? 
			// Това ще блокира проследяването на хипервръзката!!!
			return false;
		}
}

function flipMenu(element){
		if (isIE()) obj=event.srcElement; else obj=element.target;
		
		if (flipMenuLevel_2(obj)) {
			return true;
		}
		else {
		
			if (obj.parentNode.className=="v_navigation_01") {
			obj=obj.parentNode;
			//here
			flipMenuLevel_2(obj);
			}
		}
}

function showImg(src, id, note){
		element=document.getElementById(id);
		element.src=src;
		textnode=element.nextSibling.firstChild;
		textnode.nodeValue=note;
}


//flipMenu();
