var twitterUpdates = [];

var updateTwitter = function (twitterData) {
	if ( !twitterData || !twitterData[0] )
		return;
	
	twitterUpdates.push(twitterData[0]);
}

window.addEvent('domready', function () {
	// Home form - submit only input if not empty
	var homeTrialForm = $('home-trial-form');
	homeTrialForm && homeTrialForm.addEvent('submit', function (ev) {
		var input = $(this).getElement('input[type=text]');
		if ( !input )
			return;
		
		if ( !input.get('value') )
			ev.preventDefault();
	});
	
	// Header nav item hover for IE7
	$$('#nav_header li').addEvents({
		  'mouseenter': function () { $(this).addClass('hover'); }
		, 'mouseleave': function () { $(this).removeClass('hover'); }
	});
	
	// Submenu
	
	var navItems = $$('#nav_main > ul > li')
		, infoContents = $('info-contents')
		, fadeOptions = {
			  link: 'cancel'
			, duration: 200
			, property: 'opacity'
		}
		, submenuHtml = '<span class="top"><span class="arrow"></span></span>'
		, pageWidth = 970
	;
	
	navItems.each(function (item) {
		item = $(item);
		
		var itemUl = item.getElement('> ul');
		
		if ( !itemUl )
			return;
		
		var submenu = new Element('div', {
			  'class': 'menu'
			, html: submenuHtml
			, styles: {
				  display: 'block'
				, opacity: 0
			}
		});
		
		submenu.inject(item, 'bottom');
		itemUl.inject(submenu, 'bottom');
		
		var itemFade = new Fx.Tween(submenu, fadeOptions);
		var defaultInfoFade = null;
		
		var subitems = submenu.getElements('> ul > li');
		
		if ( infoContents )
			_addInfoBoxes();
		
		var submenuCoords = submenu.getCoordinates($('nav_main'))
			, submenuRightOffset = pageWidth - submenuCoords.right
		;
		
		if ( submenuRightOffset < 0 ) {
			var submenuMarginLeft = submenu.getStyle('margin-left').toInt();
			
			submenu.setStyle('margin-left', submenuMarginLeft + submenuRightOffset);
			submenu.getElements('.top .arrow').setStyle('left', -submenuRightOffset);
		}
		
		
		item.getElement('a').addEvents({
			  'mouseenter': function (ev) {
				itemFade.start(1);
				//IE8 workaround
				defaultInfoFade && defaultInfoFade.start(1);
			}
		});
		
		item.addEvents({
			  'mouseleave': function (ev) {
				itemFade.start(0);
				defaultInfoFade && defaultInfoFade.start(0);
			}
		});
		
		
		function _addInfoBoxes () {
			var   itemInfoListClass = /info-[0-9a-zA-Z_-]+/.exec(item.get('class'))
				, itemInfoList = itemInfoListClass && infoContents.getElements('> .' + itemInfoListClass + ' > .info')
				, itemCommentList = itemInfoListClass && infoContents.getElements('> .' + itemInfoListClass + ' > .item-comment')
			;
			
			if ( !itemInfoList || !itemInfoList.length ) {
				submenu.addClass('no-info');
			}
			
			if ( !itemCommentList || !itemCommentList.length ) {
				submenu.addClass('no-comments');
			}
			
			submenu.adopt(itemInfoList);
			
			itemInfoList && itemInfoList.setStyles({
				  display: 'block'
				, opacity: 0
			});
			
			var itemDefaultInfo = itemInfoList && itemInfoList.filter('.info.default').getLast();
			
			if ( itemDefaultInfo ) {
				defaultInfoFade = new Fx.Tween(itemDefaultInfo, fadeOptions);
			}
			
			subitems.each(function (subitem) {
				subitem = $(subitem);
				
				var subitemInfoClass = /info-item-[0-9a-zA-Z_-]+/.exec(subitem.get('class'))
					, subitemInfo = subitemInfoClass && itemInfoList && itemInfoList.filter('> .' + subitemInfoClass).getLast()
					, subitemComment = subitemInfoClass && itemCommentList && itemCommentList.filter('> .' + subitemInfoClass).getLast()
				;
				
				if ( subitemComment )
					subitemComment.inject(subitem, 'bottom');
				
				if ( !subitemInfo )
					return;
				
				var infoFade = new Fx.Tween(subitemInfo, fadeOptions);
				
				subitem.addEvents({
					'mouseenter': function (ev) {
						infoFade.start(1);
						defaultInfoFade && defaultInfoFade.start(0);
					}
					, 'mouseleave': function (ev) {
						!subitemInfo.hasClass('default') && infoFade.start(0);
						defaultInfoFade && defaultInfoFade.start(1);
					}
				});
			});
		}
	});
	
	
	// Slideshow
	
	var slides = $$('#mainPhoto-images img')
		, slideDuration = 6 * 1000
		, slideFadeOptions = {
			  duration: 1000
			, property: 'opacity'
		}
	;
	
	if (slides.length > 1) {
		slides.filter(':not(:first-child)')
			.setStyles({
				  display: 'block'
				, opacity: 0
			})
			.addClass('slide-inactive')
		;
		
		slides.set('tween', slideFadeOptions);
		
		setInterval(
			  function () {
				var activeSlide = slides.filter(':not(.slide-inactive)').getLast();
				
				if ( !activeSlide )
					return;
				
				var nextSlide = activeSlide.getNext() || slides[0];
				
				activeSlide
					.addClass('slide-inactive')
					.tween(0)
				;
				
				nextSlide && nextSlide
					.removeClass('slide-inactive')
					.tween(1)
				;
			}
			, slideDuration
		);
	}
	
	
	// Tabs
	var tabs = $$('ul.tabs > .tab a');
	
	tabs.addEvent('click', function (ev) {
		ev.preventDefault();
		
		var $this = $(this)
			, $tab = $this.getParent('.tab')
		;
		
		if ( !$tab || $tab.hasClass('active') )
			return;
		
		var parentBox = $this.getParent('.box');
		
		if ( !parentBox )
			return;
		
		parentBox.getElements('.tab-contents')
			.removeClass('active')
			.filter('.' + $tab.get('id'))
				.addClass('active')
		;
		
		$tab
			.addClass('active')
		.getSiblings('.tab')
			.removeClass('active')
		;
		
		
		/* var contentBox =  */
	});
	
	
	// Blog
	var rssUrl = '/rss.php'
		, rssEntriesCount = 3
	;
	
	function updateBlogFeed () {
		if ( !document.getElementsByTagName )
			return;
		
		if ( typeof caption_FeedLoadingFailed == 'undefined' )
			caption_FeedLoadingFailed = '';
		
		var feedContainer = $$('.box .feed.blog').getLast();
		
		if ( !feedContainer )
			return false;
		
		var  feedContents = feedContainer.getElements('> .contents')
			, feedTitleTpl = feedContainer.getElements('> .title-tpl').getLast()
			, feedStatus = feedContainer.getElements('.status')
		;
		
		if ( !feedTitleTpl )
			return false;
		
		new Request({
			  url: rssUrl
			, method: 'get'
			, onSuccess: parseRss
			, onFailure: parseRss
		}).send();
		
		function parseRss (text, xml) {
			if ( Browser.ie ) {
				try {
					var xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
					xmlDoc.loadXML(text);
					xml = xmlDoc;
				}
				catch (e) {
					_fail();
					return;
				}
			}
			
			if ( !xml ) {
				_fail();
				return;
			}
			
			var channel = xml.getElementsByTagName('channel')[0];
			
			if ( !channel ) {
				_fail();
				return;
			}
			
			var entries = channel.getElementsByTagName('item')
			
			Array.each(entries, function (entry, index) {
				if ( index >= rssEntriesCount )
					return false;
				
				
				var feedTitle = feedTitleTpl.clone();
				feedTitle.inject(feedContainer, 'bottom');
				feedTitleLink = feedTitle.getElements('a');
				
				var  entryTitle = entry.getElementsByTagName('title')[0]
					, entryLink = entry.getElementsByTagName('link')[0]
					, entryDescription = entry.getElementsByTagName('description')[0]
				;
				
				entryTitle && entryTitle.firstChild && feedTitleLink.set('html', entryTitle.firstChild.nodeValue);
				
				if ( entryLink && entryLink.firstChild ) {
					feedTitleLink.set('href', entryLink.firstChild.nodeValue);
				}
				else {
					feedTitleLink
						.erase('href')
						.set('nohref', 'nohref')
					;
				}
				
				/*var entryDescriptionText = '';
				if ( entryDescription && entryDescription.firstChild ) {
					var tmpEl = new Element('div', {html: entryDescription.firstChild.nodeValue});
					
					entryDescriptionText = tmpEl.get('text');
				}
				feedContents.set('html', entryDescriptionText);*/
			});
			
			feedTitleTpl.destroy();
			feedStatus.destroy();
			
			function _fail () {
				feedStatus.set('text', caption_FeedLoadingFailed);
			}
		}
		
	}
	
	updateBlogFeed();
	
	
	// Twitter
	var twitterUser = 'spamtitan';
	var addTwitterText = function (data) {
		if ( !data )
			reutrn;
		
		var twitterEl = $$('.box .feed.twitter > p').getLast();
		
		if ( !twitterEl )
			return;
		
		twitterEl.set('html', '');
		
		twitterEl.grab( new Element('a', {
			  href: 'http://twitter.com/' + twitterUser + '/status/' + data.id_str
			, text: data.text
		}) );
		
		$$('.feed-button.twitter .twitter-share-button').set('data-text',
			'RT @' + twitterUser + ' ' + data.text
		);
	}
	
	twitterUpdates.push = addTwitterText;
	twitterUpdates.each(addTwitterText);

});
