// common.js
// copyright (c) 2002, Vallby InformationsSystem AB, Sweden

// global variables
var giMs;
var giSubmitCount;

///////////////////////////////
// string functions

function fsOnlyDig(sStr)
{
	var i;
	var n;
	var ch;
	var sRet;
	sRet = "";
	n = sStr.length;
	for (i=0; i < n; i++) {
		ch = sStr.substring(i,i+1);
		if (ch >= '0' && ch <= '9')
			sRet += ch;
	}
	return sRet;
}

function fsNoSpace(sStr)
{
	var i;
	var n;
	var ch;
	var sRet;
	sRet = "";
	n = sStr.length;
	for (i=0; i < n; i++) {
		ch = sStr.substring(i,i+1);
		if (ch != ' ')
			sRet += ch;
	}
	return sRet;
}

function fsTrim(sStr)
{
	var i, n;
	var ch;
	var iB, iE;
	var bB, bE;

	bB = bE = false;
	iB = iE = 0;

	n = sStr.length;

	if (n == 0)
		return "";

	for (i=0; i < n; i++) {
		ch = sStr.substring(i,i+1);
		if (ch != ' ') {
			bB = true;
			iE = i;
		} else {
			if (bB == false) iB++;
			iE = i;
		}
	}
	return sStr.substring(iB,iE+1);
}

function fsLeft(sStr,iLen)
{
	var sRet;
	var iCurlen;
	iCurlen = sStr.length;
	sRet = sStr.substring(0,Math.min(iCurlen,iLen));
	while (iCurlen < iLen)
		sRet += ' ';
	return sRet;
}

// base 1 i.e. fsRight("123",2) gives "23"
function fsRight(sStr,iPos)
{
	var sRet;
	var iCurlen;
	iCurlen = sStr.length;
	if (iPos > iCurlen)
		return "";
	else
		return sStr.substring(iPos-1,iCurlen);
}

function fbModule10(sStr)
{
	var sTmp;
	var n;
	var ix;
	var iWeight;
	var iCheckDig;
	var iCheckVal = 0;
	var iCheckSum = 0;
	
	sTmp = fsTrim(sStr);
	sTmp = fsOnlyDig(sTmp);
	n = sTmp.length - 1;
	iCheckDig = parseInt(sTmp.substring(n,n+1))

	for (ix = 0; ix < n; ix++) {

		if ((ix % 2) == 0)
			iWeight = 2;
		else
			iWeight = 1;

		iCheckVal = parseInt(sTmp.substring(ix,ix+1)) * iWeight;
		iCheckSum = iCheckSum + Math.floor(iCheckVal/10) + iCheckVal%10;

	}
	iCheckSum = (10 - (iCheckSum % 10)) % 10;

	if (iCheckSum != iCheckDig)
		return false;

	return true;
}

function fbEmailCheck(sStr)
{
	if (sStr.indexOf('@') < 0)
		return false;

	if (sStr.indexOf('.') < 0)
		return false;

	return true;
}

function fsFormat(sStr, sPat)
{
	var sRet;
	var i, n, j, k;
	var chp, chs;

	sRet = "";
	i = 0;
	j = 0;
	n = sStr.length;
	k = sPat.length;
	while (i < n && j < k) {
		chs = sStr.substring(i,i+1);
		chp = sPat.substring(j,j+1);
		if (chp == '#') {
			sRet += chs;
			i++;
		} else {
			sRet += chp;
		}
		j++;
	}
	return sRet;
}

////////////////////////////////
// SpecialFunction for timestamp

function fsTID()
{
  var sDate;
  sDate = new Date();
  return sDate.getTime();
}

///////////////////////////////
// Functions on an Window

function fwxZeroSubmitCount()
{
	giSubmitCount = 0;
	giMs = fsTID();
}

function fwxEnter()
{
	fwxZeroSubmitCount();
}

function fwxVerify()
{
	if ((fsTID() - giMs) > 1000) fwxZeroSubmitCount();
	return (++giSubmitCount == 1) ? true : false;
}

function fwxDefaultStatus(sText)
{
	window.defaultStatus = sText;
}

function fwbStatus(sText)
{
	window.status = sText;
	return true;
}

///////////////////////////////
// Functions on an Element

function feeCtrl(form,sName)
{
	var ctrl;
	var i;
	var n;
	n = form.elements.length;
	for	(i=0; i < n; i++) {
		ctrl = form.elements[i];
		if (ctrl.name == sName)
			return ctrl;
	}
	return null;	
}

function fexOnlyDig(ctrl)
{
	ctrl.value = fsOnlyDig(ctrl.value);
}

function fexNoSpace(ctrl)
{
	ctrl.value = fsOnlyDig(ctrl.value);
}

function fexToUpper(ctrl)
{
	ctrl.value = ctrl.value.toUpperCase();
}

function fexToLower(ctrl)
{
	ctrl.value = ctrl.value.toLowerCase();
}

function fexTrim(ctrl)
{
	ctrl.value = fsTrim(ctrl.value);
}

function febIsEmpty(ctrl)
{
	fexTrim(ctrl);
	if (ctrl.value.length < 1)
		return true;
	else
		return false;
}

function febEmailCheck(ctrl)
{
	return fbEmailCheck(ctrl.value);
}

function fexFormat(ctrl,pattern)
{
	ctrl.value = fsFormat(ctrl.value,pattern);	
}

function febCheckCivilRegNo(ctrl,iDigits)
{
	var bOK;
	var sTmp;

	sTmp = ctrl.value;
	fexOnlyDig(ctrl);

	bOK = true;
	if (ctrl.value.length != iDigits)
		bOK = false;
	else if (fbModule10(ctrl.value) == false)
		bOK = false;

	return bOK;
}

// countdown for a textbox
function fexMaxTextboxLen(ctrl,maxLength, ctrlCounter)
{
	if (ctrl.value.length > maxLength) { 
		ctrl.value = ctrl.value.substring(0,maxLength);
		charleft = 0;
    } else {
		charleft = maxLength - ctrl.value.length;
	}
	eval("ctrl.form." + ctrlCounter + ".value = charleft");
}

// pagelist
function drawPageList(iPageCurrent,sList,sLink1,sLink2,sTarget)
{
	var sSep = ",";
	var iNext;
	var iPos;

	var iPage;
	var iRecNum;
	var sSel1;
	var sSel2;
	var sNextPageLink;

	sNextPageLink = "";
	iPos = 0; iNext = sList.indexOf(sSep);
	while (iNext >= 0) {
		iPage = sList.substring(iPos,iNext);
		iPos = iNext + 1; iNext = sList.indexOf(sSep,iPos);
		iRecNum = sList.substring(iPos,iNext);
		iPos = iNext + 1; iNext = sList.indexOf(sSep,iPos);
		if (iPage == iPageCurrent) {
			sSel1 = "<b>";
			sSel2 = "</b>";
		} else {
			sSel1 = "";
			sSel2 = "";
		}
		document.write('<li class="pagelist"><a href="' + sLink1 + iRecNum + sLink2 + '&$currentpage=' + iPage + '"' + '>' + sSel1 + iPage + sSel2 + '</a> </li>');
		if (parseInt(iPage) == parseInt(iPageCurrent)+1)
			sNextPageLink = '<li class="pagelist"><a href="' + sLink1 + iRecNum + sLink2 + '&$currentpage=' + iPage + '"' + '>&raquo;&nbsp;Visa&nbsp;nästa&nbsp;sida</a></li>';
	}
	if (sNextPageLink > "")
		document.write(sNextPageLink);
}

// language
function FillChoiceBox(sList,sDefault)
{
	var sSep = ",";
	var sVal = "";
	var sDef = "";
	var iNext;
	var iPos;
	iPos = 0;
	iNext = sList.indexOf(sSep);
	while (iNext >= 0) {
		sVal = sList.substring(iPos,iNext);
		sDef = (sVal == sDefault) ? ' selected' : '';
		iPos = iNext + 1;
		iNext = sList.indexOf(sSep,iPos);
		if (iNext >= 0) {
			document.write('<option value="' +sVal+ '"'+sDef+'>'+sList.substring(iPos,iNext)+'</option>\n');
			iPos = iNext + 1;
			iNext = sList.indexOf(sSep,iPos);
		}
	}

	if (iPos < sList.length)
		document.write('<option value="' +sVal+ '"'+sDef+'>'+sList.substring(iPos)+'</option>\n');

}

//jumpmenu
function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

// 
/***********************************************
* Random Order Content (from DIVs) script- by JavaScript Kit (www.javascriptkit.com)
* This notice must stay intact for usage
* Visit JavaScript Kit at http://www.javascriptkit.com/ for this script and 100s more
***********************************************/

if (document.getElementById)
document.documentElement.className = 'jsclass'; //hide content for DOM capable browsers


var randomordercontentdisplay={
	divholders:new Object(),
	masterclass: "randomordercontent",

	init:function(){
		if (!document.getElementById)
			return
		var alldivs=document.getElementsByTagName("div")
		var randomcontentsearch=new RegExp(this.masterclass+"\\s+(group\\d+)", "i") //check for CSS class="randomcontent groupX" (x=integer)
		for (var i=0; i<alldivs.length; i++){
			if (randomcontentsearch.test(alldivs[i].className)){
				if (typeof this.divholders[RegExp.$1]=="undefined"){ //if object to hold this group of divs doesn't exist yet
					this.divholders[RegExp.$1]=new Object() //create object
					this.divholders[RegExp.$1].ref=[] //create array to hold each div within group
					this.divholders[RegExp.$1].contents=[] //create array to hold each div's content within group
				}
					this.divholders[RegExp.$1].ref.push(alldivs[i]) //add this div to the array
					this.divholders[RegExp.$1].contents.push(alldivs[i].innerHTML) //add this div's content to the array
			}
		}
	this.scrambleorder()
	},

	scrambleorder:function(){
		for (group in this.divholders){ //loop thru each array within object
			this.divholders[group].contents.sort(function() {return 0.5 - Math.random()}) //scramble contents array
			for (var i=0; i<this.divholders[group].ref.length; i++){
				this.divholders[group].ref[i].innerHTML=this.divholders[group].contents[i]
				this.divholders[group].ref[i].style.display="block"
			}
		}
	}
}


// function url
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


// eof