/*
 * All java script logic for the Demandware reference application.
 *
 * The code relies on the prototype.js and scriptaculous.js libraries to
 * be also loaded.
 */

/*
 * Register more initializations here
 */
window.onload = function()
{
}

function preloadImg(imgSrc)
{
	var img = new Image;
	img.src = imgSrc;
}

function ajaxPopup(popupURL)
{
	Dialog.alert({url: popupURL}, {windowParameters: {className: 'alphacube'}, okLabel: 'Close'}); 
	return false;
}

function textPopup(popupText)
{
	Dialog.alert(popupText, {windowParameters: {className: 'alphacube'}, okLabel: 'Close'}); 
	return false;
}

/*
	Opens a new window with the provided url and dimension. Used
	for Scene7 and other situations.

	@param url the url to open
	@param width the window width
	@param height the window height
*/
function openPopup( url, width, height )
{
	if (url != null)
	{
		if (width != null && height != null)
		{
			window.open(url, "", "width=" + width +", height=" + height +", scrollbars=yes, resizable=yes");
		}
		else
		{
			window.open(url, "", "scrollbars=yes, resizable=yes");
		}
	}
}
	
	function openPopup1( url, width, height )
	{
		if (url != null)
		{
			if (width != null && height != null)
			{
				window.open(url,'','width=' + width +', height=' + height +',left=450,top=400,resizable=0');
			}
			else
			{
				window.open(url, "", "scrollbars=yes, resizable=no");
			}
		}
	}

	

/*
 * Support for the compare window
 */
ProductCompare = {
	openPopup: function( url ) {
		window.open(
			url,
			'product_compare',
			'width=800,height=600,scrollbars=yes,resizable=yes',
			true /* replace history in the popped up window */
		).focus();
	}
}


/*
 * Functionality around the mini cart.
 */
var MiniCart = {
	// flag, whether cart is open or not
	state: 0,

	// during page loading, the Demandware URL is stored here
	url: '',

	// timer for automatic close of cart item view
	timer: null,

	cartAdd: function( form, progressImageSrc )
	{
		// get the data of the form as serialized string
		var postdata = Form.serialize(form);
	
		// get button reference
		var addButtons = Form.getInputs(form, 'image', 'add');
	
		// the button to update
		var addButton = null;
		
		// disable form
		Form.disable(form);

		// it is an array of buttons, but we need only one all
		// other combinations are strange so far
		if (addButtons.length == 1)
		{
			addButton = addButtons[0];	
		}
	
		var previousImageSrc = null;
	
		// show progress indicator
		if (addButton != null)
		{
			previousImageSrc = addButton.src;
			addButton.src = progressImageSrc;
		}

		var handlerFunc = function(req)
		{
			// hide progress indicator
			if (addButton != null)
			{
				addButton.src = previousImageSrc;
			}
			Form.enable(form);

			// Get the position before the innerHTML is set. After
			// the set the elements have no coordinates. A display
			// refresh from the browser is necessary.
			var minicarttotal = $('minicarttotal');
			var pos = Position.cumulativeOffset(minicarttotal);
			var dim = Element.getDimensions(minicarttotal);

			// replace the content
			var minicart = $('minicart');
			minicart.innerHTML = req.responseText;

			if( MiniCart.suppressSlideDown && MiniCart.suppressSlideDown() )
			{
				// do nothing
				// the hook 'MiniCart.suppressSlideDown()' should have done the refresh
			}
			else
			{
				// show the item				
				var minicartcontent = $('minicartcontent');
				minicartcontent.style.width = dim.width + 'px';	
				minicartcontent.scrollTo();
				new Effect.SlideDown('minicartcontent');

				// after a time out automatically close it
				MiniCart.timer = setTimeout( 'MiniCart.cartClose()', 6000 );
			}
		}

		var errFunc = function(req)
		{
			// hide progress indicator
			if (addButton != null)
			{
				addButton.src = previousImageSrc;
			}
			Form.enable(form);
		}

		// close a product QuickView
		// if ( QuickView ) QuickView.closeQuickView();

		// cloes a previous mini cart
		MiniCart.cartClose();

		
		// add the product
		new Ajax.Request( MiniCart.url, {method:'post', postBody:postdata, onSuccess:handlerFunc, onFailure:errFunc});
	},

	cartClose: function()
	{
		if ( MiniCart.timer != null )
		{
			clearTimeout( MiniCart.timer );
			MiniCart.timer = null;
			Effect.SlideUp('minicartcontent');
		}
	},

	// hook which can be replaced by individual pages/page types (e.g. cart)
	suppressSlideDown: function()
	{
		return false;
	}
}
/*
 * Functionality from rounded CSS divs.
 */
var makeRound = function(){var els = document.getElementsByTagName('div'); for(var i=0; el=els[i]; i++) if(el.className.indexOf('round')>-1 && el.firstChild && el.firstChild.className!='t') el.innerHTML = '<b class="t"><b class="r"></b></b><div class="c"><b class="br"></b>'+el.innerHTML+'<b class="br"></b></div><b class="b"><b class="r"><!----></b></b>';}

	window.onload = makeRound;

/*
 * Dynamically add CSS styles to <head> using javascript function
 * http://www.tomhoppe.com/2008/03/dynamically-adding-css-through.html
 */	
function addCss(cssCode) {
var styleElement = document.createElement("style");
  styleElement.type = "text/css";
  if (styleElement.styleSheet) {
    styleElement.styleSheet.cssText = cssCode;
  } else {
    styleElement.appendChild(document.createTextNode(cssCode));
  }
  document.getElementsByTagName("head")[0].appendChild(styleElement);
}
function closeBtn(){
	jQuery('.output').html(''); 
	jQuery('.output').css('display','none');
	jQuery('#bgPopup').css('display','none');
	jQuery('body').css('overflow-y','auto');
}
function ReinitializeAddThis(){
	if (window.addthis){

	window.addthis.ost = 0;
	window.addthis.ready();
	}
	}
jQuery(window).load(function() {
	if (jQuery.browser.msie) {
		
	setInterval(function() {
	jQuery('.quickviewbutton').each(function(index) {
	var quickLook = jQuery(this).parent().parent().parent().find('.pr-snippet .pr-snippet-review-count').html();
	//alert(quickLook);
	if(quickLook!=''){
		jQuery(this).find('a.popupClick').addClass('viewButton');
		jQuery(this).find('.disable').addClass('disNone');
	}
	});
	}, 5000);
	}           
	else {
		jQuery('.quickviewbutton').each(function(index) {
		var quickLook = jQuery(this).parent().parent().parent().find('.pr-snippet .pr-snippet-review-count').html();
		//alert(quickLook);
		if(quickLook!=''){
			jQuery(this).find('a.popupClick').addClass('viewButton');
			jQuery(this).find('.disable').addClass('disNone');
		}
		});
		}
	jQuery("<div id='bgPopup'></div>").appendTo(jQuery('body'));
	var maskHeight = jQuery(document).height();
	var maskWidth = jQuery(window).width();
	if (jQuery.browser.msie) {
			setInterval(function() {
	        	jQuery('.quickviewbutton').each(function(index) {
	        			var getURL = jQuery(this).find('a').attr('href');
	        			var getHtml = jQuery(this).parent().parent().parent().find('.pr-snippet .pr-snippet-wrapper').html();
	        			var getHtmlRating = jQuery(this).parent().parent().parent().find('.pr-snippet .pr-snippet-review-count').html();
	        			var revLink = jQuery(this).parent().parent().parent().find('.pr-snippet .pr-snippet-write-first-review').html();
	        			var noReview = "<div style='display: block; clear: left; position: relative ! important; width: 710px; padding: 20px; margin: 0px auto 10px 10px; height: 310px; overflow: auto; border-right: 1px solid rgb(204, 204, 204); border-width: 5px 1px 1px; border-style: solid; border-color: rgb(191, 78, 0) rgb(204, 204, 204) rgb(204, 204, 204);display:none;' class='user_reviews' id='userreviews'><div class='clear'></div><br /><div class='pr-review-engine' id='pr-review-engine-22257'><div id='pr-header-22257' class='pr-header'><div class='pr-snapshot'><a name='ReviewHeader'></a><div class='pr-snapshot-head'><div class='pr-snapshot-head-wrapper'><p class='pr-snapshot-title'>REVIEW SNAPSHOT&reg;</p><a onclick='POWERREVIEWS.common.showSmallPopup('http://www.powerreviews.com/legal/index_en_US.html', 410, 420); return false;' class='pr-snapshot-cobrand' href='#'>by PowerReviews</a></div></div><div class='pr-clear'></div><div class='pr-snapshot-body'><div class='pr-snapshot-body-wrapper'><div style='' class='pr-snapshot-footer sameline' id='pr-snapshot-footer-22257'><p class='pr-snapshot-no-ratings'>Not yet rated. " + revLink + "</p></div></div></div></div></div><div class='pr-contents' id='pr-contents-22257'></div></div><div class='clear'>&nbsp;</div></div>";
	        			jQuery(this).find('a.popupClick').click(function(e) {
	        				jQuery(this).parent().find('.output').fadeIn(100);
	        				jQuery(this).parent().find('.output').load(getURL, function() {
	        					ReinitializeAddThis(); 
	        					jQuery(this).parent().find('#topsmallreviews').replaceWith(getHtml);
	        					jQuery(window).scrollTop(0);
	        					jQuery(this).parent().find('#displayratings span').replaceWith(getHtmlRating);
	        					jQuery(this).parent().find('#closeBtn').replaceWith('<a class="tick" href="javascript:closeBtn();"></a>');
	        					if(getHtmlRating=='(No reviews)'){
	        						jQuery(this).parent().find('#userreviews').replaceWith(noReview);
	        					}
	        					var addthis_config = {
	        							    ui_click: false /* normally would disable mouseover behavior */
	        							    
	        							}
	        						var tbx = document.getElementById("toolbox"),
	        					//svcs = {expanded: 'share', facebook: '', myspace: '', google: '', twitter: ''};
	        						svcs1 = {compact: 'Share'};
	        						svcs2 = {separator: '|'};
	        						svcs3 = {facebook: ''};
	        						svcs4 = {myspace: ''};
	        						svcs5 = {google: ''};
	        						svcs6 = {twitter: ''};

	        					for (var s in svcs1) {
	        					    tbx.innerHTML += '<a class="addthis_button_'+s+'">'+svcs1[s]+'</a>';
	        					}
	        					for (var s in svcs2) {
	        					    tbx.innerHTML += '<span class="addthis_separator">|</span>';
	        					}
	        					for (var s in svcs3) {
	        					    tbx.innerHTML += '<a class="addthis_button_'+s+'">'+svcs3[s]+'</a>';
	        					}
	        					for (var s in svcs4) {
	        					    tbx.innerHTML += '<a class="addthis_button_'+s+'">'+svcs4[s]+'</a>';
	        					}
	        					for (var s in svcs5) {
	        					    tbx.innerHTML += '<a class="addthis_button_'+s+'">'+svcs5[s]+'</a>';
	        					}
	        					for (var s in svcs6) {
	        					    tbx.innerHTML += '<a class="addthis_button_'+s+'">'+svcs6[s]+'</a>';
	        					}
	        					addthis.toolbox("#toolbox");
	        					});
	        				jQuery('body').css('overflow','hidden');
	        				jQuery('#bgPopup').css({'width':maskWidth,'height':maskHeight});
	        				jQuery('#bgPopup').css('display','block');
	        				return false;
	        	    		});
	        		});
	        	}, 5000);
	            }
	        else {
	        	jQuery('.quickviewbutton').each(function(index) {
	        		var getURL = jQuery(this).find('a').attr('href');
	        		var getHtml = jQuery(this).parent().parent().parent().find('.pr-snippet .pr-snippet-wrapper').html();
	        		var getHtmlRating = jQuery(this).parent().parent().parent().find('.pr-snippet .pr-snippet-review-count').html();
	        		var revLink = jQuery(this).parent().parent().parent().find('.pr-snippet .pr-snippet-write-first-review').html();
	        		var noReview = "<div style='display: block; clear: left; position: relative ! important; width: 710px; padding: 20px; margin: 0px auto 10px 10px; height: 310px; overflow: auto; border-right: 1px solid rgb(204, 204, 204); border-width: 5px 1px 1px; border-style: solid; border-color: rgb(191, 78, 0) rgb(204, 204, 204) rgb(204, 204, 204);display:none;' class='user_reviews' id='userreviews'><div class='clear'></div><br /><div class='pr-review-engine' id='pr-review-engine-22257'><div id='pr-header-22257' class='pr-header'><div class='pr-snapshot'><a name='ReviewHeader'></a><div class='pr-snapshot-head'><div class='pr-snapshot-head-wrapper'><p class='pr-snapshot-title'>REVIEW SNAPSHOT&reg;</p><a onclick='POWERREVIEWS.common.showSmallPopup('http://www.powerreviews.com/legal/index_en_US.html', 410, 420); return false;' class='pr-snapshot-cobrand' href='#'>by PowerReviews</a></div></div><div class='pr-clear'></div><div class='pr-snapshot-body'><div class='pr-snapshot-body-wrapper'><div style='' class='pr-snapshot-footer sameline' id='pr-snapshot-footer-22257'><p class='pr-snapshot-no-ratings'>Not yet rated. " + revLink + "</p></div></div></div></div></div><div class='pr-contents' id='pr-contents-22257'></div></div><div class='clear'>&nbsp;</div></div>";
	        		jQuery(this).find('a.popupClick').click(function(e) {
	        			jQuery(this).parent().find('.output').fadeIn(100);
	        			jQuery(this).parent().find('.output').load(getURL, function() {
	        				jQuery('div[id^="ebookoptions"]').addClass('subMenuHolder');
	        				jQuery(this).parent().find('#topsmallreviews').replaceWith(getHtml);
	        				jQuery(window).scrollTop(0);
	        				jQuery(this).parent().find('#displayratings span').replaceWith(getHtmlRating);
	        				jQuery(this).parent().find('#closeBtn').replaceWith('<a class="tick" href="javascript:closeBtn();"></a>');
	        				if(getHtmlRating=='(No reviews)'){
	        					jQuery(this).parent().find('#userreviews').replaceWith(noReview);
	        				}
	        				jQuery.getScript('http://s7.addthis.com/js/250/addthis_widget.js#username=rdcatalog', function(data, textStatus){
	        					var addthis_config = {
	        						    ui_click: false /* normally would disable mouseover behavior */
	        						}
	        					var tbx = document.getElementById("toolbox"),
	        				//svcs = {expanded: 'share', facebook: '', myspace: '', google: '', twitter: ''};
	        					svcs1 = {compact: 'Share'};
	        					svcs2 = {separator: '|'};
	        					svcs3 = {facebook: ''};
	        					svcs4 = {myspace: ''};
	        					svcs5 = {google: ''};
	        					svcs6 = {twitter: ''};

	        				for (var s in svcs1) {
	        				    tbx.innerHTML += '<a class="addthis_button_'+s+'">'+svcs1[s]+'</a>';
	        				}
	        				for (var s in svcs2) {
	        				    tbx.innerHTML += '<span class="addthis_separator">|</span>';
	        				}
	        				for (var s in svcs3) {
	        				    tbx.innerHTML += '<a class="addthis_button_'+s+'">'+svcs3[s]+'</a>';
	        				}
	        				for (var s in svcs4) {
	        				    tbx.innerHTML += '<a class="addthis_button_'+s+'">'+svcs4[s]+'</a>';
	        				}
	        				for (var s in svcs5) {
	        				    tbx.innerHTML += '<a class="addthis_button_'+s+'">'+svcs5[s]+'</a>';
	        				}
	        				for (var s in svcs6) {
	        				    tbx.innerHTML += '<a class="addthis_button_'+s+'">'+svcs6[s]+'</a>';
	        				}
	        				addthis.toolbox("#toolbox");
	        					});
	        				});
	        			jQuery('body').css('overflow','hidden');
	        			jQuery('#bgPopup').css({'width':maskWidth,'height':maskHeight});
	        			jQuery('#bgPopup').css('display','block');
	        			return false;
	            		});
	        	});
	        }
	jQuery('.ebooks').each(function(index) {
		jQuery(this).hover(
			  function () {
				  jQuery(this).find('div').css('display','block');
			  }, 
			  function () {
				  jQuery(this).find('div').css('display','none');
			  }
			);
	});
});
