/**
 * Pioneer specific DWR implementation for dynamic selects
 */
var groupS;
var categoryS;
var modelS;
var preSelectedGroup;
var preSelectedCat;
var preSelectedModel;
var catIsSelected = false;
var modelSel;

function getGroupS(){if(!groupS) groupS=document.getElementById('productgroup'); return groupS;}
function getCategoryS(){if(!categoryS) categoryS=document.getElementById('category'); return categoryS;}
function getModelS(){if(!modelS) modelS=document.getElementById('model'); return modelS;}

var prodGroup = new Array();
var catGroup = new Array();
var modelGroupCurrent;
var modelGroupArchived;

function getProductGroups(groups) {
	if(groups && groups.length > 0)
	{
		var endPartSep = ';';
		var rows = groups.split(endPartSep);
		prodGroup = new Array();
		for (var i = 0; i < rows.length; i++)
		{
			prodGroup[i] = rows[i];
		}
		setSelectGroupsFunction();
	}
}

function getCategories(categories) {
	if(categories && categories.length > 0)
	{
		var endPartSep = ';';
		var rows = categories.split(endPartSep);
		catGroup = new Array();
		for (var i = 0; i < rows.length; i++)
		{
			catGroup[i] = rows[i];
		}
		setSelectCategoriesFunction();
	}
}

function getProductModels(models) {
	if(models && models.length == 4)
	{
		var modelsCurrent = models[0];
		var modelsArchived = models[1];

		var endPartSep = ';';
		var rowsCurrent = modelsCurrent.split(endPartSep);
		modelGroupCurrent = new Array();
		for (var i = 0; i < rowsCurrent.length; i++)
		{
			modelGroupCurrent[i] = rowsCurrent[i];
		}
		modelGroupArchived = new Array();
		var rowsArchived = modelsArchived.split(endPartSep);
		for (var i = 0; i < rowsArchived.length; i++)
		{
			modelGroupArchived[i] = rowsArchived[i];
		}
		setSelectModelsFunction(models[2],models[3]);
	}
}

function parseSelects(selects) {
	if (selects != null && selects.length > 0)
	{
		var sepSelect = '|';
		var selectArray = selects.split(sepSelect);
		var categories = selectArray[0];
		var modelsCurrent = selectArray[1];
		var modelsArchived = selectArray[2];
		var currentModelsLabel = selectArray[3];
		var archivedModelsLabel = selectArray[4];
		
		var endPartSep = ';';
		var categoryRows = categories.split(endPartSep);
		var modelsCurrentRows = modelsCurrent.split(endPartSep);
		var modelsArchivedRows = modelsArchived.split(endPartSep);
		
		catGroup = new Array();
		for (var i = 0; i < categoryRows.length; i++)
		{
			catGroup[i] = categoryRows[i];
		}

		modelGroupCurrent = new Array();
		for (var i = 0; i < modelsCurrentRows.length; i++)
		{
			modelGroupCurrent[i] = modelsCurrentRows[i];
		}
		
		modelGroupArchived = new Array();
		for (var i = 0; i < modelsArchivedRows.length; i++)
		{
			modelGroupArchived[i] = modelsArchivedRows[i];
		}
		
		setSelectGroupsFunction();
		setSelectCategoriesFunction();
		setSelectModelsFunction(currentModelsLabel,archivedModelsLabel);

		// set globally that DWR call has been handled
		window.isDwrHandled = 'true';
	}
}

function parseArchivedSelects(selects) 
{
	if (selects != null && selects.length > 0)
	{
		var sepSelect = '|';
		var selectArray = selects.split(sepSelect);
		var categories = selectArray[0];

		var endPartSep = ';';
		var categoryRows = categories.split(endPartSep);
		
		catGroup = new Array();
		for (var i = 0; i < categoryRows.length; i++)
		{
			catGroup[i] = categoryRows[i];
		}

		setSelectGroupsFunction();
		setSelectCategoriesFunction();
		// set globally that DWR call has been handled
		window.isDwrHandled = 'true';
	}
}

function setSelectGroupsFunction()
{
	var sel = document.getElementById("productgroup");
	sel.options.length = 0;
	var splitter = ':';
	sel.options[0] = new Option("","");

	for(var i = 0; prodGroup && i < prodGroup.length; i++)
	{
		var rowParts = prodGroup[i].split(splitter);
		sel.options[i+1] = new Option(rowParts[1],rowParts[0]);
	}
	
	if (preSelectedGroup != null && preSelectedGroup != null)
	{
		for (i = 0; i < sel.options.length; i++){
	        if(sel.options[i].value == preSelectedGroup) {
	            sel.selectedIndex = i;
	            break;
	        }
		}
	}
}

function setSelectCategoriesFunction()
{
	var sel = document.getElementById("category");
	sel.disabled=false;
	sel.options.length = 0;
	var splitter = ':';
	sel.options[0] = new Option("","");
	for(var i = 0; catGroup && i < catGroup.length; i++)
	{
		var rowParts = catGroup[i].split(splitter);
		sel.options[i+1] = new Option(rowParts[1],rowParts[0]);
	}
	
	if (preSelectedCat != null && preSelectedCat != null)
	{
		for (i = 0; i < sel.options.length; i++){
	        if(sel.options[i].value == preSelectedCat) {
	            sel.selectedIndex = i;
	            catIsSelected = true;
	            break;
	        }
		}
	}
	
}

function setSelectModelsFunction(currentLabel, archivedLabel)
{
	var sel = document.getElementById("model");
	sel.innerHTML = "";
	sel.disabled = false;
	sel.options.length = 0;
	var splitter = ':';
	// add one empty
	sel.options[0] = new Option("","");

	var optgroupCurrent = document.createElement('optgroup');
	optgroupCurrent.label = currentLabel;
	sel.appendChild(optgroupCurrent);
	for(var i = 0; modelGroupCurrent && i < modelGroupCurrent.length; i++)
	{
		var rowParts = modelGroupCurrent[i].split(splitter);
		sel.options[i+1] = new Option(rowParts[1],rowParts[0]);
	}
	
	var rowStart = modelGroupCurrent.length;
	if (modelGroupArchived && modelGroupArchived.length > 0 && modelGroupArchived[0] != '')
	{
		var optgroupArchived = document.createElement('optgroup');
		optgroupArchived.label = archivedLabel;
		sel.appendChild(optgroupArchived);
		for(var i = 0; modelGroupArchived && i < modelGroupArchived.length; i++)
		{
			var currentId = (rowStart + i + 1);
			var rowParts = modelGroupArchived[i].split(splitter);
			sel.options[currentId] = new Option(rowParts[1],rowParts[0]);
		}
	}
	
	// only and only if preSelectedModel is set use this part
	// if used without pre check, browser will hang as catIsSelected will never be set
	if (preSelectedModel != null && preSelectedModel != null)
	{
		modelSel = sel;
		do {
			setTimeout('preset()',100);
		} while (!catIsSelected);
	}
}

function preset() {
	for (i = 0; i < modelSel.options.length; i++){
        if(modelSel.options[i].value == preSelectedModel) {
            modelSel.selectedIndex = i;
            break;
        }
	}
}