/**
* @version $Id: item.js 34332 2010-03-01 17:25:44Z tosho $
*/
//===========================================================================//
/**
* Toggles the elements
*
* @param String element_id
* @param boolean show - show or hide element
*/
function toggle_element(element_id, show)
{
	var element = document.getElementById(element_id);

	element.style.visibility = 'hidden';
	element.style.display = 'none';

	if(show)
	{ // change
		element.style.visibility = 'visible';
		element.style.display = '';
	}
}

//===========================================================================//

var select_child_cache = Array();

/**
 * @todo Add parent_profile support!
 */
function select_child(form, column, width, height, rel_html_url, width_large, height_large) {
	var search_data = {};

	// walk the parent-selectable-columns
	// and look for the search data ...
	//
	for (var parent_profile_id in parent_selectable_columns) {
		for (var column_name in parent_selectable_columns[parent_profile_id]) {
			if (form.elements['children_' + parent_selectable_columns[parent_profile_id][column_name]] + '_' + parent_profile_id) {
				// @todo search_data does is not per profile!!! (also below should be fixed)
				search_data[column_name] = form.elements['children_' + column_name + '_' + parent_profile_id].options[form.elements['children_' + column_name + '_' + parent_profile_id].selectedIndex].text;
			}
		}		
	}

	// walk the actual parent data, and
	// look for a search data match ...
	//
	for (var key in parent_data) {
		var matches = true;
		for (var search_key in search_data) {
			if (trim(search_data[search_key]) != trim(parent_data[key][search_key])) {
				matches = false;
				break;
			}
		}

		if (!matches) {
			continue;
		}

		// is this the toolkit ?
		//
		
		try {
			var toolkit = (typeof jQuery.order.add.cart != 'undefined');
		}
		catch(err) {
			var toolkit = false;
		}		

		// the sku is put in the "id" element of the form!
		//
		form.id.value = parent_data[key]['sku'];
		
		// default handler for populating the parent_data
		//
		var parent_data_populate = function(i, form) {

			// populate "static" elements
			//
			var element = document.getElementById(i);
			if (element) {
				element.innerHTML = parent_data[key][i];
				element.value = parent_data[key][i];
				}
			
			// populate "inputs"
			//
			if (form.elements[i]) {
				form.elements[i].value = parent_data[key][i];
				}
			}

		for (var i in parent_data[key]) {

			switch (i) {
				case 'id' :
					break;

				case 'store_price':
					if (toolkit) {
						form.elements['price'].value =
							(typeof parent_data[key]['original'][i] != 'undefined')
								? parent_data[key]['original'][i]
								: parent_data[key][i];
						}
					parent_data_populate(i, form);
					break;
					
				case 'description':
					if (toolkit) {
						form.elements['description'].value = parent_data[key]['original']['__toString'];
						} else {
						parent_data_populate(i, form);
						}
					break;

				case 'quantity':
					if (!toolkit) {
						parent_data_populate(i, form);
						}
					break;
					
				case 'min_quantity':
					if (toolkit) {
						form.elements['quantity'].value = parent_data[key]['original'][i];
						} else {
						parent_data_populate(i, form);
						}
					break;
					
				default :
					parent_data_populate(i, form);
					break;
				}
			}

		if (parent_data[key]['applied_inventory_control']) {
			if (parent_data[key]['store_quantity'] > 0 || (parent_data[key]['applied_inventory_control'] == 'no_control')) {
				buy = 'buy';
			} else if (parent_data[key]['applied_inventory_control'] == 'backorder') {
				buy = 'backorder';
			} else if (parent_data[key]['applied_inventory_control'] == 'in_stock_email') {
				buy = 'in_stock_email';
			} else {
				// hide
				buy = '';
			}

			if (buy) {
				var buttons = Array('item_buy_button', 'item_buy_button_buy', 'item_buy_button_backorder', 'item_buy_button_in_stock_email');
				for (var i = 0; i < buttons.length; i++) {
					var element = document.getElementById(buttons[i]);
					if (element) {
						element.style.display = (element.id == 'item_buy_button_' + buy) ? 'block' : 'none';
					}
				}
			}
		}

		if (parent_data[key]['default_image'] && document.images.product_image) {
			var sku = parent_data[key]['default_image'];
			sku = sku.substring(0, sku.length - 4); // strip off .jpg
			var url = rel_html_url + "index.php?type=bare&page=image&smarty_param_type=product&redirect=1&id=" + escape(sku) + "&width=" + width + "&height=" + height;
			document.images.product_image.src = url;


			var product_image_link = document.getElementById('product_image_link')
			if (product_image_link) {
				$.ajax(
				{
					url: rel_html_url + "index.php?type=bare&page=image&smarty_param_type=product&id=" + escape(sku) + "&width=" + width_large + "&height=" + height_large,
					async: true,
					dataType: 'html',
					complete: function (xhr)
					{
						product_image_link.href = xhr.responseText;
					},
					error: function (xhr)
					{

					}
				});
			}
		}

		break; // stop after first match
	}
}

var validate_item_elements = Array();
function validate_item(form) {
	for (var i = 0; i < validate_item_elements.length; i++) {
		var value;
		switch (form.elements[validate_item_elements[i].name].type) {
			case 'radio':
				break;

			case 'select-multiple':
				break;

			case 'text':
			case 'select-one':
			case 'checkbox':
			default:
				value = form.elements[validate_item_elements[i].name].value;
				break;
		}

		if (validate_item_elements[i].required && value == '') {
			form.elements[validate_item_elements[i].name].focus();
			alert(validate_item_elements[i].title + ' is required.');
			return false;
		}
	}

	return true;
}
