/*************************************************
TITLE: Custom Scripts
DESCRIPTION: Scripts used throughout the site.
AUTHOR: David Mingos
CONTACT: http://dmdesigns.com/contact/
*************************************************/

/**
 * If the website is located in a subdirectory off the 
 * domain, enter that here. i.e. domain.com/subfolder/{homepage}
 * var websiteLocation = '/subfolder';
 */
var websiteLocation = '';


/* BEHAVIOURS \\\
**************************************************

// The format of the rule definitions is like so:

var myRules = {
	'b.someclass' : function(element){
		element.onclick = function(){
			alert(this.innerHTML);
		}
	},
	'#someid u' : function(element){
		element.onmouseover = function(){
			this.innerHTML = "BLAH!";
		}
	}
};
Behaviour.register(myRules);


// To add an onclick event to every list item <li> 
// in a page - you would write something like this:

var myRules = {
	'li' : function(element){
		element.onclick = function(){
			// Your onclick event goes here - eg;
			// load a page - do an AJAX etc.;
		}
	}
};
Behaviour.register(myRules);

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

autoClearingInputs.push('s', 'sEmail');
var searchLinkLabel;
var contactLinkLabel;

var siteSearchValidation = {
	'#site-search' : function(element) {
		element.onsubmit = function() {
			return validateSearch(); 
			//validateSearch() is defined in 
			//FUNCTIONS section below
		}
	}
};

var subscribeValidation = {
	'#frmsubscribe' : function(el) {
		el.onsubmit = function() {
			return validateSignUp();
		}
	}
};

var textSizeChangers = {
	'#text-sizer a' : function(element) {
		element.onclick = function() {
			setActiveStyleSheet(this.title);
			return false;
		}
	}
};


var sliderRules = {
	'#contact-us-link a' : function(el) {
		el.onclick = function() {

			var contentUri = websiteLocation + '/html/contact-info.html';

			var contactLink = $('contact-us-link').down('a');
			var searchLink = $('search-link').down('a');
			var slider = $('slider-content');

   	   if (contactLink.innerHTML != 'Hide ' + contactLinkLabel) {
            slider.show();
   	      new Ajax.Updater(slider, contentUri, 
	         {
                method: 'get',
                onSuccess:function() { new Effect.SlideDown(slider, { duration:0.25 }); },
	            on404: function() { document.location = contactLink.href; }
	         });
   			contactLink.innerHTML = 'Hide ' + contactLinkLabel;
	         searchLink.innerHTML = searchLinkLabel;
	      } else {
	         new Effect.SlideUp(slider, {
	            duration:0.125, 
	            afterFinish: function() {
      	         slider.innerHTML = '';
      	         contactLink.innerHTML = contactLinkLabel;
   	         }
	         });
	      }
	      return false;

		}
	},
	
	'#search-link a' : function(el) {
		el.onclick = function() {

			var contentUri = websiteLocation + '/html/search-form.html';

			var contactLink = $('contact-us-link').down('a');
			var searchLink = $('search-link').down('a');
			var slider = $('slider-content');

   	   if (searchLink.innerHTML != 'Hide ' + searchLinkLabel) {
            slider.show();
   	      new Ajax.Updater(slider, contentUri, 
	         {
                method: 'get',
	            onSuccess:function() { new Effect.SlideDown(slider, { duration:0.25 }); },
	            on404: function() { document.location = contactLink.href; }
	         });
	         searchLink.innerHTML = 'Hide ' + searchLinkLabel;
	         contactLink.innerHTML = contactLinkLabel;
	      } else {
	         new Effect.SlideUp(slider, {
	            duration:0.125, 
	            afterFinish: function() {
      	         slider.innerHTML = '';
      	         searchLink.innerHTML = searchLinkLabel;
   	         }
	         });
	      }
	      return false;

		}
	}
};

/* FUNCTIONS \\\
*************************************************/

validateSearch = function() {
   var searchbox = $('q');
   var submitbutton = $('go');
   if (searchbox.value.length > 0 && searchbox.value != searchbox.defaultValue) {
      submitbutton.disabled = true;
      document.location = '/search/' + escape(searchbox.value).replace('%20','+');
      return false;
   } else {
      alert('Please enter a word or phrase to search for.');
      searchbox.focus();
      return false;
   }
}

validateSignUp = function() {

   var emailBox = $('sEmail');
   var submitButton = $('sign-up');

   if (emailBox.value.length > 0 && emailBox.value != emailBox.defaultValue && validateEmail(emailBox.value)) {
      submitButton.disabled = true;
      return true;
   } else {
      alert('Please enter a valid e-mail address.');
      emailBox.focus();
      return false;
   }

}

initSearchForm = function() {
   var searchbox = $('s');
   if (searchbox.value == searchbox.defaultValue)
      searchbox.style.color = '#555';
   else
      searchbox.style.color = '#000';
};

initSubscribeForm = function() {
   var emailbox = $('sEmail');
   if (emailbox.value == emailbox.defaultValue)
      emailbox.style.color = '#555';
   else
      emailbox.style.color = '#000';
};

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

Behaviour.register(sliderRules);
Behaviour.register(siteSearchValidation);
Behaviour.register(subscribeValidation);
Behaviour.register(textSizeChangers);

Event.observe(window, 'load', loadActiveStylesheet);
Event.observe(window, 'load', setAutoClearHandlers);
Event.observe(window, 'load', initSubscribeForm);
Event.observe(window, 'load', function() {
   contactLinkLabel = ($('contact-us-link')) ? $('contact-us-link').down('a').innerHTML : 'Contact Us';
   searchLinkLabel = ($('search-link')) ? $('search-link').down('a').innerHTML : 'Search';
});

Event.observe(window, 'unload', unloadActiveStylesheet);
