function custecAddToCart(form_id, options_element_id, condition, codeifnotmet){
	var eq = document.getElementById("qtyadd").value; //get main quantity
	var addmainitem = document.getElementById("add_main_item");
	var multi = "";
	if (addmainitem && addmainitem.value == "yes") {
		multi = document.getElementById("item_internalid").value + "," + eq + "\;"; //set default multi value
	}
	var form = document.forms[form_id]; //get form addtocart
	var parent_element = document.getElementById(options_element_id);
	var inputs = parent_element.getElementsByTagName("input"); //get all inputs in that form
	var value = "";
	for (i = 0; i < inputs.length; i++) {
		type = inputs[i].type;
		if (type == "radio") { //if input is a radio button
			value = custecGetRadioValue(inputs[i]);
			custecProcessAction(value);
		}
		else 
			if (type == "checkbox") {
				value = custecGetCheckboxValue(inputs[i]);
				custecProcessAction(value);
			}
	}
	var selects = parent_element.getElementsByTagName("select");//get all select elements
	for (i = 0; i < selects.length; i++) {
		value = custecGetSelectValue(selects[i]);
		custecProcessAction(value);
	}
	
	if (!condition || eval(condition)) { //if condition doesn't exist or if it's met
		document.getElementById("multi").value = multi;
	}
	else 
		if (codeifnotmet) { //if there is code for not meeting condition
			eval(codeifnotmet);
		}
		else { //if condition exists but there is no code
			return false;
		}
	function custecGetSelectValue(this_select){
		var selected = this_select.selectedIndex;
		var value = this_select.options[selected].value;
		return value;
		
	}
	function custecGetRadioValue(this_radio){
		var value = this_radio.value; //get radio button value
		if (this_radio.checked) { //if radio button is checked
			return value;
		}
		else 
			return "";
	}
	function custecGetCheckboxValue(this_checkbox){
		var value = this_checkbox.value; //determine whether checkbox is checked
		if (this_checkbox.checked) { //if checked
			return value; //act according to value
		}
		else 
			return "";
	}
	
	function custecProcessAction(action){
		if (!action.match("subaction")) { //if this is not a subaction
			if (action.match("optconfig_additem_")) { //if action is to add item to cart
				custecProcessAddToCart(action);
			}
			else 
				if (action.match("optconfig_do_action_")) {
					custecProcessDoAction(action);
				}
		}
	}
	
	function custecProcessAddToCart(action){
		var regexpr = /(optconfig_additem_)([0-9]+)/; //find item id with regular expression
		var regexpr2 = /(qty_)(.+)/; //find item quantity with regular expression
		var it_qty = action.match(regexpr2)[2]; //find item quantity
		if (it_qty.match(/[a-z]/)) { //if has to get quantity from another input box
			it_qty = document.getElementById(it_qty); //get quantity from input box with specified id
			if (it_qty) {
				it_qty = it_qty.value;
			}
			else {
				it_qty = 1;
			}
		}
		var item_id = action.match(regexpr)[2];
		multi = multi + item_id + "," + eq * it_qty + "\;";
	}
	
	function custecProcessDoAction(action){
		var regexpr = /optconfig_do_action_(.+)/;
		var element_ids = action.match(regexpr)[1];
		var length = 0;
		if (element_ids) {
			if (element_ids.match(",")) {
				element_ids = element_ids.split(",");
				length = element_ids.length;
			}
			else {
				length = 1;
				element_ids = [element_ids];
			}
		}
		for (j = 0; j < length; j++) {
			var element_id = element_ids[j];
			var element = document.getElementById(element_id);
			var element_type = "";
			var new_action = "";
			if (element) {
				element_type = element.tagName;
			}
			
			if (element_type == "SELECT") {
				new_action = custecGetSelectValue(element);
			}
			else 
				if (element_type == "INPUT") {
					var type = element.type;
					if (type == "checkbox") {
						new_action = custecGetCheckboxValue(element);
					}
					else 
						if (type == "radio") {
							new_action = custecGetRadioValue(element);
						}
					
				}
			
			if (new_action != "") {
				new_action = new_action.replace("subaction_", "");
				custecProcessAction(new_action);
			}
			
		}
	}
}
