document.observe("dom:loaded", function() {
  //Event.observe(window, 'load', function() {

  //check for cancel button
  /*if($$('.month-toggle')){	 
  	invokeCalToggle();
  }*/
  
  if($$('.redirect-link')){	 
  	 $$('.redirect-link').invoke('observe', 'click', setCurrentURL);
  }

  
});


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Set Current URL Session Value
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


function setCurrentURL(event){
	event.stop();
	element = Event.element(event);
	var newURL = element.readAttribute('href');
	var currentID = element.readAttribute('rel');
	
	if(newURL == null || newURL == ''){
		newURL = element.up('a').readAttribute('href');
		currentID = element.up('a').readAttribute('rel');
	}
	
	var currentURL = location.href;
	
	new Ajax.Request('/faq/seturl/', {
			method: 'post',
			parameters: {fromURL: currentURL, currentID: currentID}, 
			onComplete: function(transport){

				window.location=newURL;
			}
	
		});
	
}



//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Form Input Toggles
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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 initHomeTabs(){

	$('anc-tab').observe('click', toggleHomeTabs);
	$('events-tab').observe('click', toggleHomeTabs);

}

function toggleHomeTabs(event){
		
		event.stop();
		element = Event.element(event);
		
		if(element.id == "anc-tab"){
			
			if(!element.up('li').hasClassName("current")){
				element.up('li').addClassName("current");
			}
			
			if($('events-tab').up('li').hasClassName("current")){
				$('events-tab').up('li').removeClassName("current");
				
				var sElement = $('anc-toggle');
				var hElement = $('events-toggle');
				var sbElement = $('read-all-anc');
				var shElement = $('read-all-events');
				
				swapHomeTabs(sElement, hElement, sbElement, shElement);
			}
			
			
		}else{
			
			if(!element.up('li').hasClassName("current")){
				element.up('li').addClassName("current");
			}
			
			if($('anc-tab').up('li').hasClassName("current")){
				$('anc-tab').up('li').removeClassName("current");
				
				var sElement = $('events-toggle');
				var hElement = $('anc-toggle');
				var sbElement = $('read-all-events');
				var shElement = $('read-all-anc');
				
				swapHomeTabs(sElement, hElement, sbElement, shElement);
			}
		}
		
}

function swapHomeTabs(elementShow, elementHide, sbElement, shElement){
		//fade out current feed
		new Effect.Opacity('tab-wrapper', { from: 1.0, to: 0, duration: 0.25, queue: { position: 'start', scope: 'tabs' }, afterFinish:function(){
			
			elementShow.show();
			elementHide.hide();
			sbElement.show();
			shElement.hide();
			
			new Effect.Opacity('tab-wrapper', { from: 0, to: 1.0, delay: .25, duration: 0.5, queue: { position: 'end', scope: 'tabs'}});
		 
		}});


			
		
}
	
/*------------------------------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);
}

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



function closeZoomBox(){
	//removeEditor();
	FancyZoomBox.hide();
}


/*------------------------------ 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
}