var formresultFX;

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

var windowScroll;

function dioramaDisplay()
{
	var totalImages = 10;
	var timer, currentImage = 0, loadedImages = [], gallery = $('gallery');
	
	gallery.setStyle('position','relative');
	
	//progress = $('progress'), bar = progress.getElement('.bar'); 
	
	var path = 'images/';
	var images = new Array();
	
	for(i = 0 ; i < totalImages; i++)
	{
		images[i] = path + 'home' + (i+1) + '.jpg';
	}
	
	var progress = new Element('div',{'styles':{'background-color':'#000','padding' : 10}});
	progress.inject(gallery,'before');
	
	var progressMessage = new Element('div');
	progressMessage.inject(progress);
	
	var bar = new Element('div',{'styles':{'height':2,'background-color':'#f90'}});
	bar.inject(progress);
	
	new Asset.images(images, 
	{
		onProgress: function(i) 
		{
			var percent = ((i + 1) * progress.getStyle('width').toInt()) / images.length;
			
			bar.setStyle('width',percent);
			
			progressMessage.set('html','<small>loading images...</small>');
			
			this.setStyles({
				'position': 'absolute',
				'opacity': 0,
				'left': 0, //(gallery.getCoordinates().width / 2) - (this.width / 2),
				'top': 0 //(gallery.getCoordinates().height / 2) - (this.height / 2)
			});
			loadedImages[i] = this;
			
		},
		onComplete: function() 
		{	
			progress.dispose();
			var fx = $('gallery').tween('opacity').set(1);
			
			loadedImages.each(function(element,index)
			{
				element.inject(gallery);
			});
			
			var display = function() 
			{
				loadedImages.each(function(element,index)
				{
					if(index == currentImage)
					{
						element.tween('opacity',1);
						$('gallery').getParent('.box').setStyle('height',element.getSize().y);
					}
					else
					{
						element.tween('opacity',0);
					}
				});
				
				if(currentImage < loadedImages.length-1)
				{
					currentImage++;
				}
				else
				{
					currentImage = 0;
				}
			};
			
			display();
			periodical = display.periodical(5000);
		
		}
	});

}

function displayNotice(message)
{	

	if($defined($('notice')))
	{
		$('notice').set('html','<div class="floatright"><h6>x</h6></div><div class="floatleft"></div><h6>Notification Panel</h6><div class="clear"></div><div class="inside">' + message + '</div>').slide('hide');
		
		if((message.toLowerCase().contains('error')))
		{
			$('notice').setStyles({ 'background-color' : '#d00', 'color' : '#fea' });
		}
		
						 
		formresultFX.slideIn().chain(function()
		{
			if($defined(myTimer))
			{	
				myTimer = $clear(myTimer);
			}
			
			myTimer = this.slideOut.delay(30000);
			
		});
		
	}
	
}

function displayPanel(panelID,command)
{	

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

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

window.addEvent('domready',function()
{
	windowScroll = new Fx.Scroll(window,{duration: 'normal', transition: 'expo:in:out', wait: false, offset: {'x':0,'y':-80}}); 
	
	if($defined($('gallery')))
	{
		dioramaDisplay();
	}
	
	$$('.itemthumb').each(function(element,ix)
	{
		var itemEffects = new Fx.Morph(element,defaultoptions);
		var linkEffects = new Fx.Morph(element.getElement('a'),defaultoptions);
		var linkHeight = element.getElement('a').getStyle('height').toInt();
		
		if($defined(element.getParent('.box')))
		{
			var boxEffects = new Fx.Morph(element.getParent('.box'),defaultoptions);
		}
		
		if($defined(element.getElement('.thumbdetails')))
		{
			var detailFX = new Fx.Morph(element.getElement('.thumbdetails'),defaultoptions).set({'opacity':0});
			element.getElement('.thumbdetails').setStyle('cursor','pointer');
			
			element.getElement('.thumbdetails').addEvents(
			{
				'click':function(e) 
				{ 
					if($defined(element.getElement('a').get('rel')) && element.getElement('a').get('rel').contains('milkbox'))
					{
						$$('a[rel='+ element.getElement('a').get('rel') +']').each(function(em,m)
						{
							if(em == element.getElement('a'))
							{
								milkbox.showGallery({ gallery : element.getElement('a').get('rel'), index: m});
							}
						});

					}
					else
					{
						window.location = element.getElement('a').get('href');
					}
					
					e = new Event(e).stop();
				}
			});
			
		}
		
		element.addEvents(
		{
			'mouseenter' : function()
			{
				itemEffects.start({ 'border-width' : 6, 'margin' : 0});
				if($defined(element.getElement('.thumbdetails')))
				{
					detailFX.start({'opacity':0.85,'background-color':'#000'});
					
				}
				
				if($defined(element.getParent('.box')))
				{
					boxEffects.start({'margin-top' : -15});
				}
				
				linkEffects.start({'height' : linkHeight+ 30});
				
			},
			
			'mouseleave' : function()
			{
				itemEffects.start({ 'border-width' : 1, 'margin' : 5 });
				if($defined(element.getElement('.thumbdetails')))
				{
					detailFX.start({'opacity':0,'background-color':'#900'});
				}
				
				if($defined(element.getParent('.box')))
				{
					boxEffects.start({'margin-top' : 0});
				}
				
				linkEffects.start({'height' : linkHeight});
			}
		
		});
		
	});
	
	$$('#menu li').each(function(element,index)
	{
		var subMenu = element.getElement('ul');
		if($defined(subMenu))
		{
			var subMenuFx = new Fx.Morph(subMenu,defaultoptions).set({'display' : 'block', 'opacity' : 0});
		}
		
		element.addEvents(
		{
			'mouseenter' : function()
			{
				if($defined(subMenu))
				{
					subMenuFx.start({'opacity' : 1});
				}
			},
			
			'mouseleave' : function()
			{
				if($defined(subMenu))
				{
					subMenuFx.start({'opacity' : 0});
				}
			}
		});
	});
	
	if($defined($('notice')))
	{
		formresultFX = new Fx.Slide('notice',defaultoptions).hide();
		
		$('notice').addEvents(
		{
													
			'click' : function()
			{
				formresultFX.slideOut();
			},
		
			'mouseenter' : function()
			{
				this.setStyle('cursor','pointer');
			}
			
		});
	}

		
	$$('.tip').each(function(el)
	{
		var full_title	= el.getProperty('title');
		var dual = full_title.split('::');
		var tip_title = dual[0].trim();
		var tip_text	= dual[1].trim();
		el.store('tip:title', tip_title);
		el.store('tip:text', tip_text);
	});

	var myTips = new Tips('.tip',
		{
			'className' : 'tool',
			onShow: function(tip)
			{
				tip.set('tween', {duration: 200}).fade('in')
			},
			onHide: function(tip)
			{
				tip.set('tween', {duration: 200}).fade('out')
			}
		}
	);

	$$('input[type=text], input[type=password], textarea').each(function(element,index)
	{
		var fx = new Fx.Morph(element, {duration: 300, transition: 'expo:out', wait:false});
		
		element.addEvents({
		
			'blur': function()
			{
				fx.start({'color' : '#000', 'background-color': '#fff', 'border-color' : '#c0c0c0'});
			},
		
			'focus': function()
			{
				fx.start({'color' : '#fff', 'background-color': '#f90', 'border-color' : '#222222'});
			}
			
		});	
		
	});
	
	$$('input[type=submit], input[type=button], .button').each(function(element,index)
	{
		var fx = new Fx.Morph(element, {duration:300, transition: 'expo:out', wait:false});
		
		element.addEvents({
		
			'mouseenter': function()
			{
				fx.start({'background-color': '#f90', 'color' : '#000'});
				this.setStyle('cursor','pointer');	
			},
		
			'mouseleave': function()
			{
				fx.start({'background-color': '#930', 'color' : '#fff'});
			}
			
		});
		
	});

	var scrollToTop = new Fx.Scroll(window,{duration: 1000, transition: Fx.Transitions.Expo.easeInOut, wait: false}); 
	
	$$('.scrolltotop').each(function(element,index)
	{
		element.addEvents({
		
			'click': function(event)
			{
				event = new Event(event).stop();
				scrollToTop.toElement(window);
			}
		
		});
		
	});


	$$('a.external').each(function(element,index)
	{
		element.setProperty('target', '_blank');
	});
	
	$$('.tagcloud').each(function(tags,i)
	{
		tagitems = tags.getElements('.tag');
		
		tagitems.each(function(tag,index)
		{
			tag.addEvents(
			{
				'click' : function(e)
				{
					if(this.getParent().getParent().getElement('input[name=articleTags]').value.contains(tag.get('html')) == false)
					{
						this.getParent().getParent().getElement('input[name=articleTags]').value += ((this.getParent().getParent().getElement('input[name=articleTags]').value.length == 0 || this.getParent().getParent().getElement('input[name=articleTags]').value.charAt(this.getParent().getParent().getElement('input[name=articleTags]').value.length) == ',')?'':',') + tag.get('html');
					}
					
					this.getParent().getParent().getElement('input[name=articleTags]').value = this.getParent().getParent().getElement('input[name=articleTags]').value.clean();
					
					e = new Event(e).stop();
					
				}
				
			});
			
			tag.setStyle('font-size',(150.0 * (1.0 + ( 1.5 * tag.get('title').replace(/[^0-9]/gi,'') - tagitems.length/2 ) / tagitems.length ) ) + '%');
			
		});
			
	});
	
	
	$$('input[name=articleTags]').addEvent('blur',function()
	{
		this.value = this.value.replace(/[^a-zA-Z0-9-\s,]/gi,'');
		this.value = this.value.replace(/\s*,\s*/gi,',');
		this.value = this.value.replace(/,\s*$/,'');
		this.value = this.value.replace(/^\s*,/,'');
		this.value = this.value.replace(/,{2,}/gi,',');
		this.value = this.value.replace(/-{2,}/gi,'-');
		this.value = this.value.replace(/\s{2,}/gi,' ');
		this.value = this.value.replace(/,\s,/gi,',');
		this.value = this.value.clean();
		
	});
	
	$$('.checkform').each(function(checkform,index)
	{
		if($defined(checkform.getElement('input[name=articleTags]')))
		{
			tagField = checkform.getElement('input[name=articleTags]');
			
			tagField.value = tagField.value.replace(/[^a-zA-Z0-9-\s,]/gi,'');
			tagField.value = tagField.value.replace(/\s*,\s*/gi,',');
			tagField.value = tagField.value.replace(/,\s*$/,'');
			tagField.value = tagField.value.replace(/^\s*,/,'');
			tagField.value = tagField.value.replace(/,{2,}/gi,',');
			tagField.value = tagField.value.replace(/-{2,}/gi,'-');
			tagField.value = tagField.value.replace(/\s{2,}/gi,' ');
			tagField.value = tagField.value.replace(/,\s,/gi,',');
			tagField.value = tagField.value.clean();
			
		}
		
		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' : '#f00', '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' : '#f00', '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' : '#f00', 'color' : '#ffffff'});
							
						}
						else
						{
							element.set('morph',defaultoptions).morph({'background-color' : '#ffffff', 'color' : '#000000' });
						}
					}
				}
				
			});
			
			//this version of checkform considers both TinyMCE and without TinyMCE
			var textareas = this.getElements('textarea');
			
			textareas.each(function(element,index)
			{
				var proceed = true;
				
				if($defined(element.get('title')) && !element.disabled)
				{
					
					//if tinymce
					if($defined(tinyMCE.get(element.get('id'))))
					{
						
						if(tinyMCE.get(element.get('id')).getContent().clean() == '')
						{
							
							errorresult.include(element.get('title'));
							
							element.set('morph',defaultoptions).morph({'background-color' : '#f00', 'color' : '#ffffff' });
							
							tinyMCE.get(element.get('id')).getBody().set('morph',defaultoptions).morph({'background-color' : '#f00', 'color' : '#ffffff' });
							
							proceed = false;
						}
						else
						{
							element.set('morph',defaultoptions).morph({'background-color' : '#ffffff', 'color' : '#000000' });
							
							tinyMCE.get(element.get('id')).getBody().set('morph',defaultoptions).morph({'background-color' : '#ffffff', 'color' : '#000000' });
							
						}
					}
					
					//if not
					else
					{
						if(element.value.clean() == '')
						{
							errorresult.include(element.get('title'));
							
							element.set('morph',defaultoptions).morph({'background-color' : '#f00', 'color' : '#ffffff' });
							
							proceed = false;
						}
						else
						{
							element.set('morph',defaultoptions).morph({'background-color' : '#ffffff', 'color' : '#000000' });
							
						}
					}
					
				}
				
				if(proceed)
				{
					if(element.hasClass('numericData'))
					{
						//if tinymce
						if($defined(tinyMCE.get(element.get('id'))))
						{
							
							if(tinyMCE.get(element.get('id')).getContent({format:'text'}).clean().replace(/<\/?[^>]+>/gi,'') != '' && isNaN(tinyMCE.get(element.get('id')).getContent({format:'text'}).replace(/<\/?[^>]+>/gi,'').toFloat()) )
							{	
								errorresult.include( $pick(element.get('title'), element.get('alt'), element.get('id'), element.get('name')) );	
								
								element.set('morph',defaultoptions).morph({'background-color' : '#f00', 'color' : '#ffffff' });
								
								tinyMCE.get(element.get('id')).getBody().set('morph',defaultoptions).morph({'background-color' : '#f00', 'color' : '#ffffff' });
							}
							else
							{
								element.set('morph',defaultoptions).morph({'background-color' : '#ffffff', 'color' : '#000000' });
								
								tinyMCE.get(element.get('id')).getBody().set('morph',defaultoptions).morph({'background-color' : '#ffffff', 'color' : '#000000' });
							}
						}
						//if not
						else
						{
							
							if(element.value.clean().replace(/<\/?[^>]+>/gi,'') != '' && isNaN(element.value.clean().replace(/<\/?[^>]+>/gi,'').toFloat()) )
							{	
								errorresult.include( $pick(element.get('title'), element.get('alt'), element.get('id'), element.get('name')) );	
								
								element.set('morph',defaultoptions).morph({'background-color' : '#f00', 'color' : '#ffffff' });
							}
							else
							{
								element.set('morph',defaultoptions).morph({'background-color' : '#ffffff', 'color' : '#000000' });
							}
						}
					}
				}
				
			});
			
			//if error is found
			if(errorresult.length > 0)
			{
						
				e = new Event(e).stop();

				var re = new RegExp(',','g');
				
				displayNotice('Error: Some of the values you have placed are either missing or invalid. These fields are marked red:<br /><strong>' + errorresult.toString().replace(re,', ') + '</strong>');
				
				var scrollFX = new Fx.Scroll(window,{duration: 'normal', transition: 'expo:out', wait: false, offset: {'x':0,'y':-100}}).toElement(checkform);
			}			
			
			
		});
					
	});
	
	$$('.gotopage').each(function(element,index)
	{
		element.addEvent('change',function()
		{
			window.location = element.get('title') + element.get('value');
		});
																			 
	});
	
	$$('.panel').each(function(element,number)
	{
		var collapseTabs = element.getElement('.collapseTabs');
		
		if($defined(collapseTabs))
		{
			collapseTabs.addEvent('click',function(e)
			{
				e = new Event(e).stop();
				element.getElements('.item').fireEvent('collapseAll');
			});
		}
	
		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' : '#f90', 'color' : '#333' });
							}
						});
						
						foo.morph({ 'background-color' : '#f90', 'color' : '#333', 'font-size' : 11, 'padding-left' : 20, 'padding-right' : 20});
						
					}
					else
					{
						foo.morph({ 'background-color' : '#000', 'color' : '#f90', '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' : '#f90', 'color' : '#333' });
								}
							});
							
							foo.morph({ 'background-color' : '#f90', 'color' : '#333', 'font-size' : 11, 'padding-left' : 20, 'padding-right' : 20 });
							
						}
						else
						{
							foo.removeEvents('mouseenter');
							foo.removeEvents('mouseleave');
							
							foo.morph({ 'background-color' : '#000', 'color' : '#f90', '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' : '#f90', 'color' : '#333' });
								}
							});
							
							foo.morph({ 'background-color' : '#f90', 'color' : '#333', 'font-size' : 11, 'padding-left' : 20, 'padding-right' : 20 });
							
						}
						else
						{
							foo.removeEvents('mouseenter');
							foo.removeEvents('mouseleave');
							
							foo.morph({ 'background-color' : '#000', 'color' : '#f90', 'font-size' : 12, 'padding-left' : 30, 'padding-right' : 30});
						}
					});
					
					
				}
			});
			
		});
		
	});
	
	
	$$('.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()
			{
				toggleFX.start({ 'background-color' : '#f30', 'color' : '#000', 'padding-left' : 10 });
			},
			
			'mouseleave' : function()
			{
				toggleFX.start({ 'background-color' : '#000', 'color' : '#fff', 'padding-left' : 5 });
			}
			
		});
		
	});
	
});
