var hopUpSwfId;
var hopUpVisible = false;

function viewLargerDisplay(productId, variationId, viewId){
	var displayControlXML = "<display-control><views active=\"\" default=\"" + viewId + "\" order=\"sequential\"/><variations active=\"\" default=\"" + variationId + "\" order=\"sequential\"/></display-control>";
	
	//Added in additional html for - cody l.
	var innerHTMLMarkup;
if(document.fireEvent && window.external && (typeof window.XMLHttpRequest == "undefined")){//dropdown hack IE6
	innerHTMLMarkup = '<div class=\"hopUpHeader\"><a href=\"#\" onclick=\"hideHopUp();\" class=\"hopUpCloseStyle\">&nbsp;Close X&nbsp;</a><span class=\"hopUpHeading\">&nbsp;</span></div><br clear=\"all\" /><iframe style="position:absolute;z-index:999;border:none;height:100%;width:100%;filter:alpha(opacity=0);z-index:999;" src="javascript:;"></iframe><div style=\"position:absolute;z-index:1000;background-color:#fff;\">';
}else{
	innerHTMLMarkup = "<div style=\"position:absolute;z-index:1000;background-color:#fff;height:500px\"><div class=\"hopUpHeader\"><a href=\"#\" onclick=\"hideHopUp();\" class=\"hopUpCloseStyle\">&nbsp;X&nbsp;</a><span class=\"hopUpHeading\">&nbsp;</span></div><br clear=\"all\" />";
}
	
	innerHTMLMarkup += getHopUpContent("DISPLAY", displayControlXML) + "</div>";
	
	document.getElementById("hopUp").innerHTML = innerHTMLMarkup;

	document.getElementById('hopUp').style.visibility='visible';
	hopUpVisible = true;
	//hideZoomWindow(extSwfId);
}

function hideHopUp(){
	document.getElementById('hopUp').style.visibility='hidden';
	hopUpVisible = false;
}

function getHopUpContent(type, displayControlXML){

	if(type == "DISPLAY"){
		displayId = "viewLarger";
		
		var params = {  preloaderFgColor:"#CCCCCC", 
						preloaderBgColor:"#666666", 
						width:620, 
						height:597,
						//baseURL:baseURL, 
						baseURL:fluidBaseURL,
						productId:productId, 
						displayId:displayId, 
						displayControlXML:displayControlXML,
						customerId:customerId };

		displayInfo = getProductViewerHtml(params);	
		hopUpSwfId = displayInfo.embedElementId;
		return displayInfo.html;
	}
	else{
		var largerImage = "customers/" + customerId + "/" + productId + "/" + productId + "_display7/" + "zoom_view_" + viewId + "_1500x1500.jpg";
		return  "<img src='" + largerImage + "' width='750'>";
	}
}

/**
 * -----------------------------------------------------------------
 * Copyright (c) 2000-2006 Fluid, Inc. All Right Reserved.
 * This software is the proprietary information of Fluid, Inc.
 * Use is subject to strict licensing terms.
 * -----------------------------------------------------------------
 *
 * concept_lib.js
 *
 * A Javascript library for the embed Concept Retail (TM) interactive
 * displays.
 *
 */
// var hasFlash = hasFlash();
 var hasFlashVar = true;

if ( this.Concept == null )	Concept = {}
			
if ( Concept.registry == null )
{
	Concept.registry = {}
	Concept.registry.ind = 1;
	Concept.registry.divInfo = {};
	Concept.registry.lastDisplayInfo = {};
}
 
 
 function setDivHTML(divId, divInfo){
 	document.getElementById(divId).innerHTML = divInfo.html;	
 }
 function appendDivHTML(divId, divInfo){
 	document.getElementById(divId).innerHTML += divInfo.html;	
 	//document.getElementById(divId).innerHTML += "<!-- test -->";	
	
 }
 /**
  * Embed a product viewer. This function will dynamically generate an OBJECT/EMBED
  * tag for the Flash player, unless Flash detection fails
  * 
  * @param params An object with the following properties:
  * REQUIRED:
  * 	width                     			The width of the product viewer.
  * 	height                    			The height of the product viewer.
  * 	baseURL                  		The base url of the conceptretail files.
  * 	customerId                		The identifier of the customer.
  * 	productId                 		The identifier of the given product to embed.
  * 	displayId                 		The identifier of the display for this product (e.g. "detail").
  * OPTIONAL: 
  * 	bgColor                   		The background color of the viewer (e.g. #FFFFFF).
  * 	preloaderBgColor          		The background color of the preloader (e.g. #FFCC00).
  * 	preloaderFgColor          		The foreground color of the preloader (e.g. #FF0000).
  * 	errorBGColor			The background color used for error messages
  * 	errorFontFace			The font used for error messages
  * 	errorFontColor			The font color used for error messages
  * 	errorFontSize			The font size used for error messages
  * 	detailErrorFontFace		The font used for detalied error messages
  * 	detailErrorFontColor		The font color used for detalied error messages
  * 	detailErrorFontSize		The font size used for detalied error messages
  * 	preloaderMessage          		The message to display below the preloader.
  * 	logFunction               		The name of the Javascript function to invoke for logging. No parameter indicates no logging.
  * 	cacheControlId            		An identifier that gets appended to pview / pviewer XML files to assist with cache issues (e.g. fall2004).
  * 	wmode				The transparency mode of the player. Valid values: "window", "transparent, or "opaque" (default).
  * 	displayControlXMLPath 		The complete URL to the displayControl XML file. 
  * 	displayControlXML		A String representation of an XML config file (e.g "<display-control id=\"123\"> .... </display-control>").
  * 	noFlashImageURL			A URL to a fallback image to be used if the user doesn't have Flash.
  * 	onLoadHandler			The name of a JavaScript function that will handle an on load callback.
  * 	onErrorHandler			The name of a JavaScript function that will handle errors
  * 
  * @returns The DOM Element ID to the ProductViewer Flash for use with Javascript communication.
  */
 function getProductViewerHtml( params ) 
 {

 	var width = params.width;
	var height = params.height;
	
	var baseURL = params.baseURL;
	var productId = params.productId;
	var displayId = params.displayId;
	var customerId = params.customerId;
	var wmode = params.wmode || "opaque";
	var elementId;
	
	if ( params.baseURL == null ) params.baseURL = "";
	if ( params.baseURL != "" && params.baseURL.charAt( params.baseURL.length - 1 ) != "/" ) params.baseURL += "/";
	
	if ( hasFlashVar )
	{
		// define our namespace			
		Concept.registry.nextLCID = "CR_LCID_" + Concept.registry.ind++ + "_" + (new Date()).getTime();
		
		var preloaderURL = params.baseURL + "standard/v2/swf/cengage_preloader.swf";
		var productViewURL = "../../../customers/" + customerId + "/" + productId + "/" + productId + "_" + displayId + 
							 "/pview_" + productId + "_" + displayId + ".xml";
		
	 	var bgColor = params.bgColor || "#FFFFFF";
	    var preloaderBgColor = params.preloaderBgColor || "#00CCFF";
	 	var preloaderFgColor = params.preloaderFgColor || "#0000FF";
	
		// change it to appropriate flash format
		preloaderBgColor = "0x" + preloaderBgColor.substring(1);
		preloaderFgColor = "0x" + preloaderFgColor.substring(1);

		var flashVars = 'productViewXML=' + productViewURL; 
		flashVars += '&productId=' + productId;
		flashVars += '&bgColor=' + bgColor;
		flashVars += '&preloaderBGColor=' + preloaderBgColor;
		flashVars += '&preloaderFGColor=' + preloaderFgColor;
		
		if(params.errorBGColor != null) flashVars += '&errorBGColor=' + params.errorBGColor;
		if(params.errorFontFace != null) flashVars += '&errorFontFace=' + params.errorFontFace;
		if(params.errorFontColor != null) flashVars += '&errorFontColor=' + params.errorFontColor;
		if(params.errorFontSize != null) flashVars += '&errorFontSize=' + params.errorFontSize;
		if(params.detailErrorFontFace != null) flashVars += '&detailErrorFontFace=' + params.detailErrorFontFace;
		if(params.detailErrorFontColor != null) flashVars += '&detailErrorFontColor=' + params.detailErrorFontColor;
		if(params.detailErrorFontSize != null) flashVars += '&detailErrorFontSize=' + params.detailErrorFontSize;
		
		flashVars += '&width=' + width;
		flashVars += '&height=' + height;
		flashVars += '&zoomWinLCID=' + Concept.registry.nextLCID;
		flashVars += '&htmlURL=' + window.location.host;
		flashVars += '&preloaderMessage=' + params.preloaderMessage;
		
		if(params.logFunction != null) flashVars +='&logFunction=' + params.logFunction;
		if(params.cacheControlId != null) flashVars += '&cacheControlId=' + params.cacheControlId;
		if(params.displayControlXMLPath != null) flashVars += '&displayControlXMLPath=' + params.displayControlXMLPath;
		if(params.displayControlXML != null) flashVars += '&displayControlInfo=' + escape(params.displayControlXML);
		if(params.onLoadHandler != null) flashVars += "&onLoadHandler=" + params.onLoadHandler;
		if(params.onErrorHandler != null) flashVars += "&onErrorHandler=" + params.onErrorHandler;
		
		elementId = "cengage_preloader_" + Concept.registry.ind;
		
		// IE VBScript to handle fscommands
		
		var scriptToWrite = '';
		scriptToWrite += '<script language="VBScript">';
		scriptToWrite += 'Sub ' + elementId + '_FSCommand(ByVal command, ByVal args)';
		scriptToWrite += 'call ' + elementId + '_DoFSCommand(command, args)';
		scriptToWrite += 'end sub';
		scriptToWrite += '</script>';

//		document.writeln(scriptToWrite);
	
		// JavaScript method to handle fscommands
		this[elementId + "_DoFSCommand"] = function(command, args)
		{
			// Check for FSCommand: in the command/function name as is the case on the Mac
			if(command.indexOf("FSCommand:") == 0) command = command.split("FSCommand:")[1];
			var func = this[command];
			if(func != null) func(args);
		}
		
		//var htmlFragment = "";
		var htmlFragment = scriptToWrite;
		htmlFragment += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="' + width 
						+ '" height="' + height + 
						'" id="' + elementId + '" align="top">';
		htmlFragment += '<param name="movie" value="' + preloaderURL + '" />';
		htmlFragment += '<param name="allowScriptAccess" value="always" />';
		htmlFragment += '<param name="bgcolor" value="' + bgColor + '" />';
		htmlFragment += '<param name="base" value="." />';
		htmlFragment += '<param name="wmode" value="' + wmode + '" />';
 		htmlFragment += '<param name="flashvars" value="' + flashVars + '" />';
		htmlFragment += '<embed swliveconnect="true" src="' + preloaderURL + '" base="." quality="high" bgcolor="' + bgColor + 
						'" width="' + width +'" height="' + height + '"' + '"wmode="' + wmode + '"' +
						' name="' + elementId + '" align="top" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"';
		htmlFragment +=	' flashvars="' + flashVars + '" >';
		htmlFragment += '</embed></object>';
		
		// track the info for the last display embed. needed for personalization
		var info = {};
		info.embedElementId = elementId;
		info.customerId = params.customerId;
		info.productId = params.productId;
		info.displayId = params.displayId;
		info.baseURL = params.baseURL;
		
		Concept.registry.lastDisplayInfo = info;

	}
	else
	{
		var noFlashImageURL = params.noFlashImageURL;
		if (noFlashImageURL == null)
		{
			var displayControlIds;

			if(params.displayControlXMLPath != null)
			{
				var response = executeSyncXmlRequest(params.displayControlXMLPath);
				if(response.success)
				{
					displayControlIds = getInventoryIdsForFallback(response.xml);
				}
			}
			else if (params.displayControlXML != null)
			{
				displayControlIds = getInventoryIdsForFallback(getXmlFromString(params.displayControlXML));
			}
			
			var variationInvId;
			var viewInvId;
			
			if(displayControlIds != null)
			{
				variationInvId = displayControlIds.variationInvId;
				viewInvId = displayControlIds.viewInvId;
			}
			
			var fallbackHTML = getFallbackHtml(params.baseURL, customerId, productId, displayId, variationInvId, viewInvId);
		}
		else
		{
			var fallbackHTML = '<img src="' + noFlashImageURL +'" />';
		}

		document.writeln(fallbackHTML);
	}
	
	info.html = htmlFragment + "<div id='temp'></div>";

	return info;
}


function showZoomWindow( id )
{
	if(hopUpVisible){
		return;
	}

	var div = getDiv( id );
	var pos = Concept.registry.divInfo[ id ];
	div.style.left = pos.x + "px";
	div.style.top = pos.y + "px";
	toggleDiv(id, 1);
}






