//Event.observe(window, 'load', function() {
document.observe("dom:loaded", function() {
										
	if($$('.pledgeSubmitBtn')){
		$$('.pledgeSubmitBtn').invoke('observe', 'click', invokePledgeSubmit);
	}
	
	if($('check1')){
		$('check1').observe('click', toggleCheckboxes);
		$('check2').observe('click', toggleCheckboxes);
		$('check3').observe('click', toggleCheckboxes);
	}
	
	if($("newsletter-signup-btn")){
		
		$("newsletter-signup-btn").observe('click', checkSignup);
	}
  
  
});

//pop window functions
function popUp(URL) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=800,height=600');");
}

/*------------------------------Launch Modal Window Functions -------------*/

function setupZoom(){
	var my_div = document.createElement('div');
	my_div.id="ajaxResult";
	document.body.appendChild(my_div);
	FancyZoomBox.init();
	$$(".isModal").each(function(el) { new FancyZoom(el); });
	$(document).observe('zoom:zoomLoaded', initTabs);
	$(document).observe('notes:notesLoaded', initNotes);
	$(document).observe('fund:fundLoaded', initFund);
	$(document).observe('fund2:fund2Loaded', initFund2);
	
}

function popZoom(element, url, customEvent){
			element = $(element);
			
			if(!customEvent){
				customEvent = 'noEvent:nothingLoaded';
			}
			new FancyZoomPop(element, url, customEvent);
		
}

function popEssay(){
			element = $('banner');
			params = 'par=1';	
			url = '/ajax/photo-essay.php';
			customEvent = 'noEvent:nothingLoaded';
			new FancyZoomPop(element, url, params, customEvent);
			
			$('boxMiddle').setStyle({backgroundColor: '#333333'});
		
}


/*------------------------------ Fund Raiser Email Form -------------------*/

function toggleCheckboxes(event){
	
	element = Event.element(event);
	
	if(element.id == 'check1')
	{
		$('check2').checked = false;
		$('check3').checked = false;
	}
	
	if(element.id == 'check2')
	{
		$('check1').checked = false;
		$('check3').checked = false;
	}
	
	if(element.id == 'check3')
	{
		$('check2').checked = false;
		$('check1').checked = false;
	}
}

function invokePledgeSubmit(event){
	
	event.stop();
	element = Event.element(event);
	
	var checkVal1 = $('check1').checked;
	var checkVal2 = $('check2').checked;
	var checkVal3 = $('check3').checked;
	
	var validForm = false;
	
	if(checkVal1 || checkVal2 || checkVal3)
	{
		validForm = true;	
	}
	else
	{
		
		//alert('Please choose your pledge to reduce ozone before submiting form.');
		FancyZoomBox.init();
		popZoom('pledge-submit-btn', '/modal/pledge-error/', 'fund2:fund2Loaded');
		return false;
	}
	
	var userEmail = $('pledge_email').value;
										
	new Ajax.Request('/constantcontact/AddAContact.php', {
			method: 'post',
			parameters: {required_params:'email_address', email_address:userEmail}, 
			onComplete: function(transport){
				$('freeform').submit();
			}
	
});
	
	
}

function checkSignup(event){

	
	var emailField = $('email_field');
	
	var checkVal1 = $('check1').checked;
	var checkVal2 = $('check2').checked;
	var checkVal3 = $('check3').checked;
	var checkVal4 = $('check4').checked;
	var checkVal5 = $('check5').checked;
	
	var validChecks = false;
	
	if(checkVal1 || checkVal2 || checkVal3 || checkVal4 )
	{
		validChecks = true;
	}
	
	var validEmail = false;
	
	if(emailField.value != '' && emailField.value != null)
	{
		validEmail = true;	
	}
	
	
	if(!validChecks || !validEmail)
	{
		
		event.stop();
		element = Event.element(event);
	
		//alert('Please choose your pledge to reduce ozone before submiting form.');
		FancyZoomBox.init();
		popZoom('newsletter-signup-btn', '/modal/signup-error/', 'fund2:fund2Loaded');
		return false;	
	}
	

}

function initFund2(){
	
	$('close-zoom').observe('click', function(event) {
											  
		event.stop();
		element = Event.element(event);
		FancyZoomBox.hide();
	});
	
}

function initFund(){
	
	
	//allow the zoom container to resize
		$('zoom').setStyle({height: 'auto'});
		
		$('sendBtn').observe('click', validateFund);
		
		$$('.shareField').invoke('observe', 'focus', clearVal);
		$$('.shareField').invoke('observe', 'blur', setVal);
		$$('.shareField').each(function(el) {
			el.value = el.readAttribute('title');
		});
	
}

function validateFund(){
	
	$$('.required').each(function(el) {
			
			errorElement = el.up().next('.shareError');
			
			if(el.value === el.readAttribute('title')){
				
				displayError(el, errorElement);
				
			/*} else if(el.hasClassName('email')){				  
			
				var validateEmail = CheckEmail(element.value);
			
				if(validateEmail !== ""){
					
					displayError(el, errorElement);
					
					errorElement.update('Invalid Email');
				} else {
					
					removeError(el, errorElement);	
				}*/
					  
			} else {
			
					removeError(el, errorElement);
			   
		   }
	});
	
	//use an if cond to check something about the error message
	//maybe el.addclassname invalid and a remove for each?
	
	if ($$('.invalid').length === 0){
		
		$('sendBtn').stopObserving('click', validateFund);
		sendFund();	
		
	}
	
}

function removeError(el, errorElement){
	
	if(errorElement.getStyle('display') != 'none'){
		el.removeClassName('invalid');
		new Effect.BlindUp(errorElement, {duration: 0.5});
	}
}

function displayError(el, errorElement){
	
	if(errorElement.getStyle('display') == 'none'){
		new Effect.BlindDown(errorElement, {duration: 0.5});
		el.addClassName('invalid');
	
	}else if(errorElement.getStyle('display') != 'none'){
		Effect.Shake(errorElement, { duration: .4, distance: 4 });
	}
	
}


function sendFund(){
	
	$('progressBar').appear();
	
	$('emailFund').request({
			onComplete: function(transport) {
				//alert(transport.responseText);
				
				$('tab1').setStyle({height: $('tab1').getHeight()+'px'});
				$('emailForm').fade({duration: 0.5, queue: { position: 'end', scope: 'thanks' }});
				new Effect.Morph('tab1', {
					style: {
					height: ($('thankYou').getHeight()+15) +'px'
					}, // CSS Properties
					duration: 0.5, // Core Effect properties
					queue: { position: 'end', scope: 'thanks' }
				});

				$('thankYou').appear({duration: 0.5, queue: { position: 'end', scope: 'thanks' }});
			}
   	
		});
	
}


/*------------------------------ Modal Notes Manage ------------------------*/

function initNotes(){
	$$('.removeNote').invoke('observe', 'click', deleteNote);
}

function deleteNote(event){
	element = Event.element(event);
	var twitterID = $(element).id;
	var noteID = $(element).up().id;
	
	dropElement = $(element).up();
	
	//alert(twitterID);
	//twitterID needs to be a string
	
	new Ajax.Request('/ajax/deleteName.php', {
		method: 'post',
		parameters: {twitID: twitterID, id: noteID}, 
		//onComplete: function(transport){
		onSuccess: function(){
    		//alert('note deleted');
			//Effect.DropOut(dropElement);
		}

	});
	
	Effect.DropOut(dropElement);

	
}


/*------------------------------ Modal Tabs Function ---------------------*/
function initTabs() {
		
		$('boxMiddle').setStyle({backgroundColor: '#EAEAEA'});
		
		var tabLink = Element.extend($$('.tab'));
		tabLink.invoke('observe', 'click', swapTabs);
		
		//allow the zoom container to resize
		$('zoom').setStyle({height: 'auto'});
		$('addEmail_btn').observe('click', addEmail);
		
		$('sendBtn').observe('click', validateForm);
		

		
		$$('.shareField').invoke('observe', 'focus', clearVal);
		$$('.shareField').invoke('observe', 'blur', setVal);
		$$('.shareField').each(function(el) {
			el.value = el.readAttribute('title');
		});
		
		//copy to clipboard function
		if($('copyBtn')){
			$('copyBtn').observe('click', function(){
				var videoEmbedCode = $('vidCode');
				copy(videoEmbedCode);
			});
		}
		
	}
	
	function addEmail(event){
		//element = Event.element(event);
		element = $('addEmail_field');
		var newEmail = $('addEmail_field').value;
		var emailBox = $('emailHolder');
		var emails = emailBox.innerHTML;
		
		if(!element.value.strip().empty() && element.value != element.readAttribute('title')){
			
			//check for a validate address
			var validateEmail = CheckEmail(element.value);
			var errorElement = $('error_email');
			if(validateEmail !== ""){
				errorElement.update(validateEmail);
				//animate error message
				new Effect.BlindDown(errorElement, {duration: 0.5});
				if(errorElement.getStyle('display') != 'none'){
					Effect.Shake('error_email', { duration: .7, distance: 4 });
				}

			} else {
			
				//fade error message if it exists (red message)
				if($('error_email').getStyle('display') != 'none'){
					new Effect.BlindUp($('error_email'), {duration: 0.5, queue: { position: 'end', scope: 'email' }});
				}
				
				//check if the email list is empty
				if(emails.strip().empty()){
					var emailElement = "<div class='addedEmail'><div class='emailToPost' style='padding-top:15px;'>"+newEmail.strip()+"</div> <div class='removeEmail' style='cursor:pointer; float: right; padding-top:15px;'>remove</div><div class='clearFixAdded'>&nbsp;</div></div>";
				} else {
					
					var emailElement = "<div class='addedEmail' style='display:none;'><div class='emailToPost'>"+newEmail.strip()+"</div> <div class='removeEmail' style='cursor:pointer; float: right;'>remove</div><div class='clearFixAdded'>&nbsp;</div></div>";
				}
				
				emailBox.insert(emailElement);

				
				//remove hint message if exists
				if(emails.include('emailsHint')){
					new Effect.BlindUp($('emailsHint'), {duration: 0.5, queue: { position: 'end', scope: 'email' }, afterFinish:function(){$('emailsHint').remove();}});
				}
				
				
				if($('emailHolder').getStyle('display') == 'none'){
					new Effect.BlindDown($('emailHolder'), {duration: 0.5, queue: { position: 'end', scope: 'email' }});

				}
				
				//fade in the new email message
				$$('.addedEmail').each(function(el) {
					if(el.getStyle('display') == 'none'){
						new Effect.BlindDown(el, {duration: 0.5, queue: { position: 'end', scope: 'email' }});
					}
				});
				
				$$('.removeEmail').invoke('observe', 'click', deleteEmail);
				
				//reset the message
				element.value = element.readAttribute('title');
			}
		}
	}
	
	function validateForm(event) {
	event.stop();
	element = Event.element(event);
	
	var emailField = $('emailHolder').innerHTML;
	var nameField = $('senderName');
	var senderEmail = $('senderEmail');
	
	
	
	var validSenderEmail = CheckEmail(senderEmail.value); 
	
		if(validSenderEmail != ""){
			
			var senderError = $('error_senderEmail');
			var senderEmailCheck = "invalid";
			senderError.update(validSenderEmail);
			//animate error message
			if(senderError.getStyle('display') == 'none'){
			new Effect.BlindDown(senderError, {duration: 0.5});
			
			}else if($('error_senderEmail').getStyle('display') != 'none'){
				Effect.Shake('error_senderEmail', { duration: .7, distance: 4 });
			}
		
		} else {
		
			var senderEmailCheck = "valid";
		
		}
		
		
		
		if(nameField.value == nameField.readAttribute('title')){
			
			var nameError = $('error_name');
			var nameCheck = "invalid";
			nameError.update("enter a valide name");
			//animate error message
			if(nameError.getStyle('display') == 'none'){
			new Effect.BlindDown(nameError, {duration: 0.5});
			} else if(nameError.getStyle('display') != 'none'){
				
				Effect.Shake('error_name', { duration: .7, distance: 4 });
			}
		
		} else {
		
			var nameCheck = "valid";
		
		}
		
		if(emailField.strip().empty()){
			
			var errorElement = $('error_email');
			
				errorElement.update("please add an email address");
				//animate error message
				if(errorElement.getStyle('display') == 'none'){
				new Effect.BlindDown(errorElement, {duration: 0.5});
				} else if(errorElement.getStyle('display') != 'none'){
					Effect.Shake('error_email', { duration: .7, distance: 4 });
				}

		
		} else {
		
			var emailsCheck = "valid";
		
		}
		
		//wrap up validation & send form information
		if(emailsCheck && nameCheck && senderEmailCheck == 'valid'){
			var catVal = ', ';
			$$('.emailToPost').each(function(item) {
											 
				if(item != $$('.emailToPost').last()){
					//$('emailField').insert(item.innerHTML + catVal);
					$('emailField').value = $('emailField').value + item.innerHTML + catVal;
				}else{
					var recip = item.innerHTML;
					$('emailField').value = $('emailField').value + item.innerHTML;
					//your finished, send the email
					
					//disable send btn
					$('sendBtn').stopObserving('click', validateForm);
					
					
				/*new Effect.Morph('sendBtn', {
					style: {
					background: '#A3BA3C'
					}, // CSS Properties
					duration: 0.8 // Core Effect properties
				});

					
					//show the progress bar 
					$('progressBar').appear();
					
			*/
					
					sendMail();
				}
		    
			});

			////capture all the $$('.emailToPost').innerHTML and add them to $('emailField')
			
		} else {
			
			//this form is invalid -- error messages are already being shown
		}

	}
	
	//make an ajax request to send the email
	function sendMail(){
		
		$('emailVid').request({
			onComplete: function(transport) {
				//alert(transport.responseText);
				
				$('tab1').setStyle({height: $('tab1').getHeight()+'px'});
				$('emailForm').fade({duration: 0.5, queue: { position: 'end', scope: 'thanks' }});
				new Effect.Morph('tab1', {
					style: {
					height: ($('thankYou').getHeight()+15) +'px'
					}, // CSS Properties
					duration: 0.5, // Core Effect properties
					queue: { position: 'end', scope: 'thanks' }
				});

				$('thankYou').appear({duration: 0.5, queue: { position: 'end', scope: 'thanks' }});
			}
   	
		});
		
	}
	
	
	
	
	function deleteEmail(event){
	
	elementClick = Event.element(event);
	
	element = $(elementClick).up('div.addedEmail');
	
	
	var hintTxt = $('emailHolder').readAttribute('title');
	var hintContent = "<div id='emailsHint' style='display:none;'>"+hintTxt+"</div>";
	
	//fade out email & then remove it after so the box doesn't register an external click
	new Effect.BlindUp(element, {duration: 0.5, queue: { position: 'end', scope: 'email' }, afterFinish:function(){element.remove(); checkEmptyList();}});
	
	
		function checkEmptyList(){
			
			if($('emailHolder').innerHTML.strip().empty()){
				
				$('emailHolder').setStyle({display:'none'});
			
			///bring in red error message
			
				var errorElement = $('error_email');
				errorElement.update("please add an email address");
				//animate error message
				new Effect.BlindDown(errorElement, {duration: 0.5, queue: { position: 'end', scope: 'email' }});
				
			}
			
		}
		
	}
	
	function clearVal(event){
		
		element = Event.element(event);
		
		if(element.value == element.readAttribute('title')){
			
			element.clear();
		}
	
	}
	
	function setVal(event){
		element = Event.element(event);
		elVal = element.value.strip();
		
		if(elVal.empty()){
			element.value = element.readAttribute('title');
		} 
	}
		
	function swapTabs(event){
		
		event.stop();
		element = Event.element(event);
		elementDiv = Event.element(event).up('div');
		
		if(!element.hasClassName('selected')){
			
			$$(".tab").each(function(el){
				el.removeClassName('selected');
			});
			
			$$(".tabWrap").each(function(el){
				el.removeClassName('selected');
			});
			
			element.addClassName('selected');
			elementDiv.addClassName('selected');
			
			//switch tab content here
			$$(".tabContent").each(function(el){
				el.hide();
			});
			
			var newContentDiv =  $(element.href.split("#")[1]);
			
			newContentDiv.show();
		}
	}
	
	function CheckEmail(email) {
		//email = document.f1.Email.value
		AtPos = email.indexOf("@");
		LastPosAt = email.lastIndexOf("@");
		StopPos = email.lastIndexOf(".");
		Message = "";
		
		if (email == "") {
		Message = "not a valid Email address" + "\n"
		}
		
		if (AtPos == -1 || StopPos == -1) {
		Message = "not a valid email address";
		}
		
		if (StopPos < AtPos) {
		Message = "not a valid email address";
		}
		
		if (StopPos - AtPos == 1) {
		Message = "not a valid email address";
		}
		
		if (AtPos != LastPosAt){
		Message = "please enter one email at a time";
		}
		
		return Message
}



/*---------------------------------------------------------- Universal Functions --------------------------------------------------*/
//copy to clipboard function
function copy(inElement) {
  if (inElement.createTextRange) {
    var range = inElement.createTextRange();
    if (range && BodyLoaded==1)
      range.execCommand('Copy');
  } else {
    var flashcopier = 'flashcopier';
    if(!document.getElementById(flashcopier)) {
      var divholder = document.createElement('div');
      divholder.id = flashcopier;
      document.body.appendChild(divholder);
    }
    document.getElementById(flashcopier).innerHTML = '';
    var divinfo = '<embed src="/assets/swf/_clipboard.swf" FlashVars="clipboard='+encodeURIComponent(inElement.value)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
    document.getElementById(flashcopier).innerHTML = divinfo;
  }
}

/*-----------------------------------------------------Transitions Excerpts transistions.js ---------------------------*/

// SwingTo (adapted from "BackEaseOut")
Effect.Transitions.SwingTo = function(pos) {
    var s = 1.70158;
    return (pos-=1)*pos*((s+1)*pos + s) + 1;
};