/**
 * Copyright (C) 2007 Nexus Consulting AS 
 * http://www.nxc.no
 *
 * @author: Lars Fugelseth
 **/
 
function mouseOverRediger(id) {
	var sectionDiv = document.getElementById(id);
	if(sectionDiv.tagName == 'DIV') {
		sectionDiv.className = 'section section-edit';
	} else {
		sectionDiv.className = 'selected';
	}
}

function mouseOutRediger(id) {
	var sectionDiv = document.getElementById(id);
	if(sectionDiv.tagName == 'DIV') {
		sectionDiv.className = 'section';
	} else {
		sectionDiv.className = '';
	}
}


/**
 *
 * @access public
 * @return void 
 **/
function toggleCheckbox(checkboxId) {
	var checkbox = document.getElementById(checkboxId);
	if(checkbox != null) {
		if(checkbox.checked) checkbox.checked = false;
		else checkbox.checked = true; 
	}
}
function clickIt(id) {
	var input = document.getElementById(id);
	if(input != null) {
		input.click();
	}
}
function showIfChecked(element,ids) {
	if(element.checked) {		
		for(var i=0;i < ids.length;i++) {
			document.getElementById(ids[i]).className = 'label space';
		}
	} else {
		for(var i=0;i < ids.length;i++) {
			document.getElementById(ids[i]).className = 'label space hide';
		}	
	}
}

function showFilter() {
	if(document.getElementById('filter').className == 'hide') {
		document.getElementById('filter').className = '';
		document.getElementById('filter-link').innerHTML = 'Skjul filter';
	} else {
		document.getElementById('filter').className = 'hide';
		document.getElementById('filter-link').innerHTML = 'Vis filter';
	}
}

function checkAll(id) {
	var inputs = document.getElementById('filter').getElementsByTagName('input');
	for(var i=0;i < inputs.length;i++) {
		if(inputs[i].type == 'checkbox') {
			inputs[i].checked = true;
		}
	}	
}

function checkNone(id) {
	var inputs = document.getElementById('filter').getElementsByTagName('input');
	for(var i=0;i < inputs.length;i++) {
		if(inputs[i].type == 'checkbox') {
			inputs[i].checked = false;
		}
	}	
}

function showhide( elm_id ){
	var elm = document.getElementById( elm_id );  
	var current_state=elm.style.display;
	if(current_state == 'none'){
		elm.style.display='';
	}else{
		elm.style.display='none';
	}
}

/* Datetime JavaScript funksjoner - START */

/**
 * Funksjonen fjerner alt som står i en tekstfeltet (felt) dersom det ikke 
 * inneholder et heltall.  
 *
 * @access public
 * @return void 
 **/
function dtOnFocus(felt) {
	if(felt.value!=parseInt(felt.value,10)) { 
		felt.value = '';
	}
}

/**
 * Funskjonen erstatter alt som står i tekstfeltet med "YYYY" (eller tilsvarende 
 * for den gitte locale) dersom feltets verdi ikke er et heltall. Dersom feltet 
 * er et heltall ser vi på om verdien er mindre enn hundre og avgjør om verdien
 * skal adderes med 1900 eller 2000 avhengig av om verdien er større eller mindre 
 * enn de verdien på de to siste sifrene i nåværende år.
 *
 * Dersom verdien er mindre eller lik årets dato adderes verdien og 2000, ellers 
 * adderes verdien og 1900.
 * 
 * Bruksområde: 
 * Datoer (årstall) som ikke skal være større enn dagens dato.
 *
 * @access public
 * @return void 
 **/
function dtOnBlurDownYYYY(felt,yyyy) {
	/* Dersom feltet ikke inneholder et heltall erstattes innholdet med "YYYY" */
	if(felt.value!=parseInt(felt.value,10)) {
		felt.value = yyyy;
	} else {
		if(parseInt(felt.value,10) < 100) {
			currentTime = new Date();
			felt.value = parseInt(felt.value,10) + (parseInt(felt.value,10) <= currentTime.getFullYear() % 100 ? 2000 : 1900);
		}
	}
}

/**
 * Funskjonen erstatter alt som står i tekstfeltet med "YYYY" (eller tilsvarende 
 * for den gitte locale) dersom feltets verdi ikke er et heltall. Dersom feltet 
 * er et heltall ser vi på om verdien er mindre enn hundre adderer verdien med 
 * 2000 dersom dette er tilfelle. 
 * 
 * Bruksområde: 
 * Datoer (årstall) som skal være større eller lik dagens dagens dato.
 *
 * @access public
 * @return void 
 **/
function dtOnBlurUpYYYY(felt,yyyy) {
	/* Dersom feltet ikke inneholder et heltall erstattes innholdet med "YYYY" */
	if(felt.value!=parseInt(felt.value,10)) {
		felt.value = yyyy;
	} else {
		if(parseInt(felt.value,10) < 100) {			
			felt.value = parseInt(felt.value,10) + 2000;
		}
	}
}

/**
 * Funskjonen erstatter alt som står i tekstfeltet med "MM" (eller tilsvarende 
 * for den gitte locale) dersom feltets verdi ikke er et heltall. Dersom feltet 
 * er et heltall ser vi på om verdien er mindre enn ti og legger til 0 dersom
 * veriden ikke er skrevet med to tegn (0 + tallet). 
 * 
 * Bruksområde: 
 * Bruker for å passe på at feltet inneholder et heltall med to sifre.
 *
 * @access public
 * @return void 
 **/
function dtOnBlurMM(felt,mm){
	if(felt.value!=parseInt(felt.value,10)) {
		felt.value = mm;
	} else {
		if(parseInt(felt.value,10) < 10 && felt.value.length == 1) {
			felt.value = '0'+felt.value;
		}
	}	
}

/**
 * Funskjonen erstatter alt som står i tekstfeltet med "DD" (eller tilsvarende 
 * for den gitte locale) dersom feltets verdi ikke er et heltall. Dersom feltet 
 * er et heltall ser vi på om verdien er mindre enn ti og legger til 0 dersom
 * veriden ikke er skrevet med to tegn (0 + tallet). 
 * 
 * Bruksområde: 
 * Bruker for å passe på at feltet inneholder et heltall med to sifre.
 *
 * Denne er laget som en egen funskjon i tilfelle det senere blir aktuelt med 
 * egen funksjonalitet for dato feltet
 *
 * @access public
 * @return void 
 **/
function dtOnBlurDD(felt,dd){
	dtOnBlurDD(felt,dd);	
}

/* Datetime JavaScript funksjoner - SLUTT */

/**
 * Funksjonen benyttes for at kun tall og backspace skal kunne skrives inn i en 
 * tekstboks.
 **/
function numOnly(event) {
	if (event.keyCode) char=event.keyCode;
	else char=event.which;
	if((char >= "0".charCodeAt() && char <= "9".charCodeAt()) || char == 0 || char == 8 || char == 46 || char == 37 || char == 39) return true;
	else return false;
}

/**
 * Henter addressen og endrer adressen for den gitte typen og indexen.
 **/
function getAndSetAddress(baseUrl,type,index) {
	
	var url = baseUrl+'?address_type='+type+'&index='+index;

	http = zXmlHttp.createRequest();
	http.onreadystatechange=function() {
		var navn = '';
		var adresse1 = '';
		var adresse1 = '';
		var adresse1 = '';
		var postnr = '';
		var poststed = '';					
		var telefon = '';
		var type = '';
		
		var antall = 0;
		if(http.readyState==4) {
			if(http.status==200) {

				var nodes = http.responseXML.firstChild;

				while(nodes != null) {
					
					if(nodes.nodeType == 1) {

						switch(nodes.tagName) {
							case 'address':
								nodes = nodes.firstChild;
								break;
							case 'type':
								type = getValue(nodes);
								nodes = nodes.nextSibling;
								break;
							case 'navn':
								navn = getValue(nodes);
								nodes = nodes.nextSibling;
								break;
							case 'adresse1':
								adresse1 = getValue(nodes);
								nodes = nodes.nextSibling;
								break;
							case 'adresse2':
								adresse2 = getValue(nodes);
								nodes = nodes.nextSibling;
								break;
							case 'adresse3':
								adresse3 = getValue(nodes);
								nodes = nodes.nextSibling;
								break;
							case 'postnr':
								postnr = getValue(nodes);
								nodes = nodes.nextSibling;
								break;
							case 'poststed':
								poststed = getValue(nodes);
								nodes = nodes.nextSibling;
								break;
							case 'telefon':
								telefon = getValue(nodes);
								nodes = nodes.nextSibling;
								break;
							default:
								alert('Unknown: '+nodes.tagName);
						}
					} else {
						nodes = nodes.nextSibling;
					}
				}
			}
			else {
				alert('En feil oppstod ved tilkobling til serveren (HTTP Feilkode: ' + http.status + ')');
			}

			
			document.getElementById(type+'_navn').innerHTML = navn;
			document.getElementById(type+'_adresse1').innerHTML = adresse1;
			document.getElementById(type+'_adresse2').innerHTML = adresse2;
			document.getElementById(type+'_adresse3').innerHTML = adresse3;
			document.getElementById(type+'_postnr').innerHTML = postnr;
			document.getElementById(type+'_poststed').innerHTML = poststed;
			if(telefon != '' && telefon != null) {
				document.getElementById(type+'_telefon').innerHTML = telefon;
				document.getElementById(type+'_telefon_title').style.display = ''; 
			} else {
				document.getElementById(type+'_telefon').innerHTML = telefon;
				document.getElementById(type+'_telefon_title').style.display = 'none';				
			}
		}
	}
	http.open("get",url,true);
	http.send(null);
}

/**
 * Hjelpefunksjon som benyttes av getAndSetAddress for parsing av XML
 **/
function getValue(node) {
	while(node != null) {
		if(node.nodeType == 3) {
			return node.nodeValue;
		}
		node = node.firstChild;
	}
	return null;
}

/**
 *
 * @access public
 * @return void 
 **/
function saveFormState(form) {
	form.originalstate = Array();
	for(var i=0;i<form.elements.length;i++) {
		form.originalstate[i] = form.elements[i].value;
	}	
}

/**
 *
 * @access public
 * @return void 
 **/
function isStateChanged(form) {	
	for(var i=0;i<form.elements.length;i++) {
		if(form.originalstate[i] != form.elements[i].value) return true;
	}
	return false;
}

/**
 *
 * @access public
 * @return void 
 **/
function showConfirmDialog(text,type,form) {
	isChanged = isStateChanged(form);
	if(isChanged) {
		isChanged = !confirm(text);
	} 
	if(!isChanged) {
		form.edit.value = type;
		form.submit();	
	}
	return false;
}

/**
 *
 * @access public
 * @return void 
 **/
function enableDisableSaveButton(form,button) {
	if(isStateChanged(form)) {
		button.disabled = false;
	} else {
		button.disabled = true;
	}
}

/**
 *
 * @access public
 * @return void 
 **/
function checkMaxSize(evt,maxSize) {
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	if(evt) {
		if (evt.target) {
			var targ = evt.target;
		} else if (evt.srcElement) { 
			var targ = evt.srcElement;
		}
		if(targ) {			
			if(targ.value.toString().length <= maxSize-12) return true;			
			var charCode = (evt.charCode || evt.charCode == 0) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : evt.which);
			var okChars = Array(0,8,16,17,18,33,34,35,36,37,38,39,40,46);
			for(var i=0;i<okChars.length;i++) {
				if(charCode == okChars[i]) {
					return true;
				}
			}
			return false;			
		}				
	} 
	return true;
}


