(
	function(jQuery)
	{
///////////////////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////////////////
		function stripFiletype(ref)
		{
			var x=ref.replace('.html','');
			return x.replace('#','')
		}
///////////////////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////////////////
		function initOrigin(l)
		{
			if(l.xorigin=='left'){l.xorigin=0}
			else 
				if(l.xorigin=='middle'||l.xorigin=='centre'||l.xorigin=='center'){l.xorigin=0.5}
				else 
					if(l.xorigin=='right'){l.xorigin=1}if(l.yorigin=='top'){l.yorigin=0}
					else 
						if(l.yorigin=='middle'||l.yorigin=='centre'||l.yorigin=='center'){l.yorigin=0.5}
						else if(l.yorigin=='bottom'){l.yorigin=1}
		}
///////////////////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////////////////
function positionMouse(mouseport,localmouse,virtualmouse)
{
	var difference={x:0,y:0,sum:0};
	if(!mouseport.ontarget)
	{
		difference.x=virtualmouse.x-localmouse.x;
		difference.y=virtualmouse.y-localmouse.y;
		difference.sum=Math.sqrt(difference.x*difference.x+difference.y*difference.y);
		virtualmouse.x=localmouse.x+difference.x*mouseport.takeoverFactor;
		virtualmouse.y=localmouse.y+difference.y*mouseport.takeoverFactor;
		if(difference.sum<mouseport.takeoverThresh&&difference.sum>mouseport.takeoverThresh*-1)
		{
			mouseport.ontarget=true
		}
	}
	else
	{
		virtualmouse.x=localmouse.x;
		virtualmouse.y=localmouse.y
	}
}
///////////////////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////////////////
function setupPorts(viewport,mouseport)
{
	var offset=mouseport.element.offset();
	jQuery.extend(viewport,{width:viewport.element.width(),height:viewport.element.height()});
	jQuery.extend(mouseport,{width:mouseport.element.width(),height:mouseport.element.height(),top:offset.top,left:offset.left})}function parseTravel(travel,origin,dimension){var offset;var cssPos;if(typeof(travel)==='string'){if(travel.search(/^\d+\s?px$/)!=-1){travel=travel.replace('px','');travel=parseInt(travel,10);offset=origin*(dimension-travel);cssPos=origin*100+'%';return{travel:travel,travelpx:true,offset:offset,cssPos:cssPos}}else if(travel.search(/^\d+\s?%$/)!=-1){travel.replace('%','');travel=parseInt(travel,10)/100}else{travel=1}}offset=origin*(1-travel);return{travel:travel,travelpx:false,offset:offset}}function setupLayer(layer,i,mouseport){var xStuff;var yStuff;var cssObject={};layer[i]=jQuery.extend({},{width:layer[i].element.width(),height:layer[i].element.height()},layer[i]);xStuff=parseTravel(layer[i].xtravel,layer[i].xorigin,layer[i].width);yStuff=parseTravel(layer[i].ytravel,layer[i].yorigin,layer[i].height);
	jQuery.extend(layer[i],{diffxrat:mouseport.width/(layer[i].width-mouseport.width),diffyrat:mouseport.height/(layer[i].height-mouseport.height),xtravel:xStuff.travel,ytravel:yStuff.travel,xtravelpx:xStuff.travelpx,ytravelpx:yStuff.travelpx,xoffset:xStuff.offset,yoffset:yStuff.offset});if(xStuff.travelpx){cssObject.left=xStuff.cssPos}if(yStuff.travelpx){cssObject.top=yStuff.cssPos}if(xStuff.travelpx||yStuff.travelpx){layer[i].element.css(cssObject)}}function setupLayerContents(layer,i,viewportOffset){var contentOffset;
	jQuery.extend(layer[i],{content:[]});for(var n=0;n<layer[i].element.children().length;n++){if(!layer[i].content[n])layer[i].content[n]={};if(!layer[i].content[n].element)layer[i].content[n]['element']=layer[i].element.children().eq(n);if(!layer[i].content[n].anchor&&layer[i].content[n].element.children('a').attr('name')){layer[i].content[n]['anchor']=layer[i].content[n].element.children('a').attr('name')}if(layer[i].content[n].anchor){contentOffset=layer[i].content[n].element.offset();
	jQuery.extend(layer[i].content[n],{width:layer[i].content[n].element.width(),height:layer[i].content[n].element.height(),x:contentOffset.left-viewportOffset.left,y:contentOffset.top-viewportOffset.top});
	jQuery.extend(
		layer[i].content[n],
		{
			posxrat:(layer[i].content[n].x+layer[i].content[n].width/2)
				/
			layer[i].width,posyrat:(layer[i].content[n].y+layer[i].content[n].height/2)/layer[i].height
		}
	)
}//function setupPorts(viewport,mouseport)
///////////////////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////////////////
}
}






function moveLayers(layer,xratio,yratio)
{
	var xpos;var ypos;var cssObject;
	for(var i=0;i<layer.length;i++)
	{
		xpos=layer[i].xtravel*xratio+layer[i].xoffset;ypos=layer[i].ytravel*yratio+layer[i].yoffset;
		cssObject={};
		if(layer[i].xparallax)
		{
			if(layer[i].xtravelpx)
			{
				cssObject.marginLeft=xpos*-1+'px'
			}
			else
			{
				cssObject.left=xpos*100+'%';
				cssObject.marginLeft=xpos*layer[i].width*-1+'px'
			}
		}
		if(layer[i].yparallax)
		{
			if(layer[i].ytravelpx)
			{
				cssObject.marginTop=ypos*-1+'px'
			}
			else
			{
				cssObject.top=ypos*100+'%';
				cssObject.marginTop=ypos*layer[i].height*-1+'px'
			}
		}
		layer[i].element.css(cssObject)
	}
}
	
	jQuery.fn.jparallax=function(options)
	{
		var settings=jQuery().extend({},jQuery.fn.jparallax.settings,options);
		var settingsLayer={xparallax:settings.xparallax,yparallax:settings.yparallax,xorigin:settings.xorigin,yorigin:settings.yorigin,xtravel:settings.xtravel,ytravel:settings.ytravel};
		var settingsMouseport={element:settings.mouseport,takeoverFactor:settings.takeoverFactor,takeoverThresh:settings.takeoverThresh};
		if(settings.mouseport)settingsMouseport['element']=settings.mouseport;var layersettings=[];
		for(var a=1;a<arguments.length;a++)
		{
			layersettings.push(jQuery.extend({},settingsLayer,arguments[a]))
		}
		return this.each
		(
			function()
			{
				var localmouse={x:0.5,y:0.5};
				var virtualmouse={x:0.5,y:0.5};
				var timer=
				{
					running:false,
					frame:settings.frameDuration,
					fire:function(x,y)
					{
						positionMouse(mouseport,localmouse,virtualmouse);
						moveLayers(layer,virtualmouse.x,virtualmouse.y);
						this.running=setTimeout
						(
							function()
							{
								if(localmouse.x!=x||localmouse.y!=y||!mouseport.ontarget)
								{
									timer.fire(localmouse.x,localmouse.y)
								}
								else 
									if(timer.running)
									{
										timer.running=false
									}
							},
							timer.frame
						)
					}
				};
				var viewport={element:jQuery(this)};
				var mouseport=jQuery.extend(
					{},
					{
						element:viewport.element
					},
					settingsMouseport,
					{
						xinside:false,
						yinside:false,
						active:false,
						ontarget:false
					}
				);
				var layer=[];
				function matrixSearch(layer,ref,callback)
				{
					for(var i=0;i<layer.length;i++)
					{
						var gotcha=false;
						for(var n=0;n<layer[i].content.length;n++)
						{
							if(layer[i].content[n].anchor==ref)
							{
								callback(i,n);return[i,n]
							}
						}
					}
					return false
				}
				setupPorts(viewport,mouseport);
				for(var i=0;i<viewport.element.children().length;i++)
				{
					layer[i]=jQuery.extend(
						{},
						settingsLayer,layersettings[i],
						{
							element:viewport.element.children('*:eq('+i+')')
						}
					);
					setupLayer(layer,i,mouseport);
					if(settings.triggerResponse)
					{
						setupLayerContents(layer,i,viewport.element.offset())
					}
				}
				viewport.element.children().css('position','absolute');
				moveLayers(layer,0.5,0.5);
				if(settings.mouseResponse)
				{
					jQuery().mousemove(
						function(mouse)
						{
							mouseport.xinside=(mouse.pageX>=mouseport.left&&mouse.pageX<mouseport.width+mouseport.left)?true:false;
							mouseport.yinside=(mouse.pageY>=mouseport.top&&mouse.pageY<mouseport.height+mouseport.top)?true:false;
							if(mouseport.xinside&&mouseport.yinside&&!mouseport.active)
							{
								mouseport.ontarget=false;
								mouseport.active=true
							}
							if(mouseport.active)
							{
								if(mouseport.xinside)
								{
									localmouse.x=(mouse.pageX-mouseport.left)/mouseport.width
								}
								else
								{
									localmouse.x=(mouse.pageX<mouseport.left)?0:1
								}
								if(mouseport.yinside)
								{
									localmouse.y=(mouse.pageY-mouseport.top)/mouseport.height
								}
								else
								{
									localmouse.y=(mouse.pageY<mouseport.top)?0:1
								}
							}
							if(mouseport.xinside&&mouseport.yinside)
							{
								if(!timer.running)
									timer.fire(localmouse.x,localmouse.y)
							}else 
								if(mouseport.active)
									{mouseport.active=false}
						}
					)
				}
				if(settings.triggerResponse)
				{
					viewport.element.bind("jparallax",function(event,ref){
						ref=stripFiletype(ref);
						matrixSearch(layer,ref,function(i,n)
						{
							localmouse.x=layer[i].content[n].posxrat*(layer[i].diffxrat+1)-(0.5*layer[i].diffxrat);
							localmouse.y=layer[i].content[n].posyrat*(layer[i].diffyrat+1)-(0.5*layer[i].diffyrat);
							if(!settings.triggerExposesEdges)
							{
								if(localmouse.x<0)localmouse.x=0;
								if(localmouse.x>1)localmouse.x=1;
								if(localmouse.y<0)localmouse.y=0;
								if(localmouse.y>1)localmouse.y=1
							}
							mouseport.ontarget=false;
							if(!timer.running)
								timer.fire(localmouse.x,localmouse.y)
						}
					)
				}
			)//?
		}//?
///////////////////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////////////////

	jQuery(window).resize(function()
		{
			setupPorts(viewport,mouseport);   for(var i=0;i<layer.length;i++)   { setupLayer(layer,i,mouseport) }
		}
	)//?
///////////////////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////////////////
			}//function()
		)//return this.each
	};//jQuery.fn.jparallax=function(options)



jQuery.fn.jparallax.settings=
{
	mouseResponse:true,
	mouseActiveOutside:true,
	triggerResponse:true,
	triggerExposesEdges:false,
	xparallax:true,
	yparallax:false,
	xorigin:0.5,yorigin:0.5,xtravel:0.3,ytravel:0.3,takeoverFactor:0.65,takeoverThresh:0.001,frameDuration:25
};
initOrigin(jQuery.fn.jparallax.settings);
jQuery(
	function(){}
)

})(jQuery);

(
function($)
{
	jQuery.fn.pngFix=function(settings)
	{
		settings=jQuery.extend({blankgif:'blank.gif'},settings);
		var ie55=(
			navigator.appName=="Microsoft Internet Explorer"&&
			parseInt(navigator.appVersion)==4&&
			navigator.appVersion.indexOf("MSIE 5.5")!=-1
		);
		var ie6=(
			navigator.appName=="Microsoft Internet Explorer"&&
			parseInt(navigator.appVersion)==4&&
			navigator.appVersion.indexOf("MSIE 6.0")!=-1
		);
		if(jQuery.browser.msie&&(ie55||ie6))
		{
			jQuery(this).find("img[@src$=.png]").each(
				function()
				{
					jQuery(this).attr('width',jQuery(this).width());
					jQuery(this).attr('height',jQuery(this).height());
					var prevStyle='';var strNewHTML='';
					var imgId=(jQuery(this).attr('id'))?'id="'+jQuery(this).attr('id')+'" ':'';
					var imgClass=(jQuery(this).attr('class'))?'class="'+jQuery(this).attr('class')+'" ':'';
					var imgTitle=(jQuery(this).attr('title'))?'title="'+jQuery(this).attr('title')+'" ':'';
					var imgAlt=(jQuery(this).attr('alt'))?'alt="'+jQuery(this).attr('alt')+'" ':'';
					var imgAlign=(jQuery(this).attr('align'))?'float:'+jQuery(this).attr('align')+';':'';
					var imgHand=(jQuery(this).parent().attr('href'))?'cursor:hand;':'';
					if(this.style.border)
					{
						prevStyle+='border:'+this.style.border+';';
						this.style.border=''
					}
					if(this.style.padding)
					{
						prevStyle+='padding:'+this.style.padding+';';
						this.style.padding=''
					}
					if(this.style.margin)
					{
						prevStyle+='margin:'+this.style.margin+';';
						this.style.margin=''}var imgStyle=(this.style.cssText);
						strNewHTML+='<span '+imgId+imgClass+imgTitle+imgAlt;
						strNewHTML+='style="position:relative;white-space:pre-line;display:inline-block;background:transparent;'+imgAlign+imgHand;
						strNewHTML+='width:'+jQuery(this).width()+'px;'+'height:'+jQuery(this).height()+'px;';
						strNewHTML+='filter:progid:DXImageTransform.Microsoft.AlphaImageLoader'+'(src=\''+jQuery(this).attr('src')+'\', sizingMethod=\'scale\');';
						strNewHTML+=imgStyle+'"></span>';if(prevStyle!='')
						{
							strNewHTML='<span style="position:relative;display:inline-block;'+prevStyle+imgHand+'width:'+jQuery(this).width()+'px;'+'height:'+jQuery(this).height()+'px;'+'">'+strNewHTML+'</span>'
						}
						jQuery(this).hide();
						jQuery(this).after(strNewHTML)});
						jQuery(this).find("*").each(
							function()
							{
								var bgIMG=jQuery(this).css('background-image');
								if(bgIMG.indexOf(".png")!=-1)
								{
									var iebg=bgIMG.split('url("')[1].split('")')[0];
									jQuery(this).css('background-image','none');
									jQuery(this).get(0).runtimeStyle.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+iebg+"',sizingMethod='scale')"
								}
							}
						);
						jQuery(this).find("input[@src$=.png]").each(
							function()
							{
								var bgIMG=jQuery(this).attr('src');
								jQuery(this).get(0).runtimeStyle.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader'+'(src=\''+bgIMG+'\', sizingMethod=\'scale\');';
								jQuery(this).attr('src',settings.blankgif)
							}
						)
					}
					return jQuery
				}})
				(jQuery);