function setStatus(status) {
	window.status = status;	//IE:n alapalkkiin tilannetietoja
}

function resetStart() {		//filtterin resetointi myös hakuehtoja muutettaessa
	seulonta.startRecord.value = 0;
	filterChanged = true;}

function setStartRecordPrev() {	 //filtterin ylapuolella olevan palaavan nuolen funktio 
	var startRecord = parseInt(seulonta.startRecord.value) - parseInt(seulonta.maxRecords.value);
	if(startRecord <= 0){
		startRecord = 0;}
	seulonta.startRecord.value = startRecord;
}

function setStartRecordNext() { // --||-- seuraavat
	var startRecord = parseInt(seulonta.startRecord.value) + parseInt(seulonta.maxRecords.value);
	seulonta.startRecord.value = startRecord;
}

function jumpToPage(page) { //taulukon alla olevien sivu numerojen hallinta
	var startRecord = page * parseInt(seulonta.maxRecords.value);
	seulonta.startRecord.value = startRecord;
	filterChanged = false;
	resort = false;
	Filter();
}

var sortField = -1; 
var reverse = false;
var filterChanged = true;
var resort = false;

function setSortField(kentanNimi) {  //Sortteerattava kenttä 
	fieldIndex = getFieldIndex(kentanNimi);
	if(sortField == fieldIndex) 
		reverse = !reverse;
	sortField = fieldIndex;
	resort = true;
	Filter();
}

function getValue(source) {  //palauttaa taulukosta arvon 
	return taulukon_tiedot[sortField][numeraalit[source][sortField]]; 
}

function sortResults(results) {		//lajittelee tulokset
	if(sortField < 0) return;
	var i;
	for(i=0; i<results.length; i++) {
		var value = getValue(results[i]);
		if (!value.match(/^[\d\.\/~]*$/)) {
		break;
		}
	}
	if(i == results.length) {
		return results.sort(sortNumeric); 
	}
	for(i=0; i<results.length; i++) {
		value = getValue(results[i]);
		if (!value.match(/^[£$]/) && value != "") {
			break; 
		}
	}
	sorted = results.sort(sortAlpha);
	return sorted;
}
function sortAlpha(a, b) {	  //aakkosellinen järjestely
    var x = getValue(a).toLowerCase();
    var y = getValue(b).toLowerCase();
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}
function sortNumeric(a, b) {	//numereellinen järjestely
	var x = getValue(a);
	var y = getValue(b);
	
	return(x - y);
}
function sortFilter(filter) {	//lajittelee filtterin hakuehdot
	var i;
	for(i=0; i<filter.length; i++) {
	
		if (!filter[i].match(/^[\d\.\/~]*$/)) {
			break;
		}
	}
	if(i == filter.length) {
		return filter.sort(sortFilterNumeric); 
	}
	for(i=0; i<filter.length; i++) {
		if (!filter[i].match(/^[£$]/)) break;
	}
	return filter.sort(sortFilterAlpha); 
}

function sortFilterAlpha(a, b) {	//aakkosellinen
    var x = a.toLowerCase();
    var y = b.toLowerCase();
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

function sortFilterNumeric(a, b) {	//numereellinen
	var x = a;
	var y = b;
	
	return(x - y);
}

// funktio tarkastaa onko annettu hakutermi 
function NatsaakoSamaan(haettuarvo, arvo) {
	var sisalto = haettuarvo.options[haettuarvo.selectedIndex].value;
	if(sisalto == "Any") 
		return true;
	return sisalto == arvo; 
}
function NatsaakoIsompaan(haettuarvo, arvo) {
	var sisalto = haettuarvo.options[haettuarvo.selectedIndex].value;
	if(sisalto == "Any") 
		return true;
	return sisalto <= arvo; 
}

var takas;

// funktio getForm palauttaa lomakkeen koko sisällon 
function getForm(formId) { 
	return (document.all) ? eval(formId) : eval("document."+formId);
}

function getObj(name)
{
  if (document.getElementById)
  {
    return document.getElementById(name);
  }
  else if (document.all)
  {
    return document.all[name];
  }
  else if (document.layers)
  {
    return document.layers[name];
  }
  else return false;
}

function getFieldIndex(kentanNimi) {  //palauttaa haetun kentän sisällön
		return tko[kentanNimi].index;
}

function unHighlightRow(sourceElement) {	//vaihtaa solun värin takaisin valkoiseksi
	sourceElement.style.background = "#FFFFFF";
}

var sarakkeenleveys = new Array(); //globaali taulukkomuuttuja "sarakkeenleveys"
var solut = new Array();  //globaali taulukkomuuttuja "solut"
var osumat; //globaali muuttuja "osumat"


//funktio filterointi, reagoi filtteriin asetetuihin hakuehtoihin
function Filter() {
	if(filterChanged) { //haistaa filtteriin tehdyt muutokset
		osumat = new Array(); //paikallinen muuttuja "osumat"
		var filterForm = getForm("seulonta"); //funktio "getForm"(filter.js) saa syÃ¶tteenÃ¤"seulonta"-lomakkeen sisaltaman datan ja palauttaa sen  paikalliselle muuttujalle "filterForm"	
		for(i = 0, luku = 0; i < numeraalit.length; i++) { //for silmukka alustaa paikalliset i- ja luku -muuttujat ja kÃ¤y silmukkaa lÃ¤pi kunnes "numeraalit" taulukosta on kÃ¤yty kaikki lÃ¤pi
		if(NatsaakoIsompaan(filterForm["max_line_rate"], numeraalit[i][fkj["max_line_rate"]]) //vertailu haluehtoihin if -lausekkeella  
		&& NatsaakoSamaan(filterForm["pixels"], numeraalit[i][fkj['pixels']])
		&& NatsaakoSamaan(filterForm["pixel_size"], numeraalit[i][fkj['pixel_size']])
		&& NatsaakoSamaan(filterForm["interface"], numeraalit[i][fkj['interface']])
		&& NatsaakoIsompaan(filterForm["bits"], numeraalit[i][fkj['bits']])
		&& NatsaakoSamaan(filterForm["spectrum"], numeraalit[i][fkj['spectrum']])
		) {			
				osumat[luku] = i; //mikÃ¤li hakuehdot tayttyvat saa taulukko "osumat"numeroltaan "luku" arvoksi muutuja "i":n
				luku++; //muuttuja luku kasvaa
			}
		} // for-silmukka sulkeutuu		
	} // filterin muutoksen loppu
	
	if(resort) {		// lajittelee osumat 
		sortResults(osumat);	
		if(reverse) {
			osumat.reverse();
		}
	}
	//Sarakkeiden arvojen asettelu, "content"-muuttujaan asetetaan taulukko joka sisaltaa sarakkeiden nimet ja asetukset.
	var content = "<div onMouseOut='ignore=false; tmp = setTimeout(hideDetail, 300)'>"
		+ "<table width = '601' cellspacing='1' cellpadding='3' class='results'><tr>";
		for(laskuri = 0; laskuri < kenttienjarjestysnaytolla.length; laskuri++) { //for kay lapi tauluja ja sijoittaa sarakkeisiin arvoja
		var sarakenro = kenttienjarjestysnaytolla[laskuri];
		var saraketext = tko[sarakenro].kentanNimi;
		var nakyvaNimi = tko[sarakenro].nakyvaNimi;
		content += "<td class='field_name' style='vertical-align: top; text-align:center;'"
			+ " onClick='setSortField(\"" + saraketext +"\");jumpToPage(" + 0 + ");'nowrap width='" + sarakkeenleveys[laskuri] + "px'>"
			+ nakyvaNimi + '<span><img src="images/sort.png" alt="sort column" class="field_name" ></span></td>';
	} // for loppuu 
	content += "</tr>"; // solu loppuu
		
	if(osumat.length == 0) { //jos osumia ei ole taululle tulostuu teksti joka ilmoittaa etta ei ole tuotteita jotka vastaavat haku ehtoja  
		content += "<tr><td colspan='" + kenttienjarjestysnaytolla.length 
			+ "' class='viesti' style='background-color:#FFFFFF'>No products found matching filter criteria.</td></tr>";
		document.getElementById("results").innerHTML = content;
		return;
	} //if loppuu
	
	if(typeof(seulonta) == "undefined")
	seulonta = document.seulonta; //kirjoittaa "seulonta":n sisalloksi filteissa olevat arvot
	
	var start = parseInt(seulonta.startRecord.value); //muuttuja "start" saa arvokseen ensimmaisen kamera-tietokannan numeron 
	var end = osumat.length; //muuttuja "end" saa arvokseen viimmeisen kamera-tietokannan numeron 
	 //muuttuja max saa arvokseen sivulla naytettavien kameroiden maksimi maaran
	var max = (seulonta.maxRecords.value == "ALL")?osumat.length:seulonta.maxRecords.value;
	var firstMatch = -1; //muuttuja saa integraalin -1 
	
	for(laskuri = 0, i = start; i < end && laskuri < max; i++) {		
			if(firstMatch == -1) firstMatch = i; //ehto
			var sisalto = osumat[i]; //sisalto saa arvon
			content += solut[osumat[i]];
			window.status = "row: " + laskuri;
			laskuri++;
	}
	content += "</table></div>";
		
	seulonta.startRecord.value = (firstMatch == -1) ? 0 : firstMatch;
	getObj("edelSivu").disabled = (start == 0);
	getObj("seurSivu").disabled = (laskuri == 0 || laskuri < max - 1 || i == numeraalit.length || (start + laskuri) == end);
	getObj("osumLask").innerHTML = "Displaying " + (start + 1) + " to " + (start + laskuri) + " of " + osumat.length;
	
	//taulukon alle napit
	var page_links = "Jump to page: ";
	for(i=0, record=0; record<osumat.length; i++, record = i*max) {
		var className = (start == record) ? "page_link_on" : "page_link";
		var label = (i<9) ? "&nbsp;" + (i+1) + "&nbsp;" : (i+1);
		page_links += "<span class='" + className + "' onClick=\"jumpToPage(" + i + ");\">" + label + "</span>&nbsp;";
	}
	getObj("bottom_paging").innerHTML = page_links;
	getObj("results").innerHTML = content;
}
function resetExplanation(){
	var detailWindow = getObj("seli");
	var filter_panel = getObj("divSeli");
	detailWindow.style.visibility= "hidden";
	filter_panel.style.visibility = "visible";
}
var pixels_exp="<div class='result'><p>Pixels</p><br>Three sensors are used for producing RGB colour pixels. Each sensor has only a one row of pixels(line).<div style='height: 100px'></div></div>" ;

function showExplanation(a){
	var detailWindow = getObj("seli");
	var filter_panel = getObj("divSeli");
	filter_panel.style.visibility = "hidden";
	detailWindow.style.visibility = "visible";
	detailWindow.style.width = filter_panel.offsetWidth + 10 + "px";
	detailWindow.style.top = (document.documentElement.scrollTop > getObj("selitys").offsetTop) 
	? document.documentElement.scrollTop - 20 : getObj("selitys").offsetTop + 240 + "px";
	detailWindow.style.left = getObj("selitys").offsetLeft - 10 + "px";
if (a=="pixels"){
	content = "<div class='result'><p><b>Pixels</b></p>Three sensors are used for producing RGB colour pixels. Each sensor has only a one row of pixels(line)." ;
	content += "</div>"; 
	detailWindow.innerHTML = content;	
}
if (a=="pixel_size"){
	content = "<div class='result'><p><b>Pixel size</b></p>All	pixels are square. Fill factor is 100%. Large pixels (14 ?m by 14 ?m) are recomended for all 3 x 512 and 3 x 1024 pixel models." ;
	content += "</div>"; 
	detailWindow.innerHTML = content;	
}
if (a=="line_rate"){
	content = "<div class='result'><p><b>Line rate</b></p>The number of colour scan (lines) per second." ;
	content += "</div>"; 
	detailWindow.innerHTML = content;	
}
if (a=="interface"){
	content = "<div class='result'><p><b>Interface</b></p>All models are availably with either Camera Link or LVDS as the data interface. All models can use RS-232 as the communication interface. Camera Link camerad can be set to use Camera Link serial commonications instead.";
	content += "</div>"; 
	detailWindow.innerHTML = content;	
}
if (a=="bits"){
	content = "<div class='result'><p><b>Bits</b></p>The number of bits to repricent each pixel of the sensor." ;
	content += "</div>"; 
	detailWindow.innerHTML = content;	
}
/*if (a=="pixel_rate"){
	content = "<div class='result'><p><b>Pixel rate</b></p>The frequency (MHz) of pixel read-out on each sensor. The output frequency of data (pixel clock) is the same, except on cameras with multiplexed output format, where the pixel clock is three times the pixels rate." ;
	content += "</div>"; 
	detailWindow.innerHTML = content;	
}*/
if (a=="spectrum"){
	content = "<div class='result'><p><b>Spectral Range</b></p>RGB: visible light <br> R-GB-IR: red, green and blue combined, near infrared up to 1050 nm ";
	content += "</div>"; 
	detailWindow.innerHTML = content;	
}

}

var ignore;// globaali muuttuja, joka falsena estaa detais ikkunan sisallon

//funktio joka nayttaa yksityiskohtaista tietoa detail ikkunassa
function showDetail(itemId, sourceElement) { 
	ignore = true;
	var i = (document.all) ? window.event.srcElement.parentElement : sourceElement;		
	i.style.background = "#99CC99"; //valitun solun taustavari
	
	setStatus("Click 'detail' to view product detail page"); //IE:n status teksti

	
	
	//Detail ikkunan sisalto
	var detailWindow = getObj("detail");
	var filter_panel = getObj("divFilter");
	filter_panel.style.visibility = "hidden";
	detailWindow.style.visibility = "visible";
	detailWindow.style.width = filter_panel.offsetWidth + 00 + "px";
	detailWindow.style.top = (document.documentElement.scrollTop > getObj("selitys").offsetTop) 
		? document.documentElement.scrollTop + 00 : getObj("selitys").offsetTop + 17 + "px";
	detailWindow.style.left = getObj("selitys").offsetLeft - 00 + "px";
	content = "<div class='hover_header'>" + getFieldValue(itemId,"model") +" "
	+ getPixels(itemId,"pixels") + getType(itemId) + 
	"</div><div class='hover_body'>";
	content += "<div style='height: 180px'>"; 
	content += "<span class='hover_field'><br>Camera Type: </span> " + getFieldValue(itemId, "model") + "<br>";
	content += getFieldNameAndValue(itemId,"interface") + "<br> " +"<span class='hover_field'>Bits per Channel: </span>" + getFieldValue(itemId, "bits") + " bits<br>" 
		+ " <span class='hover_field'>Spectral Range: </span>"  + getFieldValue(itemId, "spectrum") + "<br>";
	content += getFieldNameAndValue(itemId,"pixel_size") +" <br>"+ " <span class='hover_field'>Output Format: </span>"+ getFieldValue(itemId, "output_format");
	content += "</div>";	
	content += "</div>";
	detailWindow.innerHTML = content;	
}

//piilotetaan detail tiedot siirtamalla niita 1500pix ylos
function hideDetail() {
	if(ignore) return;	
	getObj("divFilter").style.visibility = "visible";
	getObj("detail").style.visibility = "hidden";
}
//getPixels funktio tyyppiä varten
function getPixels(itemId, kentanNimi) {
	var pixels=getFieldValue(itemId,"pixels");
	var maara=pixels.substring(4,8);
	if (maara == "0512") maara=512;
	return maara;
	}
//getType funktio kameran mallin tekemiseen
var ulos

function getType(itemId, kentanNimi) {
	var out;
	var nopeus = getFieldValue(itemId,"pixel_rate");
	if (getFieldValue(itemId,"model")=="XIIMUS"){
	if(getFieldValue(itemId,"interface")=="LVDS") out="LT";
	if(getFieldValue(itemId,"interface")=="Camera Link" )out="CT";
	if(getFieldValue(itemId,"spectrum")=="R-GB-IR")out+="i";
	if(getFieldValue(itemId,"pixel_size")=="14 ?m")out+="14";
	if(getFieldValue(itemId,"pixel_rate")=="8.3 MHz")nopeus='08';
	nopeus = nopeus.substring(0,2);
	ulos = out+"-"+nopeus;}
	if (getFieldValue(itemId,"model")=="Pricolor"){
	if(getFieldValue(itemId,"interface")=="LVDS")out="L";
	if(getFieldValue(itemId,"interface")=="RS-422")out="R";
	if(getFieldValue(itemId,"interface")=="Camera Link")out="C";
	if(getFieldValue(itemId,"pixel_size")=="14 ?m")out+="14";
	ulos = out;}
	if (getFieldValue(itemId,"model")=="Colibri"){
	if(getFieldValue(itemId,"interface")=="LVDS")out="CL";
	if(getFieldValue(itemId,"interface")=="Camera Link")out="LS";
	if(getFieldValue(itemId,"interface")=="RS-422")out="RS";
	if(getFieldValue(itemId,"pixel_size")=="14 ?m")out+="14";
	ulos = out;}
	return ulos;}


function getFieldNameAndValue(itemId, kentanNimi) {
	if(tko[kentanNimi] == null) { alert("Field not found: " + kentanNimi); return ""; }
	return "<span class='hover_field'>" + tko[kentanNimi].nakyvaNimi + ":</span> " + getFieldValue(itemId, kentanNimi);
}
//jarjestelyn kayttama lajittelufunktio jarjestamista varten
function getFieldValue(itemId, kentanNimi) {
	var haettava = tko[kentanNimi];
	if(haettava == null) { alert("Fields not found: " + kentanNimi); return ""; } //paluttaa virhe ilmoituksen mikali kentta tyhjana
	var addtoend = "";
	if(kentanNimi == "pixel_size") {
		addtoend = " ?m";	//lisaa "pixel_size" kenttaa " ?m"
	}
	else if(kentanNimi == "pixel_rate") {
		addtoend = " MHz";  //lisaa "pixel_rate" kenttaa " MHz"
	}
	else if(kentanNimi == "max_line_rate") {
		addtoend = " lps";  //lisaa "max_line_rate" kenttaa " lps"
	}
	var haettavaindex = haettava.index;	 //hakee integraallin joka toimii avaimena haettaessa kamerasta tiettya arvoa
	var num = numeraalit[itemId][haettavaindex];
	
	var value = taulukon_tiedot[haettavaindex][numeraalit[itemId][haettavaindex]]; //hakee taulukon_tiedot taulukosta integraalilla arvon, jossa kayttaa numeraalit, itemId seka haettavaindex integraaleja avaimina 
	
	if(value != "") { //mikali value ei ole tyhja
		value = value + addtoend;		//lisataan string addtoend loppuun
	}
	if(kentanNimi == "pixel_rate" && value == "08.3 MHz") {
		value = "8.3 MHz";		//otetaan ulostulonopeudesta nolla veks
	}
	if(kentanNimi == "pixels" && value == "3 x 0512") {
		value = "3 x 512";		//otetaan pikseleista nolla veks
	}
	return value;	//palautetaan arvo
}

var taulukon_tiedot; //luodaan muuttuja

function init() {	
	taulukon_tiedot = new Array(); //taulukon_tiedot on kaksiulotteinen taulukko, joka sisaltaa kaikkien tietokannassa olevien kameroiden mahdolliset arvot seka maksimi pituudet
	for(var i = 0;i<tietokannan_arvot.length;i++) { //tietokannan_arvot.length on yhta pitka kuin taulukko(9)
		taulukon_tiedot[i] = new Array(); //tehdaan kolmas ulottuvuus taulukolle
		taulukon_tiedot[i] = tietokannan_arvot[i]; //siirretään tietokantaa taulukon_tietot taulukolle
		}
	getObj("seula").style.visibility = "visible";
	getObj("bottom_paging").style.visibility = "visible";

	// maaritellaan sarakkeiden leveys
	for(var laskuri = 0; laskuri < kenttienjarjestysnaytolla.length; laskuri++) {
		var kentanleveys = tko[kenttienjarjestysnaytolla[laskuri]].nakyvaNimi.length * 7 + 23;
		var maksimikentanleveys = maksimipituudetkentille[kenttienjarjestysnaytolla[laskuri]] * 4.5;
		sarakkeenleveys[laskuri] = Math.max(kentanleveys, maksimikentanleveys);
	}
	
	for(var i = 0; i < numeraalit.length; i++) {
		var content = "<tr id='" + i + "'" 							//tehdaan solu ja annetaan "id"
			+ " onMouseOver=\"showDetail('" + i + "', this)\""		//hiiren ollessa paalla naytetaan detailit
			+ " onMouseOut='unHighlightRow(this)' style='background-color:#FFFFFF'"	//hiiren poistaessa korostus katoaa
			+ " onClick='window.open(\"details.php?id=" 				//klikattaessa lahettaa POST -metodilla detail.php -tiedostolle kameran in:n
			+ getFieldValue(i, "id")+ "\", \"details_window\", \"menubar=yes, width=1020px, height=935, resizable, scrollbars\");'" //avaa ikkunan ja antaa parametrit
			+ ">"; 													//sulkee solun
		for(var laskuri = 0; laskuri < kenttienjarjestysnaytolla.length; laskuri++) {	//kenttienjarjestysnaytolla.length laskee montako kenttaa naytolle tulee
			var kentantunniste = tko[kenttienjarjestysnaytolla[laskuri]].kentanNimi;	//hakee kentan tunnisteen
			content += "<td class=\"field_value\"";					//antaa CSS -maaerittelyn solulle
			if(kentantunniste == "model") {							//jos soluun tulee malli se alleviivataan
				content += " style=\"text-decoration: underline;\"";
			}
				content += " nowrap>" + getFieldValue(i, kentantunniste) + "</td>";	//hakee arvon soluun ja sulkee sen
		}
		content += "</tr>";	//sulkee sarakkeen
		solut[i] = content;
	}
	for(var i=0;i<fkj.length;i++) {				//silmukka kay lapi 
		var filterIdx = fkj[i];					//saa filtterin arvokseen	
		var fld = tko[filterIdx].kentanNimi;	//saa kentan nimen arvokseen
		filterSelect = getForm("seulonta")[fld];	//sa a filtterin eraan hakutermin hakuehdot sisallokseen
		filterSelect.options[0] = new Option("Any", "Any");//lisaa any vaihtoehdon
		var j = 1;
		/*if(fld == "pixel_rate") {		//korjaus jotta saadaan 08,3-->8,3 
			
			filterSelect.options[j++] = new Option("8.3", arr_pos(taulukon_tiedot[filterIdx],"08.3"));
			filterSelect.options[j++] = new Option("16.7",arr_pos(taulukon_tiedot[filterIdx],"16.7"));
			filterSelect.options[j++] = new Option("20", arr_pos(taulukon_tiedot[filterIdx],"20"));
			filterSelect.options[j++] = new Option("25",arr_pos(taulukon_tiedot[filterIdx],"25"));
			filterSelect.options[j++] = new Option("30",arr_pos(taulukon_tiedot[filterIdx],"30"));
			filterSelect.options[j++] = new Option("33",arr_pos(taulukon_tiedot[filterIdx],"33"));
			filterSelect.options[j++] = new Option("40",arr_pos(taulukon_tiedot[filterIdx],"40"));
		}*/
		if(fld == "pixels") {		//korjaus jotta saadaan 08,3-->8,3 
		
			filterSelect.options[j++] = new Option("3 x 512", arr_pos(taulukon_tiedot[filterIdx],"3 x 0512"));
			filterSelect.options[j++] = new Option("3 x 1024",arr_pos(taulukon_tiedot[filterIdx],"3 x 1024"));
			filterSelect.options[j++] = new Option("3 x 2048", arr_pos(taulukon_tiedot[filterIdx],"3 x 2048"));
			filterSelect.options[j++] = new Option("3 x 4096", arr_pos(taulukon_tiedot[filterIdx],"3 x 4096"));
		}
		if(fld == "spectrum") {		//korjaus jotta saadaan 08,3-->8,3 
		
			filterSelect.options[j++] = new Option("RGB", arr_pos(taulukon_tiedot[filterIdx],"RGB"));
			filterSelect.options[j++] = new Option("R-GB-IR", arr_pos(taulukon_tiedot[filterIdx],"R-GB-IR"));
		}
	
		if  (fld != "pixels" && fld != "spectrum")
			{
			var hakutaulukko = new Array();		//taulukko, jonne siirretaan filtterin tarjoamat hakuehdot
			var v=0;
			for(var j=0;j<taulukon_tiedot[filterIdx].length;j++) {	//rullaa kunnes kaikki filtterin hakuehdot on kayty lapi
				var haku = taulukon_tiedot[filterIdx][j];
				hakutaulukko[v++] = haku;
			}
			sortFilter(hakutaulukko);	//jarjestaa taulukon
			
			for(var j=0;j<hakutaulukko.length;j++) {
				filterSelect.options[j+1] = new Option(hakutaulukko[j], arr_pos(taulukon_tiedot[filterIdx], hakutaulukko[j]));
			}
		}		
	}
	Filter();	//kaynnistaa filtterin
}//jarjestaa filtterin oikein
function arr_pos(array, value) {	
	for(var i=0; i<array.length; i++) {
		if(value == array[i])
			return i;
	}
}
// funktio Kentat, joka asettaa taulukkomuuttujaan "tko"(taulukon kenttÃ¤olio) oliot, joilla on halutut parametrit  
function Kentat(kentanNimi, nakyvaNimi, filterNro, index ) {
	this.kentanNimi = kentanNimi; //kentÃ¤n kutsuma nimi
	this.nakyvaNimi = nakyvaNimi; //kentÃ¤n nimi taulukossa
	this.filterNro = filterNro; //monenteenko filtteri ehtoon vastaa
	this.index = index; //indeksi numero
}
//globaali taulukkomuuttuja "tko"(taulukon kenttÃ¤olio) oliot, joilla on halutut parametrit  
var tko = new Array(); 
tko['model'] = tko[0] = new Kentat('model', 'Model', '0', '0'); //kameran malli joka ei vastaa filtteriin, koska asetettu "0", indeksiltaan  "0"
tko['pixels'] = tko[1] = new Kentat('pixels', 'Pixels', '1', '1'); //pikselit, jotka vastaa filtteriin "1", indeksiltÃ¤Ã¤n "1"
tko['pixel_size'] = tko[2] = new Kentat('pixel_size', 'Pixel Size', '2', '2'); //..
tko['max_line_rate'] = tko[3] = new Kentat('max_line_rate', 'Max Line Rate', '3', '3');
tko['interface'] = tko[4] = new Kentat('interface', 'Interface', '4', '4');
tko['bits'] = tko[5] = new Kentat('bits', 'Bits', '6', '5');
tko['pixel_rate'] = tko[6] = new Kentat('pixel_rate', 'Pixel Rate', '0', '6');
tko['id'] = tko[7] = new Kentat('id', 'id', '0', '7');
tko['output_format'] = tko[8] = new Kentat('output_format', 'Output Format', '0', '8');
tko['spectrum'] = tko[9] = new Kentat('spectrum', 'Spectral Range', '6', '9');
//globaali muuttuja "kenttienjarjestysnaytolla" asettaa taulukon kentÃ¤t haluttuun jÃ¤rjestykseen nÃ¤ytÃ¶llÃ¤
var kenttienjarjestysnaytolla = new Array(0, 9, 1, 2, 3, 4, 5); //taulukon kenttat

//globaali taulukko "fkj"(filtterin kenttien jarjestys), jarjestaa kentat haluttuun jÃ¤rjestykseen nÃ¤ytÃ¶lla
var fkj = new Array();
fkj['max_line_rate'] = fkj[0] = 3;
fkj['pixels'] = fkj[1] = 1;
fkj['pixel_size'] = fkj[2] = 2;
fkj['interface'] = fkj[3] = 4;
fkj['bits'] = fkj[4] = 5;
fkj['spectrum'] = fkj[5] = 9;
//fkj['pixel_rate'] = fkj[5] = 6;


//globaali muutuja "maksimipituudetkentille" tietokannan kenttien maksimipituudet tietokannassa(model, pixels, pixel_size, max_line_rate, interface, bits, pixel_rate, id, outputformat,spectrum)
var maksimipituudetkentille = [8, 4, 2, 5, 11, 2, 2, 3, 11, 7]; 

//taulukon relaatiot, jossa numerot viittaavat jarjestykseltÃ¤Ã¤n(model, pixels, pixel_size, max_line_rate, interface, bits, pixel_rate, id, outputformat)
var numeraalit = [
[0,0,1,17,0,1,5,0,0,0],
[0,0,1,18,0,1,6,1,0,0],
[0,1,0,10,0,1,2,2,0,0],
[0,1,0,13,0,1,3,3,0,0],
[0,1,0,15,0,1,5,4,0,0],
[0,1,0,16,0,1,6,5,0,0],
[0,1,0,8,0,1,1,6,1,0],
[0,1,1,10,0,1,2,7,0,0],
[0,1,1,13,0,1,3,8,0,0],
[0,1,1,15,0,1,5,9,0,0],
[0,1,1,16,0,1,6,10,0,0],
[0,1,1,8,0,1,1,11,1,0],
[0,2,0,4,0,1,2,12,0,0],
[0,2,0,6,0,1,3,13,0,0],
[0,2,0,9,0,1,5,14,0,0],
[0,2,0,12,0,1,6,15,0,0],
[0,2,0,3,0,1,1,16,1,0],
[0,0,1,17,1,1,5,17,0,0],
[0,0,1,18,1,1,6,18,0,0],
[0,1,0,10,1,1,2,19,0,0],
[0,1,0,13,1,1,3,20,0,0],
[0,1,0,15,1,1,5,21,0,0],
[0,1,0,16,1,1,6,22,0,0],
[0,1,0,1,1,1,0,23,1,0],
[0,1,1,10,1,1,2,24,0,0],
[0,1,1,13,1,1,3,25,0,0],
[0,1,1,15,1,1,5,26,0,0],
[0,1,1,16,1,1,6,27,0,0],
[0,1,1,1,1,1,0,28,1,0],
[0,2,0,4,1,1,2,29,0,0],
[0,2,0,6,1,1,3,30,0,0],
[0,2,0,9,1,1,5,31,0,0],
[0,2,0,12,1,1,6,32,0,0],
[0,2,0,0,1,1,0,33,1,0],

[0,3,0,19,0,1,6,61,0,0],
[0,3,0,20,0,1,5,62,0,0],
[0,3,0,21,0,1,3,63,0,0],
[0,3,0,22,0,1,2,64,0,0],
[0,3,0,23,0,1,1,65,1,0],
[0,3,0,19,1,1,6,66,0,0],
[0,3,0,20,1,1,5,67,0,0],
[0,3,0,21,1,1,3,68,0,0],
[0,3,0,22,1,1,2,69,0,0],
[0,3,0,24,1,1,0,70,1,0],

[0,1,0,10,0,1,2,71,0,1],
[0,1,0,13,0,1,3,72,0,1],
[0,1,0,8,0,1,1,73,1,1],
[0,1,1,10,0,1,2,74,0,1],
[0,1,1,13,0,1,3,75,0,1],
[0,1,1,8,0,1,1,76,1,1],
[0,2,0,4,0,1,2,77,0,1],
[0,2,0,6,0,1,3,78,0,1],
[0,2,0,3,0,1,1,79,1,1],
[0,1,0,10,1,1,2,80,0,1],
[0,1,0,13,1,1,3,81,0,1],
[0,1,0,1,1,1,0,82,1,1],
[0,1,1,10,1,1,2,83,0,1],
[0,1,1,13,1,1,3,84,0,1],
[0,1,1,1,1,1,0,85,1,1],
[0,2,0,4,1,1,2,86,0,1],
[0,2,0,6,1,1,3,87,0,1],
[0,2,0,0,1,1,0,88,1,1],

[0,2,0,9,1,1,5,89,0,1],
[0,2,0,12,1,1,6,90,0,1],
[0,1,1,15,1,1,5,91,0,1],
[0,1,1,16,1,1,6,92,0,1],
[0,1,0,15,1,1,5,93,0,1],
[0,1,0,16,1,1,6,94,0,1],
[0,2,0,9,0,1,5,95,0,1],
[0,2,0,12,0,1,6,96,0,1],
[0,1,1,15,0,1,5,97,0,1],
[0,1,1,16,0,1,6,98,0,1],
[0,1,0,15,0,1,5,99,0,1],
[0,1,0,16,0,1,6,100,0,1]
];

//Kolibri
//[2,1,0,14,0,0,4,52,0,0],
//[2,1,0,14,1,0,4,53,0,0],
//[2,1,0,14,2,0,4,54,0,0],
//[2,1,1,14,0,0,4,55,0,0],
//[2,1,1,14,1,0,4,56,0,0],
//[2,1,1,14,2,0,4,57,0,0],
//[2,2,0,7,0,0,4,58,0,0],
//[2,2,0,7,1,0,4,59,0,0],
//[2,2,0,7,2,0,4,60,0,0],

//globaali "tietokannan_arvot", joihin taulukko"numeraalit" sidotaan
var tietokannan_arvot = new Array();
tietokannan_arvot[0]=["XIIMUS","PRICOLOR","COLIBRI"];
tietokannan_arvot[1]=["3 x 0512","3 x 1024","3 x 2048","3 x 4096"];
tietokannan_arvot[2]=["10","14"];
tietokannan_arvot[3]=["3900","7500","7600","7700","9300","9400","11600","14000","14800","15500","17900","18000","18500","22300","27000","29600","35400","54600","65000","9500","7900","5900","4700","3900","1950"];
tietokannan_arvot[4]=["Camera Link","LVDS","RS-422"];
tietokannan_arvot[5]=["10","12"];
tietokannan_arvot[6]=["08.3","16.7","20","25","30","33","40"];
tietokannan_arvot[7]=["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101"];
tietokannan_arvot[8]=["Parallel","Multiplexed"];
tietokannan_arvot[9]=["RGB","R-GB-IR"];
