
function ddMenu(id,name) {

	////////////////////////////////////////////////////////////////////
	this.id = ((typeof(id) == 'undefined') ? alert('Nie podano ID dla ddMenu') : id);
	this.name = (typeof(name) == 'undefined') ? 'menu' : name;
	
	document.write('<div id="'+this.id+'" class="'+this.name+'"></div>');
	this.box = document.getElementById(this.id);
	
	this.items 		= new Array();
	this.submenus 	= new Array();
	
	this.currItem 		= 0;
	this.currSubmenu 	= 0;
	this.currLevel 		= 0;
	
	////////////////////////////////////////////////////////////////////
	this.addItem = function(name,onclick,css) {
		
		var item = new Array();
		item['id'] = this.lastItem()+1;
		item['name'] = name;
		item['onclick'] = ((typeof(onclick) == 'undefined') ? '' : 'location.href=\''+onclick+'\';');
		item['css'] = (((typeof(css) == 'undefined') || (css == '')) ? 'item' : css);
		item['level'] = this.currLevel;
		item['submenu'] = this.currSubmenu;
		
		this.items.push(item);
	};
	
	////////////////////////////////////////////////////////////////////
	this.openSubmenu = function(show) {
		
		this.currLevel++;
		this.currSubmenu++;
		
		if (this.currSubmenu > 1) { 
			if (typeof(this.submenus[(this.currSubmenu)]) != 'undefined') {
				this.currSubmenu++;
			}
		}
		
		var cookie_show = this.getCookie('sub'+this.id+this.currSubmenu);
		
		// jesli ustawione w ciastku
		if (cookie_show == "1") { show = true; }
		else if (cookie_show == "0") { show = false; }
		
		if (typeof(show) == 'undefined') {
			show = true;
		}
		
		var submenu = new Array();
		submenu['id'] = this.currSubmenu; 
		submenu['show'] = show;
		submenu['level'] = this.currLevel;
		
		this.submenus[this.currSubmenu] = submenu;
	};
	
	////////////////////////////////////////////////////////////////////
	this.rollSubmenu = function(submenu) { 
		
		var ul = document.getElementById('sub'+this.id+submenu);
		
		//alert('sub'+this.id+submenu+': '+ul.style.display);
		
		if (ul.style.display == 'none') {
			setTimeout("Effect.BlindDown('"+ul.id+"')",10);
			this.setCookie('sub'+this.id+submenu,"1",1);
		}
		else {
			setTimeout("Effect.BlindUp('"+ul.id+"')",10);
			this.setCookie('sub'+this.id+submenu,"0",1);
		}
	};
	
	////////////////////////////////////////////////////////////////////
	this.closeSubmenu = function() {
		
		this.currLevel--;
		this.currSubmenu = this.lastSubmenu();
	};
	
	////////////////////////////////////////////////////////////////////
	this.lastItem = function(submenu) {
		
		if (typeof(submenu) == 'undefined') { 
			submenu = this.currSubmenu; 
		}
		
		for(var i = this.items.length-1; i >= 0; i--) {
			
			if (this.items[i]['submenu'] == submenu) return parseInt(this.items[i]['id']);
		}
		return 0;
	};
	
	////////////////////////////////////////////////////////////////////
	this.lastSubmenu = function(level) {
		
		if (typeof(level) == 'undefined') { 
			level = this.currLevel; 
		}
		
		for(x in this.submenus) {
			if (this.submenus[x]['level'] == level) return parseInt(x);
		}
		
		return 0;
	};
	
	////////////////////////////////////////////////////////////////////
	this.build = function() {
		
		var menu = this.box;
		var pThis = this;
		
		var prev = null;
		var curr = null;
		var next = null;
				
		for(var i = 0; i < this.items.length; i++) {
			
			prev = this.items[i-1];
			curr = this.items[i];
			next = this.items[i+1];
			
			if (i < this.items.length-1) { 
				if (curr['level'] < next['level']) {
					curr['onclick'] += pThis.id+'.rollSubmenu('+next['submenu']+');';
				}
			}
			
			// pierwszy poziom
			if (i == 0) {
				var submenu = new Array();
				submenu = document.createElement('ul');
				submenu.setAttribute('id','sub'+this.id+this.items[i]['submenu']); 
				submenu.setAttribute('class','sub'+this.name+this.items[i]['level']); 
				
				if (this.submenus[curr['submenu']]['show']) {
					submenu.setAttribute('style','display: block');
				}
				else {
					submenu.setAttribute('style','display: none');
				}
				
				menu.appendChild(submenu);
				menu = submenu;
			}
			
			// kolejne poziomy
			else if (i > 0) {
				if (curr['level'] > prev['level'])
				{
					var submenu = new Array();
					submenu = document.createElement('ul');
					submenu.setAttribute('id','sub'+this.id+this.items[i]['submenu']); 
					submenu.setAttribute('class','sub'+this.name+this.items[i]['level']); 
					
					if (this.submenus[curr['submenu']]['show']) {
						submenu.setAttribute('style','display: block');
					}
					else {
						submenu.setAttribute('style','display: none');
					}
					
					menu.appendChild(submenu);
					menu = submenu;
				}
				else if (curr['level'] < prev['level']) {
					for(var j = curr['level']; j < prev['level']; j++) { 
						menu = menu.parentNode;
					}
				}
			}
			
			var item =  document.createElement('li');
			item.setAttribute('id',this.id+'Item'+curr['submenu']+'_'+curr['id']); 
			item.appendChild(document.createTextNode(curr['name']));
			item.setAttribute('onclick',curr['onclick']);
			item.setAttribute('onmouseover','this.className="'+curr['css']+'_hover"');
			item.setAttribute('onmouseout','this.className="'+curr['css']+'"');
			item.setAttribute('class',curr['css']);
			
			menu.appendChild(item);
		}
	};
	
	////////////////////////////////////////////////////////////////////
	this.getCookie = function(c_name) {
		
		var i,x,y,ARRcookies=document.cookie.split(";");
		for (i=0;i<ARRcookies.length;i++) {
			x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
			y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
			x=x.replace(/^\s+|\s+$/g,"");
			if (x==c_name) {
				return unescape(y);
			}
		}
	};

	////////////////////////////////////////////////////////////////////
	this.setCookie = function(c_name,value,exdays) {
		var exdate=new Date();
		exdate.setDate(exdate.getDate() + exdays);
		var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
		document.cookie=c_name + "=" + c_value;
	};
	
};
