// Define a global namespace object
var BuyNZ = window.BuyNZ || {};

//var baseUrl = "http://localhost:1409/buynz"
var baseUrl = "http://www.getnzmade.net"
var imgBaseUrl = baseUrl + "/library/img";

/********************************************************************
 Class: TextareaExpander
*********************************************************************/
BuyNZ.TextareaExpander = function()
{
	var _minIcon = imgBaseUrl + '/misc/button_minimize.gif';
	var _maxIcon = imgBaseUrl + '/misc/button_maximize.gif';
	var _multiplier = 4;

	return {
		//---------------------------------------------------------------
		setup : function(textarea)
		{
			// Define custom attribute (default number of rows)
			$(textarea).attr('defaultRows', textarea.rows);

			// Create link and insert after textarea
			var expandLink = $('<a />')
				.attr({href: '#', title: "Maximize/minimize the size of the text box", tabindex: -1})
				.addClass('img')
				.insertAfter($(textarea));

			// Create image and append to link
			var expandImg = $('<img />')
				.attr({id: 'button_' + textarea.id, alt: "Maximize/minimize", src: _maxIcon, width: 9, height: 9, tabindex: -1})
				.addClass('expandButton').bind('click', BuyNZ.TextareaExpander.apply)
				.appendTo(expandLink);
		},

		//---------------------------------------------------------------
		apply : function(e)
		{
			e.preventDefault();

			var textarea = $(this).parent().prev('textarea.expand');

			if(textarea.attr('rows') == textarea.attr('defaultRows')) {
				textarea.attr('rows', textarea.attr('rows') * _multiplier);
				$(this).attr('src', _minIcon);
			}
			else {
				textarea.attr('rows', textarea.attr('defaultRows'));
				$(this).attr('src', _maxIcon);
			}
		}
	}
}();

/********************************************************************
 Class: Page
*********************************************************************/
BuyNZ.Page = function()
{
	return {
		//---------------------------------------------------------------
		init : function(e)
		{
			// Add 'expand' button to associated textareas
			$('textarea.expand').each(function(){ BuyNZ.TextareaExpander.setup(this); });
		}
	}
}();

/********************************************************************
 Class: Button
*********************************************************************/
BuyNZ.Button = function()
{
	//-----------------------------------------------------------------
	function showHoverImage(e)
	{
		var imgSrc = $(this).attr('src' ).replace(".gif", "Hover.gif");
		$(this).attr('src', imgSrc );
	}
	
	//-----------------------------------------------------------------
	function resetImage(e)
	{
		var imgSrc = $(this).attr('src' ).replace("Hover.gif", ".gif");
		$(this).attr('src', imgSrc );
	}

	return {
		//---------------------------------------------------------------
		init : function(e)
		{
			$('.imageButton').bind('mouseover', showHoverImage).bind( 'mouseout', resetImage );
		}
	}
}();

/********************************************************************
 Class: Random Adv Banner
*********************************************************************/
BuyNZ.RandomAdvBanner = function()
{
	//-----------------------------------------------------------------
	function displayBanner( response )
	{
		var xmlDoc = response.responseXML;
		var imgSrc = getAttrValue( xmlDoc, 'imgSrc' );
		var productName = getAttrValue( xmlDoc, 'productName' );
		var productLink = getAttrValue( xmlDoc, 'productLink' );
		var briefDesc = getAttrValue( xmlDoc, 'briefDesc' );
				
		if(briefDesc != null)
		{
			if(briefDesc.length > 175)
				briefDesc = briefDesc.substring(0,175) + "...";
		}
		
		$('.randomAdvBannerWrapper').fadeOut( "slow",
			function(){
				$('.randomAdvBannerImage').attr( 'src', imgSrc );
				$('#randomAdvBannerName').html( productName );
				$('#randomAdvBannerDesc').html( briefDesc );
				$('#randomAdvBannerLink').attr('href', productLink );
				$('.randomAdvBannerWrapper').fadeIn("slow");
			});
	}
	
	//-----------------------------------------------------------------
	function getAttrValue(xmlDoc, attribute)
	{
		var global = xmlDoc.getElementsByTagName('global');

		return global.length > 0
			? global[0].getAttribute(attribute)
			: '';
	}
	
	//-----------------------------------------------------------------
	function getRandomAdvBanner(e)
	{
		$.ajax( {
			type:'GET',
			complete: displayBanner,
			url: baseUrl + '/Utility/Async/RandomAdvBanner.aspx'
			});
	}

	return {
		//---------------------------------------------------------------
		init : function(e)
		{
			setInterval( getRandomAdvBanner, 5000);	
		}
	}
}();

/********************************************************************
 Class: Product Image Display
*********************************************************************/
BuyNZ.ProductImage = function()
{	
	//-----------------------------------------------------------------
	function displayLargeImage(e)
	{
		var largeImgPath = $(this).attr( 'src' ).replace("thumb", "large");
		$('td.largeImageSpace > img').attr( 'src', largeImgPath );
	}

	return {
		//---------------------------------------------------------------
		init : function(e)
		{
			$('td.thumbSpace > img' ).bind( 'click', displayLargeImage );
		}
	}
}();
