/*
 * Öppnar ett nytt fönster med URL, referensnamn, bredd och höjd.
 * Endast URL:en är obligatorisk.
 */
function openWindow(url, name, w, h) {
	var win;
	var asize = arguments.length;
	switch(asize) {
		case 1:		
			win = window.open(url);
			break;
		case 2:
			win = window.open(url, name);
			break;
		case 4:
			win = window.open(url, name, "width="+w+",height="+h);
			break;
		default:
			return;
	}
	return win;
}

/*
 * Funktion för att skriva ut en textrad i dokumentet med en radbrytning på slutet.
 */
function write(string) {
	document.writeln(string);
}

function send(myForm) {
	var f = myForm;
	f.submit();
}

function whatBrowser() {
	return navigator.appName;
}

function whatVersion() {
	return navigator.appVersion;
}

/*
 * Kontrollerar ett formulär efter en huvudfråga av typen Ja/Nej-fråga.
 * Beroende på svar så ska antingen den ena eller den andra följdfrågan besvaras.
 * f formulärobjektet, main namnet på huvudfrågans svarsfält,
 * sequenceA namnet på delfraga A:s svarsfält, sequenceB namnet på delfraga B:s svarsfält
 * Namnen på svarsfälten måste vara unika.
 * Returnerar true eller false.
 */
function validateDependance(f, main, sequenceA, sequenceB) {
	var comboMsg = '';
	var hits = 0;
	var mainobject = null, aobject = null, bobject = null;
	var myReg = /\*.{1,23}\*$/;
	var errorcode = 0; //0 = inget fel, 1 = huvudfråga utan följdfrågor, 2 = följdfrågor utan huvudfråga, 3 = huvudfråga med två besvarade följdfrågor
	for(i=0, object = f[i]; i < f.length; i++, object = f[i]) {
		if(myReg.test(object.value))
			object.value = object.value.slice(0, object.value.indexOf('*'));
		if(object.name == main.toString()) {
				mainobject = object;
				main = (mainobject.value == '') ? false : true;
				hits++;
		}
		else if(object.name == sequenceA.toString()) {
				aobject = object;
				sequenceA = (aobject.value == '') ? false : true;
				hits++;
		}
		else if(object.name == sequenceB.toString()) {
				bobject = object;
				sequenceB = (bobject.value == '') ? false : true;
				hits++;
		}
		if(2 < hits)
			break;
	}
	if(main){
		if(sequenceA && sequenceB)
			errorcode = 3;
		else if(!sequenceA && !sequenceB)
			errorcode = 1;
	}
	else if(sequenceA || sequenceB)
		errorcode = 2;
	var temp = new Array();
	switch(errorcode) {
		case 1:
			errorMsg = 'SKRIV FÖLJDSVAR HÄR';
			comboMsg = 'Du har svarat på en huvudfråga och\nmåste då svara på en av följdfrågorna';
			temp[temp.length] = aobject;
			temp[temp.length] = bobject;
			break;
		case 2:
			errorMsg = 'BESVARA HUVUDFRÅGAN HÄR';
			comboMsg = 'Du kan inte svara på följdfrågor om inte huvudfrågan är besvarad';
			temp[temp.length] = mainobject;
			break;
		case 3:
			errorMsg = 'TVETYDIGT FÖLJDSVAR';
			comboMsg = 'Du kan inte skriva svar både under ja och nej \npå följdfrågorna till en huvudfråga.';
			temp[temp.length] = aobject;
			temp[temp.length] = bobject;
			break;
		case 0:
			return true;
	}
	alert(comboMsg);
	for(var i=0; i < temp.length; i++)
		if(!myReg.test(temp[i].value))
			temp[i].value = temp[i].value+'*'+errorMsg+'*';
		//if(aobject!==null)
			//aobject.value = aobject.value+'*'+errorMsg+'*';
	//	if(bobject!==null)
		//	bobject.value = bobject.value+'*'+errorMsg+'*';
	//}
	temp[0].select();
	temp[0].focus();
	return false;
}

/*
 * Kontrollerar om en sträng kan konverteras till ett decimalt siffervärde av heltalstyp.
 * s en sträng som ska kontrolleras.
 * Returnerar true om decimalt siffervärde, annars false.
 */
function isNumber(s) {
	//return !isNaN(parseInt(s, 10));
	return !isNaN(Number(s));
}

/*
 * Kontrollerar en sträng efter otillåtna tecken.
 * De tecken som ska vara otillåtna läggs till arrayen vid namn 'items'.
 * Returnerar true eller false.
 */
function legalString(string) {
	var items = ["<", ">"];
	var result = new String("string.indexOf('"+items[0]+"') == -1 ");
	for(var i = 1; i < items.length; i++)
		result += "&& string.indexOf('"+items[i]+"') == -1 ";
	return eval(result);
}

/*
 * Tar emot ett objekt av typen array av radioknappar.
 * Returnerar false om ingen radioknapp har valts, annars true.
 */
function validateRadio(rarray) {
	var r = rarray;
	var checked = false;
	for(var i = 0; i < r.length; i++)
		if(r[i].checked == true) {
			checked = true;
			break;
		}
	return checked;
}

/* 
 * Tar emot ett objekt av typen textfält.
 * Returnerar false om textfältet är tomt eller innehåller förbjudna tecken, annars true.
 * Om ett textfält ska vara valfritt så sätt textfältets namn-attribut till ett namn
 * som innehåller strängen 'optional'.
 */
function validateText(o) {
	var isValid = true;
	if(o.value == '' && o.name.indexOf('optional') == -1)
		isValid = false;
	else if(!legalString(o.value)) {
		alert("Textfältet "+o.name+" innehåller förbjudna tecken. Vanliga \nbokstäver och siffror går bra, \nmen vissa andra tecken kan ställa till problem.");
		isValid = false;
	}
	return isValid;
}

 
