//Copyright 2009 NCVO 
//Author: Made Headway Limited
//Simple script to load news
	var isIE = /*@cc_on!@*/false;

	var g_surveyRoot = '';
	var g_secret = '';

	//Simple Element getter:
	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 UnifyEvent( _evt )
	{
		_evt = (_evt?_evt:(window.event?window.event:NULL));
		if ( _evt )
		{	if (!_evt.target && _evt.srcElement )
			{
				_evt.target = _evt.srcElement;
			}
			if (!_evt.clientX && _evt.pageX )
			{
				_evt.clientX = _evt.pageX;
				_evt.clientY = _evt.pageY;
			}
		}
		return _evt;
	}


	//Simple AJAX:
	var ajax = null;
	var aic = null;	
	function AjaxCallback()
	{
		if ( (ajax.readyState==4) && (ajax.status==200) && aic )
		{
			aic( ajax.responseText );
		}
	}
	function AjaxRequest( _url, _data, _callback )
	{
		if (window.XMLHttpRequest)
			ajax=new XMLHttpRequest();
		else if (window.ActiveXObject)
			ajax=new ActiveXObject("Microsoft.XMLHTTP");
				
		if ( ajax != null)
		{
			//FOR IE7:
			var base = location.href;
			if ( base.substr(0,7) == 'http://' )
			{
				base = base.substr(7);
				if ( base.indexOf('/') != -1 )
				{
					base = base.substr(0,base.indexOf('/') );
				}	
				_url = 'http://'+base + '/' + _url;
			}
			//****

			ajax.open("POST", _url, true);
			aic = _callback; 
			ajax.onreadystatechange=AjaxCallback;
			ajax.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8' ); //Removing this line makes no difference
			ajax.send( _data );
		}
	}

	//Get the absolute X position of an element:
	function GetAbsoluteX( _elem )
	{
		var xPos = 0;
		while( _elem )
		{
			xPos += _elem.offsetLeft;
			_elem = _elem.offsetParent;
			if ( _elem && _elem != document.body )
			{
				xPos -= _elem.scrollLeft;
			}
		}
		return xPos;
	}
	//Get the absolute Y position of an element:
	function GetAbsoluteY( _elem )
	{
		var yPos = 0;
		while( _elem )
		{
			yPos += _elem.offsetTop;
			_elem = _elem.offsetParent;
			if ( _elem && _elem != document.body )
			{
				yPos -= _elem.scrollTop;
			}
		}
		return yPos;
	}
	function GetScrollTop()
	{
		var scrollY = 0;
		if( document.documentElement && document.documentElement.scrollTop ) {
				scrollY = document.documentElement.scrollTop;
		}
		else if( document.body && document.body.scrollTop ) {
				scrollY = document.body.scrollTop;
		}
		else if( window.pageYOffset ) {
				scrollY = window.pageYOffset;
		}
		else if( window.scrollY ) {
				scrollY = window.scrollY;
		}
		return scrollY;
	}
	function GetScrollLeft()
	{
		var scrollX = 0;
		if( document.documentElement && document.documentElement.scrollLeft ) {
				scrollX = document.documentElement.scrollLeft;
		}
		else if( document.body && document.body.scrollLeft ) {
				scrollX = document.body.scrollLeft;
		}
		else if( window.pageXOffset ) {
				scrollX = window.pageXOffset;
		}
		else if( window.scrollX ) {
				scrollX = window.scrollX;
		}
		return scrollX;
	}


	////////////////////////////////
	//For JSON:
	var json_map = 
	{
		"boolean":	function(){return Boolean},
		"function":	function(){return Function},
		"number":	function(){return Number},
		"object":	function(o){return o instanceof o.constructor?o.constructor:null},
		"string":	function(){return String},
		"undefined":function(){return null}
	};
	function json_decode( _string )
	{
		//TODO: Possibly manually eval?
		var jsonVar = eval( '( '+_string+' )' );
		return jsonVar;
	}
	function json_encode( _elem )
	{
		var c = {"\b":"b","\t":"t","\n":"n","\f":"f","\r":"r",'"':'"',"\\":"\\","/":"/"},
		d = function(n){return n<10?"0".concat(n):n},
		e = function(c,f,e){e=eval;delete eval;if(typeof eval==="undefined")eval=e;f=eval(""+c);eval=e;return f},
		i = function(e,p,l){return 1*e.substr(p,l)},
		p = ["","000","00","0",""],
		rc = null,
		rd = /^[0-9]{4}\-[0-9]{2}\-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$/,
		rs = /(\x5c|\x2F|\x22|[\x0c-\x0d]|[\x08-\x0a])/g,
		rt = /^([0-9]+|[0-9]+[,\.][0-9]{1,3})$/,
		ru = /([\x00-\x07]|\x0b|[\x0e-\x1f])/g,
		s = function(i,d){return "\\".concat(c[d])},
		u = function(i,d){
			var	n=d.charCodeAt(0).toString(16);
			return "\\u".concat(p[n.length],n)
		},
		v = function(k,v){return $[typeof result](result)!==Function&&(v.hasOwnProperty?v.hasOwnProperty(k):v.constructor.prototype[k]!==v[k])};
		var result, tmp;

		if( _elem === null)
		{
			result = "null";
		}
		else if (_elem !== undefined && (tmp = json_map[typeof _elem](_elem))) 
		{
			switch(tmp)
			{
				case Array:
					result = [];
					for(var	i = 0, j = 0, k = _elem.length; j < k; j++) {
						if(_elem[j] !== undefined && (tmp = json_encode(_elem[j])))
							result[i++] = tmp;
					};
					result = "[".concat(result.join(","), "]");
					break;
				case Boolean:
					result = String(_elem);
					break;
				case Date:
					result = '"'.concat(_elem.getFullYear(), '-', d(_elem.getMonth() + 1), '-', d(_elem.getDate()), 'T', d(_elem.getHours()), ':', d(_elem.getMinutes()), ':', d(_elem.getSeconds()), '"');
					break;
				case Function:
					break;
				case Number:
					result = isFinite(_elem) ? String(_elem) : "null";
					break;
				case String:
					result = '"'.concat(_elem.replace(rs, s).replace(ru, u), '"');
					break;
				default:
					var	i = 0, key;
					result = [];
					for(key in _elem)
					{
						if ( _elem[key] !== undefined && (tmp = json_encode(_elem[key])))
						{
							result[i++] = '"'.concat(key.replace(rs, s).replace(ru, u), '":', tmp);
						}
					}
					result = "{".concat(result.join(","), "}");
					break;
			}
		};
		return result;
	}
