/**
 *	@file		prdfwc_shops_items.js
 *
 *	@copyright	Copyright(C) 2008 Pantacle, All Rights Reserved.
 *	@copyright	Copyright(C) 2008 Kawanagare workshop, All Rights Reserved.
 */

var g_pec_num_specifications = 4;

var g_pec_item_specs = [];
var g_pec_item_elems = [];

Event.observe( document, 'dom:loaded', function(){

	var elems = { 'ShopsAddCartsOrderNum':	'ShopsDoAddCart',
				  'ShopsAddCartsOrderNum0':	'ShopsDoAddCart0' };

	$H( elems ).each( function( pair ) {
		var elem = $(pair.key);
		if ( elem )
		{
			Event.observe( elem, 'focus', _prdfwc_shops_add_carts_focus_order_nums.bindAsEventListener( elem ), false );
			Event.observe( elem, 'blur', _prdfwc_shops_add_carts_blur_order_nums.bindAsEventListener( elem ), false );
			Event.observe( elem, 'change', _prdfwc_shops_add_carts_change_order_nums.bindAsEventListener( elem ), false );
			var elem = $(pair.value);
			Event.observe( elem, 'click', _prdfwc_shops_add_carts_exec.bindAsEventListener( elem ), false );
		}
	});

	for( var i = 1;; i++ )
	{
		var elem = $('ShopsAddCartsOrderNum' + i);
		if ( ! elem )
		{
			break;
		}

		Event.observe( elem, 'focus', _prdfwc_shops_add_carts_focus_order_nums.bindAsEventListener( elem ), false );
		Event.observe( elem, 'blur', _prdfwc_shops_add_carts_blur_order_nums.bindAsEventListener( elem ), false );
		Event.observe( elem, 'change', _prdfwc_shops_add_carts_change_order_nums.bindAsEventListener( elem ), false );
		var elem = $('ShopsDoAddCart' + i);
		Event.observe( elem, 'click', _prdfwc_shops_add_carts_exec.bindAsEventListener( elem ), false );
	}

	var elem = $('ShopsAddCartsOrderNum');
	if ( ! elem )
	{
		elem = $('ShopsAddCartsOrderNum0');
	}
	if ( ! elem )
	{
		elem = $('ShopsAddCartsOrderNum1');
	}

	if ( elem )
	{
		_prdfwc_shops_add_carts_focus_order_nums_proc( elem );
	}


	for( var i = 1; i <= g_pec_num_specifications; i++ )
	{
		g_pec_item_specs[i] = 0;
		g_pec_item_elems[i] = $('ShopsAddCartsSpecs' + i);
		if ( g_pec_item_elems[i] )
		{
			Event.observe( g_pec_item_elems[i], 'change', _prdfwc_shops_add_carts_sel_specifications.bindAsEventListener( g_pec_item_elems[i] ), false );
		}
	}

	if ( g_pec_item_elems[1] )
	{
		var i = 0;
		$H( specs_sels[1] ).each( function( pair ) {
			g_pec_item_elems[1].length++;
			g_pec_item_elems[1].options[i].value = pair.key;
			g_pec_item_elems[1].options[i].text  = pair.value;
			i++;
		});

		_prdfwc_shops_add_carts_sel_specifications_proc( g_pec_item_elems[1] );
	}

});

//
var g_ShopsAddCartForm_submit = false;

function _prdfwc_shops_add_carts_exec( event )
{
	if ( ! g_ShopsAddCartForm_submit )
	{
		var iteration = this.getAttribute('iteration');
		if ( iteration )
		{
			var selected = specs_values2[ iteration ];
			if ( selected )
			{
				$('ShopsAddCartsItemId').value = selected['id'];
				$('ShopsAddCartsItemOrderNum').value = $('ShopsAddCartsOrderNum' + iteration).value;
			}
		}

		$('ShopsAddCartForm').submit();
		g_ShopsAddCartForm_submit = true;
	}
	Event.stop(event);
}

//
var g_watch_timer = null;
var g_order_num_elem = null;

function _prdfwc_shops_add_carts_focus_order_nums()
{
	_prdfwc_shops_add_carts_focus_order_nums_proc( this );

	if ( g_watch_timer )
	{
		window.clearInterval( g_watch_timer );
	}
	g_watch_timer = window.setInterval( function() { return _prdfwc_shops_add_carts_calc_order_amount.apply( this, [] ); }, 500 );
}

function _prdfwc_shops_add_carts_focus_order_nums_proc( elem )
{
	g_order_num_elem = elem;

	var iteration = elem.getAttribute('iteration');
	if ( iteration )
	{
		var selected = specs_values2[ iteration ];
		_prdfwc_shops_add_carts_set_selected_proc( selected );
	}
	else
	{
		var selected = specs_values2[ 0 ];
		_prdfwc_shops_add_carts_set_selected_proc( selected );
	}
}

//
function _prdfwc_shops_add_carts_blur_order_nums()
{
	g_order_num_elem = null;

	if ( g_watch_timer )
	{
		window.clearInterval( g_watch_timer );
		g_watch_timer = null;
	}
}

//
function _prdfwc_shops_add_carts_change_order_nums()
{
	_prdfwc_shops_add_carts_calc_order_amount();
}

//
function _prdfwc_shops_add_carts_calc_order_amount()
{
	if ( g_order_num_elem.value == '' )
	{
		var elem = $('ShopsAddCartsOrderAmount');
		if ( elem )  Element.hide(elem);
		return;
	}

	var order_num = parseInt( g_order_num_elem.value );
	if ( order_num <= 0 )
	{
		order_num = 1;
	}

	g_order_num_elem.value = order_num;
	$('ShopsAddCartsItemOrderNum').value = order_num;

	var elem = $('ShopsAddCartsItemSellingPrice');
	if ( elem )
	{
		var order_amount = String( parseInt( elem.value ) * order_num );
		while( order_amount != ( order_amount = order_amount.replace( /^(\d+)(\d{3})/ , "$1,$2" ) ) ){}

		var elem = $('ShopsAddCartsOrderAmountVal');
		if ( elem )  elem.innerHTML = order_amount;
		var elem = $('ShopsAddCartsOrderAmount');
		if ( elem )  Element.show(elem);
	}
}


//
function _prdfwc_shops_add_carts_sel_specifications()
{
	_prdfwc_shops_add_carts_sel_specifications_proc(this);
}

//
function _prdfwc_shops_add_carts_sel_specifications_proc( elem )
{
	var spec_idx = elem.getAttribute('spec_idx');

	g_pec_item_specs[spec_idx] = elem.value;

	spec_idx++;
	if ( g_pec_item_elems[spec_idx] )
	{
		if ( spec_idx == 2 )
		{
			var sels_hash = $H( specs_sels[2][ g_pec_item_specs[1] ] );
		}
		else if ( spec_idx == 3 )
		{
			var sels_hash = $H( specs_sels[3][ g_pec_item_specs[1] ][ g_pec_item_specs[2] ] );
		}
		else if ( spec_idx == 4 )
		{
			var sels_hash = $H( specs_sels[4][ g_pec_item_specs[1] ][ g_pec_item_specs[2] ][ g_pec_item_specs[3] ] );
		}

		var i = 0;
		g_pec_item_elems[spec_idx].length = 0;
		sels_hash.each( function( pair ) {
			g_pec_item_elems[spec_idx].length++;
			g_pec_item_elems[spec_idx].options[i].value = pair.key;
			g_pec_item_elems[spec_idx].options[i].text  = pair.value;
			i++;
		});

		_prdfwc_shops_add_carts_sel_specifications_proc( g_pec_item_elems[spec_idx] );
	}
	else
	{
		var selected = specs_values1[ g_pec_item_specs[1] ][ g_pec_item_specs[2] ][ g_pec_item_specs[3] ][ g_pec_item_specs[4] ];
		_prdfwc_shops_add_carts_set_selected_proc( selected );
	}
}


//
function _prdfwc_shops_add_carts_set_selected_proc( selected )
{
	$('ShopsAddCartsItemId').value = selected['id'];

	var elem = $('ShopsAddCartsItemSellingPrice');
	if ( elem )
	{
		elem.value = selected['selling_price'];
	}

	if ( ( selected['is_manage_stock'] != 0 ) && ( selected['is_soldout'] != 0 ) && (selected['salable_stocks'] <= 0) )
	{
		var elem = $('ShopsAddCartsSalableOrderNums');
		if ( elem )  Element.hide(elem);

		if ( selected['requirement_supply_days'] > 0 )
		{
			elem = $('ShopsAddCartsNotSalableNoStock2Days');
			if ( elem )  elem.innerHTML = selected['requirement_supply_days'];
			elem = $('ShopsAddCartsNotSalableNoStock1');
			if ( elem )  Element.hide(elem);
			elem = $('ShopsAddCartsNotSalableNoStock2');
			if ( elem )  Element.show(elem);
		}
		else
		{
			elem = $('ShopsAddCartsNotSalableNoStock1');
			if ( elem )  Element.show(elem);
			elem = $('ShopsAddCartsNotSalableNoStock2');
			if ( elem )  Element.hide(elem);
		}
	}
	else
	{
		var elem = $('ShopsAddCartsNotSalableNoStock1');
		if ( elem )  Element.hide(elem);
		elem = $('ShopsAddCartsNotSalableNoStock2');
		if ( elem )  Element.hide(elem);
		elem = $('ShopsAddCartsSalableOrderNums');
		if ( elem )  Element.show(elem);
	}


	var elems = { 'control_no':		'ControlNo',
				  'model_no':		'ModelNo',
				  'selling_price':  'SellingPrice',
				  'catalog_price':  'CatalogPrice',
				  'price_rate':     'PriceRate',
				  'point_rate':     'PointRate' };

	$H( elems ).each( function( pair ) {
		if ( selected[pair.key] )
		{
			var elem = $('ShopsAddCartsSelItem' + pair.value + 'Val');
			if ( elem )  elem.innerHTML = selected[pair.key];
			var elem = $('ShopsAddCartsSelItem' + pair.value);
			if ( elem )  Element.show(elem);
		}
		else
		{
			var elem = $('ShopsAddCartsSelItem' + pair.value);
			if ( elem )  Element.hide(elem);
		}
	});

	_prdfwc_shops_add_carts_calc_order_amount();
}

