function trim(tmp){
	if (tmp != null || tmp != ""){
	  while(tmp.substring(0,1)==' ')
	    tmp = tmp.substring(1,tmp.length);
	  while(tmp.substring(tmp.length-1,tmp.length)==' ')
	    tmp = tmp.substring(0,tmp.length-1);
	  return tmp;
	}
	return "";
}

function isNumber(string) {
  for(var position=0; position<string.length; position++){
    var chr = string.charAt(position)

    if((chr < "0") || (chr > "9") )
      return false;
    }
  return true;
}

function isValidDate(string, minyear, maxyear){
  if (!string.match(/^[0-9]{1,2}\.[0-9]{1,2}\.[1-2][0-9]{3}$/i)){
    return false;
  }

  var date = string.split(".");

  for (var i = 0; i < date.length; i++){
    if (!isNumber(date[i])){
      return false;
    }
  }

  var day 	= date[0];
  var month = date[1];
  var year 	= date[2];

  var thisyear 	= (new Date()).getFullYear();
  var thismonth = (new Date()).getMonth() + 1 - 0;
  var thisday 	= (new Date()).getDate() + 1 - 0;

  if (month < 1 || month > 12){
    return false;
  }

  var sumdays = 31;

  if (month == 4 || month == 6 || month == 9 || month == 11)
    sumdays = 30;
  if (month == 2) {
    sumdays = 28;
  if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
    sumdays = 29;
  }

  if (day < 1 || day > sumdays){
    return false;
  }

  if (isNumber(minyear) && isNumber(maxyear)){
	if (thisyear - year <  minyear || thisyear - year > maxyear){
		return false;
	}else if (thisyear - year == minyear){
		if (thismonth < month){
			return false;
		}else if (thismonth == month){
			if (thisday < day){
				return false;
			}
		}
	}else if (thisyear - year == maxyear){
		if (thismonth > month){
			return false;
		}else if (thismonth == month){
			if (thisday > day){
				return false;
			}
		}
	}
  }else if (isNumber(minyear) && !isNumber(maxyear)){
	if (thisyear - year <  minyear){
		return false;
	}
  }else if (!isNumber(minyear) && isNumber(maxyear)){
	if (thisyear - year > maxyear){
		return false;
	}
  }

  return true;
}

function showErrorTag(field){
	field.setAttribute('style','border-color: #FF0000;');
	field.style.borderColor = '#FF0000';

	try{
		if (field.getAttribute('title') != '' && field.getAttribute('title') != null){
			var divs = field.parentNode.parentNode.getElementsByTagName("div");
			var temp = divs[divs.length-1];

			if (temp.getAttribute('ref') != 'error'){
				var message = document.createElement("div");
				message.setAttribute('style','background-color: #AAAAAA;');
				message.style.backgroundColor = '#AAAAAA';
				message.setAttribute('ref','error');

				var innermsg = document.createTextNode(field.getAttribute('title'));
				message.appendChild(innermsg);

				field.parentNode.parentNode.appendChild(message);
			}
		}
	}catch(e){
	}
}


function hideErrorTag(field){
	field.removeAttribute('style');
	field.style.borderColor = '';

	try{
		if (field.getAttribute('title') != '' && field.getAttribute('title') != null){
			var divs = field.parentNode.parentNode.getElementsByTagName("div");
			var temp = divs[divs.length-1];

			if (temp.getAttribute('ref') == 'error'){
				temp.parentNode.removeChild(temp);
			}
		}
	}catch(e){
	}
}


function validatePostData(postarray, returnObject){
	var noerrors = new Array();

	for(var i = 0; i < postarray.length; i++){
		var validate = postarray[i][1].split(" ");

		if (validate == "radio"){
			try{
				var element = document.getElementsByName(postarray[i][0]);
			}catch(e){
			}
		}else if (validate != "compare"){
			try{
				var element = document.getElementById(postarray[i][0]);
				var vardata = document.getElementById(postarray[i][0]).value;
			}catch(e){
			}

			var parameter1 = "";
			var parameter2 = "";

			if (postarray[i].length > 1)
				parameter1 = postarray[i][2];
			else
				parameter1 = "";

			if (postarray[i].length == 4)
				parameter2 = postarray[i][3];
			else
				parameter2 = "";
		}else{
			try{
				var vardata  = postarray[i][0].split(" ");
				var element1 = document.getElementById(vardata[0]);
				var element2 = document.getElementById(vardata[1]);
			}catch(e){
			}
		}

		//alert(i + " " + element +", "+ vardata +", "+ element1 +", "+ element2 +", "+ parameter1 +", "+ parameter2);

		for(var j = 0; j < validate.length; j++){
			switch(validate[j]){
				case "required":
					vardata = trim(vardata);
					if (vardata == null || vardata == ""){
						if (returnObject == "alert"){
							alert(element.getAttribute("title"));
							noerrors.push(false);
							return noerrors;
						}else{
							showErrorTag(element);
							noerrors.push(false);
						}
					}else{
						if (returnObject != "alert"){
							hideErrorTag(element);
						}
						noerrors.push(true);
					}
					break;
				case "minimum":
					vardata = trim(vardata);
					if (vardata.length < parameter1){
        		  		if (returnObject == "alert"){
							alert(element.getAttribute("title"));
							noerrors.push(false);
							return noerrors;
						}else{
							showErrorTag(element);
							noerrors.push(false);
						}
					}else{
						if (returnObject != "alert"){
							hideErrorTag(element);
						}
						noerrors.push(true);
					}
					break;
				case "birthday":
					vardata = trim(vardata);
					if (isValidDate(vardata, parameter1, parameter2) == false){
						if (returnObject == "alert"){
							alert(element.getAttribute("title"));
							noerrors.push(false);
							return noerrors;
						}else{
							showErrorTag(element);
							noerrors.push(false);
						}
					}else{
						if (returnObject != "alert"){
							hideErrorTag(element);
						}
						noerrors.push(true);
					}
					break;
				case "number":
					vardata = trim(vardata);

					if (vardata != null && vardata != ""){
						if (!vardata.match(/^[0-9]+$/i)){
							if (returnObject == "alert"){
								alert(element.getAttribute("title"));
								noerrors.push(false);
								return noerrors;
							}else{
								showErrorTag(element);
								noerrors.push(false);
							}
						}else{
							if (returnObject != "alert"){
								hideErrorTag(element);
							}
							noerrors.push(true);
						}
					}else{
						if (returnObject != "alert"){
							hideErrorTag(element);
						}
						noerrors.push(true);
					}
					break;
				case "telephone":
					vardata = trim(vardata);

					if (vardata != null && vardata != ""){
						if (!vardata.match(/^(\+)?[\s0-9/-]+$/i)){
							if (returnObject == "alert"){
								alert(element.getAttribute("title"));
								noerrors.push(false);
								return noerrors;
							}else{
								showErrorTag(element);
								noerrors.push(false);
							}
						}else{
							hideErrorTag(element);
							noerrors.push(true);
						}
					}else{
						if (returnObject != "alert"){
							hideErrorTag(element);
						}
						noerrors.push(true);
					}
					break;
				case "radio":
					var checked = false;

					for (var k = 0; k < element.length; k++){
						if (element[k].checked == true){
							checked = true;
						}
					}

					if (checked == false){
						if (returnObject == "alert"){
							alert(element[0].getAttribute("title"));
							noerrors.push(false);
							return noerrors;
						}else{
							showErrorTag(element);
							noerrors.push(false);
						}
					}else{
						if (returnObject != "alert"){
							hideErrorTag(element);
						}
						noerrors.push(true);
					}
					break;
				case "email":
					vardata = trim(vardata);
					if (vardata == null || vardata == ""){
						if (returnObject == "alert"){
							alert(element.getAttribute("title"));
							noerrors.push(false);
							return noerrors;
						}else{
							showErrorTag(element);
							noerrors.push(false);
						}
					}else if (!vardata.match(/^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i)){
						if (returnObject == "alert"){
							alert(element.getAttribute("title"));
							noerrors.push(false);
							return noerrors;
						}else{
							showErrorTag(element);
							noerrors.push(false);
						}
					}else{
						if (returnObject != "alert"){
							hideErrorTag(element);
						}
						noerrors.push(true);
					}
					break;
				case "compare":
					if (element1.value != element2.value){
						if (returnObject == "alert"){
							alert(element2.getAttribute("title"));
							noerrors.push(false);
							return noerrors;
						}else{
							showErrorTag(element);
							noerrors.push(false);
						}
					}else{
						if (returnObject != "alert"){
							hideErrorTag(element);
						}
						noerrors.push(true);
					}
					break;
				case "checked":
					if (element.checked != true){
						if (returnObject == "alert"){
							alert(element.getAttribute("title"));
							noerrors.push(false);
							return noerrors;
						}else{
							showErrorTag(element);
							noerrors.push(false);
						}
					}else{
						if (returnObject != "alert"){
							hideErrorTag(element);
						}
						noerrors.push(true);
					}
					break;
				default:
					noerrors.push(false);
			}
		}
	}
	return noerrors;
};


function validate_registration(){
  var noerrors = new Array();
  var valid = true;

  var postarray = new Array(
		new Array("firstName", "required"),
		new Array("firstName", "minimum", "2"),
		new Array("lastName", "required"),
		new Array("lastName", "minimum", "2"),
		new Array("emailCiiju", "email"),
		new Array("gender", "radio"),
		new Array("birthday", "required birthday", "14", "100"),
		new Array("passwdCiiju", "required"),
		new Array("passwdCiiju", "minimum", "8"),
		new Array("passwd2Ciiju", "required"),
		new Array("passwd2Ciiju", "minimum", "8"),
		new Array("passwdCiiju passwd2Ciiju", "compare"),
		new Array("acceptAGB", "checked")
  );
  noerrors = validatePostData(postarray, "alert");

  for (var i = 0; i < noerrors.length; i++){
	if (noerrors[i] == false){
      valid = false;
      break;
    }
  }

  return valid;
}

function validate_invitation(){
  var noerrors = new Array();
  var valid = true;

  var postarray = new Array(
		new Array("friendsname1", "required"),
		new Array("friendsemail1", "email")
  );
  noerrors = validatePostData(postarray);

  for (var i = 0; i < noerrors.length; i++){
	if (noerrors[i] == false){
      valid = false;
      break;
    }
  }

  return valid;
}

function validate_profile(showError){
  var noerrors = new Array();

  try{
	  var zipcode = document.getElementById('zipcode').value;
  }catch(e){
  	  var zipcode = "";
  }

  if (zipcode.length > 0){
	   var postarray = new Array(
			new Array("zipcode", "number"),
			new Array("festnetz", "telephone"),
			new Array("mobil", "telephone")
	  );
  }else{
	  var postarray = new Array(
			new Array("festnetz", "telephone"),
			new Array("mobil", "telephone")
	  );
  }
  noerrors = validatePostData(postarray);

  var counter = 0;

  for (var i = 0; i < noerrors.length; i++){
	if (noerrors[i] == false){
	    if (counter == 0 && showError == true){
			alert(document.getElementById(postarray[i][0]).getAttribute("errortext"));
	    }
		counter++;
    }
  }

  if (counter > 0)
	return false;
  else
    return true;
}

function validate_email(){
  var noerrors = new Array();
  var valid = true;

 var postarray = new Array(
		new Array("email", "email")
  );
  noerrors = validatePostData(postarray);

  for (var i = 0; i < noerrors.length; i++){
    if (noerrors[i] == false){
      valid = false;
      break;
    }
  }
  return valid;
}

function validate_passwords(){
  var noerrors = new Array();
  var valid = true;

 var postarray = new Array(
		new Array("resetPw", "required"),
		new Array("resetPw2", "required"),
		new Array("resetPw", "minimum", "8"),
		new Array("resetPw2", "minimum", "8"),
		new Array("resetPw resetPw2", "compare"),
		new Array("agb", "required")
  );
  noerrors = validatePostData(postarray);

  for (var i = 0; i < noerrors.length; i++){
    if (noerrors[i] == false){
      valid = false;
      break;
    }
  }
  return valid;
}

function validate_login(){
  var noerrors = new Array();
  var valid = true;

 var postarray = new Array(
		new Array("emaillogin", "email"),
		new Array("passwdlogin", "required")
  );
  noerrors = validatePostData(postarray);

  for (var i = 0; i < noerrors.length; i++){
    if (noerrors[i] == false){
      valid = false;
      break;
    }
  }
  return valid;
}

function validate_login2(){
  var noerrors = new Array();
  var valid = true;

 var postarray = new Array(
		new Array("emaillogin2", "email"),
		new Array("passwdlogin2", "required")
  );
  noerrors = validatePostData(postarray);

  var counter = 0;

  for (var i = 0; i < noerrors.length; i++){
	if (noerrors[i] == false){
	    if (counter == 0){
			alert(document.getElementById(postarray[i][0]).getAttribute("errortext"));
	    }
		counter++;
		valid = false;
		break;
    }
  }
  return valid;
}

function validate_band(){
  var noerrors = new Array();
  var valid = true;

 var postarray = new Array(
		new Array("emailloginBand", "email"),
		new Array("passwdloginBand", "required")
  );
  noerrors = validatePostData(postarray);

  var counter = 0;

  for (var i = 0; i < noerrors.length; i++){
	if (noerrors[i] == false){
	    if (counter == 0){
			alert(document.getElementById(postarray[i][0]).getAttribute("errortext"));
	    }
		counter++;
		valid = false;
		break;
    }
  }
  return valid;
}

function validate_guestbook(){
  var noerrors = new Array();
  var valid = true;

  var postarray = new Array(
		new Array("newcomment", "required")
  );
  noerrors = validatePostData(postarray);

  for (var i = 0; i < noerrors.length; i++){
    if (noerrors[i] == false){
      valid = false;
      break;
    }
  }
  return valid;
}