var xmlHttp
var ajaxID		// MIHIN ELEMENTTIIN PALAUTE LAITETAAN


/** TAULUKON RIVIN LISÄTIETO */
var show_tooltip = false // JOS NÄYTTÄMINEN PERUUTETAAN ENNEN KUIN EHDITÄÄN AVATA
var tooltip_open = false // ONKO TÄLLÄ HETKELLÄ AUKI
function showTooltipNow(nr,tyyppi,moduuli){				// ALOITTAA AVAAMISEN
	show_tooltip = 2 // OLLAAN LATAAMASSA
	var url = 'system.tooltip.php?tooltip_moduuli='+moduuli+'&tooltip_type='+tyyppi+'&nr='+nr
	ajaxRequest(url,getTooltip)
	}
function showTooltip(nr,tyyppi,moduuli){				// ALOITTAA AVAAMISEN
	if ( !show_tooltip ){
		show_tooltip = 2 // OLLAAN LATAAMASSA
		var url = 'system.tooltip.php?tooltip_moduuli='+moduuli+'&tooltip_type='+tyyppi+'&nr='+nr
		setTimeout("ajaxRequest('"+url+"',getTooltip)",1000)
	}
	}
function getTooltip(){			// AJAX VASTAANOTTO
	if ( xmlHttp.readyState==4 || xmlHttp.readyState=="complete" ){
		setTimeout("handleTooltip()",250) // TARKASTELEE KOSKA VALMIS
	}
	}
function handleTooltip(){
	if ( show_tooltip == 2 ){ // JOS EI PERUUTETTU
		layerHide('tooltip')
		document.getElementById('tooltip').innerHTML = xmlHttp.responseText 
		layerShow('tooltip',-35,20)
		show_tooltip = 1
	}
	}
function closeTooltip(){
	show_tooltip = false
	xmlHttp.abort();
	layerHide('tooltip')
	}
function cancelTooltip(){
	show_tooltip = false
	}
/** PIKAHAKU **/
function avaaPikahaku(){									// ALOITTAA AVAAMISEN
	if ( document.getElementById('pikahaku').innerHTML == '' ){	// EKA KERTA, HAE SISÄLTÖ
		// DEBUG LUO DOKUMENTTIIN UUSI 'pikahaku' DIV -ELEMENTTI, JOS EI VIELÄ OLE
		ajaxRequest('system.pikahaku.php?',getPikahaku)
	}else{
		naytaPikahaku()
	}
	}
function getPikahaku(){										// HAKEE IKKUNAN SISÄLLÖN
	if ( xmlHttp.readyState==4 || xmlHttp.readyState=="complete" ){
		document.getElementById('pikahaku').innerHTML = xmlHttp.responseText 
		naytaPikahaku()
	}
	}
function naytaPikahaku(){									// NÄYTTÄÄ IKKUNAN SISÄLLÖN
	document.getElementById('pikahaku').style.visibility = 'visible'
	document.getElementById('asetus[kayttaja_pikahaku]').focus()
	layerShowOnElement('pikahaku_input','pikahaku',-10,-10)
	}
/** KAPPALEEN MUOKKAUS **/
function ajaxMuokkaaKappale(nr){							// ?? JOKU TESTI ??
	//alert('Muokkaa: '+nr)
	var param = ''
	param = param + '&param[text_width]='+document.getElementById('kappale_'+nr).offsetWidth
	param = param + '&param[text_height]='+document.getElementById('kappale_'+nr).offsetHeight
	sendAjax('index.php?ajax[muokkaa_kappale]='+nr+param,'kappale_'+nr)
	}
function ajaxTallennaKappale(nr){ 						// TALLENNA OHJE
	//alert('Tallenna: '+nr)
	var param = ''
	param = param + '&tallenna[leipateksti]='+ajaxUrlencode(document.getElementById('ajax_'+nr+'_teksti').value)
	sendAjax('index.php?ajax[tallenna_kappale]='+nr+param,'kappale_'+nr)
	}
/** OSAKASREKISTERI **/
function rakennuspuuRakennus(nr){ 						// NÄYTÄ VERKKOKAUPAN TUOTTEEN TIEDOT
	sendAjax('muokkaa_osakasajax.php?nayta[ajax_rakennuspuu]='+nr,'puu_'+nr,'Hakee...')
	}
function rakennuspuuTiedot(nr,tyyppi){ 				// NÄYTÄ VERKKOKAUPAN TUOTTEEN TIEDOT
	sendAjax('muokkaa_osakasajax.php?nayta[ajax_rakennuspuu]='+nr+'&rakennuspuu_tyyppi='+tyyppi,'puu_'+nr+'_'+tyyppi,'Hakee...')
	}
/** TEKSTIVIESTIN LÄHETYS **/
function tekstiviestiLaheta(){ 							// LÄHETÄ VIESTI
	var param = ''
	param = param + '&tallenna[numero]=' + ajaxUrlencode(document.getElementById('tekstiviesti_numero').value)
	param = param + '&tallenna[viesti]=' + ajaxUrlencode(document.getElementById('tekstiviesti').value)
	sendAjax('ajax.php?nayta[laheta_tekstiviesti]=TRUE' + param,'tekstiviestiPalaute')
	tekstiviestiReset()
	}
function tekstiviestiReset(){ 							// NOLLAA LOMAKE
	document.getElementById("tekstiviestiForm").reset()
	tekstiviestiLaske()
	}
function tekstiviestiLaske(){								// LASK KUINKA MONTA MERKKIÄ JÄLJELLÄ
	var merkkeja = 160 - document.getElementById('tekstiviesti').value.length
	if ( merkkeja < 0 ){
		document.getElementById('tekstiviesti').value = document.getElementById('tekstiviesti').value.substr(0,160)
		merkkeja = 0
	}
	document.getElementById('tekstiviestiMerkkeja').innerHTML = merkkeja + ' merkkiä jäljellä'
	}
/** MUISTILAPPU **/
function ajaxMuokkaaMuistilappu(nr){ 					// NÄYTÄ VERKKOKAUPAN TUOTTEEN TIEDOT
	sendAjax('ajax.php?nayta[muokkaa_muistilappu]='+nr,'ajaxMuistilappu_'+nr)
	}
function ajaxTallennaMuistilappu(nr){ 					// TALLENNA OHJE
	var param = ''
	param = param + '&tallenna[otsikko]='+ajaxUrlencode(document.getElementById('tallenna['+nr+'][otsikko]').value)
	param = param + '&tallenna[arvo]='+ajaxUrlencode(document.getElementById('tallenna['+nr+'][arvo]').value)
	sendAjax('ajax.php?nayta[tallenna_muistilappu]='+nr+param,'vimpain_muistilappu')
	}
function ajaxPoistaMuistilappu(nr,tunniste,id){ 	// POISTA OHJE
	document.getElementById('ajaxMuistilappu_'+nr).style.display	= 'none'
	document.getElementById('ajaxMuistilappu_'+nr).innerHTML		= ''
	sendAjax('ajax.php?nayta[poista_muistilappu]='+nr+'&tallenna[nimi]='+tunniste,'vimpain_muistilappu')
	}
/** VIMPAIMIEN KÄSITTELY **/
function naytaVimpain(nimi,ajax){						// Vimpaimen näyttäminen
	id = 'vimpain_' + nimi
	kytkin = 'vimpainkytkin_' + nimi
	value = 'kayttaja_vimpain_' + nimi
	// MUUTA NÄKYVYY JA TALLENNA
	if ( document.getElementById(id).style.display == 'none' ){
		tallennaAsetus(1,value,value)		// TEHDÄÄN ENNEN SISÄLÖN HAKUA, JOTTA TÄMÄ ASETUSTALLENNUS EI AJA KESKENERÄISEN HAUN PÄÄLLE
		document.getElementById(id).style.display = 'block';
		document.getElementById(kytkin).className = 'vimpain_on';
		if ( ajax != '' && document.getElementById(id).innerHTML == '' ){
			sendAjax(ajax,id)
		}
	} else {			// SULJE
		tallennaAsetus(0,value,value)		// TEHDÄÄN ENNEN SISÄLÖN HAKUA, JOTTA TÄMÄ ASETUSTALLENNUS EI AJA KESKENERÄISEN HAUN PÄÄLLE
		document.getElementById(id).style.display = 'none';
		document.getElementById(kytkin).className = 'vimpain_off';
	}
	}
/** PIKALINKIT **/
function ajaxTallennaPikalinkki(){ 						// TALLENNA OHJE
	document.getElementById('kayttaja_pikalinkit').style.visibility	= 'hidden'								// PIILOTA VALINTARUUTU
	var param = ''
	param = param + '&tallenna[otsikko]='+document.getElementById('tallenna_pikalinkki[otsikko]').value		// url
	param = param + '&tallenna[nimi]='+ajaxUrlencode(document.getElementById('tallenna_pikalinkki[nimi]').value)			// LINKKINIMI
	param = param + '&tallenna[status]='+document.getElementById('tallenna_pikalinkki[status]').value		// näkyy välilehtenä
	sendAjax('ajax.php?nayta[tallenna_pikalinkki]=TRUE'+param,'ajaxPikalinkit')
	}
/** TIEDON HAKEMISEN VALMISTELU **/
function ajaxNaytaTuote(nro){ 							// NÄYTÄ VERKKOKAUPAN TUOTTEEN TIEDOT
	document.getElementById('ajaxTuote').style.visibility	= 'visible'
	document.getElementById('ajaxTuote').innerHTML			= '<i>Ladataan tietoja...</i>' 
	sendAjax('ajax.php?nayta[tuote]='+nro,'ajaxTuote')
	} 

// AJAX VALIKKO - ENNUSTAVAN SYÖTÖN VALIKON ARVOT AJAXIN KAUTTA
var ajaxValikkoData
var _inputSet
var _inputLength = 0
function ajaxValikko(fieldActive,method){ /**
	@param string fieldActive fieldSet alla oleva [nimi]
	@param method
		1 = Haetaan, vaikka alle 3 kirjainta (mutta ei jos merkkimäärä ei ole muuttunut)
		2 = Hakee aina
		empty = Pakotetaan hakemaan, jos tyhjä kenttä
		clear = tyhjentää kentän

	NÄMÄTALLENNETAAN inputActive kentän attribuuteiksi
	@param string fieldSet tallenna[nimi] jos tyhjä, päivitetään vain active
	@param string moduuli moduuli jonka ajax kutsutaan
	@param string nimi moduulin ajax.[nimi].php
	Tapa 2
	@param string fieldSet tyhjä
	@param string fieldActive Päivitettävän arvon id
	**/
	
	if ( method == 'clear' ){
		ajaxValikkoTyhjenna(fieldActive)
		method = 'empty'
		}
	// ASETUKSET
		_inputSet 		= ''
		_inputActive 	= fieldActive
	
		if ( document.getElementById("nimi_"+_inputActive) )
			hakusana = document.getElementById("nimi_"+_inputActive).value
		else
			hakusana = document.getElementById(_inputActive).value
	
		var nimi 	= document.getElementById(_inputActive).getAttribute('ajax_sivu')
		var param 	= document.getElementById(_inputActive).getAttribute('ajax_param')
		var moduuli = document.getElementById(_inputActive).getAttribute('ajax_moduuli')

	// TOIMINNOT
		if ( method == 'empty' && hakusana.length == 0 ) method = 2
		else method = 0 // PAKOTTAA HAKEMAAN
		// alert('method: '+method)
		var url = 'ajax.php?ajax[moduuli]='+moduuli+'&ajax[nimi]='+nimi+'&ajax[sana]='+hakusana+param
		
		// alert('method:'+method+' hakusana:'+hakusana.length+'  input:'+_inputLength+'  URL:'+url)
		if ( method == 2 || ( ( method || hakusana.length >= 3 ) && hakusana.length >= _inputLength ) ){ // VÄHINTÄÄN 3 MERKKIÄ, ON LISÄTTY
			var xml = new JKL.ParseXML( url )
			var func = function ( data ) {                  // define call back function
			  ajaxValikkoNayta( data )
			}
			xml.async( func )
			xml.parse()
		} else {
			ajaxValikkoSulje()
		}
		_inputLength = hakusana.length	// SEURAAVAA KÄSITTELYKERTAA VARTEN
	}
function ajaxValikkoAvaa(fieldSet,fieldActive,moduuli,nimi,force){ /**
	@param string fieldSet tallenna[nimi] jos tyhjä, päivitetään vain active
	@param string fieldActive fieldSet alla oleva [nimi]
	@param string moduuli moduuli jonka ajax kutsutaan
	@param string nimi moduulin ajax.[nimi].php
	@param force
		1 = Haetaan, vaikka alle 3 kirjainta (mutta ei jos merkkimäärä ei ole muuttunut)
		empty Pakotetaan hakemaan, jos tyhjä kenttä
		2 = HAkee aina
	Tapa 2
	@param string fieldSet tyhjä
	@param string fieldActive Päivitettävän arvon id
	**/
	
	if ( fieldSet!='' ){	// MONEN ARVON SYÖTTÄMINEN
		_inputSet 		= fieldSet
		_inputActive 	= fieldSet+'['+fieldActive+']'
	} else {				// ID -VALINTA
		_inputSet 		= ''
		_inputActive 	= fieldActive
	}
	if ( document.getElementById("nimi_"+_inputActive) )
		hakusana = document.getElementById("nimi_"+_inputActive).value
	else
		hakusana = document.getElementById(_inputActive).value

	var ajax_param 	= document.getElementById(_inputActive).getAttribute('ajax_param')
	var ajax_sivu 		= document.getElementById(_inputActive).getAttribute('ajax_sivu')
	var ajax_moduuli 	= document.getElementById(_inputActive).getAttribute('ajax_moduuli')
	
	if ( force == 'empty' && hakusana.length == 0 ) force = 2
	else force = 0 // PAKOTTAA HAKEMAAN
	var url = 'ajax.php?ajax[moduuli]='+moduuli+'&ajax[nimi]='+nimi+'&ajax[sana]='+hakusana
	// alert('force:'+force+' hakusana:'+hakusana.length+'  input:'+_inputLength+'  ')
	if ( force == 2 || ( ( force || hakusana.length >= 3 ) && hakusana.length >= _inputLength ) ){ // VÄHINTÄÄN 3 MERKKIÄ, ON LISÄTTY
		var xml = new JKL.ParseXML( url )
		var func = function ( data ) {                  // define call back function
		  ajaxValikkoNayta( data )
		}
		xml.async( func )
		xml.parse()
	} else {
		ajaxValikkoSulje()
	}
	_inputLength = hakusana.length
	}
function ajaxValikkoNayta(data){				/** KÄSITTELE SAATU XML **/
	if ( _inputActive == '' ) return false
	// MUUTTUJAT
		if ( document.getElementById("nimi_"+_inputActive) ) nameID = "nimi_"+_inputActive // ID -VALINNAN NÄKYVÄ NIMI
		else nameID = _inputActive // INPUT -KENTTÄ
				
		var empty_value 	= ''
		var elemID			= document.getElementById(nameID)
		var elemInput		= document.getElementById('nimi_'+_inputActive)
		var elemSelect		= document.getElementById('inputSelect')
		
		ajaxValikkoData 	= data.response
		_addressMatch 		= ''		// TYHJENNÄ TULOSTAULU
		_addressMatchHeader = ''	// TYHJENNÄ TULOSTAULUN OTSIKKO
		_naytaArvo = ''
		var width			= 250		// OLETUSLEVEYS
		var height_offset = 22 		// PYSYSUUNTAISEEN SIJOITTELUN OLETUS
		var rivi				= '' 		// SIVIN DATA
		var rivi_otsikko	= '' 		// RIVIKOHTAINEN OTSIKKO
		var rivi_teksti	= '' 		// RIVIKOHTAINEN LiSÄTIETO

	// JOS VAIN YKSI ARVO JA ID -SYÖTTÖ
		if ( document.getElementById("nimi_"+_inputActive) && ajaxValikkoData.rivit.rivi.length == 2 ){// VAIN PAKKORIVI JA 1 ARVO
			if ( document.getElementById(_inputActive).value != ajaxValikkoData.rivit.rivi[1]['id']  ) ajaxValikkoArvo(1)
			return true
		}
		
	// KÄY RIVIT LÄPI
		for ( var i = 1 ; i < ajaxValikkoData.rivit.rivi.length ; i++) { // 1-> KOSKA EKA ON HÄMYRIVI

			rivi 				= ajaxValikkoData.rivit.rivi[i]
			rivi_otsikko	= ajaxValikkoData.asetus.otsikko
			if ( ajaxValikkoData.asetus.teksti ) rivi_teksti = ajaxValikkoData.asetus.teksti
			
			// KORVAA TÄGIT
			for ( var j = 0 ; j < ajaxValikkoData.asetus.kentta.length ; j++) {
				field_name 		= ajaxValikkoData.asetus.kentta[j]
				field_value 	= rivi[field_name]
				if ( !field_value ){
					rivi_otsikko	= rivi_otsikko.split('#'+field_name+'#').join(empty_value)
					if ( rivi_teksti != '' ) rivi_teksti = rivi_teksti.split('#'+field_name+'#').join(empty_value);
				}else{
					rivi_otsikko	= rivi_otsikko.split('#'+field_name+'#').join(field_value)
					if ( rivi_teksti != '' ) rivi_teksti = rivi_teksti.split('#'+field_name+'#').join(field_value);
				}
				// if ( i == 1 ) alert('rivi teksti + '+field_name+'='+rivi[field_name]+' -> '+rivi_teksti)
			}
			
			// NÄYTÄ VALINTA
			if ( rivi_teksti!='' )	_naytaArvo = rivi_otsikko+'<DIV class=inputSelectionInfo>'+rivi_teksti+'</DIV>'
			else							_naytaArvo = rivi_otsikko
			_addressMatch = _addressMatch + '<tr><td class=inputSelection onMouseDown=ajaxValikkoArvo('+i+')>'+_naytaArvo+'</td></tr>'
		}
	
	// NÄYTÄ VALIKKO
		if ( _addressMatch != '' ){
			// _addressMatch = '<tr><td class=inputSelectionheader onMouseDown=ajaxValikkoTyhjenna() style="text-align:right;">Sulje valikko X</td></tr>' + _addressMatch
			if ( ajaxValikkoData.asetus.leveys ) width = ajaxValikkoData.asetus.leveys
			else if ( elemID.style.width ) 	width = get_kokonaisluku(elemID.style.width) *1 + 6 /* LISÄTÄÄN input_selection padding ja border */
			if ( elemID.style.height ) 	height_offset = get_kokonaisluku(elemID.style.height) - 6
				
			var _text = '<DIV style=\'overflow: auto; max-height: 350px;\'><table cellpadding=0 cellspacing=0 border=0 class=inputSelectionTable style=width:'+width+'px;>'+_addressMatch+_addressMatchHeader+'</table></DIV>'
			elemSelect.innerHTML = _text
			layerShowOnElement(nameID,'inputSelect',0,height_offset)
		} else {
			ajaxValikkoSulje()
		}
	}
function ajaxValikkoArvo(data_i){	/** SIJOITA VALITTU ARVO KENTTÄÄN **/
	var arvo = ''
	if ( _inputSet ){ // TÄYTETÄÄN MONTA ARVOA
		for ( var i = 0 ; i < ajaxValikkoData.asetus.lomake.length ; i++) {
			field_name = ajaxValikkoData.asetus.lomake[i]
			arvo = ajaxValikkoData.rivit.rivi[data_i][field_name] 
			if ( !arvo || arvo == 'undefined' ) arvo = ''
			document.getElementById(_inputSet+'['+field_name+']').value = arvo
		}
	} else {
		document.getElementById(_inputActive).value = ajaxValikkoData.rivit.rivi[data_i]['id'] 
		if ( document.getElementById("nimi_"+_inputActive) ){
			document.getElementById("nimi_"+_inputActive).value = ajaxValikkoData.rivit.rivi[data_i]['nimi']
			document.getElementById("nimi_"+_inputActive).blur() // ETTEI KENTTÄÄN TULE LISÄTEKSTIT
		}
	}
	ajaxValikkoSulje()
	}
function ajaxValikkoTyhjenna(fieldActive){			/** TYHJENNÄ KAIKKI ARVOT **/
	_inputActive = fieldActive
	_inputLength = 0 // JOTTA OSAA KÄYNNISTÄÄ HAUN, MUUTEN LUULEE ETTÄ ON KUMITETTU MERKKEJÄ
	if ( _inputSet ){ // TÄYTETÄÄN MONTA ASRVOA
		for ( var i = 0 ; i < ajaxValikkoData.asetus.lomake.length ; i++) {
			field_name = ajaxValikkoData.asetus.lomake[i]
			document.getElementById(_inputSet+'['+field_name+']').value = ''
		}
	} else {
		document.getElementById(_inputActive).value = ''
		if ( document.getElementById("nimi_"+_inputActive) )
			document.getElementById("nimi_"+_inputActive).value = ''
	}
	}
function ajaxValikkoSulje(){				/** SULJE VALINTAIKKUNA **/
	_inputActive 	= ''
	layerHide('inputSelect')
	}
/* YLEISET FUNCTIOT */
function ajaxUrlencode(str){
	//value = value.split(' ').join('%0D%0A')	// linebreak
	//value = value.split('	').join('%09')	// tab
	//value = value.split(' ').join('%20')	// space
	var result = "";
	for (i = 0; i < str.length; i++) {
		if (str.charAt(i) == " ") result += "+";
		else result += str.charAt(i);
	}
	return encodeURIComponent(result);
	}
function ajaxRequest(url,handler){						// EI TOIMI ?! - LÄHETTÄÄ PUUNNÖN. KÄSITTELEE handler -NIMISELLÄ FUNTIOLLA
	xmlHttp=GetXmlHttpObject(handler)	// KÄSITTELEVÄN FUNCTION SIIRTÄMINEN ON SE ONGELMA !!
	xmlHttp.open('GET',url+'&sid=' + Math.random(),true)
	xmlHttp.send(null)
	}
function sendAjax(url,id,loading){						// LÄHETTÄÄ PUUNNÖN. PALAUTTAA SISÄLLLÖN id -KENTTÄÄN, JOS ON ANNETTU
	ajaxID = id;
	xmlHttp=GetXmlHttpObject(getAjax)
	xmlHttp.open("GET",url+'&sid=' + Math.random(),true)
	xmlHttp.send(null)
	if ( ajaxID !='' && document.getElementById(ajaxID) && loading ){
		document.getElementById(ajaxID).innerHTML = loading 
	}
	}
function getAjax(){											// NÄYTÄ PALAUTE SIVULLA
	if ( xmlHttp.readyState==4 || xmlHttp.readyState=="complete" ){ 
		if ( ajaxID !='' && document.getElementById(ajaxID) ){
			document.getElementById(ajaxID).innerHTML = xmlHttp.responseText 
		}
	}
	}
function GetXmlHttpObject(handler){							// HTTP -PYYNNÖN VALMISTELU
	var objXmlHttp=null
	if ( navigator.userAgent.indexOf("Opera")>=0 ){
		alert("This operation doesn't work in Opera") 
		return 
	}
	if ( navigator.userAgent.indexOf("MSIE")>=0 ){ 
		var strName="Msxml2.XMLHTTP"
		if (navigator.appVersion.indexOf("MSIE 5.5")>=0){
			strName="Microsoft.XMLHTTP"
		} 
		try { 
			objXmlHttp=new ActiveXObject(strName)
			objXmlHttp.onreadystatechange=handler 
			return objXmlHttp
		} catch(e) { 
			alert("Error. Scripting for ActiveX might be disabled") 
			return 
		} 
	} 
	if ( navigator.userAgent.indexOf("Mozilla")>=0 ){
		objXmlHttp=new XMLHttpRequest()
		objXmlHttp.onload=handler
		objXmlHttp.onerror=handler 
		return objXmlHttp
	}
	}


