
function bpMoveSelected(fromList, toList, vname, retning) {
    var j, nOp, op, t;
    var ilist = new Array();
    window.status = fromList + ' - ' + toList + ' - ' + vname + ' - ' + retning;
	
    for (j = 0; j < fromList.length; j++) {
        op = fromList.options[j];
        if (op.selected) {
            ilist[ilist.length] = j;
            toList.options[toList.length] = new Option(op.text, op.value);;
            toList.selected=true
            op = null;
        }
    }

    for (j = ilist.length-1; j>= 0; j--)
            fromList.options[ilist[j]] = null;

    x = fromList.length;    // Weird, but this helps IE5 from crashing


    vname.value = ",";

    if(retning == 1) {
        for(j = 0; j < toList.length; j++)
            vname.value += toList.options[j].value + ",";
    } else if(retning == 2) {
        for(j = 0; j < fromList.length; j++)
            vname.value += fromList.options[j].value + ",";
    }
	return false;
}

		function bpFieldChange(felt, ev, factions) {
			var i;
			var ret;
			for(i = 0; i < factions.length; i++) {
				ret = factions[i](felt, ev);
			}
			return ret;
		}
		
		function bpfc(felt, ev, factions) {
			var x = bpFieldChange(felt, ev, factions); 
			return x;
		}


		function togglecheck(o) {
			var __nfrid;
			if (__nfrid = o.name.match(/:\d+:$/)) {
				id = o.name.replace(/:\d+:$/, "_anatropous"+__nfrid[0]);
			} else {
				id = o.name+"_anatropous";
			}

			
			var f = o.form;
			var neg = f.elements[id];
			if (!neg) {
				return false;
			}
			neg.value = o.checked ? 0 : 1;
		}

		function max(a, b) {
			return a > b ? a : b;
		}


		function getKildeRad(tableid, radid) {
			if (radid != 0) {
				var tbody = document.getElementById(tableid);
				rows = new Array();
				for(var i = 0; i < tbody.rows.length; i++) {
					if (tbody.rows[i].getAttribute('id') == ('rad_'+radid))
						rows[rows.length] = tbody.rows[i];
				}
				return rows;
			} else {
	            var tbodysrc = document.getElementById(tableid+'_src');
	            if (tbodysrc)
					return tbodysrc.rows;
			}
		}

		function nyrad(x) {
			kopirad(x, 0);
		}
		
		function getRowIdForSrcElement(tableid, srcelement) {
			var x = 0;
			var e = srcelement;
			// Let oppover til vi finner en TR
			while((typeof(e) != undefined) && (x = e.parentNode)) {
				var tb = 0;
				// Hvis denne TRen ligger i den tbodyen vi vil den skal ligge i
				if ((x.tagName == 'TR') && (tb = x.parentNode) && (tid = tb.getAttribute('id')) && (tid == tableid)) {
				    var rm;
				    // Og den har en rad_nn id
				    if (rm = x.getAttribute('id').match(/rad_(\d+)/)) {
						return rm[1];
					}
				}
				e = x;
			}
			return 0;
		}
	
		/**
		* kopirad
		*/
        function kopirad(tableid, srcelement) {
			// Hovedtbody
            var tbody = document.getElementById(tableid);
            if (!tbody) return;
			var srcrowid = getRowIdForSrcElement(tableid, srcelement);
			if (srcelement && !srcrowid)
				return false;
			// Kilde-tbody
			var rows = getKildeRad(tableid, srcrowid);
            if (!rows) return;
			if (!rows.length) return;
            var z;
			var row = rows[rows.length-1];
//            var row = rows.item(rows.length-1);
            var navn;
            var ie = 1;

			// Finn hÃyeste rad-id
            var radid = 0;
            for(i = 0; i < tbody.rows.length; i++) {
                var r = tbody.rows[i];
                if (ie) {
                    navn = r.getAttribute('id');
                } else {
                    navn = r.getAttributeNode('id').nodeValue;
                }
                radid = max(parseInt(navn.replace(/^rad_/, '')),radid);
			}
            var husk = new Array();
			
			// Klon kilderadene
            for (rid = 0; rid < rows.length; rid++) {
                //row = rows.item(rid);
				row = rows[rid];
                var tr = row.cloneNode(true);
//var x = tr.children[0].childNodes[0].value;
                var typer = new Array('input','select','textarea');
				// GÃ¥ igjÃ¸nnom feltan Ã¥ sÃ¸rg fÃ¸r at de fÃ¥r rett navn...
                for (i = 0; i < typer.length; i++) {
					inps = tr.getElementsByTagName(typer[i]);
					var o;
					var j;
					for (j = 0; j<inps.length;j++) {
						o = inps[j];
						var m = o.name.match(/(^.*[:\(\[])(\d+)([:\)\]])$/);
						//alert(o.name+': '+m);
						if (m) {
							window.status = o.name;
							o.name = m[1]+(radid+1)+m[3];
							o.id = o.name;
						}
					}
				}
                var a = tr.getElementsByTagName('a');
                for (j = 0; j < a.length; j++) {
                    if (a[j].name == 'slettrad') {
                        a[j].style.display = 'inline';
                        break;
                    }
                }
				
                if (ie) {
                    tr.setAttribute('id', 'rad_'+(radid+1));
                } else {
                    var at = document.createAttribute('id');
                    at.nodeValue = 'rad_'+(radid+1);
                    tr.setAttributeNode(at);
                }
                husk[husk.length] = tr;
            }
			
			// Legg til nye rader i destination tbodyen
            for (i = 0; i < husk.length; i++) {
                if (ie) {
                    tbody.appendChild(husk[i]);
                } else {
                    tbody.insertBefore(husk[i], undefined);
                }
            }
			// Pell litt pÃ¥ eventobjektet
            if (typeof(event) != 'undefined') {
                event.cancelBubble = true;
            }
            return false;
        }
	
		function deleterad(o) {
			var c = o.parentNode;
			var rad = c.parentNode;
			var tbody = rad.parentNode;
			var rid = rad.getAttributeNode('id').nodeValue;
			var tc = tbody.childNodes;
			var ie = 1;
			var husk = new Array();
			for (i = 0; i < tc.length; i++) {
				var r = tc.item(i);
				if ((r.nodeType == 1)) {
					if (ie) {
						if (r.getAttribute('id') != rid) continue;
					} else {
						if (r.getAttributeNode('id').nodeValue != rid) continue;
					}
					husk[husk.length] = r;
				}
			}
			for (i = 0; i < husk.length; i++) {
				tbody.removeChild(husk[i]);
			}
			if (typeof(event) != 'undefined') {
				event.cancelBubble = true;
			}
			return false;			
		}

// [JSG]et[F]ield
function jsgf(feltid) {
	var listid;
	var f;
	if ((arguments.length>1) && (f = arguments[1])) {
		if (listid = f.name.match(/:\d+:$/)) {
			feltid = feltid.replace(/:\d+:$/, listid[0]);
		}
	}
	return document.getElementById(feltid);
}

// [B]pfield[D]ependency[A]bsolute[V]alue
function bdav(felt, reqfeltid, rv, h) {
	var myf = jsgf(reqfeltid, felt);
	
	if (!myf) return;
	var s = 0;
	if(felt.type.match(/checkbox/)) {
		s = ((felt.checked ? 1 : 0) == (rv ? 1 : 0));
	} else {
		s = (felt.value == rv);
	}
	if (h) {
		myf.style.display = s ? "inline": "none";
	} else {
		myf.disabled = !s;
	}
}


function in_array(needle, haystack) {
	for (i=0; i<haystack.length; i++) {
		if ((typeof(haystack[i]) != 'undefined') && (haystack[i] == needle)) {
			return true;
		}
	}
	return false;
}



// [B]pfield[D]ependency[V]alue[A]rray
function bdva(felt, reqfeltid, arrstr) {
	var myf = jsgf(reqfeltid, felt);
	if (!myf) return;
	liste = arrstr.split(/,/);
	myf.disabled = !in_array(felt.value, liste);
}

// [B]pfield[F]ilter[I]nt
function bfi(felt, ev) {
	if (typeof(ev) == 'undefined') {
		if (typeof(event) == 'undefined')
			return;
		ev = event;
	}
	if (typeof(ev.which) == 'undefined')
		ev.which = ev.keyCode;
	switch(ev.which) {
		case 8: // Backspace
		case 36: // Home
		case 35: // End
		case 46: // delete
		case 13: // Enter
		case 0: // ser ut som piltasta bl.a.
			return true;
		default:
			var c = String.fromCharCode(ev.which);
			var x = /\d|[-+]/;
			var ret = x.test(c);
			return ret;
	}
}

function bff(felt, ev) {
	if (typeof(ev) == 'undefined') {
		if (typeof(event) == 'undefined')
			return;
		ev = event;
	}
	if (typeof(ev.which) == 'undefined')
		ev.which = ev.keyCode;
	switch(ev.which) {
		case 8: // Backspace
		case 36: // Home
		case 35: // End
		case 46: // delete
		case 13: // Enter
		case 0: // ser ut som piltasta bl.a.
			return true;
		default:
			var c = String.fromCharCode(ev.which);
			var x = /\d|[-+.\,]/;
			var ret = x.test(c);
			return ret;
	}
}


			function actparam(p) {
                e = document.getElementsByName(_actparam);
                for(i = 0; i< e.length; i++) {
                    if (e[i] && e[i].tagName.match(/input/i)) {
                        pp = e[i];
                        break;
                    }
                }
				if ((typeof(p) != 'undefined') &&
					(typeof(pp) != 'undefined')) {
					pp.value = p;
				} else if (typeof(pp) != 'undefined') {
					pp.value = 0;
				}			
			}
			
            function aksjon(a, p) {
                var k,e,o,i;
                e = document.getElementsByName(_actwrap);
                for(i = 0; i< e.length; i++) {
                    if (e[i] && e[i].tagName.match(/input/i)) {
                        o = e[i];
                        break;
                    }
                }
				actparam(p);
                e = document.getElementsByName(_run);
                for(i = 0; i< e.length; i++) {
                    if (e[i] && e[i].tagName.match(/input/i)) {
                        k = e[i];
                        break;
                    }
                }
                if (o) {
                    o.value = a;
                    if (k) {
                        k.value=42;
                    }
                    o.form.submit();
                }
                return false;
            }
