
var sProductSelectOverlayText = null;

/**
 * Productselect function
 *
 * Init
 *
 */
function productSelect_init( _sProductSelectOverlayText )
{

	sProductSelectOverlayText = _sProductSelectOverlayText;

} // end function productSelect_init

/**
 * Productselect function
 *
 * If a select field is changed (onchange event) then this function is called.
 *
 */
function productSelect_onchangeSelect(	_iFilterId,
										_oSelect )
{
	var oForm = document.getElementById('productSelectorForm' + _iFilterId),
		oContentDiv,
		oOverlayDiv;

	if( !oForm )
	{
		return;
	}

	// Add "productdetailOverlay" div to content div
	oContentDiv = document.getElementById('middleContent')

	if( oContentDiv )
	{
		//alert(oContentDiv.offsetHeight)

		oOverlayDiv = document.createElement('div');
		oOverlayDiv.className = 'productdetailOverlay';
		oOverlayDiv.style.width = oContentDiv.offsetWidth + 'px';
		oOverlayDiv.style.height = oContentDiv.offsetHeight + 'px';

		oOverlayDiv.innerHTML = '<div class="overlayBg" style="height:' + oContentDiv.offsetHeight + 'px;"></div>' +
								'<div class="overlayImage"></div>' +
								'<p>' + sProductSelectOverlayText + '</p>';

		oContentDiv.appendChild(oOverlayDiv);

		var tmp = oContentDiv.getElementsByTagName('select'), i, m;

		for( i = 0, m = tmp.length; i < m; ++i )
		{
			if( !tmp[i].options[ tmp[i].selectedIndex ].value )
			{
				tmp[i].disabled = 'disabled';
			}
		}

	}


	// Submit form
	setTimeout(function(){productSelect_submitForm('productSelectorForm' + _iFilterId)}, 500);

	return false;

} // end function productSelect_onchangeSelect

function productSelect_submitForm( sFormId )
{
	var oForm = document.getElementById(sFormId);
	oForm.submit();

} // end function productSelect_submitForm


function multiProductOrder_init()
{
	var i, m,
		oDivProductListProduct = document.getElementById('shop_productlistproduct'),

		sOrderProductId = multiProductOrder_getQueryVariable('shop[orderproductid]'),
		aOrderProductId = multiProductOrder_explode(sOrderProductId),

		iProductId,
		aInput = oDivProductListProduct.getElementsByTagName('input');

	for( i = 0, m = aInput.length; i < m; ++i )
	{
		if( !aInput[i].name
			|| !/addcart/.test(aInput[i].name) )
		{
			continue;
		}

		// Update order link href's
		multiProductOrder_updateOrderLinks(aOrderProductId);

		// Update pagina nav links
		multiProductOrder_updateNavLinks(aOrderProductId);

		// Set value of quantity textfield
		if( aInput[i].nextSibling )
		{
			iProductId = parseInt(aInput[i].nextSibling.value);

			if( aOrderProductId[iProductId] )
			{
				aInput[i].value = aOrderProductId[iProductId];
			}
		}

		// Onchange event
		aInput[i].onkeyup = function(e) {

			var i, m,
				iProductId = parseInt(this.nextSibling.value),
				iQuantity = parseInt(this.value),
				aHash = {},
				sHref = document.getElementById('multiOrderLink0').href,
				sQsValue = multiProductOrder_getQueryVariable('shop[orderproductid]', sHref);

			if( !iProductId
				|| isNaN(iProductId) )
			{
				return;
			}

			if( isNaN(iQuantity) )
			{
				iQuantity = 1;
			}

			aHash = multiProductOrder_explode(sQsValue);
			aHash[ iProductId ] = iQuantity;

			// Set order link href's
			multiProductOrder_updateOrderLinks(aHash);

			// Set page nav links href's
			multiProductOrder_updateNavLinks(aHash);

			this.parentNode.onsubmit = function() { return false; };

		} // end onchange function

		aInput[i].onkeydown = function(e) {
			if (!e) var e = window.event;

			if ( e.keyCode == 13 )
			{
				location.href = document.getElementById('multiOrderLink0').href;
				return false;
			}
		}

	} // end for
}

// Updates the order links
function multiProductOrder_updateOrderLinks( aOrderProductId )
{
	var sHref = document.getElementById('multiOrderLink0').href;

	if( sHref.indexOf('&shop[orderproductid]=') != -1 )
	{
		sHref = sHref.replace(/&shop\[orderproductid]=\d+,\d+(?:;\d+,\d+)*/, '');
	}

	sTmp = multiProductOrder_implode(aOrderProductId);
	if( sTmp )
	{
		sHref +=	'&shop[orderproductid]=' +
					sTmp;
	}

	document.getElementById('multiOrderLink0').href = sHref;
	document.getElementById('multiOrderLink1').href = document.getElementById('multiOrderLink0').href;
}

// Updates navigation links
function multiProductOrder_updateNavLinks( aOrderProductId )
{
	var aLinks = document.getElementById('shop_productlist').getElementsByTagName('a'),
		sTmp;

	for( i = 0, m = aLinks.length; i < m; ++i )
	{
		if( aLinks[i].href
			&& /&shop\[pos]=/.test(aLinks[i].href) )
		{
			sHref = aLinks[i].href;

			if( sHref.indexOf('&shop[orderproductid]=') != -1 )
			{
				sHref = sHref.replace(/&shop\[orderproductid]=\d+,\d+(?:;\d+,\d+)*/, '');
			}

			sTmp = multiProductOrder_implode(aOrderProductId);
			if( sTmp )
			{
				sHref +=	'&shop[orderproductid]=' +
							sTmp;
			}
			
			aLinks[i].href = sHref;
		}
	}
}

// 123,1			=> [ 123 => 1 ]
// 123,1;124,2		=> [ 123 => 1 , 124 => 2 ]
function multiProductOrder_explode( _sString )
{
	var i, m,
		hResult = {},
		aParts = [],
		aTmp = [];

	if( !_sString )
	{
		return hResult;
	}

	aParts = _sString.split(';');

	for( i = 0, m = aParts.length; i < m; ++i )
	{
		if( aParts[i].indexOf(',') != -1 )
		{
			aTmp = aParts[i].split(',');
			hResult[ aTmp[0] ] = aTmp[1];
		}
	}

	return hResult;
}

// { 123 : 1 }						=> 123,1
// { 123 : 1 , 124 : 2 }			=> 123,1;124,2
// { 123 : 1 , 124 : 2 , 125 : 0 }	=> 123,1;124,2
function multiProductOrder_implode( _hHash )
{
	var aResult = [];

	for( k in _hHash )
	{
		if( _hHash[k] )
		{
			aResult.push(k + ',' + _hHash[k]);
		}
	}

	return aResult.join(';');
}

function multiProductOrder_getQueryVariable(	variable,
												myQueryString )
{
	if( myQueryString
		&& myQueryString.indexOf('?') != -1 )
	{
		var tmp = myQueryString.split('?');
		myQueryString = tmp[ tmp.length - 1 ];
	}

	var query = ( myQueryString ? myQueryString : window.location.search.substring(1) );
	var vars = query.split("&");

	for (var i=0;i<vars.length;i++) {
		var pair = vars[i].split("=");

		if (pair[0] == variable) {
			return pair[1];
		}
	}

	return '';
}

function relatedProductOrder_doOrder() {
	var relatedProducts = document.getElementsByTagName('INPUT');
	var checkedProducts = new Array();
	var t = 0;

	for ( var i=0; i<relatedProducts.length; i++ )
	{
		if ( relatedProducts[i].tagName == 'INPUT' && relatedProducts[i].name.indexOf('related_product')!=-1 )
		{
			if ( relatedProducts[i].checked )
			{
				checkedProducts[t++] = relatedProducts[i].value;
			}
		}
	}

	if ( checkedProducts.length == 0 )
		return false;

	document.getElementById('hidden_related_product').value = checkedProducts.toString();
	document.order_form.submit();
}

