//------------------------------------------------------------------
function checkLuhn(s) {
	var numero = s;
	var totalcarte=0;
	var dnum=0;
	var test=0;

	for (var i = numero.length; i >= 1 ;  i--) {
		test=test+1;
		num = numero.charAt(i-1);
		if ((test % 2) != 0)
			totalcarte=totalcarte+parseInt(num)
		else {
			dnum=parseInt(num)*2;
			if (dnum >= 10)
				totalcarte=totalcarte+1+dnum-10
			else
				totalcarte=totalcarte+dnum;
		}
	}
	if ((totalcarte % 10) != 0) return (false)
	return(true)
}

//------------------------------------------------------------------
function checkDatum(obj, label) {
    if (! obj.value.match(/[0-3]\d\.[01]\d\.\d{4}/)) {
        alert("Bitte geben Sie das Datum im Feld\n" + label + " in der Form dd.mm.yyyy ein!")
        obj.focus()
        return false
    }
    t = obj.value.replace(/(\d+)\.(\d+)\.(\d+)/, "$2-$1-$3")
    t = new Date(t)
    if (isNaN(t)) {
        alert("Bitte geben Sie im Feld\n" + label + " ein korrektes Datum ein!")
        obj.focus()
        return false
    }
    return true
}

//------------------------------------------------------------------
function checkVNR(f) {
	if (f.value.length != 19) {
		alert("Die Veranstaltungsnummer muss 19-stellig sein!");
		f.focus();
		return (false);
	}

	if (! checkLuhn(f.value)) {
		alert("Die Prüfziffer der Veranstaltungsnummer ist nicht korrekt!");
		f.focus();
		return (false);
	}
	return(true)
}

//------------------------------------------------------------------
function checkEFN(f) {
	if (f.value.length != 15) {
		alert("Die Einheitliche Fortbildungsnummer muss 15-stellig sein!");
		f.focus();
		return (false);
	}

	if (! checkLuhn(f.value)) {
		alert("Die Prüfziffer der Einheitlichen Fortbildungsnummer ist nicht korrekt!");
		f.focus();
		return (false);
	}
	return(true)
}

//------------------------------------------------------------------
function trim(s) {
   if (s.length == 0) return ""
   while (s.charAt(0) == " ") {
      s = s.substring(1, s.length)
   }
   if (s.length == 0) return ""
   while (s.length > 2 && s.charAt(s.length-1) == " ") {
      s = s.substring(0, s.length-1)
   }
   return s
}

//--------------------------------------------------------------
function toNum(s) {
   var i, c, str = ''
   for (i=0; i<s.length; i++) {
      c = s.charAt(i);
      if ((c>='0' && c<='9')|| (c=='-' && i==0)) str += c
   }
   return str
}

//--------------------------------------------------------------
function isNum(s)	{
	for (i=0; i<s.length; i++) {
		c=s.charAt(i)
		if (c<'0' || c>'9') return false
	}
    return true
}

//--------------------------------------------------------------
function checkObject(obj, label) {
   obj.value = trim(obj.value)
   if (obj.value.length == 0) {
      alert("Bitte füllen Sie das Feld '" + label + "' aus!")
      obj.focus()
      return false
   }
   return true
}

//--------------------------------------------------------------
function checkNum(obj, label) {
   obj.value = trim(obj.value)
   if (obj.value.length == 0) {
      alert("Bitte füllen Sie das Feld '" + label + "' aus!")
      obj.focus()
      return false
   }
   if (! isNum(obj.value)) {
      alert("Bitte geben Sie einen numerischen Wert für '" + label + "' an!")
      obj.focus()
      return false
   }
   return true
}

//------------------------------------------------------------------------------
function checkEmail(obj, label) {
   s=obj.value
   t=""
   for (i=0; i<s.length; i++) {
      c=s.charAt(i)
      if (c>='0' && c<='9')
         t=t+c
      if ((c>='A' && c<='Z') || (c>='a' && c<='z'))
         t=t+c
      if (c=='.' || c=='_' || c=='-' || c=='@')
         t=t+c
   }
   obj.value=t
	if ( (obj.value.length<7) || (obj.value.indexOf('@')<1) ) {
      alert("Bitte geben Sie eine korrekte E-Mail-Adresse im Feld\n'" + label + "' ein!")
      obj.focus()
		return false
   }
   return true
}


//------------------------------------------------------------------------------
function countSelected(obj) {
	if (obj.length == undefined) {
	       s = (obj.checked ? 1 : 0);
   } else {
	   for (var s=0, i=0; i<obj.length; i++)
	       s += (obj[i].checked ? 1 : 0);
	}
	return s;
}

//------------------------------------------------------------------------------
function elemSelected(obj, label) {
	n = countSelected(obj);
	if (n == 0) alert("Sie haben " + (label ? label : "keine Elemente") + " ausgewählt!");
	return (n>0);
}

//------------------------------------------------------------------------------
function selectAll(obj) {
	if (obj) obj.checked = true
	for (var i=0; i<obj.length; i++)
	   obj[i].checked = true
}

//------------------------------------------------------------------------------
function deselectAll(obj) {
	if (obj) obj.checked = false
   for (var i=0; i<obj.length; i++)
      obj[i].checked = false
}

//------------------------------------------------------------------------------
function invert(obj) {
   if (obj) obj.checked = ! obj.checked
   for (var i=0; i<obj.length; i++)
      obj[i].checked = ! obj[i].checked
}


//------------------------------------------------------------------------------
function reallyDel(s) {
   if (s > "")
      return confirm("Wollen Sie " + s + " wirklich löschen?")
   else
      return confirm("Wirklich löschen?")
}

//------------------------------------------------------------------------------
function show(id) {
    if (obj = document.getElementById(id)) {
        switch (obj.tagName) {
            case 'TR':
                obj.style.display = 'table-row';
                break;
            case 'TD':
                obj.style.display = 'table-cell';
                break;
            default:
                obj.style.display = 'block';
                break;
        }
    }
}
//------------------------------------------------------------------------------
function hide(id) {
    if (obj = document.getElementById(id)) {
        obj.style.display = 'none';
    }
}
