dojo.require("dojo.cookie");

dojo.declare("BVVMenu", null, {
	
	
	id:"",
	cookiePefix:"MIO_",
	
	constructor: function(id) {
		this.id=id;
		this.createOpenButtonWithEvent();
		this.closeItems();
	},
	
	closeItems:function(){
		var menuChildren = dojo.byId(this.id).children;
		var openedItemsClassName = new Array();
		var opened = dojo.cookie(this.cookiePefix+this.id);
    	if(opened){
    		openedItemsClassName = opened.split("|"); 
    	}
    	dojo.query("#"+this.id+" > li > ul").style('display', 'none');
    	if(openedItemsClassName.length>0){
			for (var i in menuChildren){
				if(menuChildren[i].tagName == "LI"){
					for(var x in openedItemsClassName){
						if(openedItemsClassName[x] == menuChildren[i].className){
							this.openClose(null,menuChildren[i]);
						}
					}
				}
			}
    	}
    	else{
    		dojo.query("#"+this.id+" > li > ul").style('display', 'none');
    	}
	},
	
	
	createOpenButtonWithEvent:function(){
		var _this=this;
		var menuChildren = new Array();//dojo.byId(this.id).children;
		var subMenuCh =  dojo.query("#"+this.id +" li > ul");
			
		for(var x in subMenuCh){
			
			if(subMenuCh[x].tagName == "UL"){
				menuChildren.push(subMenuCh[x].parentNode);
			}
		}
		
		
		//subMenuChildren[i].parentNode 
		
		
		
		
		for (var i in menuChildren){
			if(menuChildren[i].tagName == "LI"){
				

				var n = dojo.create("SPAN", { innerHTML: "+",class:"plus"},menuChildren[i],"first");
				dojo.connect(n,"onclick", function(event){
					_this.openClose(event);
				});
				//console.log(n);
			}
			
		}
	},

	
	openClose:function(evt,item){
		var button;
		var liNode;
		
		if(evt){
			liNode = evt.target.parentNode;
			button = evt.target;
		}
		else{
			liNode = item;
			button = item.children[0];
		}
		
		//dojo.query("."+evt.currentTarget.parentNode.className+" > ul").style('display', 'block');
		for(var i in liNode.children){
			if(liNode.children[i].tagName == "UL"){
				//console.log(dojo.style(evt.currentTarget.parentNode.children[i],"display"));
				if(button.innerHTML == "-"){
					dojo.style(liNode.children[i],"display","none");
					button.innerHTML = "+";
					dojo.removeClass(button,"minus");
					dojo.addClass(button,"plus");
					this.removeOpenedItemCookie(liNode.children[i]);
				}
				else{
					dojo.style(liNode.children[i],"display","block");
					button.innerHTML = "-";
					dojo.removeClass(button,"plus");
					dojo.addClass(button,"minus");
					if(!item){
						this.addOpenedItemCookie(liNode.children[i]);
					}
				}
			}
		}
	},
	
	
	removeOpenedItemCookie:function(item) {
		var openedItemsClassName = new Array();  
		var opened = dojo.cookie(this.cookiePefix+this.id);
		
        if(opened){
        	openedItemsClassName = opened.split("|"); 
        }
        
        if(openedItemsClassName.length > 0){
        	for(var i in  openedItemsClassName){
        		if(openedItemsClassName[i] == item.parentNode.className){
        			openedItemsClassName.splice(i,1);
        		}
        	}
        }
        dojo.cookie(this.cookiePefix+this.id,openedItemsClassName.join("|"), {
            expires: 1
        });
    },

    
    addOpenedItemCookie:function(item) {
    	var openedItemsClassName = new Array();  
    	var opened = dojo.cookie(this.cookiePefix+this.id);
    	
    	if(opened){
    		openedItemsClassName = opened.split("|"); 
    	}
    	openedItemsClassName.push(item.parentNode.className);
    	dojo.cookie(this.cookiePefix+this.id,openedItemsClassName.join("|"), {
    		expires: 1
    	});
    },

	
	
	
	/**
	 * slide contentu třeba pro měníčko...  
	 * 	<div id = "hlamenu" style="background-color: red;">homepage menu</div>
		<script type="text/javascript">
			var coCo = new CustomContent();
			coCo.overSlide('hlamenu',50,250);
		</script>
	 * 
	 */
	
	overSlide:function(id,closeHeight,openHeight){
		if(dojo.byId(id) && closeHeight,openHeight){
			//dojo.byId(id).set("style", "width:"+closeHeight+"px;");
			dojo.style(id,'height',closeHeight+"px");
			_this = this;
			dojo.connect(dojo.byId(id),"onmouseover",function(evt){
		    	_this.slideTo(id,200);
		    });
	
			dojo.connect(dojo.byId(id),"onmouseout",function(evt){
		    	_this.slideTo(id,50);
		    });
		}
	},
	
	slideTo:function(id,to){
		dojox.fx.wipeTo({
			node: id,
			duration: 300,
			height: to
		}).play();
	}
	
	
	
});

