function iconicaMessage(errorMessage) {
	//console.debug(errorMessage);
}

function iconicaMenu(menuPanelContainerId){
	var panelArr = new Array();
	var isAnimating = false;
	var isLocked = false;
	var currentMenu = false;	
	
	this.init = function(){
		for(var i=0;i<panelArr.length;i++){
			iconicaMessage(panelArr[i].name);
			$(menuPanelContainerId).insert(panelArr[i].panel);
		}
		iconicaMessage('panel count: '+panelArr.length);
		$('navHeaderJSContainer').setStyle({ 'borderBottom': 'none' }); //remove bottom border on load
		
		//prvious unlock code
		//var handle = this;
		//isLocked = false;	
		$$('.mainmenu-image').each(function(elem){
			//elem.writeAttribute({'srcreplace': elem.readAttribute('srcout')});		
			//elem.writeAttribute({'src': elem.readAttribute('srcout')});
			//handle.fadeSRC(elem, elem.readAttribute('srcout'));
			
			elem.observe('mouseout', function(e){
				Event.element(e).writeAttribute({'src': Event.element(e).readAttribute('srcon')});
			});
		});
		
		//$('iconicaContentContainer').innerHTML = '';
		//$('iconicaContentContainer').style.display = '';
		//end unlock code
	}
	
	this.addPanel = function(thePanel, id){
		panelArr.push({'name': id, 'panel': thePanel});		
	}

	this.focusPanel = function(target, imgId){
		var handle = this;
		if(true){
			this.openMenu();
	
			if(currentMenu != imgId){
			$$('.mainmenu-image').each(function(elem){
				if(elem.id != imgId){
					//handle.fadeSRC(elem, elem.readAttribute('srcoff'));
					elem.writeAttribute({'src': elem.readAttribute('srcoff')});
			
				}
				else
					elem.writeAttribute({'src': elem.readAttribute('srcon')});
					//handle.fadeSRC(elem, elem.readAttribute('srcon'));
			});
			currentMenu = imgId;
			for(var i=0;i<panelArr.length;i++){
				if(panelArr[i].name == target){
					this.showPanel(panelArr[i].name, true);
					
				}
				else{
					//panelArr[i].writeAttribute({'src':panelArr[i].readAttribute('srcoff')});
					
					this.hidePanel(panelArr[i].name, true);
				}
			}
			}
		}
	}

	this.stopEffects = function(panelId){
		var queue = Effect.Queues.get(panelId);
		queue.each(function(effect) { effect.cancel(); });		
	}
	
	this.showPanel = function(panelId, cancel) {	
		var thisPanel = $(panelId);
		if(cancel)
			this.stopEffects(panelId);
		new Effect.Appear(thisPanel, {
			duration: 0.5 * (1 - thisPanel.getOpacity()),
			to: 1.0,
			queue: {position: 'end', scope: panelId},
			afterFinish: function(){
				thisPanel.setOpacity(1);
			}
		});
	}
	
	this.hidePanel = function(panelId, cancel) {
		var thisPanel = $(panelId);
		if(cancel)
			this.stopEffects(panelId);
		new Effect.Fade(thisPanel, {
			duration: 0.5 * thisPanel.getOpacity(),
			to: 0.0,
			queue: {position: 'end', scope: panelId},
			afterFinish: function(){
				thisPanel.setOpacity(0);	
			}
		});
	}
	
	this.unlock = function(){
		try{

		}
		catch(e){}
	}
	this.lock = function(){
	}
	
	this.locked = function(){
		return isLocked;
	}
	this.getCurrentMenu = function(){
		return currentMenu;	
	}
	
	this.isOpen = function() {
		return !($(menuPanelContainerId).style.display == 'none');
	}
	
	this.openMenu = function() {
		try{
		iconicaMessage('start: IconicaMenu.openMenu()');

		if(!this.isOpen() && !isAnimating) {
			isAnimating = true;
			$('navHeaderJSContainer').setStyle({ 'borderBottom': '1px solid #e0dedb' });
			new Effect.BlindDown(menuPanelContainerId, {
				duration: 0.5,
				afterFinish: function() {
					isAnimating = false;
					iconicaMessage('animation finished');
	
				}
			});
		} else if(this.isOpen()) {
			iconicaMessage('error: menu is open');
		} else {
			iconicaMessage('error: menu is animating');
		}
		
		iconicaMessage('end: IconicaMenu.open()');
		}
		catch(e){}
	};
	
	this.closeMenu = function() {
		try{
		iconicaMessage('start: IconicaMenu.close()');
		iconicaMessage('offsetLeft: '+$('container').offsetLeft);
		
		
		if(this.isOpen() && !isAnimating) {
			isAnimating = true;
			var handle = this;
			currentMenu = false;
			
			$$('.mainmenu-image').each(function(elem){
				//handle.fadeSRC(elem, elem.readAttribute('srcreplace'));
				elem.writeAttribute({src: elem.readAttribute('srcreplace')});
				});
			
			for(var i=0;i<panelArr.length;i++){
				this.hidePanel(panelArr[i].name, true);
			}
			
			new Effect.BlindUp(menuPanelContainerId, {
				duration: 0.5,
				afterFinish: function() {
					$('navHeaderJSContainer').setStyle({ 'borderBottom': 'none' });
					isAnimating = false;
				}
			});
			
			$('allProjectsSpan').fade({duration: .3, to: 0});
		
		} else if(!this.isOpen()) {
			iconicaMessage('error: menu is not open');
		} else {
			iconicaMessage('error: menu is animating');
		}

		iconicaMessage('end: IconicaMenu.close()');
		}
		catch(e){}
	}
	

}

function panel(name, linkArr){
	this.toElement = function(){
		try{
		var attr = { 'class':name, 'id':name};
		var elem = new Element('div', attr);
		var innerTxt = '';
		for(var i=0;i<linkArr.length;i++)
			innerTxt += linkArr[i]+'<br />';
		elem.innerHTML = innerTxt;
		elem.fade({duration:0});
		iconicaMessage('built panel '+name);
		return elem;
		}
		catch(e){}
	}
}

function projectPanel(name, linkArr){
	this.toElement = function(){
		try{
		var attr = { 'class':name, 'id':name};
		var elem = new Element('div', attr);
		for(var i=0;i<linkArr.length;i++){
			//alert(linkArr[i]);
			if(i<linkArr.length-1)
				var innerAttr = {'class': 'projectsCol'};
			else
				var innerAttr = {'class': 'projectsEndCol'};
			var innerDiv = new Element('div', innerAttr);
			var innerTxt = '';
			//iconicaMessage('project lines: '+linkArr[i].length);
			for(var x=0; x<5; x++){
				innerTxt += linkArr[i][x]+'<br />';
			}
			innerDiv.innerHTML = innerTxt;
			elem.insert(innerDiv);
		}
		elem.fade({duration:0});
		return elem;
		}
		catch(e){}
	}
}

function iconicaContent(containerElementId, menuObject) {
	var isAnimating = false;	
	
	this.load = function(contentUrl, focusID) {
		try{
		iconicaMessage('start: IconicaContent.load(\'' + contentUrl + '\')');
		if(!isAnimating) {
			isAnimating = true;
			
			ShineBox.hide();
			
			if(focusID && focusID != -1){
			$$('.future, .current').each(function(elem){
				if(elem.readAttribute('pageid') == focusID)
					elem.className = 'current';
				else
					elem.className = 'future';
				
				
			});
			}

			var currentMenu = menuObject.getCurrentMenu();
			if(currentMenu != false){
				$$('.mainmenu-image').each(function(elem){
					if(elem.id != currentMenu)
						elem.writeAttribute({'srcreplace': elem.readAttribute('srcout')});
						
					else
						elem.writeAttribute({'srcreplace': elem.readAttribute('srccurrent')});
				
				});
			}
			menuObject.closeMenu();
			
			iconicaMessage('fading content of - '+containerElementId);
	
			new Effect.Fade($(containerElementId), {
				duration: .5,
				queue: {scope: 'content', position: 'end'},
				afterFinish: function(effect){
					$(containerElementId).innerHTML = '<img src="/images/loader-large.gif" id="contentSpinner" />';
				}
			});
			
			new Effect.Appear($(containerElementId), {
				duration: .5,
				from: 0,
				to: 1,
				queue: {scope: 'content', position: 'end'}
			});			
	
			new Ajax.Request(contentUrl, {
				method: 'get',
				onSuccess: function(transport) {
					variables = eval('(' + transport.responseText + ')');
					
					iconicaMessage('fading out loader');
					new Effect.Fade($(containerElementId), {
						duration: .5,
						to: 0,
						queue: {scope: 'content', position: 'end'},
						afterFinish: function(){
							iconicaMessage('replacing content');
							$(containerElementId).innerHTML = variables.body;
							document.title = variables.title;
							$$('.js-hidden').each(function(item){ item.style.display = ''; });
						}
					});
					
					if(variables.page_id != '' && variables.page_id!=1){
						var params = { bgcolor: '#000000', wmode: 'transparent' };
						var flashvars = { url: '/slideshow?id='+variables.page_id};
						swfobject.embedSWF('/swf/Iconica.swf', 'swf-feature', '800', '363', '9.0.0', '/swf/expressInstall.swf', flashvars, params);	
					}

					new Effect.Appear($(containerElementId), {
						duration: 0.5,
						from: 0.0,
						to: 1.0,
						queue: {position: 'end', scope: 'content'},
						afterFinish: function(){
							isAnimating = false;	
							$(containerElementId).setOpacity(1);
						}
	
					});

					
				}, // onSuccess
				onFailure: function(transport){;	
				}
			});
		} else {
			iconicaMessage('content is animating');
		}
		iconicaMessage('start: IconicaContent.load(\'' + contentUrl + '\')');
		}
		catch(e){	
		}
	}
	
	this.replaceInner = function(elem, html){
		elem.innerHTML = html;	
	}
}
