/**
 * Functions for handling dynamic pull-down menus oryginaly prepared for product options selectors.
 *
 * @author Luc <lukasz.jakubek@exanet.pl>
 * @version 1.0 [2007-01-19 11:41]
 */
var optGroups=Array();
var fieldNames = Array();
var fieldArr = Array();
var selectedArr = Array();
var optName = null;
/**
 * Find and prepare menu fields
 */
function init(containerName) {
	var container = document.getElementById(containerName);
	if(!container)
		return false;
	
	//do nothing	
	if(!optGroups || !optGroups.length )
		return false;
	
	for(var i=0; i<optGroups[0].names.length; i++) {
		fieldNames[i] = optGroups[0].names[i];
	}

	for(i=0; i<fieldNames.length; i++) {
		fieldArr[i] = generateField(i, containerName);
	}
	
	var newTable = generateTable(containerName);
	var nod = container.parentNode
	
	var tmp = document.createElement('input');
	tmp.type = 'hidden';
	optName = 'opt_id'+document.forms['addtocart'].elements['id_prod'].value;
	tmp.name = optName;
	tmp.value = null;
	nod.insertBefore(tmp, container);
	nod.replaceChild(newTable, container);
	
	return true;
}

function generateTable(idName) {
	
	var output = document.createElement('table');
	output.cellSpacing=0;
	output.cellPadding=0;
	output.border=0;
	output.id=idName;
	
	var tb = document.createElement('tbody');
	
	tb.appendChild(generateSpcLine());
	
	var fieldsA = Array();
	for(var i=0; i<fieldArr.length; i++) {
		fieldsA[i] = generateOptLine(i);
		tb.appendChild(fieldsA[i]);
		tb.appendChild(generateSpcLine());
	}
	
	output.appendChild(tb);
	
	return output;
}

function generateSpcLine() {

	var spclinetr = document.createElement('tr');
	var spclinetd1 = document.createElement('td');
	spclinetd1.className="pd_optline";
	spclinetr.appendChild(spclinetd1);
	var spclinetd2 = document.createElement('td');
	spclinetd2.className="pd_optline";
	spclinetr.appendChild(spclinetd2);
	
	return spclinetr;
}

function generateField(idx, containerName) {

	var pulldown = document.createElement('select');
	pulldown.name = 'opt_'+idx;
	pulldown.id = 'opt_'+idx;
	pulldown.className = "pull_down_menu";
	pulldown.style.width = "200px";
	pulldown.onchange = function() { poChange(pulldown, containerName); };
	
	var values = Array();
	
	for(var i=0; i<optGroups.length; i++) {
		var test=true;
		for(j=0; j<selectedArr.length && j<idx; j++) {
			test = test && (optGroups[i].values[j]==selectedArr[j]);
		}
		if(test && (arraySearch(values, optGroups[i].values[idx]) == -1))
			values.push(optGroups[i].values[idx]);
	}
	
	var optDef = document.createElement('option');
	optDef.value = -1;
	optDef.appendChild(document.createTextNode('-- wybierz --'));
	
	pulldown.appendChild(optDef);
	
	for(var i=0; i<values.length; i++) {
		if(values[i]==selectedArr[idx]) var sl = true;
		else var sl=false;
		var opt = new Option('', values[i], false, sl)
		//var opt = document.createElement('option');
		//opt.value = values[i];
		//if(values[i]==selectedArr[idx]) opt.selected = true;
		opt.appendChild(document.createTextNode(values[i]));
		
		pulldown.appendChild(opt);
	}
	
	if(pulldown.selected == -1)
		optDef.selected = true;
	
	return pulldown;
}

function generateOptLine(i) {
	
	var otr = document.createElement('tr');
	var otd1 = document.createElement('td');
	otd1.className="pd_optname";
	otd1.appendChild(document.createTextNode(fieldNames[i]+': '));
	otr.appendChild(otd1);
	var otd2 = document.createElement('td');
	otd2.className="pd_optvalue";
	otd2.appendChild(fieldArr[i]);
	otr.appendChild(otd2);
	
	return otr;
}
/**
 * Prepare data for submit
 */
 function poSubmit(form) {
 	
 	//do nothing
 	if(!optGroups || !optGroups.length )
		return true;
 	
 	var selected = Array();

 	for(var i=0; i<form.elements.length; i++) {
 		
 		if((form.elements[i].type == 'select-one') && (form.elements[i].id != undefined) && (form.elements[i].id != null)) {
 			var t = form.elements[i].id.match(/^opt_([0-9]+)$/);
 			if(t!=null) {
 				selected[t[1]] = form.elements[i].value;
 			}
  		}
 	}
 	
 	var id_group = -1;
 	for(var i=0; (i<optGroups.length) && (id_group == -1); i++) {

 		test = true;
 		for(var j=0; j<optGroups[i].values.length; j++) {
 			test = test && (optGroups[i].values[j] == selected[j]);
 		}
 		if(test)
 			id_group = optGroups[i].id;

 	}
 	if(id_group == -1) {
 		window.alert('Proszę wybrać opcje.');
 		return false;
 	}

	for(var i=0; i<form.elements.length; i++) {
		if(form.elements[i].name == optName)
			form.elements[i].value = id_group;
	}
	
	//	form.elements[optName].value = id_group;
	
 	return true;
 }
 
/**
 * Pull-down fields onChange method.
 */
 function poChange(field, containerName) {
 	
 	var idx = field.id.substr(4) - 0;

 	if( (field.options[field.selectedIndex].value == -1) || (selectedArr.length < idx))
 		return false;

 	if(selectedArr.length > idx)
 		selectedArr.splice(idx);
 	
 	selectedArr[idx] = field.options[field.selectedIndex].value;

 	var container = document.getElementById(containerName);
	if(!container)
		return false;
		
	if(!optGroups || !optGroups.length )
		return false;
	
	for(i=0; i<fieldNames.length; i++) {
		fieldArr[i] = generateField(i, containerName);
	}
	
	var newTable = generateTable(containerName);
	container.parentNode.replaceChild(newTable, container);
	return true;
 }
 
function arraySearch(array, value) {
	for(var i=0; i<array.length; i++) {
		if(array[i] == value)
			return i;
	}
	return -1;
}