var sendArray = null;
var sortArray = null;
var docFrm = null;
var categories = null;
var regions = null;
var brands = null;
var categoryArray = null;
var regionArray = null;
var brandArray = null;

function Init()
{
	docFrm = document.forms[0];
	
	categories = docFrm.Categories;
	regions = docFrm.Regions;
	brands = docFrm.Brands;
	selectedJobIds = docFrm.SelectedJobs;
	sendArray = new Array();
	sortArray = new Array();

	categoryArray = new Array();
	regionArray = new Array();
	brandArray = new Array();

	for(var i=0; i < categories.options.length; i++)
		categoryArray[i] = new Array(categories.options[i].value, categories.options[i].text);
	
	for(var i=0; i < regions.options.length; i++)
		regionArray[i] = new Array(regions.options[i].value, regions.options[i].text);
		
	for(var i=0; i < brands.options.length; i++)
		brandArray[i] = new Array(brands.options[i].value, brands.options[i].text);

	categories.selectedIndex = 0;
	regions.selectedIndex = 0;
	brands.selectedIndex = 0;
	ResetSendArray();
	Filter();
}

function SendJobs(action)
{
	selectedJobIds.value = "";

	for(var i=0; i < sendArray.length; i++)
		selectedJobIds.value += sendArray[i].JobId + ":";

	selectedJobIds.value = selectedJobIds.value.substring(0, selectedJobIds.value.length-1);

	//alert(selectedJobIds.value);
	document.forms[0].action = action;
}

function Filter(val)
{
	switch(val)
	{
		case "c":
			FilterByCategory();
			PopulateRegions();
			PopulateBrands();
			break;
		case "r":
			FilterByRegion();
			PopulateBrands();
			break;
		case "b":
			FilterByBrand();
			break;
	}
}

function ResetSendArray()
{
	sendArray.length = 0;

	for(var i=0; i < ja.length; i++)
		sendArray[i] = ja[i];
}

function FilterByCategory()
{
	ResetSendArray();
	for(var i=0; i < sendArray.length; i++)
	{
		if(!IsSelected(sendArray[i].CategoryId, categories))
		{
			sendArray.splice(i, 1);
			i --;
		}
	}
	
}

function FilterByRegion()
{
	ResetSendArray();
	FilterByCategory();

	for(var i=0; i < sendArray.length; i++)
	{
		if(!IsSelected(sendArray[i].RegionId, regions))
		{
			sendArray.splice(i, 1);
			i --;
		}
	}
}

function FilterByBrand()
{
	ResetSendArray();
	FilterByCategory();
	FilterByRegion();

	for(var i=0; i < sendArray.length; i++)
	{
		if(!IsSelected(sendArray[i].CompanyId, brands))
		{
			sendArray.splice(i, 1);
			i --;
		}
	}
}

function IsSelected(val, elem)
{
	if(elem.options[0].selected) return true;

	for(var i=0; i < elem.options.length; i++)
	{
		if(elem.options[i].selected && elem.options[i].value == val)
			return true;
	}

	return false;
}

function PopulateRegions()
{
	var j = 0;
	sortArray.length = 0;	

	for(var i=0; i < sendArray.length; i++)
	{
		if(!Exists(sendArray[i].RegionId))
		{
			sortArray[j] = new Array(GetTextFromValue(regionArray, sendArray[i].RegionId), sendArray[i].RegionId);
			j++;
		}
	}

	sortArray.sort(); 

	regions.length = 0;
	regions.options[0] = new Option(regionArray[0][1], regionArray[0][0]);

	for(var i=0; i < sortArray.length; i++)
	{
		for(var x=1; x < regionArray.length; x++)
		{
			if(sortArray[i][1] == regionArray[x][0])
				regions.options[regions.options.length] = new Option(regionArray[x][1], regionArray[x][0]);
		}
	}
	regions.selectedIndex = 0;
}

function PopulateBrands()
{
	var j = 0;
	sortArray.length = 0;	

	for(var i=0; i < sendArray.length; i++)
	{
		if(!Exists(sendArray[i].CompanyId))
		{
			sortArray[j] = new Array(GetTextFromValue(brandArray, sendArray[i].CompanyId), sendArray[i].CompanyId);
			j++;
		}
	}

	sortArray.sort(); 

	brands.length = 0;
	brands.options[0] = new Option(brandArray[0][1], brandArray[0][0]);

	for(var i=0; i < sortArray.length; i++)
	{
		for(var x=1; x < brandArray.length; x++)
		{
			if(sortArray[i][1] == brandArray[x][0])
				brands.options[brands.options.length] = new Option(brandArray[x][1], brandArray[x][0]);
		}
	}
	brands.selectedIndex = 0;
}

function Exists(val)
{
	for(var i=0; i < sortArray.length; i++)
	{
		if(sortArray[i][1] == val)
			return true;
	}

	return false;
}

function GetTextFromValue(array, val)
{
	for(var i=0; i < array.length; i++)
	{
		if(array[i][0] == val)
			return array[i][1];
	}

	return null;
}