var Panel = Class.create();

Panel.prototype = {

	panelDisplay : false,

	initialize : function () {
				
		var panel_display_cookie = cookie.read('panel_display');
		
		if (panel_display_cookie == null || panel_display_cookie == 'null') {
			this.panelDisplay = false;
		} else {
			if (panel_display_cookie == 'true') {
				this.panelDisplay = true;
			} else {
				this.panelDisplay = false;
			}
		}
		
		if (this.panelDisplay) {
			$('panel').show();
			$('open-panel').hide();
		} else {
			$('panel').hide();
			$('open-panel').show();
		}
		
	},
	
	openPanel : function () {
		$('panel').show();
		$('open-panel').hide();
		cookie.set('panel_display', 'true');
	},
	
	isExpanded : false,
	
	check_expanded : function () {
		if (this.isExpanded) {
			
			/* look for elements with class 'styleMore' and hide them */
			var elements = $('panel').getElementsByClassName('styleMore');
			
			if (elements) {
				$A(elements).each(function(element){
					element.setStyle({'display':''});
				});
			}
			
		}
	},
	
	check_expanded_action : function () {
		
		if (!this.isExpanded) {
			this.expand_panel();
		}
		
	},
	
	expand_panel : function () {
	
		if (this.isExpanded) {
			
			$('sub-content').setStyle({'left' : '350px', 'top' : '0px', 'width' : '700px'});
			
			var master = $('panel').getElementsByClassName('content').item(0);
			
			master.setStyle({'position' : 'absolute', 'left' : '0px'});						
			
			this.isExpanded = false;
			
			var icon = $('panel').getElementsByClassName('sub-contract').item(0);
				icon.addClassName('sub-expand');
				icon.removeClassName('sub-contract');
				icon.setStyle({'left' : '625px'});
			var close = $('panel').getElementsByClassName('sub-close').item(0);
				close.setStyle({'left' : '655px'});
				
			/* look for elements with class 'styleMore' and hide them */
			var elements = $('panel').getElementsByClassName('styleMore');
			
			if (elements) {
				$A(elements).each(function(element){
					element.setStyle({'display':'none'});
				});
			}
		} else {
		
			$('sub-content').setStyle({'left' : '0px', 'top' : '0px', 'width' : '1000px'});
			
			var master = $('panel').getElementsByClassName('content').item(0);
			
			master.setStyle({'position' : 'absolute', 'left' : '-350px'});
			
			this.isExpanded = true;
			
			var icon = $('panel').getElementsByClassName('sub-expand').item(0);
				icon.addClassName('sub-contract');
				icon.removeClassName('sub-expand');
				icon.setStyle({'left' : '925px'});
			var close = $('panel').getElementsByClassName('sub-close').item(0);
				close.setStyle({'left' : '955px'});
				
				
			/* look for elements with class 'styleMore' and show them */
			var elements = $('panel').getElementsByClassName('styleMore');
			
			if (elements) {
				$A(elements).each(function(element){
					element.setStyle({'display':''});
				});
			}

			
		}
	},
	
	save : function (data) {
		
	$(data).request(
		{
			onComplete: function(t)
			{
				redirect(document.location);
			}
		});
		
	},
	
	load_sub_panel : function (action, subaction, params) {
	
		if (!$('panel').visible()) {
			$('panel').show();
		}
		
		if (!$('sub-content').visible()) {
			$('sub-content').show();
			new Effect.Tween(null, -350, 350, { duration: 0.5 }, function(p){ $('sub-content').setStyle({'left' : p + 'px'}) });
		}
	
		/* workaround for modules outside congresses */
		if (typeof(action) == 'object') {
			new Ajax.Updater('sub-content-target', '/'+action[0]+'/'+subaction+'/'+params, { evalScripts : true });
		} else {
		
			new Ajax.Request('/congresses.'+action+'/'+subaction+'/'+params, {
				onLoading : function() {
					Effect.Fade($('sub-content-target'), { afterFinish : function () {
						$('sub-content-target').innerHTML = '<div class="loader">Loading page..</div>';
						Effect.Appear($('sub-content-target'), { duration : 0.15 });
					}, duration : 0.15 });	
				},
				onComplete: function(transport) {
					
					Effect.Fade($('sub-content-target'), { afterFinish : function () {
						$('sub-content-target').innerHTML = transport.responseText;
									
						var scripts = transport.responseText.extractScripts();
						
						var extractedScripts = scripts.map(function(script) {return eval(script)});

						Effect.Appear($('sub-content-target'), { duration : 0.15, afterFinish : function () {
							
						} });
						
					}, duration : 0.15 });	
					
				}, 
				evalScripts : true,
				evalJS: true
			});
		
		}
	},
	
	setPanelDimensions : function () {
		
	},
	
	load_sub_panel_url : function (url) {
		
		
		if (!$('panel').visible()) {
			$('panel').show();
		}
		
		if (!$('sub-content').visible()) {
			$('sub-content').show();
			new Effect.Tween(null, -350, 350, { duration: 0.5 }, function(p){ $('sub-content').setStyle({'left' : p + 'px'}) });
		}
	
		$('sub-content-target').innerHTML = '<div class="loader">Loading page..</div>';
		
		new Ajax.Updater('sub-content-target', url, { evalScripts : true });	
	},
	
	close_panel : function () {
	
		if (this.isExpanded) {
			this.expand_panel();
		}
	
		new Effect.Tween(null, 350, -350, { duration: 0.5 }, function(p){ $('sub-content').setStyle({'left' : p + 'px'}) });
		
		setTimeout(function(){
			$('sub-content').hide();
		}, 500);
		
	},
	
	formEditorOnMouseOver : function (elm) {
		
		var element = elm.getElementsByClassName('fieldEditButtons').item(0);
		
		if (element) {
			element.show();
		}
		
	},
	
	formEditorOnMouseOut : function (elm) {
		
		var element = elm.getElementsByClassName('fieldEditButtons').item(0);
		
		if (element) {
			element.hide();
		}
		
	},
	
	/* SECTION SPECIFIC FUNCTIONS BELOW */
	
	save_page : function () {
		new Ajax.Request('/congresses.mt_pages/validate', {
			method: 'post',
			onSuccess: function(transport) {
				$('error_messages').update(transport.responseText);
			},
			postBody : $('page_form').serialize()
		});
	},
	
	add_content_block : function () {
		new Ajax.Request('/congresses/add_content_block', {
			method: 'post',
			onSuccess: function(transport) {
				document.location=document.location;
			}
		});
	},
	
	edit_menu_item : function (menu_id, data) {
		new Ajax.Updater('sub-content-target', '/congresses.mt_modules/menu/edit_item='+menu_id, { evalScripts : true, postBody : data });
	},
	
	add_menu_item : function (data) {
		new Ajax.Updater('sub-content-target', '/congresses.mt_modules/menu/add_item=true', { evalScripts : true, postBody : data });
	},
	
	edit_topmenu_item : function (menu_id, data) {
		new Ajax.Updater('sub-content-target', '/congresses.mt_modules/topmenu/edit_item='+menu_id, { evalScripts : true, postBody : data });
	},
	
	add_topmenu_item : function (data) {
		new Ajax.Updater('sub-content-target', '/congresses.mt_modules/topmenu/add_item=true', { evalScripts : true, postBody : data });
	},
	
	add_download_item : function (data) {
		new Ajax.Updater('sub-content-target', '/congresses.mt_modules/downloads/add_item=true', { evalScripts : true, postBody : data });
	},
	
	edit_download_item : function (menu_id, data) {
		new Ajax.Updater('sub-content-target', '/congresses.mt_modules/downloads/edit_item='+menu_id, { evalScripts : true, postBody : data });
	},
	
	hideNote : function (note_id) {
		
		hide_notes = cookie.read('hide_notes');
				
		if (!hide_notes) {
			hide_notes = Array();
			hide_notes.push(note_id);
		} else {
			hide_notes.push(note_id);
		}
		
		cookie.set('hite_notes', hide_notes);
		
	},
	
	hideNotes : function () {
		
		hide_notes = cookie.read('hide_notes');
		
		console.log(hide_notes);
		
	}
	
}

		var lastOpen = false;
		
		function openElements(element) {
			
			if (lastOpen) {
				$(lastOpen).hide();
			}
			
			$(element).show();
			
			lastOpen = element;
			
		}