/*
	Scene7 media viewers js wrappers

	Include dependencies:
		swfobject.js
		r2modal.js

	Property dependencies:
		LEGO.s7mediaServer
		LEGO.zoomTipText
		LEGO.unZoomTipText
		LEGO.viewLargerText

 	TODO:
 	- remove quick view 'large view' link

 	NOTE: several of these functions are called directly from the scene7 viewers (e.g. openProduct360)
 	so be careful when renaming/refactoring
*/
LEGO.scene7 = {

	//creates modal popup with scene7 360 viewer
	openProduct360: function(productCode){
		LEGO.modal.openModal(null, {
			source:'<div id="product-360view"></div>',
			width:690,
			height:590
		});
		this.create360View('product-360view', productCode);
	},

	//creates modal popup with scene7 video player
	openProductVideo: function(productCode){
		LEGO.modal.openModal(null, {
			source:'<div id="product-videoview"></div>',
			width:620,
			height:370
		});
		this.createVideoView('product-videoview', productCode);
	},

	//creates modal popup with scene7 'larger view'
	//opens large view in a stand alone window
	openProductViewLarger: function(productCode, scene7Video, scene7Spin){
		window.open(
			'/catalog/productLargeView.jsp?modalView=true&productCode=' + productCode + '&scene7Video=' + scene7Video + '&scene7Spin=' + scene7Spin,
			'productLargeView',
			'height=705,width=805,location=no,menubar=no,resizable=no,status=no,titlebar=no,toolbar=no,scrollbars=no'
		);
	},

	//creates modal popup with the 'quick view'
	openProductQuickView: function(quikViewUrl){

		sjq.ajax({
			url: quikViewUrl,
			success: function(html){
				LEGO.modal.openModal(null, {
					name:LEGO.modal.quickView,
					source:html
				});

				sjq('#shopModalDialog #addToCart').click(function(event){
					event.preventDefault();
					LEGO.modal.close();
					LEGO.miniBag.addToCart(event.currentTarget);
				});

				sjq('#addToCartNoSku').bind('click', function(event){
					//Note: alerts warning to user (this is not debug code)
					alert(LEGO.selectorMessage);
				});

				sjq('#addToCartMultiSkuQuickView').bind('click', function(event){
					window.location.href= LEGO.targetMultiSkuProduct;
				});

				//product code is embedded within the quick view page fragment
				//shuld consider refactoring this as its quite a fragile relationship
				var productCode = LEGO.productCode;
				LEGO.scene7.createQuickView('product-quickview', productCode);
			},
			error: function(jqXHR, textStatus, errorThrown){
				throw new Error ("LEGO.scene7.openProductQuickView:\nError loading async modal:\njqXHR: " + jqXHR + "\ntextStatus: " + textStatus + "\nerrorThrown: " + errorThrown);
			},
			dataType: 'html'
		});
	},

	//creates the scene7 flash component - flyout zoom widget, used in the Product Details Page
	createZoomView: function(containerId, productCode){
		var asset = 'LEGO/' + productCode + '_is';
		var flashvars = {
			serverurl: LEGO.s7mediaServer + 'image',
			asset:asset,
			showVideo:LEGO.scene7Video,
			showSpin:LEGO.scene7Spin,
			zoomTip:LEGO.zoomTipText,
			unZoomTip:LEGO.unZoomTipText,
			viewLargerText:LEGO.viewLargerText,
			viewLargerURL:"LEGO.scene7.openProductViewLarger('" + productCode + "', " + LEGO.scene7Video + ", " + LEGO.scene7Spin + ")",
			showVideoURL:"LEGO.scene7.openProductVideo('" + productCode + "')",
			showSpinURL:"LEGO.scene7.openProduct360('" + productCode + "')",
			iscommand:"op_sharpen%3D1%26resMode%3Dsharp2"
		};
		var params = {
			wmode:'transparent',
			allowScriptAccess:"always",
			allowFullScreen:"false",
			scale:"noscale",
			salign:"lt"
		};
		var attributes = {
			name:containerId //name must match id or flyout zoom doesnt work
		};

		swfobject.embedSWF(LEGO.s7mediaServer + 'content/LEGO/flFlyoutZoomViewer_LEGO',
			containerId, "596", "554", "10.0.0","expressInstall.swf", flashvars, params, attributes);

		sjq("img#"+containerId).fadeIn(2000); // If swfobject hasn't replaced the stock image, then show the image
	},

	//creates the scene7 flash component - quick view, used in faceted nav pages
	createQuickView: function(containerId, productCode){
		var asset = 'LEGO/' + productCode + '_is';
		var flashvars = {
			serverurl:LEGO.s7mediaServer + "image",
			asset:asset,
			viewLargerText:LEGO.viewLargerText,
			viewLargerURL:"LEGO.scene7.openProductViewLarger('" + productCode + "', " + LEGO.scene7Video + ", " + LEGO.scene7Spin + ")",
			iscommand:"op_sharpen%3D1%26resMode%3Dsharp2"
		};
		var params = {
			wmode:'transparent',
			allowScriptAccess:"always",
			allowFullScreen:"false",
			scale:"noscale",
			salign:"lt"
		};
		var attributes = {
			name:containerId //name MUST match id or flyout zoom doesnt work
		};

		swfobject.embedSWF(LEGO.s7mediaServer + "content/LEGO/QuickViewViewer_LEGO",
			containerId, '335', '350', "10.0.0","expressInstall.swf", flashvars, params, attributes);

		sjq("img#"+containerId).fadeIn(2000); // If swfobject hasn't replaced the stock image, then show the image
	},

	//creates the scene7 flash component - 360 viewer
	create360View:function(containerId, productCode){
		var asset = 'LEGO/' + productCode + '_ss';
		var flashvars = {
			serverurl:LEGO.s7mediaServer + 'image',
			asset:asset
		};
		var params = {
			allowScriptAccess:"always",
			allowFullScreen:"false",
			scale:"noscale",
			salign:"lt",
			bgcolor:"#ffffff"
		};
		var attributes = {};

		swfobject.embedSWF(LEGO.s7mediaServer + "content/LEGO/flSpinSlider_LEGOa",
				containerId, "600", "500", "10.0.0","expressInstall.swf", flashvars, params, attributes);

		sjq("img#"+containerId).fadeIn(2000); // If swfobject hasn't replaced the stock image, then show the image
	},

	//creates the scene7 flash component - video player
	createVideoView:function(containerId, productCode){
		var flashvars = {};
		var params = {
			allowScriptAccess:"always",
			allowFullScreen:"true",
			scale:"noscale",
			salign:"lt",
			bgcolor:"#ffffff"
		};
		var attributes = {
			name:containerId
		};
		var movieProperties = [
		    "contentroot=" + LEGO.s7mediaServer + "skins/",
		    "instanceName=" + containerId,
		    "asset=LEGO/Products/" + productCode + "/" + productCode + "_v1.flv",
		    "config=LEGO/Video_LEGO",
		    "videoserverurl=rtmp://s7strmn2.scene7.com/s7strmn2/e2/",
		    "vidServerUrl=/e2/",
		    "serverUrl=" + LEGO.s7mediaServer + "image/"
		];
		var movieUrl = LEGO.s7mediaServer + "content/LEGO/GenericVideo_LEGO?&" + movieProperties.join('&');
		swfobject.embedSWF(movieUrl, containerId, "480", "270", "10.0.0","expressInstall.swf", flashvars, params, attributes);

		sjq("img#"+containerId).fadeIn(2000); // If swfobject hasn't replaced the stock image, then show the image
	},

	//creates the scene7 flash component - large view
	createLargeView:function(containerId, productCode, scene7Video, scene7Spin){
		var asset = 'LEGO/' + productCode + '_is';
		var flashvars = {
			serverurl:LEGO.s7mediaServer + 'image',
			asset:asset,
			showVideo:scene7Video,
			showSpin:scene7Spin,
			showVideoURL:"LEGO.scene7.openProductVideo('" + productCode + "')",
			showSpinURL:"LEGO.scene7.openProduct360('" + productCode + "')",
			iscommand:"op_sharpen%3D1%26resMode%3Dsharp2"
		};
		var params = {
			quality:'high',
			wmode:'opaque',
			allowScriptAccess:"always",
			allowFullScreen:"false",
			scale:"noscale",
			salign:"lt",
			bgcolor:"#ffffff"
		};
		var attributes = {};

		swfobject.embedSWF(LEGO.s7mediaServer + "content/LEGO/ViewLargerViewer_LEGO",
				containerId, "800", "700", "10.0.0","expressInstall.swf", flashvars, params, attributes);

		sjq("img#"+containerId).fadeIn(2000); // If swfobject hasn't replaced the stock image, then show the image
	}
};

