// Create array indexOf function if none.
if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) {
  i || (i = 0);
  var length = this.length;
  if (i < 0) i = length + i;
  for (; i < length; i++)
    if (this[i] === item) return i;
  return -1;
};

function RemoveSelectBoxOption(objField, iFieldValue)
{
	try
	{
		for (var i=0;i<objField.options.length;i++)
		{
			if (objField.options[i].value == iFieldValue)
			{
				objField.remove(i);
				
				removedOptionValueList = removedOptionValueList + iFieldValue + ',';
				return;
			}
		}
	}
	catch (e) {
	}
}


function AddSelectBoxOption(objField, sFieldDisplayValue, iFieldValue, Option_Order, selected_value)
{
	//Not added and not removed
	if (addedOptionValueList.indexOf(iFieldValue + ",") > -1 || removedOptionValueList.indexOf(iFieldValue + ",") > -1)
	{
		return;
	}

	var blOptionValueExists = false;
	for (var i=0;i<objField.options.length;i++)
	{
		if (objField.options[i].value == iFieldValue)
		{
			blOptionValueExists = true;
			break;
		}
	}

	if (!blOptionValueExists)
	{
		var oOption = document.createElement("OPTION");
		
		// Append base on the correct order
		var FieldIndex = Option_Order.indexOf(iFieldValue);
		if( FieldIndex >= 0 && FieldIndex < Option_Order.length && objField.options.length > 0 ){
			var has_inserted = false;
			for(var i=FieldIndex+1; i<Option_Order.length; i++){
				
				for(var j=0; j<objField.options.length; j++){
					if( objField.options[j].value == Option_Order[i] ){
						objField.insertBefore(oOption, objField.options[j]);
						if( objField.options[j].value == selected_value ){
							objField.options[j].selected = true;
						}
						//objField.options[0].selected = true;
						has_inserted = true;
						break;
					}
				}
				if( has_inserted ){
					break;
				}
			}
			if( !has_inserted ){
				objField.appendChild(oOption);
			}
		}
		else{
			objField.appendChild(oOption);
		}
		oOption.text = sFieldDisplayValue;
		oOption.value = iFieldValue;
		
		addedOptionValueList = addedOptionValueList + iFieldValue + ",";
	}
}

function RestoreSelectBoxFieldValue(objField, iFieldValue)
{
	for (var i=0;i<objField.options.length;i++)
	{
		if (objField.options[i].value == iFieldValue)
		{
			objField.options[i].selected = true;
			break;
		}
	}
	if(objField.getAttribute("switchImgFunc")){
		eval(objField.getAttribute("switchImgFunc"));
	}
}


function RemoveRadioOption(iFieldValue)
{
	var mySpan = document.getElementById('span_' + iFieldValue);
	var myRadio = document.getElementById('rdo_' + iFieldValue);
	if (myRadio)
	{
		myRadio.checked = false;
	}
	if (mySpan)
	{
		mySpan.style.visibility = "hidden";
		mySpan.style.display = "none";
		
		var inputs = mySpan.getElementsByTagName("input");
		if( inputs.length > 0 ){
			for( var i=0; i<inputs.length; i++ ){
				if( inputs[i].type == "radio" ){
					if( inputs[i].value == iFieldValue ){
						inputs[i].checked = false;
					}
				}
			}
		}
	}
}


function AddRadioOption(objField, sFieldDisplayValue, iFieldValue)
{
	var mySpan = document.getElementById('span_' + iFieldValue);
	if (mySpan)
	{
		mySpan.style.visibility = "visible";
		mySpan.style.display = "";
	}
}

function RestoreRadioFieldValue(objField, iFieldValue)
{
	for (var i=0;i<objField.length;i++)
	{
		if (objField[i].value == iFieldValue)
		{
			objField[i].checked = true;
			break;
		}
	}
}


function CheckNRestoreRadioFieldValue(objField)
{
	var inputs = document.getElementsByTagName("input");
	var radio_btns = new Array();
	for (var i=0;i<inputs.length;i++){
		if( inputs[i].id == objField ){
			radio_btns.push(inputs[i]);
		}
	}
	
	var has_checked = false;
	for (var i=0;i<radio_btns.length;i++)
	{
		if (radio_btns[i].checked)
		{
			has_checked = true;
			break;
		}
	}
	if( !has_checked ){
		for (var i=0;i<radio_btns.length;i++){
			var mySpan = document.getElementById('span_' + radio_btns[i].value);
			if( mySpan ){
				if( mySpan.style.display == "" || mySpan.style.display == "block" ){
					radio_btns[i].checked = true;
					if(radio_btns[i].getAttribute("switchImgFunc")){
						eval(radio_btns[i].getAttribute("switchImgFunc"));
					}
					break;
				}
			}
		}
	}
}

function ShowAllRadioFields(objField){

	var inputs = document.getElementsByTagName("input");
	var radio_btns = new Array();
	for (var i=0;i<inputs.length;i++){
		if( inputs[i].id == objField ){
			radio_btns.push(inputs[i]);
		}
	}
	for (var i=0;i<radio_btns.length;i++)
	{
		AddRadioOption(radio_btns[i], "", radio_btns[i].value);
	}
}

function AddCheckboxOption(objField, sFieldDisplayValue, iFieldValue)
{
	var mySpan = document.getElementById('span_' + iFieldValue);
	if (mySpan)
	{
		mySpan.style.visibility = "visible";
		mySpan.style.display = "";
	}
}

function RemoveCheckboxOption(iFieldValue)
{
	var mySpan = document.getElementById('span_' + iFieldValue);
	if (mySpan)
	{
		mySpan.style.visibility = "hidden";
		mySpan.style.display = "none";
		
		var inputs = mySpan.getElementsByTagName("input");
		if( inputs.length > 0 ){
			for( var i=0; i<inputs.length; i++ ){
				if( inputs[i].type == "checkbox" ){
					if( inputs[i].value == iFieldValue ){
						inputs[i].checked = false;
					}
				}
			}
		}
	}
}

function ShowAllCheckboxFields(objField){

	var inputs = document.getElementsByTagName("input");
	var checkboxes = new Array();
	for (var i=0;i<inputs.length;i++){
		if( (inputs[i].name == objField || inputs[i].name.substr(0,objField.length+1) == objField + "_") && inputs[i].type == "checkbox" ){
			checkboxes.push(inputs[i]);
		}
	}
	for (var i=0;i<checkboxes.length;i++)
	{
		AddCheckboxOption(checkboxes[i], "", checkboxes[i].value);
	}
}

function overwrite_cart_buttons(prod_id){
	var cartbutton_ori_func = cartbutton;
	cartbutton = function(){
		if( eval("product_option_checking_Prod" + prod_id + "()") ){
			cartbutton_ori_func();
		}
	}
	
	var cartbuttonright_ori_func = cartbuttonright;
	cartbuttonright = function(){
		if( eval("product_option_checking_Prod" + prod_id + "()") ){
			cartbuttonright_ori_func();
		}
	}
	
	var recalculatebutton_ori_func = recalculatebutton;
	recalculatebutton = function(){
		if( eval("product_option_checking_Prod" + prod_id + "()") ){
			recalculatebutton_ori_func();
		}
	}
	
	var wishbutton_ori_func = wishbutton;
	wishbutton = function(){
		if( eval("product_option_checking_Prod" + prod_id + "()") ){
			wishbutton_ori_func();
		}
	}
}

function radio_button_has_checked(objField){
	var inputs = document.getElementsByTagName("input");
	var radio_btns = new Array();
	for (var i=0;i<inputs.length;i++){
		if( inputs[i].id == objField ){
			radio_btns.push(inputs[i]);
		}
	}
	
	var has_checked = false;
	for (var i=0;i<radio_btns.length;i++)
	{
		if (radio_btns[i].checked)
		{
			has_checked = true;
			break;
		}
	}
	return has_checked;
}
