/***************************************************
 ce.js
 * v1.1 2008-03-31
 * Copyright 2007 Interkey Networks Ltd. All Rights Reserved.
 * Use is prohibited without licence from Interkey Networks.
 * http://www.artofcoding.co.uk
***************************************************/
String.prototype.trim = function(){return this.replace( /(^\s*)|(\s*$)/g, "")};
document.documentElement.className = "js-on";
var aoc_sMagCookie = "cemag";
var aoc_nZoom = 100;
var aoc_nZoomIncr = 10;
var aoc_bUseCookie = false;
function aoc_fMagOnClick( bMag )
{
	aoc_fSetZoom( ( bMag ? ( aoc_nZoom + aoc_nZoomIncr ) : ( aoc_nZoom - aoc_nZoomIncr ) ) );	
}

function aoc_fGetCookie( sName )
{
	var sDocCookie = document.cookie;
	var xName = new RegExp( "(^|\\s|\;)" + sName + "=([^\\;]*)" );
	var bExists = xName.test( sDocCookie );
	if( bExists )
	{
		var sValue = RegExp.$2;
		sValue = sValue.trim();
        return ( sValue.length == 0 ) ? null : sValue;
	}
	return null;
}

function aoc_fSetCookie( sName, sValue, vExpires, sPath, sDomain, vSecure )
{
	var sExpiresDate = ( "" ); 
	if( vExpires == null )				 // no date defaults to one month
	{
		var dDate = new Date();
		dDate.setDate( dDate.getDate() + 30 );
		sExpiresDate = ( dDate.toGMTString() );
	}
	else if( vExpires == "session" )
	{
		sExpiresDate = ( "" );
	}
	else
	{
		sExpiresDate = ( vExpires.toGMTString() );	
	}
	var sNamePair = ( [ sName, escape( sValue ) ].join( "=" ) + ";" );
	var sExpiresPair = ( [ "expires", sExpiresDate ].join( "=" ) + ";" );
	var sPathPair = ( [ "path", ( sPath || "/" ) ].join( "=" ) + ";" );
	var sDomainPair = sDomain != null ? ( [ "domain", sDomain ].join( "=" ) + ";" ) : "";
	var sSecureFlag = ( vSecure ? "secure" : "" );
	document.cookie = [ sNamePair, sExpiresPair, sPathPair, sDomainPair, sSecureFlag ].join( "" );
}

function aoc_fZoomInit()
{
	if( aoc_bUseCookie )
	{
		var sCookie = aoc_fGetCookie( aoc_sMagCookie );
		if( sCookie )
		{
			aoc_fSetZoom( sCookie );
		}
	}
}

function aoc_fSetZoom( vLevel )
{
	var nLevel = Math.max( parseInt( vLevel ), 20 );
	document.documentElement.style.fontSize = ( nLevel + "%" );
	if( aoc_bUseCookie ) { aoc_fSetCookie( aoc_sMagCookie, nLevel ); };
	window.aoc_nZoom = nLevel;
}

aoc_fZoomInit();


function aoc_fCheckForm( eForm )
{
	var aRequired = window.aoc_aRequired;
	if( aRequired )
	{
		var aErrors = aoc_fProcessRequired( eForm, aRequired );
		var nErrors = aErrors.length;
		if( nErrors > 0 )
		{
			aoc_fDisplayErrors( aErrors );
			return false;
		}
	}
	return true;
}

function aoc_fProcessRequired( eForm, aRequired )
{
	var aErrors = new Array();
	var nRequired = aRequired.length;
	var aPair, sName, sType, eElement, bValid;
	for( var i=0; i<nRequired; i++ )
	{
		aPair = aRequired[ i ];
		sName = aPair[ 0 ];
		eElement = eForm[ sName ];
		sType = eElement.type.replace( /\-.*$/, "" );
        bValid = true;
		switch( sType )
		{
			case "radio":
				bValid = aoc_fProcessRadio( eForm, eElement, sName );
				break;
			case "checkbox":
				bValid = aoc_fProcessCheckbox( eForm, eElement, sName );
				break;
			case "select":
				bValid = aoc_fProcessSelect( eForm, eElement, sName );
				break;
			default:
				bValid = aoc_fProcessInput( eForm, eElement, sName );
				break;
		}
		if( !bValid )
		{
			aErrors.push( aoc_sErrorPrefix + aPair[ 1 ] );
		}
	}
	return aErrors;
}

var aoc_sErrorPrefix = "-- ";


function aoc_fProcessRadio( eForm, eElement, sName )
{
	return true;
}

function aoc_fProcessCheckbox( eForm, eElement, sName )
{
	return ( eElement.checked );
}

function aoc_fProcessSelect( eForm, eElement, sName )
{
	return ( eElement.selectedIndex > 0 );
}

function aoc_fProcessInput( eForm, eElement, sName )
{
	return ( eElement.value.trim().length > 0 );
}

function aoc_fDisplayErrors( aErrors )
{
	var eDisplay = document.getElementById( "ce-form-errors" );
	if( eDisplay )
	{
		eDisplay.innerHTML = aErrors.join( "<br />" );
		eDisplay.style.display = "block";
		var nTop = aoc_fGetElementTop( eDisplay ) - 20;
		var nLeft = 0;
		window.scrollTo( nLeft, nTop );    
	}
	else
	{
		alert( aErrors.join( "\n" ) );
	}
}

function aoc_fResetForm( eForm )
{
	var eDisplay = document.getElementById( "ce-form-errors" );
	if( eDisplay )
	{
		eDisplay.innerHTML = "";
		eDisplay.style.display = "none";
	}
}

function aoc_fGetElementTop( eElement ) { return aoc_fGetElementLeftTop( eElement, "offsetTop", "clientTop" ); };
function aoc_fGetElementLeft( eElement ){ return aoc_fGetElementLeftTop( eElement, "offsetLeft", "clientLeft" ); };
function aoc_fGetElementLeftTop( eElement, sOffset, sClient )
{
	var nPos = eElement[ sOffset ];
	var eParElement = eElement.offsetParent;
	var sTagName, nClient;
	while( eParElement != null )
	{
		if( ( ( sTagName = eParElement.tagName.toLowerCase() ) != "table" ) && ( sTagName != "body" ) )
		{
			if( ( nClient = eParElement[ sClient ] ) != null ) { nPos += nClient; }
		}
		nPos += eParElement[ sOffset ];
		eParElement = eParElement.offsetParent;
	}
	return nPos;
}


