/* $Revision: 1.2 $ */

//<feather>
//Created by Sean Kane (http://celtickane.com/programming/code/ajax.php)
//Feather Ajax v1.0.1
//Modified by Paul Tomlinson for brevity, cleanliness, and extensibility

function AjaxObject101() {
	this.createRequestObject = function() {
		var ro;
		try {
			ro = new XMLHttpRequest();
		} catch( e ){
			ro = new ActiveXObject( "Microsoft.XMLHTTP" );
		}
		return ro;
	}
	this.get = function( url, data ){ return( this.sndReq( "GET", url, data ) ); }
	this.post = function( url, data ){ return( this.sndReq( "POST", url, data ) ); }
	this.sndReq = function( action, url, data ){
		if (action.toUpperCase() == "POST") {
			this.http.open( action, url, true );
			this.http.setRequestHeader( 'Content-Type','application/x-www-form-urlencoded' );
		} else {
			this.http.open( action, url + '?' + data, true );
		}
		this.http.onreadystatechange = this.handleResponse;
		this.http.send( data );
	}
	this.handleResponse = function(){
		if( me.http.readyState == 4 ){
			if( typeof( me.funcDone ) == 'function' ){ me.funcDone(); }
			var rawdata = me.http.responseText.split( '|' );
			for ( var i = 0; i < rawdata.length; i++ ){
				var item = ( rawdata[i] ).split( '=>' );
				if (item[0] != ""){
					if (item[1].substr(0,3) == "%V%" ){
						document.getElementById(item[0]).value = item[1].substring(3);
					} else {
						document.getElementById( item[0] ).innerHTML = item[1];
					}
				}
			}
		}
		if( ( me.http.readyState == 1 ) && ( typeof me.funcWait == 'function' ) ){
			me.funcWait();
		}
	}
	var me = this;
	this.http = this.createRequestObject();
	var funcWait = null;
	var funcDone = null;
}
// </feather>

var ajax = new AjaxObject101;

function isValidEmailAddress( anEmail ){
	var emailRegex = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
	return emailRegex.test( anEmail );
}

function cookieVal( key ){
	var pairs = document.cookie.split( /;\n? ?/ );
	for( var i = 0; i < pairs.length; i++ ){
		var keyval = pairs[i].split( '=' );
		if( keyval[0] == key ){
			return( keyval[1] );
		}
	}
}

function sendEmail( aForm ){
	var errormsg = '';
	var pass = true;
	if( !isValidEmailAddress( aForm.return_address.value ) ){
		errormsg+= "Cannot send email; please provide a valid return address.\n";
		pass = false;
	}
	if( pass ){
		ajax.funcWait = function(){
			var msgcontent = document.getElementById( 'msgcontent' );
			msgcontent.innerHTML = (
				msgcontent.innerHTML.indexOf( 'Sending' ) > -1
				? msgcontent.innerHTML + '.'
				: 'Sending...'
			);
		};
		var k = ( cookieVal( 'k' ) ? cookieVal( 'k' ) : 13 );
		ajax.post(
			'send_email',
			'msg=' + escape( rotX( aForm.elements['content'].value, k ) ) +
			'&retadd=' + escape( rotX( aForm.elements['return_address'].value, k ) )
		);
		toggleBGFade( true );
	} else {
		alert( errormsg );
	}
	return( false ); // Suppress form submission
}

function rotX( str, x ){
	x = ( x ? x % 26 : 13 );
	var a = 'a'.charCodeAt( 0 );
	var z = 'z'.charCodeAt( 0 );
	var A = 'A'.charCodeAt( 0 );
	var Z = 'Z'.charCodeAt( 0 );
	var tmpStr = '';
	for( var i = 0; i < str.length; i++ ){
		var c = str.charCodeAt( i );
		if(
			x != 0 && (
				( c >= a && c <= z )
				|| ( c >= A && c <= Z )
			)
		){
			var l;
			var u;
			if( c >= a && c <= z ){
				l = a;
				u = z;
			} else {
				l = A;
				u = Z;
			}
			if( x > 0 ){
				c = ( c + x > u ? ( ( c + x ) - ( u + 1 ) ) + l : c + x );
			} else {
				c = ( c + x < l ? ( u - ( l - ( c + x ) ) ) + 1 : c + x );
			}
		}
		tmpStr+= String.fromCharCode( c );
	}
	return( tmpStr );
}

function toggleBGFade( showHide ){
	var fadebg = document.getElementById( 'fadebg' );
	var emailmsg = document.getElementById( 'emailmsg' );
	var layout = document.getElementById( 'layout' );
	var aVal = ( showHide ? 'block' : 'none' );
	fadebg.style.height = ( ( layout.clientHeight + 20 ) + 'px' ); // 20 = body.style.padding x 2 per general.css
	var iebody = ( document.compatMode && document.compatMode != 'BackCompat' ? document.documentElement : document.body );
	var dsoctop = ( document.all ? iebody.scrollTop : window.pageYOffset );
	emailmsg.style.top = ( dsoctop + 150 ) + 'px';
	emailmsg.style.display = fadebg.style.display = aVal;
}

