var photos = [];
// ===== Initial DOM Manipulation =====
jQuery(document).ready(function($) {
    // ~~~~~ GLOBAL: Toggle Input Default Values ~~~~~
	if(!Modernizr.input.placeholder) $('input:text').clearInput();
	
	if($('#indexCarousel').length){
		if(isMobile){
			$('#indexCarousel')
				.append('<div id="headerimg1" class="headerimg"></div>')
				.append('<div id="headerimg2" class="headerimg"></div>');
			$('#carousel').append('<div id="carousel_controls"><ul></ul></div>');
			$.ajax({
				type: "GET",
				url: "xml/carousel.xml",
				dataType: "xml",
				success: function(xml) {
			 		$(xml).find('featured').each(function(i, featured){
						photos[photos.length] = {"url":$(featured).find('link').text(), "image":$(featured).find('image').text()};
						$('#carousel_controls').find('ul').append('<li><a href="#" rel="'+i+'" style="background-position:0 '+(i*28)*-1+'px">'+i+'</a></li>');
					});
					if(isPhone){
						$('#carousel_controls').hide();
						navigate("next");
					} else {
						$('#carousel_controls').find('li').each(function(i,li){
							$(li).bind('click',function(e){
								e.preventDefault();
								currentImg = parseInt($(li).text());
								clearInterval(interval);
								interval = setInterval(function() { navigate("next"); }, slideshowSpeed);
								navigate("next");
							}).addClass((i==0)?'active':'');
						}).hover(function(){
							if($(this).is('.active')) return;
							
							$(this).find('a').attr('data-bkgd',$(this).find('a').css('background-position'));
							var bkgd = $(this).find('a').css('background-position').split(' ');
							$(this).find('a').css('background-position','right '+bkgd[1]);
						},function(){
							if($(this).is('.active')) return;
							
							$(this).find('a').css('background-position',$(this).find('a').attr('data-bkgd'));
						});
						// We should statically set the first image
						navigate("next");
						
						// Start playing the animation
						interval = setInterval(function() {
							navigate("next");
						}, slideshowSpeed);
					};
				}
			});
		} else if (swfobject.hasFlashPlayerVersion("9.0.0")) {
			var att = { data:"./flash/carousel/indexCarousel.swf", width:1300, height:692, menu:"false", id:"oeIndexCarousel", name:"oeIndexCarousel" };
			var par = { wmode:"transparent", swliveconnect:"true", allowScriptAccess:"always", allowfullscreen: "false", flashvars:"dataFile=xml/carousel.xml" };
			var id = "indexCarousel";
			var so = swfobject.createSWF(att, par, id);
		} else {
			$('#indexCarousel').html('<h2>Please <a href="http://www.adobe.com/products/flashplayer/" target="blank">upgrade your Flash Player</a><br /> to experience this site to its fullest.</h2>');
		};
	};
	
	// ~~~~~ ACCORDION: Careers ~~~~~
	$('dl.accordion dt').each(function() {
		var tis = $(this), state = false, answer = tis.next('dd').hide().css('height','auto').slideUp();
		tis.click(function() {
			state = !state;
			answer.slideToggle(state,function(){ if(!state) tis.removeClass('active',state) });
			if(state) tis.addClass('active',state);
		});
	});

	// ~~~~~ LIGHTBOX: display larger images ~~~~~
	var screenshots = $("#main").find('div.screenshots a.src');
	if(screenshots.length){
		screenshots.fancybox({
			'overlayColor'	:	'#000',
			'overlayOpacity':	0.65,
			'transitionIn'	:	'elastic',
			'transitionOut'	:	'elastic'
		});
	};
	
	// ~~~~~ LIGHTBOX: display videos ~~~~~
	var videos = $("#main").find('div.videos a.src, div.videos li a:nth-child(3)');
	if(videos.length){
		var thumbs =  $("#main").find('div.videos a.src img');
		//$(thumbs).css('background-image','url('+$(thumbs).attr('src')+')').attr('src','./images/btn_Play.png');
		$(thumbs).each(function(){
			$(this).css('background-image','url('+$(this).attr('src')+')').attr('src','./images/btn_Play.png');
		});
		
		videos.bind('click', function(e){
			e.preventDefault();
			
			var strFlashvars = [
				"&file="+this.href,
				"&type=",
				"&skin="+encodeURIComponent("./flash/skin.swf"),
				"&config="+encodeURIComponent("./flash/config.xml"),
				"&autostart=true"
			];
			
			$.fancybox({
				'padding'		: 0,
				'overlayColor'	: '#000',
				'overlayOpacity': 0.65,
				'title'			: this.title,
				'width'			: 680,
				'height'		: 495,
				'href'			: "flash/player-licensed.swf?flashvars="+strFlashvars.join(''),
				'type'			: 'swf',
				'swf'			: {
					 'wmode'	: 'transparent',
					'allowfullscreen'	: 'true'
				}
			});
			
		});
	};
	
	// ~~~~~ INDEX: Arrow bounce ~~~~~
	var indexArrows = $('#main').find('.module img.more');
	if(indexArrows.length){
		$('#main').find('.module a').hover(function(){
			this.arrow = $(this).find('img.more');
			$(this.arrow).stop().animate({'margin-left': '+=10'}, 250, 'easeOutBounce');
		},function(){
			$(this.arrow).stop().animate({'margin-left': '-=10'}, 500, 'easeOutBounce');
		});
	};
	
});

// ===== Non-Essential DOM Events =====
jQuery(window).load(function(){
	var $ = jQuery; // reset;

	// ~~~~~~ Contact Form: Validate & Submit ~~~~~
	// cache element(s);
	var $form = $('#contact'),
		$label = $($form).find('label'),
		$btn = $($form).find('input.submit'),
		$fields = $label.find('input.text,textarea'),
		$inputs = [];
	
	$btn.bind('click',function(e) {
		$label.removeClass('error');
		var hasError = false;
		
		for(var i=-1, il=$fields.length; ++i<il;){
			var $field = $($fields[i]);
			if($field.hasClass('phone')){
				continue;
			} else if($field.hasClass('email')) {
				var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
				if(!emailReg.test($.trim($field.val())) || $.trim($field.val()) == '') {
					$field.parent('label').addClass('error');
					hasError = true;
				}
			} else if($.trim($field.val()) == '') {
				$field.parent('label').addClass('error');
				hasError = true;
			};
		};
		
		if(!hasError) {
			$btn.css('opacity',0.25).attr('disabled', 'disabled');
			$form.find('.submit-btn').addClass('loading');
			for(var i=-1, il=$fields.length; ++i<il;){
				var $field = $($fields[i]);
				$field.parent('label').css('opacity',0.25);
			};
			
			$.post($form.attr('action'), $form.serialize(),
				function(data){
					$btn.hide();
					$form.find('small').hide();
					$fields.val('');
					$fields.parent('label').css('opacity',0);
					$form.find('.submit-btn').removeClass('loading');
					$form.find('#message').html('<div class="message"><p>Thanks! Your email was successfully sent.</p></div>')
					$form.find('.message').hide()
						.fadeIn('slow').delay(5000).fadeOut('slow',function(){
						$form.find('.message').remove();
						$fields.parent('label').css('opacity',1);
						$btn.css('opacity',1).attr('disabled', '');
						$form.find('small').show();
						$btn.show();
					});
				}
			);
		}
		
		return false;
	});
	
});
