	function getByID(ID){
		if (document.getElementById){
			return document.getElementById(ID);
		}
		else if ((document.all) && (eval ('document.all.' + ID))){
			return eval ('document.all.' + ID);
		}
	}
	function orcUpdate(){
		var greetings  = [
			"From one orc to another.",
			"Happy birthday from the lands of the Orcs",
			"How yah doing dude?"
		];

		getByID('message').value = greetings[getByID('canned').value];
	}

	function addtachEvent(evt, daFunction, obj){
		(obj) || (obj = window);
		if (window.addEventListener){
			obj.addEventListener(evt, daFunction, false);
		}
		else if (window.attachEvent){
			obj.attachEvent( "on" + evt, daFunction);
		}
	}
	function getByID(ID){
		if (document.getElementById){
			return document.getElementById(ID);
		}
		else if ((document.all) && (eval ('document.all.' + ID))){
			return eval ('document.all.' + ID);
		}
	}
	function getByClass(cls, top) {
		var elements;
		var elements_list = [];
		var pattern = new RegExp("(^|\\s)"+cls+"(\\s|$)");

		(top) || (top = document);
		elements = top.getElementsByTagName('*')

		for (var i=0; i<elements.length; i++){
			if (pattern.test(elements[i].className)){
				elements_list.push(elements[i]);
			}
		}
		return elements_list;
	}

	function newsText(element, text){

		if (text == ''){
			return;
		}

		element = getByID(element);
		element.textspeed = 80;
		element.pause = 1000;
		element.targetText = text;
		element.setText = element.innerHTML = '';

		doNews(element);
	}
	function doNews(element) {
		if (element.setText.length == element.targetText.length){
			
			return;

			/* 
			// no repeat
			
			#element.setText = '';
			#element.innerHTML = '';
			*/
		}
		var i = element.setText.length;
		
		element.innerHTML += element.targetText.charAt(i);
		element.setText += element.targetText.charAt(i);

		if (element.setText.length == element.targetText.length){
			setTimeout( function() { doNews(element) }, element.pause);
		}
		else{
			setTimeout( function() { doNews(element) }, element.textspeed);
		}
	}


	function center_to_screen(div){
		// can't discover width of an invisible object, so 
		// we have to position it off to the side and make it visible
		div.style.left = '-5000px';
		div.style.display = 'block';

		var s_width;
		var s_height;
		var x_scroll;
		var y_scroll;
		var d_width = div.offsetWidth;
		var d_height = div.offsetHeight;

		if (self.innerHeight) {
			s_width = self.innerWidth;
			s_height = self.innerHeight;
		}
		else if (document.documentElement && document.documentElement.clientHeight) {
			s_width = document.documentElement.clientWidth;
			s_height = document.documentElement.clientHeight;
		}
		else if (document.body) {
			s_width = document.body.clientWidth;
			s_height = document.body.clientHeight;
		}

		if (self.pageYOffset) {
			x_scroll = self.pageXOffset;
			y_scroll = self.pageYOffset;
		}
		else if (document.documentElement && document.documentElement.scrollTop) {
			x_scroll = document.documentElement.scrollLeft;
			y_scroll = document.documentElement.scrollTop;
		}
		else if (document.body) {
			x_scroll = document.body.scrollLeft;
			y_scroll = document.body.scrollTop;
		}

		var left 	= (Math.round(s_width/2) - Math.round(d_width/2) + x_scroll);
		var top 	= (Math.round(s_height/2) - Math.round(d_height/2) + y_scroll);
		
		div.style.left = left + 'px';
		div.style.top = top + 'px';

	}




	function formCheck(){
		var form = getByID('orcFormForm');

		if (document.preview > 0){
			document.preview = 0;
			return true;
		}

		// check for missing fields...
		// message must be at least 5 words
		// from name must be at least 1 letter
		// from email must match m|.+\@.*\.\w+|
		// to_email must be comma seperated emails
		
		var message 	= form.message.value;
		var from_name 	= form.from_name.value;
		var from_email 	= form.from_email.value;
		var to_email 	= form.to_email.value;

		var message = message.replace(/^\s+/, '');
		var message = message.replace(/\s+$/,'');
		var message = message.replace(/\s/g,' ');
		var count = message.split(' ').length

		if (count < 1){
			alert ('Please send a message of at least one word to your friend.');
			return false;
		}
		if (form.message.value.length > 140){
			alert ('Please limit the size of your message to 140 characters.');
			return false;
		}
		if (from_name.length < 1){
			alert ('Please enter your name');
			return false;
		}
		if (! from_email.match(/.+\@.*\.\w+/)){
			alert ('Please enter your email address');
			return false;
		}

		to_email = to_email.replace(/\s/g,' ');
		to_email = to_email.replace(/,/g,' ');
		to_email = to_email.replace(/ +/g,' ');
		to_email = to_email.replace(/^\s+/, '');
		to_email = to_email.replace(/\s+$/,'');

		var to_emails = to_email.split(' ')

		if (to_emails[0] == ''){
			to_emails.shift();
		}

		if (to_emails.length == 0){
			alert ('Please enter your friend\'s email address.');
			return false;
		}
		else if (to_emails.length > 5){
			alert ('Please don\'t enter more than five email addresses.');
			return false;
		}

		for (var i=0; i<to_emails.length; i++){
			if (! to_emails[i].match(/.+\@.*\.\w+/)){
				alert ('I was not able to understand the email address "' + to_emails[i] + '". It appears to be invalid.');
				return false;
			}
		}

		// all checks passed!
		

		var agree_field = getByID('accept_terms');
		if (agree_field.value > 0){
			form.submit();
			
			return false;
		}
		else {
			popupSubmit();	
			return false;
		}
	}
	function popupSubmit(){
		var orc_tos = getByClass('orc_tos')[0];
		center_to_screen(orc_tos);
		orc_tos.style.display = 'block';
		getByClass('orcVideoInner')[0].style.display = 'none';
		return false;
	}

	function charsShowAndFade(evt, textarea, chars){
		evt = (evt) ? evt : ((event) ? event :null);

		var count = 140 - textarea.value.length;
		if (textarea.value.length == textarea.old_length){
			return;
		}
		textarea.old_length = textarea.value.length;

		chars.style.opacity = 1;
		chars.style.filter = 'alpha(opacity = 100)';
		chars.vis = 1;
		chars.stop = 1;

		if ((count-0) < 1){
			chars.style.color = 'red';
			chars.innerHTML = 'Message is too long!';
			return;
		}
		else{
			chars.innerHTML = count + ' characters remaining';
			chars.style.color = '#888';
		}

		clearTimeout(chars.timeout);
		chars.timeout = setTimeout(function () { charsFade(chars) }, 1000);
		return false;
	}
	function charsFade(chars){

		chars.vis -= .05;
		chars.style.opacity = chars.vis;
		chars.style.filter = 'alpha(opacity = ' + chars.vis *100 + ')';
		//chars.style.filter = 'alpha(opacity = 100)';
		
		chars.timeout = setTimeout( function() { charsFade(chars) }, 100 );

	}
	function orcSetup(){
		var textarea = getByID('message');
		var chars = getByClass('remainingChars')[0];

		textarea.old_length = textarea.value.length;

		addtachEvent('keyup', function(e) {
			charsShowAndFade(e, textarea, chars);
		}, document);

		//alert ('broswer is ' + navigator.userAgent);
		if (navigator.userAgent.match(/iPhone/)){
			getByClass('orcVideoInner')[0].style.display = 'none';
			//getByClass('orcVideoInner')[1].innerHTML = '<img src="images/email_video.gif" width="414" height="280" /> ';
		}


	}
	addtachEvent('load', orcSetup);


