/*
	This is the JavaScript file for the AJAX Suggest Tutorial

	You may use this code in your own projects as long as this 
	copyright is left	in place.  All code is provided AS-IS.
	This code is distributed in the hope that it will be useful,
 	but WITHOUT ANY WARRANTY; without even the implied warranty of
 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
	
	For the rest of the code visit http://www.DynamicAJAX.com
	
	Copyright 2006 Ryan Smith / 345 Technical / 345 Group.	

*/

var currentBox;

//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		alert("Your Browser Is Not AJAX compatible!");
	}
}

//Our XmlHttpRequest object to get the auto suggest
var searchReq = getXmlHttpRequestObject();
var loftere = Array();
var dommere = Array();

//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggest() {
	//alert(box.value);
	if (currentBox.value != '' && currentBox.value != ' ')
	{
		if (searchReq.readyState == 4 || searchReq.readyState == 0) {
			//var str = escape(document.getElementById('txtSearch').value);
			var str = escape(currentBox.value);
			searchReq.open("GET", 'ajax.php?sok_lofter=' + str + '&aar=' + document.getElementById('aar').value  +'&rand=' + Date(), true);
			searchReq.onreadystatechange = handleSearchSuggest; 
			searchReq.send(null);
		}
	}
}



//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchDommer() {
	//alert(box.value);
	if (currentBox.value != '' && currentBox.value != ' ')
	{
		if (searchReq.readyState == 4 || searchReq.readyState == 0) {
			//var str = escape(document.getElementById('txtSearch').value);
			var str = escape(currentBox.value);
			searchReq.open("GET", 'ajax.php?sok_dommer=' + str + '&rand=' + Date(), true);
			searchReq.onreadystatechange = handleDommer; 
			searchReq.send(null);
		}
	}
}

//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchDommerNr() {
	//alert(box.value);
	if (currentBox.value != '' && currentBox.value != ' ')
	{
		if (searchReq.readyState == 4 || searchReq.readyState == 0) {
			//var str = escape(document.getElementById('txtSearch').value);
			var str = escape(currentBox.value);
			searchReq.open("GET", 'ajax.php?sok_dommer_nr=' + str + '&rand=' + Date(), true);
			searchReq.onreadystatechange = handleDommerNr; 
			searchReq.send(null);
		//alert('searchdommernr');
		}
	}
}


/*
function searchDommerNr() {
	//alert(box.value);
	if (currentBox.value != '' && currentBox.value != ' ')
	{
		if (searchReq.readyState == 4 || searchReq.readyState == 0) {
			//var str = escape(document.getElementById('txtSearch').value);
			var str = escape(currentBox.value);
			searchReq.open("GET", 'ajax.php?sok_dommer=' + str + '&rand=' + Date(), true);
			searchReq.onreadystatechange = handleDommer; 
			searchReq.send(null);
		}
	}
}*/

//Sett en løfter som valgt med tilhørende alderskategori, klubb osv
function settLofter(indeks)
{
//	setSearch(loftere[indeks]['navn']);
	currentBox.value = loftere[indeks]['navn'];
	document.getElementById('search_suggest').innerHTML = '';
	document.getElementById('search_suggest').style.display = 'none';
	currentBox.parentNode.parentNode.childNodes[2].childNodes[0].value = loftere[indeks]['navn'];
	currentBox.parentNode.parentNode.childNodes[2].childNodes[1].value = loftere[indeks]['lofter_id'];

	//setter lisensnr
	currentBox.parentNode.parentNode.childNodes[0].innerHTML = loftere[indeks]['lisens_nr'];

	//currentBox.parentNode.parentNode.childNodes[2].innerHTML = loftere[indeks]['klubb_navn'];

	//velg rett klubb i select-noden
	var klubber = currentBox.parentNode.parentNode.childNodes[3].childNodes[0];
	for(var i=0; i<klubber.options.length; i++)
	{
		if (klubber.options[i].value == loftere[indeks]['klubb_id'])
		{
			klubber.selectedIndex = i;
		}
	}

	//velg rett alderskategori i select-noden
	var kategorier = currentBox.parentNode.parentNode.childNodes[4].childNodes[0];
	for(var i=0; i<kategorier.options.length; i++)
	{
		if (kategorier.options[i].value == loftere[indeks]['alderskategori'])
		{
			kategorier.selectedIndex = i;
		}
	}

	summerkg(currentBox.parentNode.parentNode.childNodes[4].childNodes[0]);
	finnvektklasse(currentBox.parentNode.parentNode.childNodes[4].childNodes[0]);

//	currentBox.parentNode.getElementsById('lisensnr[]')[0].value = loftere[indeks]['lisens_nr'];
}

//Sett en dommer som valgt
function settDommer(indeks)
{
	currentBox.value = dommere[indeks]['navn'];
	document.getElementById('search_suggest').innerHTML = '';
	document.getElementById('search_suggest').style.display = 'none';
	currentBox.parentNode.parentNode.childNodes[1].childNodes[0].value = dommere[indeks]['navn'];

	//setter dommernr
	currentBox.parentNode.parentNode.childNodes[0].childNodes[0].value = dommere[indeks]['dommer_nr'];
	currentBox.parentNode.parentNode.childNodes[0].childNodes[1].value = dommere[indeks]['dommer_nr'];

}

//Sett en dommer som valgt
function settDommerNr(indeks)
{
	currentBox.value = dommere[indeks]['dommer_nr'];
	document.getElementById('search_suggest').innerHTML = '';
	document.getElementById('search_suggest').style.display = 'none';
	currentBox.parentNode.parentNode.childNodes[1].childNodes[0].value = dommere[indeks]['navn'];

	//setter dommernr
	currentBox.parentNode.parentNode.childNodes[0].childNodes[0].value = dommere[indeks]['dommer_nr'];
	currentBox.parentNode.parentNode.childNodes[0].childNodes[1].value = dommere[indeks]['dommer_nr'];

}


function resettLofter()
{
	//setter lisensnr
	currentBox.parentNode.parentNode.childNodes[0].innerHTML = '';
	currentBox.parentNode.parentNode.childNodes[2].childNodes[1].value = '';
}

function resettDommer()
{
	//resetter dommernr
	currentBox.parentNode.parentNode.childNodes[0].childNodes[0].value = '';
	currentBox.parentNode.parentNode.childNodes[0].childNodes[1].value = '';
}

//Called when the AJAX response is returned.
function handleSearchSuggest() {
	//alert(searchReq.readyState + searchReq);
	if (searchReq.readyState == 4) {
	//alert(currentBox.value);
		var ss = document.getElementById('search_suggest');
		ss.style.position = 'absolute';
		//alert((findPosX(currentBox) + currentBox.offsetWidth) + " " + findPosY(currentBox));
		ss.style.left = findPosX(currentBox) + currentBox.offsetWidth;
		ss.style.top = findPosY(currentBox) +currentBox.offsetHeight + 'px';
		//alert(ss.style.top);
		ss.innerHTML = '';
		var str = searchReq.responseText.split("\n");
		eval("loftere = " + searchReq.responseText);
		for(i=1; i < loftere.length; i++) {
			//Build our element string.  This is cleaner using the DOM, but
			//IE doesn't support dynamically added attributes.
			var suggest = '<div onmouseover="javascript:suggestOver(this);document.body.style.cursor=\'default\';" ';
			suggest += 'onmouseout="javascript:suggestOut(this);" ';
			suggest += 'onclick="javascript:settLofter('+ i + ');" ';
			suggest += 'class="suggest_link">' + loftere[i]['navn']+ ', ' + loftere[i]['klubb_navn'] + '</div>';
			ss.innerHTML += suggest;
		}
		ss.style.display='inline';
		if (loftere.length == 2)
		{
			currentBox.blur();
			setTimeout("settLofter(1)", 500);
		}

		if (loftere[0]['navn'] != currentBox.value)
		{
			//alert("ulik: " + str[0] + " vs " + document.getElementById('navn[1]').value);
			searchSuggest();
		}
	}
}


//Called when the AJAX response is returned.
function handleDommer() {
	//alert(searchReq.readyState + searchReq);
	if (searchReq.readyState == 4) {
	//alert(currentBox.value);
		var ss = document.getElementById('search_suggest');
		ss.style.position = 'absolute';
		//alert((findPosX(currentBox) + currentBox.offsetWidth) + " " + findPosY(currentBox));
		ss.style.left = findPosX(currentBox) + currentBox.offsetWidth;
		ss.style.top = findPosY(currentBox);
		ss.innerHTML = '';
		var str = searchReq.responseText.split("\n");
		eval("dommere = " + searchReq.responseText);
		for(i=1; i < dommere.length; i++) {
			//Build our element string.  This is cleaner using the DOM, but
			//IE doesn't support dynamically added attributes.
			var suggest = '<div onmouseover="javascript:suggestOver(this);document.body.style.cursor=\'default\';" ';
			suggest += 'onmouseout="javascript:suggestOut(this);" ';
			suggest += 'onclick="javascript:settDommer('+ i + ');" ';
			suggest += 'class="suggest_link">' + dommere[i]['dommer_nr'] + ' ' + dommere[i]['navn'] + '</div>';
			ss.innerHTML += suggest;
		}
		ss.style.display='inline';
		if (dommere.length == 2)
		{
			currentBox.blur();
			setTimeout("settDommer(1)", 500);
		}

		if (dommere[0]['navn'] != currentBox.value)
		{
			//alert("ulik: " + str[0] + " vs " + document.getElementById('navn[1]').value);
			searchDommer();
		}
	}
}

//Called when the AJAX response is returned.
function handleDommerNr() {
	//alert(searchReq.readyState + searchReq);
	if (searchReq.readyState == 4) {
	//alert(currentBox.value);
		var ss = document.getElementById('search_suggest');
		ss.style.position = 'absolute';
		//alert((findPosX(currentBox) + currentBox.offsetWidth) + " " + findPosY(currentBox));
		ss.style.left = findPosX(currentBox) + currentBox.offsetWidth;
		ss.style.top = findPosY(currentBox) + 'px';
		ss.innerHTML = '';
		var str = searchReq.responseText.split("\n");
		eval("dommere = " + searchReq.responseText);
		for(i=1; i < dommere.length; i++) {
			//Build our element string.  This is cleaner using the DOM, but
			//IE doesn't support dynamically added attributes.
			var suggest = '<div onmouseover="javascript:suggestOver(this);document.body.style.cursor=\'default\';" ';
			suggest += 'onmouseout="javascript:suggestOut(this);" ';
			suggest += 'onclick="javascript:settDommer('+ i + ');" ';
			suggest += 'class="suggest_link">' + dommere[i]['dommer_nr'] + ' ' + dommere[i]['navn'] + '</div>';
			ss.innerHTML += suggest;
		}
		ss.style.display='inline';
		if (dommere.length == 2)
		{
			//alert('dommere length 2');
			currentBox.blur();
			setTimeout("settDommer(1)", 500);
		}

		if (dommere[0]['nr'] != currentBox.value)
		{
			//alert('0 nr ulik currentbox value');
			//alert("ulik: " + str[0] + " vs " + document.getElementById('navn[1]').value);
			searchDommerNr();
		}
		//alert('handledommernr');
	}
}

//Mouse over function
function suggestOver(div_value) {
	div_value.className = 'suggest_link_over';
}
//Mouse out function
function suggestOut(div_value) {
	div_value.className = 'suggest_link';
}
//Click function
function setSearch(value) {
	currentBox.value = value;
	document.getElementById('search_suggest').innerHTML = '';
	document.getElementById('search_suggest').style.display = 'none';
}


//Two methods from http://blog.firetree.net/2005/07/04/javascript-find-position/

function findPosX(obj)
{
	//return getOffset(obj).left;
	var curleft = 0;
	if(obj.offsetParent)
	while(1) 
	{
	curleft += obj.offsetLeft;
	if(!obj.offsetParent)
	break;
	obj = obj.offsetParent;
	}
	else if(obj.x)
	curleft += obj.x;
	return curleft;
}

function getOffset( el ) {
    var _x = 0;
    var _y = 0;
    while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) ) {
        _x += el.offsetLeft - el.scrollLeft;
        _y += el.offsetTop - el.scrollTop;
        el = el.parentNode;
    }
    return { top: _y, left: _x };
}

function findPosY(obj)
{
	//alert(getOffset(obj).top);
	//return getOffset(obj).top;
	var curtop = 0;
	if(obj.offsetParent)
	while(1)
	{
	curtop += obj.offsetTop;
	if(!obj.offsetParent)
	break;
	obj = obj.offsetParent;
	}
	else if(obj.y)
	curtop += obj.y;
	return curtop;
}

function getX(obj){
        return obj.offsetLeft + (obj.offsetParent ? getX(obj.offsetParent) : obj.x ? obj.x : 0);
    }
    function getY(obj){
        return (obj.offsetParent ? obj.offsetTop + getY(obj.offsetParent) : obj.y ? obj.y : 0);
    }




