function winBRopen(theURL, Name, popW, popH) {
	if(typeof Easy2PopWin !== 'undefined' && !Easy2PopWin.closed) { Easy2PopWin.close(); }
	var winHorz = (screen.width-popW)/2;
	var winVert = (screen.height-popH)/2;
	var winProp = 'width=' + popW + ',height=' + popH + ',left=' + winHorz + ',top=' + winVert + ',scrollbars=yes,resizable=yes';
	Easy2PopWin = window.open(theURL, Name, winProp);
	if (parseInt(navigator.appVersion) >= 4) { Easy2PopWin.window.focus(); }
}

function closeAndMove(){
	if(document.getElementById('flashcontent')) {
		var oFlashDivTag = document.getElementById("flashcontent");
		var oFlashObjectTag = oFlashDivTag.getElementsByTagName("object");
		var oFlashEmbedTag = oFlashDivTag.getElementsByTagName("embed");
		
		if(oFlashEmbedTag && oFlashEmbedTag[0] && oFlashEmbedTag[0].pauseContent) {
			oFlashEmbedTag[0].pauseContent();
		} else if(oFlashObjectTag && oFlashObjectTag[0] && oFlashObjectTag[0].pauseContent) {
			oFlashObjectTag[0].pauseContent();
		}
	}

	if(e2Vars.intDynaInc > 0 && (e2Vars.strBuyNowURL == 'dyna_buy_now' || unescape(e2Vars.strBuyNowURL).toLowerCase().indexOf('dyna_buy_now') > -1)) {
		showDynaBuyFrame();
	} else if(e2Vars.strBuyNowURL.length > 0 && e2Vars.strBuyNowURL != 'dyna_buy_now' && unescape(e2Vars.strBuyNowURL).toLowerCase().indexOf('dyna_buy_now') == -1) {
		toggleBuyDialog();
	} else {
		alert('Buy Now information is unavailable for this product.');
	}
}

function toggleSurveyDialog() {
	var oDialog = document.getElementById('surveyDialog');
	
	if(!oDialog) {
		var dialogW = 300;
		var dialogH = 90;
		var arrSize = Sizes.Content();
		oDialog = document.createElement('div');
		oDialog.style.position = 'relative';
		oDialog.style.left = '0px';
		oDialog.style.top = '-' + Math.round(arrSize[1]/2 + dialogH/2) + 'px';
		oDialog.style.textAlign = 'center';
		oDialog.style.zIndex = '100';
		oDialog.id = 'surveyDialog';
		
		var dialog = '';
		dialog += '<div style="width: ' + dialogW + 'px; height: ' + dialogH + 'px; background-color: #E0DFE3; padding: 10px; text-align: left; border: 1px solid #666666; font-family: Arial, Helvetica, sans-serif; font-size: 11px; font-weight: normal; color:#000000; margin-left: auto; margin-right: auto;">';
		dialog += '<div style="text-align: center; font-weight: bold; padding-bottom: 6px;">Are you done with this module?<br>Can we ask you a few questions?</div>';
		if(window.opener != null) {
			dialog += '<div style="padding-bottom: 6px;"><a href="' + e2Vars.strSurveyURL + '"><span style="color:#333399;">YES</span></a>, show me the survey.</div>';
		} else {
			dialog += '<div style="padding-bottom: 6px;"><a href="#" onClick="winBRopen(\'' + e2Vars.strSurveyURL + '\', \'survey\', 600, 600); return false;"><span style="color:#333399;">YES</span></a>, show me the survey.</div>';
		}
		dialog += '<div style="padding-bottom: 6px;"><a href="#" onClick="toggleSurveyDialog(); return false;"><span style="color:#333399;">NO</span></a>, I want to return to the module.</div>';
		dialog += '</div>';
		
		oDialog.innerHTML = dialog;
		document.getElementById('surveyContent').appendChild(oDialog);
	} else {
		var par = oDialog.parentNode;
		par.removeChild(oDialog);
	}
}

function toggleBuyDialog() {
	var oDialog = document.getElementById('buyNowDialog');

	if(!oDialog) {
		var url = e2Vars.strBuyNowURL;
		var dialogW = 300;
		var dialogH = 90;
		var arrSize = Sizes.Content();
		oDialog = document.createElement('div');
		oDialog.style.position = 'relative';
		oDialog.style.left = '0px';
		oDialog.style.top = '-' + Math.round(arrSize[1]/2 + dialogH/2) + 'px';
		oDialog.style.textAlign = 'center';
		oDialog.style.zIndex = '100';
		oDialog.id = 'buyNowDialog';
		
		var sHTML = '';
		sHTML += '<table width="' + dialogW + '" height="' + dialogH + '" border="0" cellpadding="6" cellspacing="0" style="background-color:#E0DFE3; margin-left:auto; margin-right:auto; border:1px solid #666666; text-align:center; font-family: Arial, Helvetica, sans-serif; font-size: 11px; font-weight: normal; color:#000000;">';
		sHTML += '<tr><td><span style="float:right;"><a href="#" onClick="return buyNowCancel();" style="color:#333399; text-decoration: none;">[X]</a></span><span style="visibility:hidden;">[X]</span><span style="font-weight: bold;">Open link in:</span></td></tr>';
		sHTML += '<tr><td><a href="' + url + '" target="_blank" onClick="toggleBuyDialog();" style="color:#333399;">NEW window</a></td></tr>';
		sHTML += '<tr><td><a href="' + url + '" onClick="return buyNowResize();" style="color:#333399;">THIS window</a><br>(Replaces demo)</td></tr>';
		sHTML += '</table>';
	
		oDialog.innerHTML = sHTML;
		var oFC = document.getElementById('flashcontent');
		if(oFC) {
			var oSib = oFC.nextSibling;
			var oPar = oFC.parentNode;
			oPar.insertBefore(oDialog,oSib);
		} else {
			var oBody = document.getElementsByTagName("body")[0];
			oBody.appendChild(oDialog);
		}
	} else {
		var par = oDialog.parentNode;
		par.removeChild(oDialog);
	}
}

function buyNowResize() {
	if(window.opener != null) {
		var oBody = document.getElementsByTagName("body")[0];
		oBody.style.overflow = 'auto';
		var oHTML = document.getElementsByTagName("html")[0];
		oHTML.style.overflow = 'auto';
		
		var w = self.screen.width;
		var h = self.screen.height;
		window.moveTo(0,0);
		window.resizeTo(w,h);
	}
	return true;
}

function buyNowCancel() {
	if(document.getElementById('flashcontent')) {
		var oFlashDivTag = document.getElementById("flashcontent");
		var oFlashObjectTag = oFlashDivTag.getElementsByTagName('object');
		var oFlashEmbedTag = oFlashDivTag.getElementsByTagName('embed');
		
		if(oFlashEmbedTag && oFlashEmbedTag[0] && oFlashEmbedTag[0].demoReturn) {
			if(oFlashEmbedTag[0].demoReturn) { oFlashEmbedTag[0].demoReturn(); }
		} else {
			if(oFlashObjectTag[0].demoReturn) { oFlashObjectTag[0].demoReturn(); }
		}
			
		// Reference for JS / Flash communication: http://www.communitymx.com/content/article.cfm?page=1&cid=0922A
	}
	toggleBuyDialog();
	return false;
}

//function createBuyNowDiv(wContent, hContent, hNav, hBody, hFoot, hHead) {
function createBuyNowDiv() {
	var arrContent = Sizes.Flash();
	e2Vars.iFlashOriginalW = parseInt(arrContent[0]);
	e2Vars.iFlashOriginalH = parseInt(arrContent[1]);
	
	var headRow = 65;
	var backRow = 20;
	var buyRow = 28;
	var flashW = (typeof e2Vars.intFlashW == 'number' &&  e2Vars.intFlashW > 0) ? e2Vars.intFlashW : arrContent[0];
	var flashH = (typeof e2Vars.intFlashH == 'number' &&  e2Vars.intFlashH > 0) ? e2Vars.intFlashH : arrContent[1];

	var oDiv = document.createElement('div');
	oDiv.id = 'buyNowListDisplay';
	oDiv.style.display = 'none';
	oDiv.style.width = '100%';
	oDiv.style.position = 'absolute';
	oDiv.style.top = '0px';
	oDiv.style.left = '0px';
	oDiv.style.textAlign = 'center';
	oDiv.style.fontFamily = 'Arial, Helvetica, sans-serif';
	oDiv.style.fontSize = '11px';
	document.getElementsByTagName('body')[0].appendChild(oDiv);
	
	e2Vars.iFlashTruncateH = 1;			
	
	var buyNowInfo = '<table cellpadding="0" cellspacing="0" border="0" width="' + flashW + '" height="' + flashH + '" style="margin-left: auto; margin-right: auto; text-align: left;">';
	buyNowInfo += '<tr><td align="center" valign="top">';
	buyNowInfo += '<table cellpadding="0" cellspacing="0" border="0" width="' + flashW + '" height="' + flashH  + '" bgcolor="#ffffff">';
	
	buyNowInfo += '<tr><td width="150" height="' + headRow + '" align="center"><img src="/cm/logos_110x65/' + e2Vars.strMaskPrefix + '.gif" width="110" height="65" alt=""></td>';
	buyNowInfo += '<td width="' + (flashW - 150) + '" style="padding-right:30px; text-align:right; font-family:Arial, Helvetica, sans-serif; font-weight:bold; font-size:14px;">';
	buyNowInfo += e2Vars.strContentName;
	buyNowInfo += '</td></tr>';
	
	buyNowInfo += '<tr bgcolor="#EEEEEE"><td height="' + backRow + '" align="left" style="padding-left: 10px;">&nbsp;</td>';
	buyNowInfo += '<td style="padding-right:60px; text-align:right; font-family:Arial, Helvetica, sans-serif; font-size:11px; font-weight: bold;">';
	buyNowInfo += '<a href="#" onClick="hideDynaBuyFrame(); return false;" style="text-decoration: none;"><span style="color: #000000; text-decoration: none;">&lt;&lt; Back to Demo</span></a>';
	buyNowInfo += '</td></tr>';

	buyNowInfo += '<tr><td colspan="2" bgcolor="#FFFFFF" valign="top" height="' + (flashH - headRow - backRow - buyRow) + '">';
	buyNowInfo += '<iframe id="buyNowIFrame" name="buyNowIFrame" width="' + flashW + '" height="' + (flashH - headRow - backRow - buyRow) + '" frameborder="0" scrolling="yes"></iframe>';
	buyNowInfo += '</td></tr>';
	
	buyNowInfo += '<tr bgcolor="#EEEEEE"><td height="' + buyRow + '" align="left" style="padding-left: 10px;"><a id="addToCartButton" href="#" onClick="return addToCart(this);" target="_blank" onMouseOver="javascript:this.firstChild.src=\'/cm2/images/add_to_cart_over.gif\';" onMouseOut="javascript:this.firstChild.src=\'/cm2/images/add_to_cart_off.gif\';" style="visibility: hidden;"><img src="/cm2/images/add_to_cart_off.gif" border="0"></a></td>';
	buyNowInfo += '<td style="padding-right:60px; text-align:right; font-family:Arial, Helvetica, sans-serif; font-weight:bold; font-size:11px;">&nbsp;</td></tr>';
	
	buyNowInfo += '</table></td></tr></table>';

	document.getElementById('buyNowListDisplay').innerHTML = buyNowInfo;
}

function showDynaBuyFrame() {
	if(!document.getElementById('buyNowListDisplay')) createBuyNowDiv();
	document.getElementById("buyNowListDisplay").style.display = '';
	document.getElementById("buyNowIFrame").src = '/cm2/buy_now/dyna_list.asp?page_id=' + e2Vars.intPageID + '&host=' + e2Vars.strHost + '&refer=' + e2Vars.strRefer + '&notracking=' + e2Vars.strNoTracking;
	
	var oFlashDivTag = document.getElementById("flashcontent");
	var oFlashObjectTag = oFlashDivTag.getElementsByTagName("object")[0];
	var oFlashEmbedTag = oFlashDivTag.getElementsByTagName("embed")[0];

	oFlashObjectTag.height = e2Vars.iFlashTruncateH;

	if(oFlashEmbedTag) { oFlashEmbedTag.height = e2Vars.iFlashTruncateH; }
}

function addToCart(obj) {
	var url = '';
	//var arr = document.form1.buy_this_now;
	var arr = window.frames['buyNowIFrame'].document.form1.buy_this_now;
	if(typeof arr === 'undefined') {
		alert('Nothing to buy.');
		return false;
	} else if(typeof arr.length === 'undefined' && arr.checked) {
		url = arr.value;
	} else {
		for(var x = 0; x < arr.length; x++) {
			if(arr[x].checked) {
				url = arr[x].value;
			}
		}
	}
	
	if(url !== '' && window.opener) {
		window.opener.location.href = url;
		window.opener.focus();
		return false;
	} else if(url !== '') {
		obj.href = url;
		return true;
	} else {
		alert('Please make a selection.');
		return false;
	}
}

function goToLink(obj) {
	var url = obj.href.toString();
	if(url !== '' && window.opener) {
		window.opener.location.href = url;
		window.opener.focus();
		return false;
	} else {
		return true;
	}
}

function hideDynaBuyFrame() {
	if(document.getElementById('buyNowListDisplay')) {
		document.getElementById("buyNowListDisplay").style.display = 'none';
	}
	if(document.getElementById('flashcontent')) {
		var oFlashDivTag = document.getElementById("flashcontent");
		var oFlashObjectTag = oFlashDivTag.getElementsByTagName('object');
		var oFlashEmbedTag = oFlashDivTag.getElementsByTagName('embed');
		
		if(oFlashObjectTag && oFlashObjectTag[0]) {
			oFlashObjectTag[0].height = e2Vars.iFlashOriginalH;
		}
		if(oFlashEmbedTag && oFlashEmbedTag[0]) {
			oFlashEmbedTag[0].height = e2Vars.iFlashOriginalH;
			if(oFlashEmbedTag[0].demoReturn) { oFlashEmbedTag[0].demoReturn(); }
		} else {
			if(oFlashObjectTag[0].demoReturn) { oFlashObjectTag[0].demoReturn(); }
		}
			
		// Reference for JS / Flash communication: http://www.communitymx.com/content/article.cfm?page=1&cid=0922A
	}
}

function resizeAndCenter() {
	if(e2Vars.blnMakeFlash) myoFlashAndSurvey(e2Vars.strFlashURL,e2Vars.intFlashW,e2Vars.intFlashH);
	var blnPU = window.opener;
	var curURL = window.location.href;
	var blnAdjust = (curURL.toLowerCase().indexOf('noadjust=1') != -1) ? false : true;
	var blnCenter = (curURL.toLowerCase().indexOf('nocenter=1') != -1 || !blnAdjust) ? false : true;
	var blnResize = (curURL.toLowerCase().indexOf('noresize=1') != -1 || !blnAdjust) ? false : true;
	var blnScroll = (curURL.toLowerCase().indexOf('yesscroll=1') != -1) ? true : false;
	
	var oAPC = document.getElementById('allPageContent');
	var oFC = document.getElementById('flashcontent');

	if((oAPC || oFC) && blnPU != null && blnResize) {
		var oBody = document.getElementsByTagName("body")[0];
		var oHTML = document.getElementsByTagName("html")[0];

		if(!blnScroll) {
			oBody.style.overflow = 'hidden';		
			oHTML.style.overflow = 'hidden';
		}

		// Check sizes and resize window accordingly.
		var arrWinSizes = Sizes.Window();
		var arrContentSizes = Sizes.Content();
		var iDiffWidth = (arrContentSizes[0] - arrWinSizes[0]) + 2;
		var iDiffHeight = (arrContentSizes[1] - arrWinSizes[1]) + 2;
		try {
			window.resizeBy(iDiffWidth, iDiffHeight);
		} catch(err) {
			var winErr = err;
			oBody.style.overflow = '';
			oHTML.style.overflow = '';
		}
	
	} else if(blnPU != null && blnResize) {
		try {
			window.resizeTo(e2Vars.intWinWidth,e2Vars.intWinHeight);
		} catch(err) {
			var winErr = err;
		}
	}
	
	if(blnPU != null && blnCenter) {
		// Check window size and center on screen.
		var scrWidth = self.screen.width;
		var scrHeight = self.screen.height;
		var arrWinSizes = Sizes.Window();
		var newX = Math.round((scrWidth - arrWinSizes[0] - 10)/2);
		var newY = Math.round((scrHeight - arrWinSizes[1] - 50)/2);
		try { 
			window.moveTo(newX,newY);
		} catch(err) {
			var winErr = err;
		}
	}
}

var Sizes = {
	findTopLeft: function (obj) {
		var curleft = curtop = 0;
		if (obj.offsetParent) {
			curleft = obj.offsetLeft;
			curtop = obj.offsetTop;
			while (obj = obj.offsetParent) {
				curleft += obj.offsetLeft;
				curtop += obj.offsetTop;
			}
		}
		return [curleft,curtop];
	},
	
	Window: function() {
		var x,y;
		if (self.innerWidth) {
			// all except Explorer
			x = self.innerWidth;
			y = self.innerHeight;
			
		} else if(document.documentElement && document.documentElement.clientWidth) {
			// Explorer 6 Strict Mode
			x = document.documentElement.clientWidth;
			y = document.documentElement.clientHeight;
			
		} else if(document.body) {
			// other Explorers
			x = document.body.clientWidth;
			y = document.body.clientHeight;
			
		} else {
			x = e2Vars.intWinWidth;
			y = e2Vars.intWinHeight;
		}
		
		return [x,y];
	},
	
	Content: function() {
		var x,y;
		var oFC = document.getElementById('flashcontent');	
		var oAPC = document.getElementById('allPageContent');
				
		if(oAPC) {  // All page content is contained in a table with id="allPageContent"
			x = oAPC.offsetWidth;
			y = oAPC.offsetHeight;			
		} else if(oFC) {  // Assumes width of Flash. Adds together position of Flash from top and height of Flash. 
			var oFOTag = oFC.getElementsByTagName("object")[0];		
			x = parseInt(oFOTag.width);	
			var arrPos = this.findTopLeft(oFOTag);
			y = arrPos[1] + parseInt(oFOTag.height);
			if(e2Vars.strSurveyURL != '') y += 20;			
		} else {
			x = e2Vars.intWinWidth;
			y = e2Vars.intWinHeight;			
		}
	
		return [x,y];
	},

	Flash: function() {
		var oFC = document.getElementById('flashcontent');	
		if(oFC.getElementsByTagName("embed") && oFC.getElementsByTagName("embed")[0]) {
			var oFOTag = oFC.getElementsByTagName("embed")[0];
		} else {
			var oFOTag = oFC.getElementsByTagName("object")[0];
		}		
		var w = oFOTag.width;
		var h = oFOTag.height;
		var loc = this.findTopLeft(oFOTag);
		var ox = loc[0];
		var oy = loc[1];
		return [w,h,ox,oy];
	}
}

function myoFlashAndSurvey(qs,w,h) {
	var visibleH = h;
	var oMain = document.getElementById('demomain');
	var oLoader = document.getElementById('demopreloader');
	var oAPC = document.getElementById('allPageContent');
	var oAltDiv = document.getElementById('altLinkDiv');
	if(oLoader) oLoader.parentNode.removeChild(oLoader);
	if(!oAPC) {
		oAPC = document.createElement('div');
		oAPC.id = 'allPageContent';
		oAPC.innerHTML = '<div id="flashcontent" name="flashcontent"><div id="flashcontentTMP"></div></div>';
		var oSpacer = document.createElement('div');
		oSpacer.style.padding = '2px';
		oSpacer.innerHTML = '&nbsp;';
		var oFirst = oMain.firstChild;
		oMain.insertBefore(oSpacer,oFirst);
		oMain.insertBefore(oAPC,oSpacer);
	}

	if(e2Vars.strSurveyURL != '') {
		var oSurveyDiv = document.createElement('div');
		oSurveyDiv.id = 'surveyContent';
		oSurveyDiv.style.textAlign = 'center';
		var surveyTableLink = '<div><a style="background-color:#FFFFCC; font-family: Arial, Helvetica, sans-serif; font-size: 11px; font-weight: normal; color:#000000;" href="#" onClick="toggleSurveyDialog(); return false;">&gt;&gt; Click here to take our survey. &lt;&lt;</a></div>';
		oSurveyDiv.innerHTML = surveyTableLink;
		if(oAltDiv) {
			var parDiv = oAltDiv.parentNode;
			parDiv.insertBefore(oSurveyDiv, oAltDiv);
		} else {
			oAPC.appendChild(oSurveyDiv);
		}
		visibleH += oSurveyDiv.offsetHeight;
	}
	
	if(oAltDiv) {
		visibleH += oAltDiv.offsetHeight;
	}
	
	oAPC.style.width = w + 'px';
	oAPC.style.height = (visibleH+5) + 'px';
	
	var arrQS = qs.split('?');
	var swfFile = arrQS[0];
	var flashLoc = 'flashcontentTMP';
	var flashW = w.toString();
	var flashH = h.toString();
	var flashVers = e2Vars.requiredFlashVersion + '.0.0';
	var installFile = '/cm/includes_js/expressInstall.swf';
	var flashVars = (arrQS.length > 1) ? makeVarsObj(arrQS[1]) : {};
	var params = {
		allowscriptaccess: 'always',
		quality: 'high',
		bgcolor: '#FFFFFF',
		scale: 'noscale',
		salign: 'lt',
		wmode : 'transparent'
	};
	var attributes = {
		id: 'demoFlashObject',
		name: 'demoFlashObject'
	};
	
	//http://code.google.com/p/swfobject/wiki/documentation
	//swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0","expressInstall.swf", flashvars, params, attributes);		
	swfobject.embedSWF(swfFile, flashLoc, flashW, flashH, flashVers, installFile, flashVars, params, attributes);

	function makeVarsObj(fv) {
		var obj = {};
		var arrPairs = fv.split('&');
		for (var p=0; p < arrPairs.length; p++) {
			arrPairs[p] = arrPairs[p].split('=');
			obj[arrPairs[p][0]] = (arrPairs[p].length > 1) ? arrPairs[p][1] : '';
		}
		return obj;
	}
}

// Code reference: http://www.sitepoint.com/article/javascript-from-scratch/2
function addLoadListener(fn) {
	if (typeof window.addEventListener != 'undefined') 
		window.addEventListener('load', fn, false); 
	else if (typeof document.addEventListener != 'undefined') 
		document.addEventListener('load', fn, false); 
	else if (typeof window.attachEvent != 'undefined') 
		window.attachEvent('onload', fn); 
	else { 
		var oldfn = window.onload; 
		if (typeof window.onload != 'function') 
			window.onload = fn; 
		else { 
			window.onload = function() { 
				oldfn();
				fn(); 
			};
		} 
	} 
}

addLoadListener(resizeAndCenter);

// ************************* Legacy Email a Friend code *********************************** //

function setVars() {
	var url = setVars.arguments[0];
	var varStr = '?';

	for(var x=1; x<setVars.arguments.length; x++) {
		varStr += escape(setVars.arguments[x]) + '=' + escape(eval(setVars.arguments[x]));
		if(x < setVars.arguments.length-1) varStr += '&';
	}

	var theURL = url + varStr;
	winBRopen(theURL,'EmailFriend',425,425);
} 

function SendInfo(urlPage,referString) {
 	myString = referString;
	setVars(urlPage,'myString');
}

