﻿/**
 * Effects
 * 
 * First section is library (functions, objects etc). Following section is onload
 * stuff (see 'Onload').
 */

/**
 * Flash detection
 * 
 * Uses SWFObject 1.5
 */
var hasFlash = deconcept.SWFObjectUtil.getPlayerVersion().major >= 8;

if(hasFlash && FlashOnOff == 'on')
	document.getElementsByTagName('html')[0].className = 'hasFlash';
else
	hasFlash = false;

/**
 * Detect screen size
 */
if(window.screen.height < 700)
	document.getElementsByTagName('html')[0].className+= ' smallscreen';

/**
 * Write Flash navigation (and media area)
 */
var flashNavID = 0;
var media_area = 'none';
var flashPastLevel4 = 'no';//yes|no
function set_nav()
{
	if(!hasFlash)
		return;

	var fo = new SWFObject(site_path+"/flash/prospect_nav_v2.1.swf", "knowegoFlash", "100%", "100%", "8", "#cccccc");
	fo.addParam("scale","noscale");
	fo.addParam("salign","tl");
	fo.addParam("quality","high");
	fo.addParam("menu","false");
	fo.addVariable("xmlFilePath",site_path+"/xml/nav.php");
	fo.addVariable("twitterXML",site_path+"/xml/twitter.php");
	fo.addVariable("flashNavID",flashNavID);
	fo.addVariable("flashPastLevel4",flashPastLevel4);
	fo.addVariable("media_area",media_area);
	fo.write("Site-Nav-1");
	
	
}

/**
 * Flash hub links
 */
function hubRequests(link,navID)
{
	location.href = link;
}

/**
 * Flash nav links
 */
var changeContentCallback = false;
function changeContent(page)
{
	if(changeContentCallback)
		changeContentCallback(page);
	else
	{
		if(!page || page == '#' || page == 'undefined')//null
			return;
		location.href = page;
	}
}

/**
 * Navigation hilite
 */
NavHilite = '';

/**
 * Section nav browse control
 */
SectionNavBrowse = false;//set to true contextually to have onclick slidein function

/**
 * Layer Panels
 */
function layer_panel_show(ID)
{
	$(ID).setStyle('display','block');
	$(ID).fade('in');

	//this for for WinIE7
	if(navigator.userAgent.toLowerCase().indexOf('msie 7.') != -1)
	{
		var pos = $(ID).getPosition();
		$(document.body).adopt($(ID));
		$(ID).setStyle('left',pos.x+'px');
		$(ID).setStyle('top',pos.y+'px');
	}

	var docH = $(document.body).getScrollSize().y;
	var gp = new Element ('div',{'id':'Glassplate'});
	gp.setStyle('height',docH+'px');
	gp.setStyle('opacity',0.3);
	gp.LayerPanelID = ID;
	gp.addEvent('click',function(){layer_panel_hide(this.LayerPanelID);});
	$(document.body).grab(gp,'bottom');
}

function layer_panel_hide(ID)
{
	var FadeOut = new Fx.Tween($(ID),{onComplete:function(el){
		el.setStyle('display','block');
		if($('Glassplate'))
			$('Glassplate').dispose();
	}});
	FadeOut.start('opacity','0');
}


/**
 * SWFObject write wrapper
 * 
 * Preserve non-Flash content for consistent printing
 */
function SWF_write(obj,ID)
{
	var el = $(ID);
	var Contents = el.innerHTML;
	obj.write(ID);
	el.setStyle('position','relative');
	el.addClass('SWFObject-Wrapper');
	var Div = new Element ('div');
	Div.setStyle('position','absolute');
	Div.setStyle('top','0');
	Div.setStyle('left','0');
	Div.addClass('SWFObject-Print-Content');
	Div.innerHTML = Contents;
	el.appendChild(Div);
}


//	//	//	//	//	//	//	//	//	//	//	//	//	//	//	//	//	//	//	//

/**
 * Onload
 */
window.addEvent('domready', function() {


/**
 * Navigation highlight
 */
var Href = location.href.indexOf('?') != -1? location.href.substring(0,location.href.indexOf('?')):location.href;
	Href = Href.indexOf('#') != -1? Href.substring(0,Href.indexOf('#')):Href;

SiteNav = $('Site-Nav-1');
if(/*!hasFlash && */SiteNav)
{
	//Highlights
	var SiteNavAs = SiteNav.getElements('a');
	for(var i=0;i<SiteNavAs.length;i++)
	{
		if(SiteNavAs[i].href == Href || SiteNavAs[i].href == NavHilite)
		{
			SiteNavAs[i].addClass('Active');
			//dig up (parent isn't always similar URL
			var P = SiteNavAs[i].getParent();
			while(P && !P.hasClass('Site-Nav'))
			{
				P = P.getParent();
				if(P.nodeName == 'LI')
					P.getElement('A').addClass('Active');
			}
		}
	}
}


/**
 * Section navigation
 */
SectionNav = $('Section-Nav-1');
if(/*!hasFlash && */SectionNav)
{
	SectionNavs = SectionNav.getElements('li.Level-3');
	if(SectionNavs)
		SectionNavs.each(function(el,i){
			var Nav = el.getElement('div.Level-4');
			if(Nav)
			{
				el.NavSlide = new Fx.Slide(Nav);
				el.NavSlide.hide();
				Nav.setStyle('height','auto');//undo onload hide
				Nav.setStyle('visibility','visible');
				var a = el.getElement('a');
				if(a.href == Href || a.href == NavHilite)
				{
					el.NavSlide.slideIn();
					a.addClass('Active');
				}
				if(SectionNavBrowse)//default for this set above, and set contextually as req'd
					a.addEvent('click',function(){
						this.blur();
						var s = this.getParent().NavSlide;
						if(!s.open)
						{
							s.slideIn();
							var LIs = this.getParent().getParent().getChildren().erase(this.getParent());
							for(var i =0; i < LIs.length; i++)
								LIs[i].NavSlide.slideOut();
						}
						return false;
					});
			}
			else
			{
				var a = el.getElement('a');
				if(a.href == Href || a.href == NavHilite)
				{
					a.addClass('Active');
				}			
			}
		});

	//level 4s (open parent)
	Level4s = SectionNav.getElements('a.Level-4');
	if(Level4s)
		Level4s.each(function(el,i){
			if(el.href == Href || el.href == NavHilite)
			{
				el.addClass('Active');
				var P = el.getParent();
				while(P && !P.hasClass('Level-3'))
					P = P.getParent();
				P.NavSlide.show();

				//Un-highlight parent if has same URL
				var Pa = P.getElement('a');
				Pa.removeClass('Active');
			}
		});
}


/**
 * Content navigation
 */
ContentNav = $('Content-Nav-1');
if(/*!hasFlash && */ContentNav)
{
	ContentNavs = ContentNav.getElements('a');
	if(ContentNavs)
		ContentNavs.each(function(el,i){
			if(el.href == location.href)
				el.addClass('Active');
		});
}


/**
 * Related navigation
 */
RelatedNav = $('Related-Nav-1');
if(RelatedNav)
{
	RelatedNavs = RelatedNav.getElements('a');
	if(RelatedNavs)
		RelatedNavs.each(function(el,i){
			if(el.href == location.href || location.href.indexOf(el.href+'&') === 0)
				el.addClass('Active');
		});
}


/**
 * Flashing message //Turned off for now
 */
/*$$('.Msg-Flash').each( function(el,i)
{
	el = el.getFirst();
	var F = new Fx.Tween(el,{duration: 300 });
	F.start('opacity',0).chain(function(){
		this.start('opacity',1);
	}).chain(function(){
		this.start('opacity',0);
	}).chain(function(){
		this.start('opacity',1);
	})
});*/


/**
 * Flash titles
 */
FlashReplaceDo = (!hasFlash || (FlashOnOff && FlashOnOff == 'off'))? false:true;
FlashTitlesFound = false;

//@todo: refactor this! (perhaps one Flash file with variables?)

FlashTitles = document.getElement('body').getElements('div.Title-Feature');
if(FlashTitles && FlashReplaceDo)
{
	FlashTitlesFound = true;
	FlashTitles.each(function(el,i){
		el.id = 'Flash-Title-Feature-'+i;
		var H = el.getElement('*');
		var Type = H.nodeName.toLowerCase();
		var Size = H.getSize();
		var Link = H.getElement('a');
		var K = el.hasClass('K')? true:false;//simple white or black types
		if(!el.hasClass('Lower'))
		{
			if(Link)
				Link.innerHTML = Link.innerHTML.toUpperCase();
			else
				H.innerHTML = H.innerHTML.toUpperCase();
		}
		H.innerHTML = H.innerHTML.replace(/%/gi,"%25");//@hack
		SI_replaceElement('Flash-Title-Feature-'+i,Type,site_path+'/stylesheets/title-feature.swf',Size.x,Size.y,'txtSizeY='+Size.y+'&txtColor='+(K? 'white':'black'));
	});
}

FlashTitles = document.getElement('body').getElements('div.Title-Feature-Sub');
if(FlashTitles && FlashReplaceDo)
{
	FlashTitlesFound = true;
	FlashTitles.each(function(el,i){
		el.id = 'Flash-Title-Feature-Sub-'+i;
		var H = el.getElement('*');
		var Type = H.nodeName.toLowerCase();
		var Size = H.getSize();
		var Link = H.getElement('a');
		var K = el.hasClass('K')? true:false;//simple white or black types
		H.innerHTML = H.innerHTML.replace(/%/gi,"%25");//@hack
		SI_replaceElement('Flash-Title-Feature-Sub-'+i,Type,site_path+'/stylesheets/title-feature-sub.swf',Size.x,Size.y,'txtSizeY='+Size.y+'&txtColor='+(K? 'white':'black'));
	});
}

FlashTitles = document.getElement('body').getElements('div.Title-Section');
if(FlashTitles && FlashReplaceDo)
{
	FlashTitlesFound = true;
	FlashTitles.each(function(el,i){
		el.id = 'Flash-Title-Section-'+i;
		var H = el.getElement('*');
		var Type = H.nodeName.toLowerCase();
		var Size = H.getSize();
		var Link = H.getElement('a');
		H.innerHTML = H.innerHTML.replace(/%/gi,"%25");//@hack
		SI_replaceElement('Flash-Title-Section-'+i,Type,site_path+'/stylesheets/title-section.swf',Size.x,Size.y,'');
	});
}

FlashTitles = document.getElement('body').getElements('div.Title-Page');
if(FlashTitles && FlashReplaceDo)
{
	FlashTitlesFound = true;
	FlashTitles.each(function(el,i){
		el.id = 'Flash-Title-Page-'+i;
		var H = el.getElement('*');
		var Type = H.nodeName.toLowerCase();
		var Size = H.getSize();
		var Link = H.getElement('a');
		if(el.hasClass('Upper'))
			H.innerHTML = H.innerHTML.toUpperCase();
		H.innerHTML = H.innerHTML.replace(/%/gi,"%25");//@hack
		SI_replaceElement('Flash-Title-Page-'+i,Type,site_path+'/stylesheets/title-page.swf',Size.x,Size.y,'');
	});
}

if(FlashTitlesFound)
	SI_forceRedraw();


/**
 * Layer Panels
 * 
 * Basic pop-up layers
 */
LayerPanelCtls = $(document.body).getElements('.Layer-Panel-Ctl');
if(LayerPanelCtls)
	LayerPanelCtls.each(function(el,i){
		el.addEvent('click',function(){
			if(this.href.indexOf('#'))
				layer_panel_show(this.href.substring(this.href.indexOf('#')+1));
			return false;
		});
	});
LayerPanels = $(document.body).getElements('.Layer-Panel');
if(LayerPanels)
	LayerPanels.each(function(el,i){
		el.setStyle('display','none');
		el.fade('out');
		var Close = el.getElement('.Close');
		Close.LayerPanelID = el.id;
		Close.addEvent('click',function(el,i){
			layer_panel_hide(this.LayerPanelID);
			return false;
		});
	});


/**
 * Email Form
 */
EmailForm = $('Email-Friend');
if(EmailForm)
{
	EFForm = EmailForm.getElement('form');
	EFForm.Inputs = EFForm.getElements('input[type=text],textarea');
	EFForm.Link = EFForm.getElement('input[name=link]').value;
	EFForm.Btn = EFForm.getElement('button');
	EFForm.Msg = EFForm.getElement('p.Request-Msg');
	EFForm.MsgConf = EFForm.getElement('p.Request-Msg-Conf');
	EFForm.MsgConfHide = EFForm.getElements('.Conf-Hide');
	EFForm.Img = EFForm.getElement('.Secruity-Image');
	EFForm.ImgTxt = EFForm.getElement('.Secruity-Image-Input');
	EFForm.Timer = null;
	
	EFForm.Reset = function() {
		EFForm.removeClass('Error');
		EFForm.removeClass('Success');
		EFForm.Msg.innerHTML = '';
		EFForm.MsgConf.innerHTML = '';
		for(var i = 0;i < EFForm.MsgConfHide.length;i++)
			EFForm.MsgConfHide[i].setStyle('display','block');
		EFForm.getElement('input[name=to]').value = '';
		EFForm.getElement('input[name=from]').value = '';
		EFForm.getElement('textarea[name=comments]').value = 'Hi!\n\nI\'d like to point you to this link for an interesting content on Prospect\'s website.\n\n'+EFForm.Link;
		EFForm.getElement('input[name=code]').value = 'Please enter code as above';
		EFForm.Msg.setStyle('display','none');
		EFForm.MsgConf.setStyle('display','none');
	}

	EFForm.myRequest = new Request({
		url : site_path+'/?page=email_friend',
		method : 'post'
	});

	EFForm.addEvent('submit',function() {
		this.Msg.innerHTML = '';
		this.Btn.blur();
		this.addClass('Loading');
		//this.action = '#';
		var Req = '';
		for(var i = 0;i < EFForm.Inputs.length;i++)
		{
			EFForm.Inputs[i].readOnly = true;
			EFForm.Inputs[i].addClass('Disabled');
			if(i>0)
				Req+= '&';
			Req+= EFForm.Inputs[i].name+'='+escape(EFForm.Inputs[i].value);
		}
		clearTimeout(EFForm.Timer);
		EFForm.Timer = setTimeout("EFForm.myRequest.send('"+Req+'&link='+escape(EFForm.Link)+'&mode=text'+"')",500);
		return false;
	});

	EFForm.myRequest.onSuccess = function(responseText,responseXML) {
		EFForm.removeClass('Loading');
		EFForm.ImgTxt.value = 'Please enter code as above';
		EFForm.Img.src = site_path+'/security-image.php?r='+Math.floor(Math.random()*1000);
		if(responseText == 'success')
		{
			EFForm.removeClass('Error');
			EFForm.addClass('Success');
			EFForm.Msg.setStyle('display','none');//for WinIE
			EFForm.Msg.innerHTML = '';
			EFForm.MsgConf.setStyle('display','block');
			EFForm.MsgConf.innerHTML = '<strong>Message sent!</strong><br /><br /><a href="javascript:EFForm.Reset()">Send another message</a>';
			for(var i = 0;i < EFForm.MsgConfHide.length;i++)
				EFForm.MsgConfHide[i].setStyle('display','none');
		}
		else
		{
			EFForm.removeClass('Success');
			EFForm.addClass('Error');
			EFForm.Msg.setStyle('display','block');
			if(responseText == 'invalid')
				EFForm.Msg.innerHTML = '<strong>Message not sent<\/strong><br />You need to set valid To &amp; From email addresses, (and just use plain text in the comments box).';
			else if(responseText == 'codeerror')
				EFForm.Msg.innerHTML = '<strong>Message not sent: Invalid Security Code<\/strong><br />Please enter the security code exactly as it appears.';
			else
				EFForm.Msg.innerHTML = responseText+'<strong>An error occured<\/strong><br />Please check your email address or contact us directly...';
			setTimeout('EFForm.Msg.style.visibility="hidden"',200);
			setTimeout('EFForm.Msg.style.visibility="visible"',400);
			setTimeout('EFForm.Msg.style.visibility="hidden"',600);
			setTimeout('EFForm.Msg.style.visibility="visible"',800);
		}
		for(var i = 0;i < EFForm.Inputs.length;i++)
		{
			EFForm.Inputs[i].readOnly = false;
			EFForm.Inputs[i].removeClass('Disabled');
		}
	}
}


/**
 * Open external links in content body in new windows
 */
var Links = $(document.body).getElements('.Content-Body a');
if(Links)
	for(var i=0; i < Links.length;i++)
	{
		if(Links[i].href && Links[i].href.indexOf(document.domain) == -1 && Links[i].href.indexOf('javascript:') == -1)
			Links[i].target = '_blank';
	}
var Links = $(document.body).getElements('.Footer a');
if(Links)
	for(var i=0; i < Links.length;i++)
	{
		if(Links[i].href && Links[i].href.indexOf(document.domain) == -1 && Links[i].href.indexOf('javascript:') == -1)
			Links[i].target = '_blank';
	}


/**
 * Auto height of flash content area
 */
if (typeof window.innerHeight != 'undefined')
{
	var viewportheight = window.innerHeight;
	var fc = $('flashcontent');

	if(fc)
	{
		var fc_size =  fc.getSize();
		if(viewportheight > fc_size.y)
			fc.setStyle('height',viewportheight+'px');
	}
}


/**
 * Size tracker
 */
if(typeof fw_FlexiWidth != 'undefined' && fw_FlexiWidth == true)
{
	var fw_MediaArea = $('Media-Area-1');
	var fw_ContentBox = $('Footer-1');
	var fw_FooterBox = $('Content-1');
	if(fw_MediaArea && fw_ContentBox && fw_FooterBox)
	{
		fw_MediaArea_size = fw_MediaArea.getSize().x;
		fw_ContentBox_size = fw_ContentBox.getStyle('margin-left').toInt();
		var fw_w_min = fw_ContentBox.getCoordinates().right + 50;
		var fw_w_max = fw_w_min + 300;
		function fw_w_resize()
		{
			var w = $(window).innerWidth;
			if(w <= fw_w_min)
			{
				fw_MediaArea.setStyle('width',fw_MediaArea_size+'px');
				fw_ContentBox.setStyle('margin-left',fw_ContentBox_size+'px');
				fw_FooterBox.setStyle('margin-left',fw_ContentBox_size+'px');
			}
			else if(w <= fw_w_max)
			{
				var adj = w - fw_w_min;
				fw_MediaArea.setStyle('width',(fw_MediaArea_size+adj)+'px');
				fw_ContentBox.setStyle('margin-left',(fw_ContentBox_size+adj)+'px');
				fw_FooterBox.setStyle('margin-left',(fw_ContentBox_size+adj)+'px');
			}
		}
		window.onresize = fw_w_resize;
		fw_w_resize();
	}
}
});