// commonCode_ob.js
// Copyright 2008-2009 by Made Headway Limited

var cTabIdx=-1;var loadHandlers=[];function HandleLoaded(){var i;for(i=0;i<loadHandlers.length;i++){loadHandlers[i]();}
loadHandlers=[];}
function closeTab(){if(cTabIdx!=-1){var aa=GetElem("tab"+cTabIdx);var ba=GetElem("tabContent"+cTabIdx);if(aa&&ba){aa.className="unselTab";ba.className="unselTabContent";}}
cTabIdx=0;}
function openTab(da){closeTab();var ea=GetElem("tab"+da);var fa=GetElem("tabContent"+da);if(ea&&fa){ea.className="selTab";fa.className="selTabContent";cTabIdx=da;}}
function NewsletterSignUp(ga){RequestURL("staticMessage.php?f=newsletter&signup="+(ga?1:0),null,"receiveBlock",function(){});}
function SubmitMessage(ha,ia){GetElem('sendBlock').innerHTML=RemoveHTML(ha);GetElem('receiveBlock').innerHTML='';var ja='';if(!g_loggedIn){var ka=GetElem('messageSubmitForm_name'+ia);var la=GetElem('messageSubmitForm_email'+ia);var ma=GetElem('messageSubmitForm_phone'+ia);if(!ka||!la||!ma){return;}
ka=ka.value;la=la.value;ma=ma.value;if(!la.length&&!ma.length){alert("Please specify an e-mail address or telephone number so we can contact you!");return;}
ja="&fromName="+encodeURIComponent(ka)+"&fromEmail="+encodeURIComponent(la)+"&fromPhone="+encodeURIComponent(ma);}
RequestURL("staticMessage.php?f=message"+ja,"sendBlock","receiveBlock",MessageDeliveredCallback);}
function RegisterInterest(na,oa){if(na)na.disabled='1';var pa="[Contact requested by user from page http://www.charityfundingsolutions.co.uk/page.php?idx="+g_pageIdx+" ]";SubmitMessage(pa,oa);}
function MessageDeliveredCallback(){alert('Message delivered to Charity Funding Solutions. We will respond as quickly as possible.');}
function ReconcileEvent(qa){qa=(qa?qa:(window.event?window.event:NULL));if(qa){if(!qa.target&&qa.srcElement){qa.target=qa.srcElement;}
if(!qa.clientX&&qa.pageX){qa.clientX=qa.pageX;qa.clientY=qa.pageY;}}
return qa;}
function GetElem(id){if(document.getElementById){return document.getElementById(id);}
else if(document.all){return document.all[id];}
else if(document.layers){return document.layers[id];}
return null;}
function OpenDialog(ra,sa,ta){var ua=GetElem("GUILayer");if(ua){var va=(window.innerWidth?window.innerWidth:document.documentElement.clientWidth);var wa=(window.innerHeight?window.innerHeight:document.documentElement.clientHeight);if(!va){va=document.clientWidth;wa=document.clientHeight;}
if(!va){va=800;wa=600;}
ua.style.width=va;ua.style.height=wa;ua.style.visibility='visible';var xa=20;var ya=Math.min(sa,wa-xa-20);var za=(ya==sa);var Aa=ra;var Ba=(wa-ya)/2;var Ca=(va-Aa)/2;var Da=document.createElement('div');Da.innerHTML=' <div style="position:absolute;top:0px;left:0px;width:'+va+'px;height:'+wa+'px"></div> <div class="cfs_dialog" style="width:'+Aa+'px;top:'+Ba+'px;left:'+Ca+'px;position:absolute;padding:0px 0px 0px 0px;"> <div class="cfs_titlebar" style="height:'+xa+'px;width:100%;"> <img class="editButton" src="editImages/close.png" onclick="javascript:CancelDialog();"/> '+ta+' </div> <div class="cfs_dialog_content" style="background-color:#FFFFFF;margin:1px 4px 1px 4px;'+(za?'overflow-y:hidden;':'height:'+(ya-xa-4)+'px;overflow-y:auto;')+'"> </div> </div>';ua.appendChild(Da);return FindDialogContent(ua.lastChild);}
return null;}
function FindDialogContent(Ea){var Fa=Ea;var i;for(i=0;i<Fa.childNodes.length;i++){var Ga=Fa.childNodes[i];if(Ga.tagName=='DIV'&&Ga.className=='cfs_dialog'){var j;for(j=0;j<Ga.childNodes.length;j++){var Ha=Ga.childNodes[j];if(Ha.tagName=='DIV'&&Ha.className=='cfs_dialog_content'){return Ha;}}
break;}}}
function CancelDialog(){var Ia=GetElem('GUILayer');if(Ia){if(Ia.hasChildNodes()){var Ja=null;var Ka=null;var i;for(i=Ia.childNodes.length-1;i>=0;i--){var La=Ia.childNodes[i];if(La.tagName=='DIV'){if(Ka==null){Ka=La;}
else{Ja=La;break;}}}
if(Ka){DestroyChildren(Ka);Ia.removeChild(Ka);}
if(!Ja){DestroyChildren(Ia);Ia.style.visibility='hidden';}}}}
function DestroyChildren(Ma){while(Ma&&Ma.hasChildNodes()){Ma.removeChild(Ma.firstChild);}}
var isIE=/*@cc_on!@*/false;var xmlhttp=null;var requestOutBlock=null;var requestCallback=null;var EventType={Completed:0,URLRequest:1,URLProcessing:3,Error:4,Refresh:5};var currentEventType=0;function Request(Na,Oa,Pa,Qa){this.m_url=Na;this.m_sendBlock=Oa;this.m_receiveBlock=Pa;this.m_requestCallback=Qa;}
var pendingRequests=new Array();function HandleError(Ra){/*alert(Ra);*/HandleEvent(EventType.Error);}
function HandleEvent(Sa){if(Sa==EventType.Refresh){Sa=currentEventType;}
currentEventType=Sa;var Ta=(Sa==EventType.Completed)?"event_completed":(Sa==EventType.URLRequest)?"event_processUrl":(Sa==EventType.URLProcessing)?"event_processUrl":"event_error";var Ua=(Sa==EventType.Completed)?"Completed":(Sa==EventType.URLRequest)?"Transmitting data...":(Sa==EventType.URLProcessing)?"Processing data":"Error!";var Va='';if(pendingRequests.length){Va=' (+ '+pendingRequests.length+' pending requests...)';}
Ta='planning/prototype/'+Ta+'.png';var Wa=GetElem('eventImg');if(Wa){Wa.src=Ta;}
var Xa=GetElem('statusTxt');if(Xa){Xa.innerHTML="Status: "+Ua+Va;}}
function InitXMLHttp(){xmlhttp=null;if(window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();}
else if(window.ActiveXObject){xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}}
function ProcessNextPendingRequest(){var gb=pendingRequests.shift();if(gb){RequestURL(gb.m_url,gb.m_sendBlock,gb.m_receiveBlock,gb.m_requestCallback);}}
function RequestURLResponse(){if(xmlhttp.readyState==4){if(xmlhttp.status==200){HandleEvent(EventType.URLProcessing);if(requestOutBlock){var hb=xmlhttp.responseText;requestOutBlock.innerHTML=hb;if(requestOutBlock.hasChildNodes()){var ib=requestOutBlock.firstChild;if(ib.getAttribute&&ib.getAttribute('err')){HandleError(ib.getAttribute('errDesc'));}}
requestOutBlock=null;var jb=requestCallback;requestCallback=null;if(jb){jb();}
HandleEvent(EventType.Completed);ProcessNextPendingRequest();}
else{HandleError("Received data not set to be inserted anywhere!");ProcessNextPendingRequest();}}
else{HandleError("Could not get URL! (Error "+xmlhttp.status+")");ProcessNextPendingRequest();}}}
function SmartEscape(kb){return encodeURIComponent(kb);}
function RemoveHTML(lb){if(isIE){var mb=lb.replace(/<BR>/g,'\n').replace(/<[^>]*>/g,'');return mb;}
var nb=document.createElement('div');nb.innerHTML=lb;if(nb.textContent){return nb.textContent;}
else if(nb.innerText){return nb.innerText;}
else{return '';}}
FU={index:1,makeFrame:function(c){var ob=document.createElement('DIV');var pb='uploadFrame_'+(FU.index++);ob.innerHTML='<iframe style="display:none" src="about:blank" id="'+pb+'" name="'+pb+'" onload="FU.loaded(\''+pb+'\')"></iframe>';document.body.appendChild(ob);var qb=GetElem(pb);if(c&&typeof(c.onComplete)=='function'){qb.onComplete=c.onComplete;}
return pb;},form:function(f,rb){f.setAttribute('target',rb);},submit:function(f,c){FU.form(f,FU.makeFrame(c));if(c&&typeof(c.onStart)=='function'){return c.onStart();}
else{return true;}},loaded:function(id){var i=document.getElementById(id);if(i.contentDocument){var d=i.contentDocument;}
else if(i.contentWindow){var d=i.contentWindow.document;}
else{var d=window.frames[id].document;}
if(d.location.href=="about:blank"){return;}
if(typeof(i.onComplete)=='function'){i.onComplete(d.body.innerHTML);}}};function writeCookie(sb,tb,ub){var vb='';if(ub){var wb=new Date();wb.setTime(wb.getTime()+(ub*24*60*60*1000));vb="; expires="+wb.toGMTString();}
document.cookie=sb+"="+tb+vb+"; path=/";}
function readCookie(xb){var yb=xb+"=";var ca=document.cookie.split(';');for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' ')c=c.substring(1,c.length);if(c.indexOf(yb)==0)return c.substring(yb.length,c.length);}
return null;}
function eraseCookie(zb){createCookie(zb,"",-1);}

	//Save the current instance
	function RequestURL( _url, _sendBlock, _receiveBlock, _requestCallback )
	{
		HandleEvent( EventType.URLRequest );
		
		//The problem with waiting for this is that _requestCallback needs to be textualised. :)
		if ( requestOutBlock != null )
		{
			var request = new Request( _url, _sendBlock, _receiveBlock, _requestCallback );
			pendingRequests.push( request );
			HandleEvent( EventType.Refresh );
			return;
		}

		var url = _url;
		var data = '';

		var sBlock = GetElem( _sendBlock );
		var rBlock = GetElem( _receiveBlock );		

		requestOutBlock = rBlock;
		requestCallback = _requestCallback;

		if ( sBlock )
		{
			data = "block="+SmartEscape( sBlock.innerHTML );
		}

		if ( rBlock )
		{
			InitXMLHttp();
			if (xmlhttp!=null)
			{
				//To try to reduce 406 errors:
				if ( url)
				{
					var questionPos = url.indexOf('?');
					if ( questionPos>=0 )
					{
						if ( data != '' )
						{
							data += '&';
						}
						data += url.substr( questionPos+1 );
						url = url.substr(0,questionPos );
					}
				}

				xmlhttp.open("POST",url,true);
				xmlhttp.onreadystatechange=RequestURLResponse;
				xmlhttp.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8' ); 
				xmlhttp.send(data);
			}
			else
			{
				HandleError("Could not get URL! (Error 0x1000; Browser incompatibility)");
			}
		}
		else
		{
			HandleError("Could not get URL into non-existant element!");
		}
	}

