
document.getElementsByClassName = function(cls,n,t)
	{
		var rtn = [];
		n=n===null?document:n;
		t=t===null?'*':t;
		var els = document.all ? document.all : n.getElementsByTagName(t);
		for (var i=0,j=0; i < els.length; i++)
		{
			if(els[i].className.match("(^|\\s)"+cls+"(\\s|$)"))
			{
				rtn[j++] = els[i];
			}
		}
		return rtn;
	};

	function jsfAttachEvent(obj,evt,fnc)
	{
		if(window.addEventListener)
		{
			obj.addEventListener(evt, fnc, false);
		}
		else if(window.attachEvent)
		{
			obj.attachEvent('on'+evt, fnc);
		}
		else if (obj.getElementById && evt=='load')
		{
			obj.onload = fnc;
		}
	}

	function jsfOnLoadHideElements(jh)
	{
		var jhs = document.getElementsByClassName(jh,null,null);
		for(var i=0; i<jhs.length; i++)
		{
			jhs[i].style.display="none";
		}
	}

	function jsfOnLoadShowElements(js)
	{
		var jhs = document.getElementsByClassName(js,null,null);
		for(var i=0; i<jhs.length; i++)
		{
			jhs[i].style.display="";
		}
	}

	//extend an object with addition methods/properties
	function jsfExtendObject(d, s)
	{
		for (p in s)
		{
			d[p] = s[p];
		}
		return d;
	}

	function jsfOnLoadAttachHideShow(trg,hsi,hse,caf,imp,imm)
	{
		//get all raw triggers
		var tgs = document.getElementsByClassName(trg,null,"a");
		
		//get all raw elements
		var elm = document.getElementsByClassName(hse,null,null);

		//for all the raw triggers with/without numbers
		var reg = new RegExp("(^|\\w*)"+hsi+"(\\d*|([\\w* ]))");
		
		//set up hide/show element attributes and methods
		for(var i=0; i<elm.length; i++)
		{
			//if i have an associated image, let me control it's hide/show
			//get all images associated with me
			elm[i] = jsfExtendObject(elm[i],
				{
					hide:function()
					{
						this.style.display = "none";
						this.hidden = true;
						for(var i=0;i<this.images.length;i++)
						{
							if(this.images[i].className.match(imp))
							{
								this.images[i].style.display="";
							}
							if(this.images[i].className.match(imm))
							{
								this.images[i].style.display="none";
							}
						}
					},
					show:function()
					{
						this.style.display = "";
						this.hidden = false;
						for(var i=0;i<this.images.length;i++)
						{
							if(this.images[i].className.match(imp))
							{
								this.images[i].style.display="none";
							}
							if(this.images[i].className.match(imm))
							{
								this.images[i].style.display="";
							}
						}
					},
					toggle:function()
					{
						if(this.hidden)
						{
							this.show();
						}
						else
						{
							this.hide();
						}
					},
					init:function()
					{
						this.hidden = this.style.display===""?false:true;
						this.images = document.getElementsByClassName(reg.exec(this.className)[0],null,"img");
						for(var i=0;i<this.images.length;i++)
						{
							if(this.images[i].className.match(imp))
							{
								this.images[i].style.display="";
							}
							if(this.images[i].className.match(imm))
							{
								this.images[i].style.display="none";
							}
						}
					},
					hidden:false,
					hsElement:true,
					images:[]
				}
			);
			elm[i].init();
		}

		//set up all the triggers with the elements
		for(var i=0; i<tgs.length; i++)
		{
			tgs[i] = jsfExtendObject(tgs[i],
				{
					onclick:function()
					{
						//get all elements that match the item class
						var els = document.getElementsByClassName(reg.exec(this.className)[0],null,null);

						//only close elements not controlled by me
						if(this.className.match(caf) && caf.length>0)
						{
							ael = document.getElementsByClassName(hse,null,null);
							for(var j=0;j<ael.length;j++)
							{
								if(ael[j].className.match(caf) && reg.exec(this.className)[0]!=reg.exec(ael[j].className)[0])
								{
									ael[j].hide();
								}
							}
						}

						for(var j=0; j<els.length; j++)
						{
							//hide/show anything that isn't the trigger
							if(els[j].hsElement)
							{
								els[j].toggle();
							}
						}
						return false;
					}
				}
			);
		}
	}

	jsfAttachEvent(window,'load',jsfOnLoad);

	function jsfOnLoad()
	{
		jsfOnLoadHideElements("jstHide");
		jsfOnLoadShowElements("jstShow");
		jsfOnLoadAttachHideShow("jstHideShowTrigger","jstHideShowItem","jstHideShowElement","jstHideAllFirst","jstHsPlus","jstHsMinus");
	}


function swapTextPREVIOUS(str){
	var myLink = document.getElementById('linkText');
	var myLink02 = document.getElementById('linkText02');
	//alert(myLink.innerHTML);			//FF only, use innerText for IE
//	myLink.textContent = "- Close";
	if (str == 'open'){
		myLink.innerHTML = '<a href="#" class="jstHideShowTrigger jstHideShowItem01 linkStyle01">- Close</a>';
		myLink02.innerHTML = '<a href="#" class="jstHideShowTrigger jstHideShowItem01 linkStyle01">- Close</a>';
	} else {
//		alert('here');
		myLink.innerHTML = '<a href="#" class="jstHideShowTrigger jstHideShowItem01 linkStyle01">+ Read more</a>';
		myLink02.innerHTML = '<a href="#" class="jstHideShowTrigger jstHideShowItem01 linkStyle01">+ Read more</a>';
	}
}

function swapText(str){
	var myLink = document.getElementById('linkText');
alert(str);
	//alert(myLink.innerHTML);			//FF only, use innerText for IE
//	myLink.textContent = "- Close";
	if (str == 'open'){
		//myLink.textContent = "- Close";
		myLink.innerHTML = '<a href="#" class="jstHideShowTrigger jstHideShowItem01 linkStyle01">- Close</a>';
	} else {
		//myLink.textContent = "+ Read more";
		myLink.innerHTML = '<a href="#" class="jstHideShowTrigger jstHideShowItem01 linkStyle01">+ Read more</a>';
	}
}



//New window script

function jsPopupWin(target,height,width){
	//window.open(target,'HSBC','resizable=0,menubar=no,scrollbars=no,width='+width+',height='+height+'');
}

function jsFullWin(target){
	//window.open(target,'HSBC','toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=800,height=600');
}
