/*
*************************************************

PORTFOLIO
JavaScript Functions

Finaly... the shoemaker has some shoes!
http://www.danielmall.com/

*************************************************
*/

// VARIABLES --------------------------------------------------
var focusedContact = false;





// INITIAL ACTIONS --------------------------------------------------

function portfolio(){
	
	embedFlash();
	
	initContactForm();

}

$(document).ready(function() { portfolio(); });







// FUNCTIONS --------------------------------------------------


/* =======================================
	Embed Flash 
======================================= */
function embedFlash(){
	
	$('#footer-wrap').before('<div id="flash-projects"></div>');
	
	var rawNumProjects = $('.project').size();
	
	var rawProjectIDs = [];
	var rawTitles = [];
	var rawDuties = [];
	var rawBlurbs = [];
	var rawStubText = [];
	var rawStubLink = [];
	var rawImagePaths = [];
	
	$('.project').each(function(){
		
		rawProjectIDs.push($(this).attr('id'));
		rawTitles.push($(this).find('h3:eq(0)').html());
		
		var dutiesString = "";
		$(this).find('dl.duties dd').each(function(n){
			if(n == 0){
				dutiesString += $(this).html();
			}else{
				dutiesString += ", " + $(this).html();
			}
		});
		
		dutiesString += "end";
		
		rawDuties.push(dutiesString);
		
		rawBlurbs.push($(this).find('p:eq(0)').html() + 'endBlurb');
		
		if($(this).find('.stub').size() > 0){
			rawStubText.push($(this).find('.stub').html());
			rawStubLink.push($(this).find('.stub').attr('href'));
		}else{
			rawStubText.push('');
			rawStubLink.push('');
		}
		
		rawImagePaths.push($(this).find('img:eq(0)').attr('src'));
		
	});
	
	var flashvars = {
		rawNumProjects: rawNumProjects,
		rawProjectIDs: rawProjectIDs,
		rawTitles: rawTitles,
		rawDuties: rawDuties,
		rawBlurbs: rawBlurbs,
		rawStubText: rawStubText,
		rawStubLink: rawStubLink,
		rawImagePaths: rawImagePaths		
	};
	
	var params = {
		menu: 'false',
		wmode: 'transparent'
	};
	
	var attributes = {
		id: 'flash-projects',
		name: 'flash-projects'
	};
	

	if(browser != "IE6" || browser != "IE7"){
		swfobject.embedSWF("/s/portfolio.swf", "flash-projects", "724", "1200", "8.0.0","/s/expressInstall.swf", flashvars, params, attributes);
	}
	
}


function initContactForm(){
	
	//$('#contact').fadeTo("fast", 0);
	
	$('#contact').mouseenter(function(){
		$(this).fadeTo("slow", 1);		
	}).mouseleave(function(){	
		
		if(!focusedContact){
			$(this).fadeTo("slow", 0, function(){
				
				// resetting label color
				if($('#contact label').hasClass('missed')){
					$('#contact label').removeClass('missed');
				}
				
			});				
			
		}
	});
	
	$('#contact input[type="text"], #contact textarea').focus(function(){
		focusedContact = true;
		
		if($(this).prev().hasClass('missed')){
			$(this).prev().removeClass('missed')
		}
		
		$(this).prev().fadeOut("fast", function(){
			$(this).hide();
		});
	}).blur(function(){		
		
		focusedContact = false;
		if($(this).val() == ''){
			$(this).prev().fadeIn("slow");
		}
		
	});
	
	// submission
	$('#submit-button').click(function(){
		
		var errorsExist = false;
		
		// check for errors			
		if($('#contact-name').val() == ''){
			$('#contact-name').prev().addClass('missed');
			errorsExist = true;
		}
		
		if($('#contact-email').val() == ''){
			$('#contact-email').prev().addClass('missed');
			errorsExist = true;
		}
		
		if(!properEmail($('#contact-email').val())){
			$('#contact-email').val('');
			$('#contact-email').trigger('blur');
			$('#contact-email').prev().addClass('missed');
			errorsExist = true;
		}
		
		if($('#contact-message').val() == ''){
			$('#contact-message').prev().addClass('missed');
			errorsExist = true;
		}
		
		if(errorsExist){
			return false;
		}		
		
		// continue if there are no errors
		var dataString = 'contact-name='+ $('#contact-name').val() + '&contact-email=' + $('#contact-email').val() + '&contact-message=' + $('#contact-message').val();
		//alert(dataString);

		$.ajax({
			type: "POST",
			url: "/contact/",
			data: dataString,
			success: function(e) {
				
				// thanks message
				$('#contact').after('<div id="confirm-bam"><p class="message">Thanks for dropping by!</p></div>');
				
				// fade out form
				focusedContact = false;
				$('#contact').trigger('mouseleave');
				
				// clear out the form
				$('#contact-name, #contact-email, #contact-message').val('');
				$('#contact-name, #contact-email, #contact-message').trigger('blur');
				
				// fade out the thanks message after 3 seconds
				setTimeout(function(){
					if($('#confirm-bam').size() > 0){
						$('#confirm-bam').fadeOut('slow', function(){
							$('#confirm-bam').remove();
						});
					}
				}, 3000);
				
			}
		});
		
		return false;
	});
	
}

/* 

	Borrowed from
	http://www.smartwebby.com/DHTML/email_validation.asp

*/ 

function properEmail(str) {

	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	
	if (str.indexOf(at)==-1){
	   return false;
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    return false;
	}

	 if (str.indexOf(at,(lat+1))!=-1){
	    return false;
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    return false;
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
	    return false;
	 }
	
	 if (str.indexOf(" ")!=-1){
	    return false;
	 }

	 return true;					
	
}



function outputMessage(s){
	alert(s);
}


