// Cufon Stuff
Cufon.replace("#contact-drawer h1", {fontSize: "53px", textShadow: "rgba(0, 0, 0, 0.5) 0px 1px"});
Cufon.replace("#careers-drawer h2", {fontSize: "18px"});
Cufon.replace("#careers-drawer h3", {fontSize: "16px"});
Cufon.replace("#careers-drawer h4", {fontSize: "16px"});
Cufon.replace("#job-list li", {fontSize: "18px"});
Cufon.replace("#showcase h1", {fontSize: "60px"});
Cufon.replace("#showcase h2", {fontSize: "20px"});
Cufon.replace("#band h2", {fontSize: "24px"});
Cufon.replace("#band p", {fontSize: "17px"});
Cufon.replace("#contact-form p.intro", {fontSize: "16px"});
Cufon.replace("#news-headline h3", {fontSize: "22px", lineHeight: "22px"});
Cufon.replace("#news h4", {fontSize:"16px"});
Cufon.replace("#news p.date", {fontSize: "14px"});
Cufon.replace(".drawer a.tab", {fontSize: "20px", textShadow: "rgba(0, 0, 0, 0.5) 0px 1px"});
Cufon.replace("#showcase a.button", {fontSize: "18px", textShadow: "rgba(0, 0, 0, 0.5) 0px 1px"});

// Mootools stuff
document.addEvent('domready', function() {
	
	var contact_open = false;
	var careers_open = false;
	
// Contact Form Stuff		
	if ($("contact-form")) {

		var inputs = $$(".text-input");
		var textareas = $$(".text-area");
		var email = $("email");
		var message = $("message");
		var email_field = email.getParent();
		var message_field = message.getParent();
		var contact_form = $("contact-form");
		var submit_button = $("contact-submit");
		var messages = $("messages");

		inputs.each(function(input, index) {
			
			var dt = input.getParent().getParent().getElement("dt");
			var label = dt.getElement("label");
			var sLabelText = label.get("text");
			
			input.set("value", sLabelText);
			dt.destroy();
			
			input.addEvents({
				focus : function(evt) {
					if (input.get("value") == sLabelText) {
						input.set("value", "");
					}
				},
				
				blur : function(evt) {
					if (input.get("value") == "") {
						input.set("value", sLabelText);
					}
				}
			});
			
		});
		
		textareas.each(function(textarea, index) {
			
			var dt = textarea.getParent().getParent().getElement("dt");
			var label = dt.getElement("label");
			var sLabelText = label.get("text");
			
			textarea.set("text", sLabelText);
			dt.destroy();
			
			textarea.addEvents({
				focus : function(evt) {
					if (textarea.get("value") == sLabelText) {
						textarea.set("value", "");
					}
				},
				
				blur : function(evt) {
					if (textarea.get("value") == "") {
						textarea.set("value", sLabelText);
					}
				}
			});
			
		});
		
		var original_email_value = email.get("value");
		var original_message_value = message.get("value");
		
		function remove_field_classes() {
			email_field.set("class", "");
			message_field.set("class", "");
		}
		
		// submit action
		submit_button.addEvent("click", function(evt) {
			
			evt.stop();
			var error = false;
			var action = contact_form.get("action");
			var method = contact_form.get("method");
			var submitted_email_value = email.get("value");
			var submitted_message_value = message.get("value");

			messages.empty();
			remove_field_classes();
			
			// validate empty
			if (original_email_value == submitted_email_value || submitted_email_value == "") {
								
				var email_error = new Element("p", {"class" : "error", "text" : "Hmmm. I think you forgot to put in your email address."}).injectInside(messages);
				email_error.highlight();
				email_field.addClass("error").addClass("field");
				// email.setStyle("border", "2px solid #c00");
				return;
				
			}
			
			// validate email format
			var email_filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			if (!submitted_email_value.test(email_filter)) {
				
				var email_error = new Element("p", {"class" : "error", "text" : "Your email address should look something like this: [username]@[domain].[etc]"}).injectInside(messages);
				email_error.highlight();
				email_field.addClass("error").addClass("field");

				return;
				
			}
			
			// validate empty
			if (original_message_value == submitted_message_value || submitted_message_value == "") {
				
				var message_error = new Element("p", {"class" : "error", "text" : "Don't be shy, write us a note."}).injectInside(messages);
				message_error.highlight();
				message_field.addClass("error").addClass("field");
				
				return;
			}
			
			email.set("value", original_email_value);
			message.set("value", original_message_value);
			
			var submit_form = new Request({
				url: action,
				method: method,
				headers: {
					'X-Lucky-Numbers' : '4 8 15 16 23 42',
					'X-Respond' : 'text/plain'
				},
				onSuccess: function(response) {
					
					var message_success = new Element("p", {"class" : "success", "text" : response}).injectInside(messages);
					message_success.highlight();

					var fade_message = new Fx.Morph(message_success,{duration: '500',onComplete:function(e){message_success.setStyle("display", "none");}});
					fade_message.start.delay(2000,fade_message,{"opacity":[1,0]});
					
				},
				onFailure: function(xhr) {
					
					var general_error = new Element("p", {"class" : "error", "text" : "There was a problem submitting the form."}).injectInside(messages);
					general_error.highlight();
					
				}
			}).send("email="+submitted_email_value+"&message="+submitted_message_value);
			
			// alert("Sending:\n--------\nEmail: "+ submitted_email_value + "\nMessage: "+ submitted_message_value +"\nAction: " + action);
			
		});
		
	}
// End of Contact Form Stuff

// Showcase Stuff
	if ($("showcase")) {
		
		// Showcase Config Vars
		var slideTimer = 7500;
		var transitionTime = 750;
		
		var showcase_container = $("showcase").setStyles({"overflow" : "hidden"});
		var showcases = $$(".showcase-content");
		
		showcases.each(function(showcase){
			
			var top = showcase.hasClass("first-showcase") ? 0 : showcase.getSize().y;
			
			showcase.setStyles({
				"position" : "absolute",
				"top" : top
			});
			
			
		});

		var show_the_cases = new function() {

			var numItems = showcases.length;
			var itemNum = 0;

			var slideItGood = function(){ 

				var curItem = showcases[itemNum];
				var curItemHeight = curItem.getSize().y;
				
				(itemNum < (numItems - 1)) ? itemNum++ : itemNum = 0;
				
				var newItem = showcases[itemNum];

				var item_in = new Fx.Morph(newItem, {
					duration: transitionTime, 
					transition: Fx.Transitions.Back.easeInOut, 
					wait: false
				});

				var item_out = new Fx.Morph(curItem, {
					duration: transitionTime, 
					transition: Fx.Transitions.Back.easeInOut, 
					wait:false
				});
				
				item_in.start({ 'top': [curItemHeight, 0] });
				item_out.start({ 'top': -curItemHeight });

			};
			
			var showing_cases = slideItGood.periodical(slideTimer, this);
		};
		
	}
// End of Showcase Stuff

// Drawer Stuff
	if ($("contact-tab") && $("careers-tab")) {
		
		// create the modal thinger.
		
		// var drawer_modal = new Element("div",{
		// 	
		// 	id : "drawer-modal",
		// 	styles: {
		// 		"background" : "#000",
		// 		"width" : "100%",
		// 		"height" : "100%",
		// 		"position" : "fixed",
		// 		"z-index" : "9",
		// 		"cursor": "pointer",
		// 		"opacity": "0.9",
		// 		"display" : "none"
		// 	},
		// 	
		// 	events: {
		// 		"click" : function(evt) {
		// 			
		// 			evt.stop();
		// 			this.setStyle("display", "none");
		// 			
		// 			contact_fx.slideOut();
		// 			careers_fx.slideOut();
		// 			
		// 		}
		// 	}
		// 	
		// }).injectInside("dummy-div");
		
		var contact_tab = $("contact-tab");
		var contact_drawer = $("contact-drawer");
		var contact_drawer_content = $("contact-drawer-content");
		
		contact_drawer_content.removeClass("collapse");
		
		var contact_fx = new Fx.Slide(contact_drawer_content, {
			duration: 500,
			transition: Fx.Transitions.Pow.easeOut
		}).hide();
		
		contact_tab.addEvent("click", function(evt) {
			evt.stop();
			contact_fx.toggle();
			// careers_fx.slideOut();
			// drawer_modal.setStyle("display", "block");
		});
		
		
		var careers_drawer = $("careers-drawer");
		var careers_drawer_content = $("careers-drawer-content");
		var careers_tab = $("careers-tab");
		var close_btn = $("careers-close-btn");
		
		careers_drawer_content.removeClass("collapse");
		
		var careers_fx = new Fx.Slide(careers_drawer_content, {
			duration: 500,
			transition: Fx.Transitions.Pow.easeOut
		}).hide();
		
		careers_tab.addEvent("click", function(evt) {
			evt.stop();
			careers_fx.toggle();
			// drawer_modal.setStyle("display", "block");
		});
		
		close_btn.addEvent("click", function (evt) {
			evt.stop();
			careers_fx.slideOut();
		});
		
		// Job list stuff
		
		var job_list = $("job-list");
		var job_links = job_list.getElements("a.job");
		var jobs = $$(".job");
		var current_job = "";
		var active_link = "";
		
		jobs.each(function(job) {
			if (job.hasClass("default")) {
				// alert("woot")
				current_job = job;
			}
		});
		
		job_links.each(function(link) {
			
			var relationship = link.get("rel");
			if (link.getParent().hasClass("active")) {
				active_link = link;
			}
			
			link.addEvents({
				click: function(evt) {
					evt.stop();
					var relative = $(relationship);
					current_job.setStyle("display", "none");
					active_link.getParent().removeClass("active");
									
					relative.setStyle("display", "block");
					link.getParent().addClass("active");

					active_link = link;					
					current_job = relative;
					
				}
			});
			
		});
		
	}
// End of Drawer Stuff

// News Stuff
	if ($("news-wrapper") && $("news")) {
		
		var current_index = 0; // first item. 3-index = right side item.
		var next_item = current_index + 3;
		var previous_item = current_index - 1;
		var news_container = $("news").getElement(".content");
		var news_items = news_container.getElements(".news-item");
		var news_item_count = news_items.length;
		var news_item_width = news_items[0].getSize().x;
		var max_height = 0;
		
		// Slider Window	
		var news_slider_window = new Element("div", {
			"id" : "news-slider-window"
		}).injectAfter("news-headline");
		
		// Slider Box
		var news_slider = new Element("div", {
			"id" : "news-slider",
			"styles": {
				"width" : (news_item_count * news_item_width)
			}
		}).injectInside(news_slider_window);
		
		// Animations
		var main_slider = new Fx.Tween(news_slider, {
			duration: 1000,
			transition: Fx.Transitions.Pow.easeOut
		}).start("left", 0); // hack to initiate the animations
		
		// Slider Controls
		var news_slider_controls = new Element("div", {
			"id": "news-slider-controls"
		}).injectBefore(news_slider_window);
		
		// Next Button
		var previousButton = new Element("a", {
			"href": "#",
			"text": "Previous Article »",
			"id": "news-previous-button",
			"class": "news-button"
		}).injectInside(news_slider_controls);
		
		// Previous Button
		var nextButton = new Element("a", {
			"href": "#",
			"text": "« Next Article",
			"id": "news-next-button",
			"class": "news-button"
		}).injectInside(news_slider_controls);
		
		// Inject the articles
		news_items.each(function(item, index) {
			
			item.injectInside(news_slider);
			max_height = (item.getSize().y > max_height) ? item.getSize().y : max_height;
			
		});
		
		news_slider_window.setStyle("height", max_height);

		if (current_index == 0) {
			nextButton.setStyle("opacity", 0);
		}
		
		previousButton.addEvent("click", function(evt) {
			evt.stop();
			
			if (current_index + 3 < (news_item_count)) {
				
				main_slider.cancel();
				
				previous_item = current_index + 3;
				current_index ++;
				
				// do the slide
				main_slider.start("left", -(news_item_width * current_index));
				
				// is this the last item?
				if (previous_item + 1 == news_item_count) {
					previousButton.fade("out");
				}
				
				// is this anything but the first item?
				if (current_index > 0) {
					nextButton.fade("in");
				}
				
			}
			
		});
		
		nextButton.addEvent("click", function(evt) {
			evt.stop();
			
			if (current_index > 0) {
				
				main_slider.cancel();
				
				current_index --;
				
				// do the slide
				main_slider.start("left", -(news_item_width * current_index));
				
				// is this the last item?
				if (current_index == 0) {
					nextButton.fade("out");
				}
				
				// is this anything but the last item?
				if (current_index + 3 < news_item_count) {
					previousButton.fade("in");
				}
				
			}
		});
		
	}

// End of News Stuff

// External Links

	var external_links = $$("a[rel=external]").each(function(link, index) {
		link.addEvent("click", function(evt) {
			evt.stop();
			window.open(link.get("href"));
		});
	});

// End of External links

});;