//declarations
var formresultFX;

var myTimer;
	
var defaultoptions = {duration: 'normal', transition: 'expo:out', wait: false};

var windowScroll;

//functions	
function displayNotice(message)
{	

	if($defined($('notice')))
	{
		var imageLoc;
		if($('notice').hasClass('adminNotice'))
		{
			imageLoc = '../images/';
		}
		else
		{
			imageLoc = 'images/';
		}
		
		$('notice').set('html','<div class="floatright"><img src="' + imageLoc + 'cross.png" alt="" class="icon" /></div><div class="floatleft"><img src="' + imageLoc + 'exclamation.png" alt="" class="icon" /></div><h5>Notification Panel</h5><div class="clear"></div><div class="inside">' + message + '</div>');
		
		var scrollFX = new Fx.Scroll(window,{duration: 'normal', transition: 'expo:out', wait: false, offset: {'x':0,'y':-10}}).toElement('notice').chain(function()
		{
			if((message.toLowerCase().contains('error')))
			{
				$('notice').setStyles({ 'background-color' : '#900' });
			}
			
			formresultFX.slideIn().chain(function()
			{
				if($defined(myTimer))
				{	
					myTimer = $clear(myTimer);
				}
				
				myTimer = this.slideOut.delay(30000,this);
				
			});
		});
	}
	
}

function displayPanel(panelID,command)
{	

	if($defined($$('.togglepanel')[panelID]))
	{
		(function()
		{
			$$('.togglepanel')[panelID].fireEvent(command);
			if(command == 'click')
			{
				windowScroll.toElement($$('.panel')[panelID]);
				
				(
					function()	{ 
												$$('.panel')[panelID].highlight('#09f'); 
											}
				).delay(500);
			}
		}).delay(100);
	}
}

function goToTab(panelNum,itemID,tabNum)
{
	displayPanel(panelNum);
	if($defined($(itemID)))
	{
		$(itemID).getElements('.tabButton')[tabNum].fireEvent('click');
	}
}


function openTab(tabIndex)
{	
	if($defined(document.getElement('.tabButtonArea').getElements('.tabButton')[tabIndex]))
	{
		document.getElement('.tabButtonArea').getElements('.tabButton')[tabIndex].fireEvent('click');
	}
}

//init
window.addEvent('domready',function()
{
	windowScroll = new Fx.Scroll(window,{duration: 'long', transition: 'expo:in:out', wait: false, offset: {'x':0,'y':-50}}); 
	
	if($defined($('selectPage')))
	{
		$('selectPage').getElement('select').addEvent('change',function()
		{
			window.location = $('selectPage').get('action') + '/paging/' + $('selectPage').getElement('select').value + '/';
		});
	}
	
	if($defined($('addScribbleForm')))
	{
		
		var scribbleField = $('addScribbleForm').getElement('textarea.scribbleField');
		var scribbleCounter = $('addScribbleForm').getElement('.scribbleCounter');
		
		
		scribbleCounter.set('text',(140 - scribbleField.get('value').length) + ' chars. left');
			
		if(scribbleField.get('value').length > 140)
		{
			scribbleField.set('value',scribbleCounter.get('value').clean().substr(0,140));
		}
		
		scribbleField.addEvents(
		{
			'keyup' : function()
			{
				if(this.get('value').length > 140)
				{
					this.set('value',this.get('value').clean().substr(0,140));
				}
				
				scribbleCounter.set('text',(140 - this.get('value').length) + ' chars. left');
			},
			
			'blur' : function()
			{
				if(this.get('value').length > 140)
				{
					this.set('value',this.get('value').clean().substr(0,140));
				}
				
				scribbleCounter.set('text',(140 - this.get('value').length) + ' chars. left');
			}
			
		});
	}
	
	
	$$('.scribble').each(function(element,i)
	{
		var scribbleFields = element.getElements('.scribbleField');
		var scribbleCounters = element.getElements('.scribbleCounter');
		var scribbleViewPanels = element.getElements('.scribbleView');
		var scribbleEditPanels = element.getElements('.scribbleEdit');
		var scribbleButtons = element.getElements('.scribbleButton');
		var scribbleEditFX = new Array();
		var scribbleViewFX = new Array();
		
		scribbleFields.each(function(scribble,i)
		{
			scribbleButtons[i].set('text','edit');
			scribbleEditFX[i] = new Fx.Slide(scribbleEditPanels[i],defaultoptions).hide();
			scribbleViewFX[i] = new Fx.Slide(scribbleViewPanels[i],defaultoptions).show();
			
			scribbleCounters[i].set('text',(140 - scribble.get('value').length) + ' chars. left');
			
			if(scribble.get('value').length > 140)
			{
				scribble.set('value',scribbleCounters[i].get('value').clean().substr(0,140));
			}
				
			scribble.addEvents(
			{
				'keyup' : function()
				{
					if(this.get('value').length > 140)
					{
						this.set('value',this.get('value').clean().substr(0,140));
					}
					
					scribbleCounters[i].set('text',(140 - this.get('value').length) + ' chars. left');
				},
				
				'blur' : function()
				{
					if(this.get('value').length > 140)
					{
						this.set('value',this.get('value').clean().substr(0,140));
					}
					
					scribbleCounters[i].set('text',(140 - this.get('value').length) + ' chars. left');
				}
				
			});
			
			scribbleButtons[i].addEvents(
			{
				'click' : function(e)
				{
					if(!scribbleViewFX[i].open)
					{
						scribbleButtons[i].set('text','edit');
						
						scribbleEditFX[i].slideOut();
						scribbleViewFX[i].slideIn();
					
					}
					else
					{
						scribbleButtons[i].set('text','view');
						
						scribbleEditFX[i].slideIn();
						scribbleViewFX[i].slideOut();
					}
					
					var e = new Event(e).stop();
				}
			});
		
		});
	
	});
	
	if($defined($('toggleHeader')))
	{
		var headerFX = new Fx.Slide('header',defaultoptions).hide();
		
		var toggleHeaderSpace = $('toggleHeader').getElement('a');
		
		toggleHeaderSpace.set('html','show site header<img src="images/bullet_arrow_down.png" alt="" class="icon" />');
		
		toggleHeaderSpace.addEvent('click',function(e)
		{
			if(!headerFX.open)
			{
				toggleHeaderSpace.set('html','hide site header<img src="images/bullet_arrow_up.png" alt="" class="icon" />');
				headerFX.slideIn();
			}
			else
			{
				toggleHeaderSpace.set('html','show site header<img src="images/bullet_arrow_down.png" alt="" class="icon" />');
				headerFX.slideOut();
			}
			
			var e = new Event(e).stop();
		});
	}
	
	if($defined($('notice')))
	{
		formresultFX = new Fx.Slide('notice',defaultoptions).hide();
		
		$('notice').addEvents(
		{
													
			'click' : function()
			{
				formresultFX.slideOut();
			},
		
			'mouseenter' : function()
			{
				this.setStyle('cursor','pointer');
			}
			
		});
	}
	
	$$('.menu a').each(function(element,index)
	{
		element.set('color',element.getStyle('color'));
		element.set('morph',defaultoptions);
		
		element.addEvents(
		{									
			'mouseenter' : function()
			{
				this.morph({ 'background-color' : element.get('color'), 'color' : '#fff' });
			},
			
			'mouseleave' : function()
			{
				this.morph({ 'background-color' : '#fff', 'color' : element.get('color') });
			}
		});
	});
	
	$$('.thumbnail').each(function(element,index)
	{
		element.set('morph',defaultoptions);
		
		element.addEvents(
		{									
			'mouseenter' : function()
			{
				this.morph({ 'border-color' : '#900' });
			},
			
			'mouseleave' : function()
			{
				this.morph({ 'border-color' : '#e0e0e0' });
			}
		});
	});
	
	
	$$('.togglepanel').each(function(element,index)
	{
		var panelFX = new Fx.Slide($$('.panel')[index],defaultoptions).hide();
		
		var toggleFX = new Fx.Morph(element,defaultoptions);
		
		element.addEvents({
		
			'click' : function()
			{
				panelFX.toggle();
				
				if(!panelFX.open)
				{
					(function(){ windowScroll.toElement($$('.panel')[index]); }).delay(500);
				}
			},
			
			'show' : function()
			{
				panelFX.slideIn();
			},
			
			'hide' : function()
			{
				panelFX.slideOut();
				
			},
			
			'mouseenter' : function()
			{
				this.setStyle('cursor','pointer');
				toggleFX.start({ 'background-color' : '#900', 'padding-left' : 20 });
			},
			
			'mouseleave' : function()
			{
				toggleFX.start({ 'background-color' : '#111', 'padding-left' : 15 });
			}
			
		});
		
	});
	
	$$('a.external').each(function(element,index)
	{
		element.setProperty('target', '_blank');
	});

	$$('.dropdownform').each(function(ddform,index)
	{
		var dd = ddform.getElement('select');
		
		dd.set('morph',defaultoptions);
		
		dd.addEvent('change',function()
		{
			if(dd.value.clean() != '')
			{
				ddform.submit();
			}
			
		});
	});
	
	

	
	$$('.checkform').each(function(checkform,index)
	{
		checkform.addEvent('submit',function(e)
		{
			var errorresult = new Array();
			
			//collect errors from required fields
			var inputStuff = this.getElements('input[type=text]').extend(this.getElements('input[type=password]')).extend(this.getElements('select'));
			
			inputStuff.each(function(element,index)
			{
				var proceed = true;
				
				if($defined(element.get('title')) && !element.disabled)
				{
					if(element.value.clean() == '')
					{
						errorresult.include(element.get('title'));	
						element.set('morph',defaultoptions).morph({'background-color' : '#09f', 'color' : '#ffffff' });
						
						proceed = false;
					}
					else
					{
						element.set('morph',defaultoptions).morph({'background-color' : '#ffffff', 'color' : '#000000' });
					}
				}
				
				if(proceed)
				{
					if(element.hasClass('numericData'))
					{
						if(element.value.clean() != '' && isNaN(element.value.toFloat()))
						{
							if($defined(element.getProperty('title')))
							{
								errorresult.include(element.getProperty('title'));	
							}
							else
							{
								errorresult.include(element.getProperty('alt'));	
							}
							
							proceed = false;
							
							element.set('morph',defaultoptions).morph({'background-color' : '#09f', 'color' : '#ffffff'});
							
						}
						else
						{
							element.set('morph',defaultoptions).morph({'background-color' : '#ffffff', 'color' : '#000000' });
						}
					}
				}
				
				if(proceed)
				{
					if(element.hasClass('noSpaces'))
					{
						if(element.value.clean().contains(' '))
						{
							if($defined(element.getProperty('title')))
							{
								errorresult.include(element.getProperty('title'));	
							}
							else
							{
								errorresult.include(element.getProperty('alt'));	
							}
							
							proceed = false;
							
							element.set('morph',defaultoptions).morph({'background-color' : '#09f', 'color' : '#ffffff'});
							
						}
						else
						{
							element.set('morph',defaultoptions).morph({'background-color' : '#ffffff', 'color' : '#000000' });
						}
					}
				}
				
			});
			
			var textareas = this.getElements('textarea');
			var textareaEditors = this.getElements('.nicEdit-main');
			var textareaDivs = this.getElements('.textarea');
			
			textareas.each(function(element,index)
			{
				var proceed = true;
				
				if($defined(element.get('title')) && !element.disabled)
				{
					if($defined(textareaEditors[index]))
					{
						if(textareaEditors[index].get('html').clean().replace(/<\/?[^>]+>/gi,'') == '')
						{
							errorresult.include(element.get('title'));
							
							textareaDivs[index].set('morph',defaultoptions).morph({'background-color' : '#09f', 'color' : '#ffffff' });
							
							proceed = false;
						}
						else
						{
							textareaDivs[index].set('morph',defaultoptions).morph({'background-color' : '#ffffff', 'color' : '#000000' });
						}
					}
					else
					{
						if(element.get('value').clean() == '')
						{
							errorresult.include(element.get('title'));
							
							element.set('morph',defaultoptions).morph({'background-color' : '#09f', 'color' : '#ffffff' });
							
							proceed = false;
						}
						else
						{
							element.set('morph',defaultoptions).morph({'background-color' : '#ffffff', 'color' : '#000000' });
						}
					}
				}
				
				if(proceed)
				{
					if(element.hasClass('numericData'))
					{
						if($defined(textareaEditors[index]))
						{
							if(textareaEditors[index].get('html').clean().replace(/<\/?[^>]+>/gi,'') != '' && isNaN(textareaEditors[index].get('html').toFloat()))
							{
								if($defined(element.getProperty('title')))
								{
									errorresult.include(element.getProperty('title'));	
								}
								else
								{
									errorresult.include(element.getProperty('alt'));	
								}
								
								textareaDivs[index].set('morph',defaultoptions).morph({'background-color' : '#09f', 'color' : '#ffffff' });
								
							}
							else
							{
								textareaDivs[index].set('morph',defaultoptions).morph({'background-color' : '#ffffff', 'color' : '#000000' });
							}
						}
						else
						{
							if(element.get('value').clean() != '' && isNaN(element.get('value').toFloat()))
							{
								if($defined(element.getProperty('title')))
								{
									errorresult.include(element.getProperty('title'));	
								}
								else
								{
									errorresult.include(element.getProperty('alt'));	
								}
								
								element.set('morph',defaultoptions).morph({'background-color' : '#09f', 'color' : '#ffffff' });
							}
							else
							{
								element.set('morph',defaultoptions).morph({'background-color' : '#ffffff', 'color' : '#000000' });
							}
						}
					}
				}
			});
			
			//if error is found
			if(errorresult.length > 0)
			{
				var re = new RegExp(',','g');
				
				displayNotice('Error: Some of the values you have placed are either missing or invalid. These fields are marked blue:<br /><strong>' + errorresult.toString().replace(re,', ') + '</strong>');
				
				e = new Event(e).stop();
			}			
		
			
		});
					
	});
	
	$$('input[type="text"]','input[type="password"]','input[type="file"]','textarea').each(function(element,index)
	{
		if(!(element.readOnly) && !(element.disabled))
		{
			element.addEvents({
			
				'blur': function()
				{
					this.set('morph',defaultoptions).morph({'background-color': '#fff'});
				},
			
				'focus': function()
				{
					this.set('morph',defaultoptions).morph({'background-color': '#fea'});
				}
				
			});
		}
		
	});
	
	$$('.textarea').each(function(element,index)
	{
		element.addEvents({
		
			'click' : function()
			{
				element.set('morph',defaultoptions).morph({ 'background-color': '#fff', 'color' : '#000'});
			}
			
		});
	});
	
	$$('.item').each(function(element,index)
	{
		var fx = new Fx.Morph(element,defaultoptions);
		
		element.addEvents({
											
			'mouseenter':function()
			{
				fx.start({'background-color': '#ffeedd'});
			},
		
			'mouseleave':function()
			{
				fx.start({'background-color': '#fff'});
			}
		});
	});
	
	$$('.taskmenu a').each(function(element,index)
	{
		var fx = new Fx.Morph(element,defaultoptions);
		
		element.addEvents({
											
			'mouseenter':function()
			{
				fx.start({'background-color': '#000','color' : '#900', 'padding-left' : 15});
			},
		
			'mouseleave':function()
			{
				fx.start({'background-color': '#900','color' : '#fff', 'padding-left' : 10});
			}
		});
	});
	
	$$('.gototop').each(function(element,index)
	{
	
		element.addEvents({
		
			'click': function(event)
			{
				event = new Event(event).stop();
				windowScroll.toTop();
			}
		
		});
		
	});
	
	$$('input[type=submit],input[type=reset]').each(function(element,index)
	{
		var fx = new Fx.Morph(element, defaultoptions);
		
		element.addEvents({
		
			'mouseleave': function()
			{
				fx.start({'background-color': '#000', 'color' : '#f0f0f0'});
			},
		
			'mouseenter': function()
			{
				fx.start({'background-color': '#ff9900', 'color' : '#333'});
			},
			
			'focus': function()
			{
				fx.start({'background-color': '#ff9900', 'color' : '#333'});
			},
			
			'blur': function()
			{
				fx.start({'background-color': '#000', 'color' : '#f0f0f0'});
			}
			
		});
		
	});
	
	$$('.tip').each(function(el)
	{
		var full_title;
		
		if($defined(el.getProperty('title')))
		{
			full_title = el.getProperty('title');
		}
		else
		{
			full_title = '';
		}
		
		var dual = full_title.split('::');
		if(dual.length > 1)
		{
			var tip_title = dual[0].trim();
			var tip_text	= dual[1].trim();
			el.store('tip:title', tip_title);
			el.store('tip:text', tip_text);
		}
		else
		{
			el.store('tip:title', '');
			el.store('tip:text',dual[0].trim());
		}
	});
	
	var myTips = new Tips('.tip',
													{
														'className' : 'tool',
														'showDelay' : 200,
														onShow: function(tip)
														{
															tip.set('tween', defaultoptions).fade('in');
														},
														onHide: function(tip)
														{
															tip.set('tween', defaultoptions).fade('out');
														}
													}
												);
	
	$$('.panel').each(function(element,number)
	{
		element.getElements('.nicEdit-main').addEvents(
		{
			'keyup': function()
			{
				if($defined(this.getParent('.tab')))
				{
					this.getParent('.tab').slide('show');
					displayPanel(number,'show');
				}
				else
				{
					displayPanel(number,'show');	
				}
			}
		});
				
		var collapseTabs = element.getElement('.collapseTabs');
		
		if($defined(collapseTabs))
		{
			collapseTabs.addEvent('click',function(e)
			{
				e = new Event(e).stop();
				element.getElements('.item').fireEvent('collapseAll');
			});
		}
		
		var expandTabs = element.getElement('.expandTabs');
		
		if($defined(expandTabs))
		{
			expandTabs.addEvent('click',function(e)
			{
				e = new Event(e).stop();
				element.getElements('.item').fireEvent('expandAll');
			});
		}
	
		element.getElements('.item').each(function(itemObj,x)
		{
			var tabs = itemObj.getElements('.tab');
			var tabButtons = itemObj.getElements('.tabButton');
			
			var tabFX = new Array;
			
			tabs.each(function(tab,i)
			{
				tabFX[i] = new Fx.Slide(tabs[i],defaultoptions);
					
				if(i > 0)
				{
					tabFX[i].hide();
				}
				else
				{
					tabFX[i].show();
				}
			});
			
			tabButtons.each(function(tabButton,i)
			{
				//init
				tabButtons.each(function(foo,bar)
				{
					foo.set('morph',defaultoptions);
					
					if(bar > 0)
					{
						foo.addEvents(
						{
							'mouseenter' : function()
							{
								foo.morph({ 'background-color' : '#444', 'color' : '#fff' });
							},
							
							'mouseleave' : function()
							{
								foo.morph({ 'background-color' : '#ccc', 'color' : '#000' });
							}
						});
						
						foo.morph({ 'background-color' : '#ccc', 'color' : '#000', 'font-size' : 11, 'padding-left' : 20, 'padding-right' : 20});
						
					}
					else
					{
						foo.morph({ 'background-color' : '#fafafa', 'color' : '#900', 'font-size' : 12, 'padding-left' : 30, 'padding-right' : 30});
					}
				});
				
				//click event
				tabButton.addEvent('click',function()
				{
					tabFX.each(function(fx)
					{
						fx.slideOut();	
					});
					
					tabButtons.each(function(foo,bar)
					{
						if(foo != tabButton)
						{
							foo.addEvents(
							{
								'mouseenter' : function()
								{
									foo.morph({ 'background-color' : '#444', 'color' : '#fff' });
								},
								
								'mouseleave' : function()
								{
									foo.morph({ 'background-color' : '#ccc', 'color' : '#000' });
								}
							});
							
							foo.morph({ 'background-color' : '#ccc', 'color' : '#000', 'font-size' : 11, 'padding-left' : 20, 'padding-right' : 20 });
							
						}
						else
						{
							foo.removeEvents('mouseenter');
							foo.removeEvents('mouseleave');
							
							foo.morph({ 'background-color' : '#fafafa', 'color' : '#900', 'font-size' : 12, 'padding-left' : 30, 'padding-right' : 30});
						}
					});
						
					(tabFX[i].slideIn()).chain(function()
					{
						displayPanel(number,'show');
					});
					
				});
				
			});
			
			itemObj.addEvent('collapseAll',function()
			{
				if($defined(tabFX[0]))
				{
					tabs.each(function(tab,i)
					{
						tabFX[i] = new Fx.Slide(tabs[i],defaultoptions);
							
						if(i > 0)
						{
							tabFX[i].hide()
						}	
						else
						{
							tabFX[i].show();
							displayPanel(number,'show');						
						}
					});
					
					tabButtons.each(function(foo,bar)
					{
						if(bar != 0)
						{
							foo.addEvents(
							{
								'mouseenter' : function()
								{
									foo.morph({ 'background-color' : '#444', 'color' : '#fff' });
								},
								
								'mouseleave' : function()
								{
									foo.morph({ 'background-color' : '#ccc', 'color' : '#000' });
								}
							});
							
							foo.morph({ 'background-color' : '#ccc', 'color' : '#000', 'font-size' : 11, 'padding-left' : 20, 'padding-right' : 20 });
							
						}
						else
						{
							foo.removeEvents('mouseenter');
							foo.removeEvents('mouseleave');
							
							foo.morph({ 'background-color' : '#fafafa', 'color' : '#900', 'font-size' : 12, 'padding-left' : 30, 'padding-right' : 30});
						}
					});
					
					
				}
			});
			
			itemObj.addEvent('expandAll',function()
			{
				if($defined(tabFX[1]))
				{
					tabs.each(function(tab,i)
					{
						tabFX[i] = new Fx.Slide(tabs[i],defaultoptions);
							
						if(i == 1)
						{
							tabFX[i].show();
							displayPanel(number,'show');						
						}	
						else
						{
							tabFX[i].hide();
							
						}
					});
					
					tabButtons.each(function(foo,bar)
					{
						if(bar == 0)
						{
							foo.addEvents(
							{
								'mouseenter' : function()
								{
									foo.morph({ 'background-color' : '#444', 'color' : '#fff' });
								},
								
								'mouseleave' : function()
								{
									foo.morph({ 'background-color' : '#ccc', 'color' : '#000' });
								}
							});
							
							foo.morph({ 'background-color' : '#ccc', 'color' : '#000', 'font-size' : 11, 'padding-left' : 20, 'padding-right' : 20 });
							
						}
						else
						{
							foo.removeEvents('mouseenter');
							foo.removeEvents('mouseleave');
							
							foo.morph({ 'background-color' : '#fafafa', 'color' : '#900', 'font-size' : 12, 'padding-left' : 30, 'padding-right' : 30});
						}
					});
					
					
				}
			});
			
		});
		
	});
	
});

