//---------------------------------------------------------------------//
//----------------------- Hide / Show functions -----------------------//
//---------------------------------------------------------------------//

function validateDropDownDate(elementId){

     var day_name=elementId+"_day";
     var month_name=elementId+"_month";
     var year_name=elementId+"_year";

     var day = elV(day_name);
     var month = elV(month_name);
     var year = elV(year_name);
     //alert("1. year='"+year+"',month='"+month+"',day='"+day+"'");
     if(year<1||month <1||day <1 ){
       setMessage("error", msgArray["empty"], elementId);
       return false;
     }
     var isValid = isValidDate(year,month,day);
     // alert("2. year='"+year+"',month='"+month+"',day='"+day+"', fullDate:"+fullDate+", isValid:"+isValid);
     if(!isValid){
        setMessage("error", msgArray["invalid_date"], elementId);
        return false;
     }
    clearMessage(elementId);
    return true;
  
 }

function isValidDate(year,month,day) {
	try{
   day=parseFloat(day);
   month=parseFloat(month);
   year=parseFloat(year);
   var dt = new Date(year,month-1, day, 0, 0, 0, 0);
   /*
   alert("day:"+day+", dt.getDate:"+dt.getDate()+" - "+
         "month:"+month+", dt.getMonth:"+dt.getMonth()+" - "+
         "year:"+year+", dt.getYear:"+dt.getFullYear()+" "
   );
   */
   if(day == dt.getDate() &&  month == (dt.getMonth()+1) && year==dt.getFullYear() ){
      return true;
   }
  }catch(e){}
  	return false;
}


//---------------------------------------------------------------------//
//---------- Submit Password Selection Form -----------------//
//---------------------------------------------------------------------//
function checkUserDataForm(){
      var form_name = "user_data";

      var myArray = new Array( 
     validateName('firstname',2),
     validateName('lastname',3),
     validateStreet('street',5),
     validateDE_ZIP('zip',5),
     validateDropDown('city_id'),
     validateTel('telephone'), // validateTel('telephone',6,true);
     validateTel('mobile_phone') // validateTel('mobile_phone',6,true);
      );
     return generalFormCheck(myArray, form_name);
}

//---------------------------------------------------------------------//
//---------- Invite another User to the site -----------------//
//---------------------------------------------------------------------//
function checkUserInviteForm(){
      var form_name = "user_invite";
//alert(1);
      var myArray = new Array( 
          validateName('invite_from_name',4),
          validateEmail('invite_to_email'),
          validateName('invite_to_name',4)
      );

//alert(2);
     return generalFormCheck(myArray, form_name);
}



//---------------------------------------------------------------------//
//---------- Submit Password Selection Form -----------------//
//---------------------------------------------------------------------//
function checkPasswordSelectForm(){
      var form_name = "password_select";

      var myArray = new Array( 
//validateNickname('nickname',true),
//validateBirthday(),
checkPasswordRepeat(),
//validateRadioCheckbox('gender'),
validateDropDown('city_id'),
validateDE_ZIP('zip',5)
/*
          validateWidth('password',2),
          validateWidth('password_repeat',2),
          validatePasswordRepeat('password','password_repeat', 2)
*/
      );
     return generalFormCheck(myArray, form_name);
}

function validateBirthday(){
	return  validateDropDownDate('date_of_birth');
}

function checkPasswordRepeat(){

     var checkPassword = true;
     checkPassword = validateWidth('password',4) && checkPassword;
     checkPassword = validateWidth('password_repeat',4)  && checkPassword;
     checkPassword = validatePasswordRepeat('password','password_repeat', 4) && checkPassword;
   //     alert("checkPassword:'"+checkPassword+"'");
        return checkPassword;
}

//---------------------------------------------------------------------//
//---------- Submit password confirmation Form -----------------//
//---------------------------------------------------------------------//
function checkPasswordConfirmationForm(){
      var form_name = "password_confirmation";
      var myArray = new Array( 
          validateWidth('password',4),
          validateWidth('password_repeat',4),
          validatePasswordRepeat('password','password_repeat', 4)
      );
     return generalFormCheck(myArray, form_name);
}
 
//---------------------------------------------------------------------//
//---------- Submit checkSendMessageForm Form -----------------//
//---------------------------------------------------------------------//
function checkSendMessageForm(){
      var form_name = "send_message";
      var myArray = new Array( 
          validateWidth('subject',2),
          validateWidth('message',10)
      );
     return generalFormCheck(myArray, form_name);

}
//---------------------------------------------------------------------//
//---------- Submit checkSendImageRegMessageForm Form -----------------//
//---------------------------------------------------------------------//
function checkSendImageRegMessageForm(){
      var form_name = "image_register";
      var myArray = new Array( 
          validateEmail('image_register_email'),
          validateName('image_register_from_name',2)
      );
     return generalFormCheck(myArray, form_name);
}
//---------------------------------------------------------------------//
//------------------------ Submit SendRegMessageForm Form --------------------------//
//---------------------------------------------------------------------//
function checkSendRegMessageForm(){
      var form_name = "send_register";
      var myArray = new Array( 
          validateEmail('send_register_email'),
          validateName('send_register_from_name',2), 
          validateWidth('send_register_message',10)
      );
      return generalFormCheck(myArray, form_name);
}
//---------------------------------------------------------------------//
//------------------------ Submit Register Form --------------------------//
//---------------------------------------------------------------------//
function checkRegisterForm(){
      var form_name = "register";
      var myArray = new Array( 
          validateEmail('register_email'),
          validateName('register_from_name',2)
      );
      return generalFormCheck(myArray, form_name);
}
//---------------------------------------------------------------------//
//------------------------ Submit New Register Form -------------------//
//---------------------------------------------------------------------//
function checkNewRegisterForm(){
//var isEZero = isIE();
//alert("isEZero:'"+isEZero+"'");

      var form_name = "newregister";
      var myArray = new Array( 
         // validateName('newregister_firstname',2),
          validateNickname('nickname',true),
          validateRadio('newregister_gender'), 
          validateBirthday(),
          validateEmail('newregister_email'),
          validateUpload('newregister_gender', 'newregister_email')
      );
     var ok= generalFormCheck(myArray, form_name);
     if(ok){
        setMessage("ok", "", 'newregister_check_all');
        showUploadAnimation();
     }

     return ok;
}

function showUploadAnimation(elementId){
  var elementId = (elementId)?elementId:"uploadanimation";
/*  appendDivText(elementId, "Datei wird hochgeladen. Bitte warten ...", "font-weight: bold;color: red;");
  appendDivText(elementId, "<img src='/site/res/image/progressbar_long_green.gif' alt='Datei wird hochgeladen. Bitte warten ...'>");
  //appendDivText(elementId, "<img src='/site/res/image/progressbar_long_green.gif'>");
  // el("ani").src='/site/res/image/progressbar_long_green.gif';
*/
  //alert("start!");
  show(elementId);
  if(isIE()){
    //alert("isIE = TRUE");
    setText(elementId, "");
    appendDivText(elementId, "Datei wird hochgeladen. Bitte warten ...", "font-weight: bold;color: red;");
    appendDivText(elementId, "<img src='/site/res/image/progressbar_long_green.gif' alt='Datei wird hochgeladen. Bitte warten ...'>");
    /* setTimeout("el('uploadanimation').innerHTML = el('uploadanimation').innerHTML;",10); 
    el('uploadanimation').innerHTML = el('uploadanimation').innerHTML;
 */
  }
}

function showUploadAnimation1(){
  var elementId = "uploadanimation";
  appendDivText(elementId, "Datei wird hochgeladen. Bitte warten ...", "font-weight: bold;color: red;");
  appendDivText(elementId, "<img src='/site/res/image/progressbar_long_green.gif' alt='Datei wird hochgeladen. Bitte warten ...'>");
  //appendDivText(elementId, "<img src='/site/res/image/progressbar_long_green.gif'>");
  // el("ani").src='/site/res/image/progressbar_long_green.gif';
  show("uploadanimation");
 // setTimeout("el('uploadanimation').innerHTML = el('uploadanimation').innerHTML;",10);
  el('uploadanimation').innerHTML = el('uploadanimation').innerHTML;
}

function    getAge(){
   var age = 200;
    try{
   var day = el("date_of_birth_day").value;
   var month = el("date_of_birth_month").value;
   var year = el("date_of_birth_year").value;

   var birthYear = year;
   var thisYear = new Date().getFullYear();
   var age = thisYear - birthYear;
   }catch(e){}
   //alert("age:"+age+"'");
   return age;
}

function validateUpload(gender,email){
 // alert("one 1");
   var elementId = 'userfile';
   /*
    var isAnImage = isImage(elementId);
   // alert("one 2");
   if(isAnImage){
      clearMessage(elementId);
      return true;
   }else{
      setMessage("error", "Wähle dein Bild aus", elementId);
      return false;
    }
   */
   if(checkImage(elementId)){
      clearMessage(elementId);
      return true;
   }else{
      setMessage("error", "Wähle dein Bild aus", elementId);
      return false;
   }

  //OLD CODE
 // alert("one 3");
   var extension = ext(el('newregister_email').value);
 //alert("one 4");
   if(extension !="de" ){
      // non .de email must upload photo - it's that simple!
      //setMessage("error", msgArray["email_invalid"], elementId);
      //alert("extension:'"+extension+"'");
      setMessage("error", "Wähle dein Bild aus", elementId);
      return false;
   }
 // alert("one 5");
   var age = getAge();
  //alert("one 6");
   var genderValue = getRadioValue('newregister_gender');
   var isImageOK = isImage(elementId,true);
   //alert("age:'"+age+"', genderValue:'"+genderValue+"', isImageOK:'"+isImageOK+"'");

   if(genderValue==1 && age < 21 && isImageOK) { // girls under 21 can do so for one day
       clearMessage(elementId);
       return true; // girls are aight
   }
   setMessage("error", "Wähle dein Bild aus", elementId);
   return false;
}


function checkImage(elementId){
   var isAnImage = isImage(elementId);
   hide("uploadanimation");
   if(!isAnImage){
     setMessage("error", "Wähle dein Bild aus", elementId);
     return false;
   }
   clearMessage(elementId);
   setMessage("ok", "", elementId);
   return true;
}

function uploadForm(){
   var elementId ="userfile";
   if(!checkImage(elementId)){
      return false;
   }
   showUploadAnimation("uploadanimation");
   return true;
}

//---------------------------------------------------------------------//
//------------------------ Submit Login Form --------------------------//
//---------------------------------------------------------------------//
function checkLoginForm(){
      var form_name = "login";
      var myArray = new Array( 
          validateEmail('login_login'),
          validateWidth('login_password',4)
      );
      return generalFormCheck(myArray, form_name);
}

//---------------------------------------------------------------------//
//----------------------- Check Invitation Form ------------------------//
//---------------------------------------------------------------------//
function checkInvitationForm(){
      var form_name = "REEDIT_NAME";
      var myArray = new Array( 
          validateName('REEDIT_NAME',5),
          validateEmail('REEDIT_NAME'),
          validateName('REEDIT_NAME',5)
      );
      return generalFormCheck(myArray, form_name);
}

//---------------------------------------------------------------------//
//---------------- Submit Form -----------------------//
//---------------------------------------------------------------------//
function submitForm(){
      var form_name = "myform";
      var myArray = new Array( 
          validateName('from',2), 
          validateEmail('email'),
          validateEmpty('nickname'), 
          validateTel('telephone_number'),
          validateDropDown('city'),
          validateRadioCheckbox('gender'), 
          validateRadioCheckbox('sports'),
          validateWidth('comment',10),
          validateRadioCheckbox('confirmation')
      );

      return generalFormCheck(myArray, form_name);
}
//---------------------------------------------------------------------//
//- ------------------ Submit Password Reminder Form ------------------//
//---------------------------------------------------------------------//
/****** -- Submit Form --******/
function checkPasswordReminderForm(){
      var form_name = "password_reminder";
      var myArray = new Array( 
          validateEmail('reminder_email')/*,
          validateName('login_password',4), 
          validateEmpty('nickname'), 
          validateTel('telephone_number'),
          validateDropDown('city'),
          validateRadioCheckbox('gender'), 
          validateRadioCheckbox('sports'),
          validateWidth('comment',10),
          validateRadioCheckbox('confirmation')
          */
      );
      return generalFormCheck(myArray, form_name);
/*
      var allChecksPassed = true;
      for (var i = 0; allChecksPassed == true, i < myArray.length; i++) 
      {
          allChecksPassed= allChecksPassed && myArray[i];
      }
      
      var elementId = form_name+"_check_all";
      if(allChecksPassed){
        // alles gut
        clearMessage(elementId);
        return false; // later true here for live
      }else{
         setMessage("error",  msgArray["check_all_message"], elementId);
         return false;
      }
      */
}
function generalFormCheck(myArray, form_name){
//	alert(10);
      var allChecksPassed = true;
      for (var i = 0; allChecksPassed == true, i < myArray.length; i++) 
      {
          allChecksPassed= allChecksPassed && myArray[i];
      }
      
//	alert(11);
      var elementId = form_name+"_check_all";
      if(allChecksPassed){
	//alert(12);
        // alles gut
        clearMessage(elementId);
        //return false; // later true here for live
        return true; // later true here for live
      }else{
//	alert(13);
         setMessage("error",  msgArray["check_all_message"], elementId);
         return false;
      }
	//alert(14);
}

//---------------------------------------------------------------------//
//---------------- My functions (neccessary) -----------------------//
//---------------------------------------------------------------------//
var numberString = /[0-9]/
var msgArray=getMsgArray();

function getMsgArray(){
  var arr= new Array();
  arr["empty"]="Erforderlich";
  arr["required"]="Erforderlich";
  arr["name_too_short"]="Eingabe ist zu kurz";
  arr["too_short"]="Eingabe ist zu kurz";
  arr["too_long"]="Eingabe hat zu lang";
  arr["numbers_not_allowed"]="Zahlen nicht erlaubt";
  arr["illegal_street_name"]="Ungültige Straßenname";
  arr["passwords_not_equal"]="Eingegebene Passwörter sind nicht identisch";
  arr["characters_not_allowed"]="Buchstaben nicht erlaubt";
  arr["only_characters_allowed"]="Nur Buchstaben erlaubt";
  arr["email_invalid"]="Ungültige E-Mail Adresse";
  arr["check_all_message"]="Bitte korrigiere deine Eingaben oben";
  arr["characters_2_special_allowed"]="Maximal zwei Buchstaben erlaubt";
  arr["characters_2_minimum_char"]="Mindistens zwei Buchstaben sind erfoderlich";
  arr["invalid_date"]="Eingegebenes Datum ist ungültig";
  
  return arr;
}


function setMessage(messageKey, message, elementId){
try{
   var messageElementId =elementId +"_message";
   setText(messageElementId,message);
//  var elementObject = el(elementId);
//  alert("1. elementId:'"+elementId+"', elementObject:'"+elementObject+"'");
//  if(isValid(elementObject)){
//  alert("2. elementId:'"+elementId+"', elementObject:'"+elementObject+"', key='"+key+"'");
     if(messageKey=="error"){
        setStyle(messageElementId, 'font-weight: bold;color: red; background-color: transparent;');
        setStyle(elementId, 'background-color:FFCCCC;');
//        elementObject.className="fieldErrorStyle";
      }else if (messageKey=="warn"){
        setStyle(messageElementId, 'font-weight: normal;color: rgb(120,0,0); background-color: transparent;');
        setStyle(elementId, 'background-color: transparent;');
//        elementObject.className="fieldWarnStyle";
      }else if(messageKey="ok"){
        setStyle(messageElementId, 'font-weight: bold;color:green; background-color: transparent;');
        setStyle(elementId, 'background-color: white;');
//        elementObject.className = "fieldOkStyle";
      }
//  }
//  alert("3. elementId:'"+elementId+"', elementObject:'"+elementObject+"'");
/*
  var messageElementObject = el(elementId+"_message");
  
//  alert("4. elementId:'"+elementId+"', messageElementObject:'"+messageElementObject+"'");
  if(isValid(messageElementObject)){
     messageElementObject.innerHTML=message;
     if(key=="error"){
        messageElementObject.className="divErrorStyle";
     }else if (key=="warn"){
        messageElementObject.className="divWarnStyle";
     }else if(key="ok"){
       messageElementObject.className="divOkStyle";
     }
  }
  */
}catch(ex){}
  return true;
}

function setMessageRRRR(messageKey, message, elementId){
try{
   var messageElementId =elementId +"_message";
   setText(messageElementId,message);
//  var elementObject = el(elementId);
//  alert("1. elementId:'"+elementId+"', elementObject:'"+elementObject+"'");
//  if(isValid(elementObject)){
//  alert("2. elementId:'"+elementId+"', elementObject:'"+elementObject+"', key='"+key+"'");
     if(messageKey=="error"){
        setStyle(messageElementId, 'font-weight: bold;color: red; background-color: transparent;');
        setStyle(elementId, 'background-color:FFCCCC;');
//        elementObject.className="fieldErrorStyle";
      }else if (messageKey=="warn"){
        setStyle(messageElementId, 'font-weight: normal;color: rgb(120,0,0); background-color: transparent;');
        setStyle(elementId, 'background-color: transparent;');
//        elementObject.className="fieldWarnStyle";
      }else if(messageKey="ok"){
        setStyle(messageElementId, 'font-weight: bold;color:green; background-color: transparent;');
        setStyle(elementId, 'background-color: white;');
//        elementObject.className = "fieldOkStyle";
      }
//  }
//  alert("3. elementId:'"+elementId+"', elementObject:'"+elementObject+"'");
}catch(ex){}
  return true;
}

/*
function setMessageOnly(key, message, elementId){

  var elementObject = el(elementId);
  
  if(key=="error"){
    elementObject.className="fieldErrorStyle";
  }else if (key=="warn"){
    elementObject.className="fieldWarnStyle";
  }else if(key="ok"){
    messageElementObject.className="divOkStyle";
  }
  
  return true;
}
*/

function setCheckMessage(messageKey, message, elementId){
  try{
  /*
  var messageElementObject = el(elementId+"_message");
  var elementObject = els(elementId);

  // message
  //var messageElementObject = el(elementId+"_message");
  //  alert("4. elementId:'"+elementId+"', messageElementObject:'"+messageElementObject+"'");
  if(isValid(messageElementObject)){
     messageElementObject.innerHTML=message;
     if(key=="error"){
        messageElementObject.className="divErrorStyle";
     }else if (key=="warn"){
        messageElementObject.className="divWarnStyle";
     }else if (key=="ok"){
        messageElementObject.className="divOkStyle"; // doesn't matter since text not shown anyways
     }
  }
*/
   var messageElementId =elementId +"_message";
   setText(messageElementId,message);
    if(messageKey=="error"){
        setStyle(messageElementId, 'font-weight: bold;color: red; background-color: transparent;');
//        setStyle(elementId, 'background-color:FFCCCC;');
//        elementObject.className="fieldErrorStyle";
      }else if (messageKey=="warn"){
        setStyle(messageElementId, 'font-weight: normal;color: rgb(120,0,0); background-color: transparent;');
//        setStyle(elementId, 'background-color: transparent;');
//        elementObject.className="fieldWarnStyle";
      }else if(messageKey="ok"){
        setStyle(messageElementId, 'font-weight: bold;color:green; background-color: transparent;');
//        setStyle(elementId, 'background-color: white;');
//        elementObject.className = "fieldOkStyle";
      }


  //objects  
 // if(isValid(elementObject)){
    var elementObject = els(elementId);
     for (i=0;i<elementObject.length;i++) {
         if(messageKey=="error"){
            //elementObject[i].className="fieldErrorStyle";
             setElStyle(elementObject[i], "background-color:FFCCCC;");
         }else if (messageKey=="warn"){
            //elementObject[i].className="fieldWarnStyle";
             setElStyle(elementObject[i], "background-color: transparent;");
         }else if (messageKey=="ok"){
            //elementObject[i].className = "fieldOkStyle";
            setElStyle(elementObject[i], "background-color: white;");
         }
     }
 // }
  }catch(ex){}
  return true;
}

function isValid(elementObject){
    if(elementObject && elementObject != "undefined" && elementObject!=null){
      return true;
     } 
  //   alert("elementObject='"+elementObject+"'");
     return false;
}

function clearMessage(elementId){
//  return setMessage("ok", "", elementId);
  return setMessage("ok", "OK", elementId);
}
function clearCheckMessage( elementId){
//  return setCheckMessage("ok", "", elementId);
  return setCheckMessage("ok", "OK", elementId);
}


//function elVal(elementId){
//  return trim(el(elementId).value);
//}
//---------------------------------------------------------------------//
//---------------- validate implementations-----------------------//
//---------------------------------------------------------------------//
/****** -- NIckname check --******/
function validateNickname(elementId, synchronousCall){
   var elementObject = el(elementId);
   if(!isValid(elementObject)){
      alert("No Existo le Nickname!");
      return true; // element does not exit
   }

   var elementWidth =2;
   // check for emptyness
   if(!validateWidth(elementId, elementWidth,false)){
     return false;
   }
   
   
   var nickname = trim(elementObject.value);
   if(!isValidNickname(nickname)){
//   if(!checkNicknameCharacters(nickname)){
     //alert("Dicovered illegal characters in nickname. nick: '"+nickname+"'");
     setMessage("error",  msgArray["characters_not_allowed"], elementId);
     return false;
   }
   
   var tmpNickname = removeNumber(nickname);
   tmpNickname = removeSpecial(tmpNickname);
   tmpNickname= trim(tmpNickname);
   if(tmpNickname.length<2){
     //alert("tmpNickname='"+tmpNickname+"', You need aminimum of 2 charaters");
     setMessage("error",  msgArray["characters_2_minimum_char"], elementId);
     return false;
    }
   
   if(countSpecialChar(nickname) > 2){
    //  alert("There can be a maximum of 2 special charaters");
     setMessage("error",  msgArray["characters_2_special_allowed"], elementId);
     return false;
    }
    
    // check if name exists in DB
    
  // alles gut
  clearMessage(elementId);
  
  
  return checkNickname(synchronousCall); //end with a synchronous server side check
  
//  return true;
}

/*
// Example
<form name="form"> 
     Zip code: <input name="txtZipCode" type="text" onkeydown="return enforceNumbersOnly(event);">   
</form>

The numbers zero through nine at the top of the keyboard are key codes 48 through 57. 
The numbers zero through nine on the keypad are key codes 96 through 105. 
Backspace has a key code of 8. 
The delete key has a code of 46. 
Tab's key code is 9. 
The arrow keys are codes 37 through 40. 
----------------------------------------------
// control keys
if ((key==null) || (key==0) || (key==8) ||
    (key==9) || (key==13) || (key==27) )
   return true
-----------------------------------------------
*/
function enforceNumbersOnly(evt)   
{   
    // Get the keycode from IE or Mozilla   
    var keyCode = evt == null ? event.keyCode : evt.which;   
       
    document.getElementById("code").innerHTML = keyCode;   
       
    // Any number or a backspace/delete/tab   
    return (keyCode > 47 && keyCode < 58) || keyCode == 8 ||    
         (keyCode > 36 && keyCode < 41) || keyCode == 46 ||   
         (keyCode > 95 && keyCode < 106 || keyCode == 9);   
 }   

//------------------------------------------
function limitlength(obj, length){
  var maxlength=length
  if (obj.value.length>maxlength){
     obj.value=obj.value.substring(0, maxlength);
  }
}

/*
Enter text (max length is 20 characters):
<form>
<textarea onkeyup="return limitlength(this, 20)" style="width: 300px; height: 90px"></textarea>
</form>
*/

/****** -- Repeat Password  --******/
function validatePasswordRepeat(elementId,repeatElementId, elementWidth){
   // check for emptyness
   if(!validateWidth(elementId, elementWidth,false)){
     return false;
   }
   if(!validateWidth(repeatElementId, elementWidth,false)){
     return false;
   }
   
  var elementValue = trim(el(elementId).value);
  var repeatElementValue = trim(el(repeatElementId).value);
  
  if (elementValue != repeatElementValue ) {
     setMessage("error",  msgArray["passwords_not_equal"], elementId);
     setMessage("error",  msgArray["passwords_not_equal"], repeatElementId);
     return false;
  }
  // alles gut
  clearMessage(elementId);
  clearMessage(repeatElementId);
  
  return true;
}
/****** -- German ZIP Code --******/
function validateDE_ZIP(elementId,elementWidth){
  
   var elementObject = el(elementId);
 //  alert("elementId='"+elementId+"'");
   if(!isValid(elementObject)){
 //      alert("Bad !!");
      return true; // element does not exit
   }
     
   // check for emptyness
   if(!validateWidth(elementId, elementWidth,false)){
     return false;
   }
   
  var zipCode = trim(elementObject.value);
  
  if (!allNumbers(zipCode)) {
     setMessage("error",  msgArray["characters_not_allowed"], elementId);
     return false;
  }
  // alles gut
  clearMessage(elementId);
  
  return true;
}

/****** -- Telephone number --******/
function validateTel(elementId,elementWidth, emptyVorbidden){
//  alert("1");
  var emptyAllowed = !emptyVorbidden;
   // check for emptyness
   if(!validateWidth(elementId, elementWidth, emptyAllowed)){
     return false;
   }
//  alert("2");
   
  var telNumber = trim(el(elementId).value);
  if (!allNumbers(telNumber)) {
//      alert("3");

     setMessage("error",  msgArray["characters_not_allowed"], elementId);
     return false;
  }
//  alert("4");
  // alles gut
  clearMessage(elementId);
  
  return true;
}


function validateStreet(elementId, elementWidth){
   // check for emptyness
   if(!validateWidth(elementId, elementWidth, false)){
     return false;
   }
   
  var elementMessage= elementId+"_message";
  var elementValue = el(elementId).value;
  elementValue = (elementValue ==null)?elementValue:trim(elementValue);


  var noalpha = /^[a-zA-Z\0-9 \_\'\"\-öÖäÄüÜß]*$/;
  if (!noalpha.test(elementValue)) {
//  if( !nameCheck(elementValue)){
     setMessage("error",  msgArray["illegal_street_name"], elementId);
     return false;
   } 
  // alles gut
  clearMessage(elementId);

  return true;
}

/****** -- Name --******/
function validateName(elementId, minWidth, maxWidth){
 

   var minWidth = (!minWidth)? 3:minWidth;
   var maxWidth = 30;
  if(!checkWidth(elementId,minWidth,maxWidth, false)){
     return false;
  }
try{
  var elementMessage= elementId+"_message";
  var elementValue = el(elementId).value;
  elementValue = (elementValue ==null)?elementValue:trim(elementValue);

  if( !nameCheck(elementValue)){
     setMessage("error",  msgArray["only_characters_allowed"], elementId);
     return false;
   } 
  // alles gut
  clearMessage(elementId);
}catch(ex){}
  return true;

}

/****** -- E-Mail --******/
function validateEmail(elementId){
  //return true;
   // check for emptyness
   var minWidth = 8;// a@abc.de => 8
   var maxWidth = 60;
   var emptyAllowed = false;
   if(!checkWidth(elementId,minWidth,maxWidth, emptyAllowed)){
      return false;
   }
/*
   elementWidth = (elementWidth)?elementWidth:8;
   if(!validateWidth(elementId,elementWidth,false)){
     return false;
   }

  var elementMessage= elementId+"_message";
  var email = trim(el(elementId).value);
  if(email.length > maxWidth){
     return false;
  }
*/

  var elementMessage= elementId+"_message";
  var email = elV(elementId);
  if (!isValidEmail(email)){
     setMessage("error", msgArray["email_invalid"], elementId);
     return false;
  }
  // alles gut
  clearMessage(elementId);
  
  return true;
   
}

/****** -- Empty Field Check --******/
function validateEmpty(elementId){
   return validateWidth(elementId,1);
}

function checkWidth(elementId,minWidth,maxWidth, emptyAllowed){
  elementValue = false;
  elementWidth =  0;
  try{
   elementValue = elV(elementId);
   elementWidth =  elementValue.length;
  }catch(ex){
  	//alert("elementId:"+elementId);
  	}
 // alert("elementId:"+elementId+", elementValue:"+elementValue+", elementWidth:"+elementWidth);
 try{
   
 // alert("elementId:'"+elementId+"', minWidth:'"+minWidth+"', maxWidth:'"+maxWidth+"', emptyAllowed:'"+emptyAllowed+"', elementWidth:'"+elementWidth+"'");
 if (!emptyAllowed && elementWidth==0){
//      alert("elementId:'"+elementId+"'3 ");
     setMessage("error", msgArray["empty"], elementId);
     return false;
 }else if (!emptyAllowed && elementWidth<minWidth){
//      alert("elementId:'"+elementId+"'3 ");
     setMessage("error", msgArray["too_short"], elementId);
     return false;
  }else if (elementWidth>maxWidth){
     setMessage("error", msgArray["too_long"], elementId);
     return false;
  }
//      alert("elementId:'"+elementId+"' 4");
  // alles gut
  clearMessage(elementId);
  }catch(ex){}
  return true;
   
}


function validateWidth(elementId,elementWidth, emptyAllowed){
   var elementObject = el(elementId);
   if(!isValid(elementObject)){
//      alert("elementId:'"+elementId+"' does not exist");
      return true; // element does not exit
   }

  //alert("elementId:'"+elementId+"'");
  var elementValue = elementObject.value;
  elementValue = (elementValue ==null)?elementValue:trim(elementValue);


//      alert("elementId:'"+elementId+"' 1 ");

  if (elementValue==null || elementValue ==""){
//      alert("elementId:'"+elementId+"' 2");
     if(!emptyAllowed){
        setMessage("error", msgArray["empty"], elementId);
        return false;
     }
   }else if (elementValue.length<elementWidth){
//      alert("elementId:'"+elementId+"'3 ");
     setMessage("error", msgArray["too_short"], elementId);
     return false;
  }
//      alert("elementId:'"+elementId+"' 4");
  // alles gut
  clearMessage(elementId);
  
  return true;
   
}
/****** -- Select Box or Combo Box or Radio button Check --******/
function validateDropDown(elementId,cutoffValue){
   var cutoffValue=(cutoffValue==true)?cutoffValue: 0;
   
//    alert("elementId='"+elementId+"'");

   var elementMessage= elementId+"_message";
//    alert("1c");
   var elementObject = el(elementId);
//    alert("1d");
   var elementValue = (elementObject ==null)?"":elementObject.value;
//    alert("1e");
//   var elementValue = (elementObject ==null)?"":elementObject.value;
//    alert("1f");
   elementValue = (elementValue ==null)?elementValue:trim(elementValue);

//    alert("1g");
//    alert("1g, elementId='"+elementId+"', elementValue='"+elementValue+"'");

  if (elementValue ==null || elementValue =="" || elementValue <= cutoffValue ){
//    alert("1h, elementId='"+elementId+"', elementValue='"+elementValue+"'");

     setMessage("error", msgArray["empty"], elementId);

//    alert("1i");

     return false;
  }

//    alert("1j");
  // alles gut
  clearMessage(elementId);
  
//    alert("1k");
  return true;
   
}




function validateRadio(elementName) {
    if (isRadioChecked(elementName)) {
        // alles gut
        clearCheckMessage(elementName);
        return true;
    } else {
         setCheckMessage("error", msgArray["empty"], elementName);
         return false;
    }
}


function validateRadioCheckbox(elementId) {
 var elementObject = els(elementId);
 if(!isValid(elementObject)){
    return true;
  }
// alert("elementId:'"+elementId+"', elementObject:'"+elementObject+"'");
 
     var isChecked = false;
     if (elementObject.checked) {
         isChecked = true;
     }else{
         for (i=0;i<elementObject.length;i++) {
            if (elementObject[i].checked == true) {
             isChecked = true;
            }
         }
    }
    if (isChecked) {
        // alles gut
        clearCheckMessage(elementId);
        return true;
    } else {
         setCheckMessage("error", msgArray["empty"], elementId);
         return false;
    }
}

// you can remove the "elementObject.value>0" and "elementObject[i].value>0" checks below. 
// They just make sure the selected value does not have a zero value
function strictValidateRadioCheckbox(elementId) {

   var elementObject = el(elementId);
  
     var isChecked = false;
     // you can remove the "elementObject.value>0" and "elementObject[i].value>0" checks below. 
     if (elementObject.checked && elementObject.value > 0) {
         isChecked = true;
     }else{
         for (i=0;i<elementObject.length;i++) {
            if (elementObject[i].checked && elementObject[i].value > 0) {
             isChecked = true;
            }
         }
    }
    if (isChecked) {
        // alles gut
        clearCheckMessage(elementId);
        return true;
    } else {
         setCheckMessage("error", msgArray["empty"], elementId);
         return false;
    }
}

//---------------------------------------------------------------------//
/****** -- General Check functions --******/
//---------------------------------------------------------------------//
function isValidEmail(text){
 if (text.length <4) {
 return false;
 } 
  i=text.indexOf("@");
  j=text.indexOf(".",i);
  k=text.indexOf(",");
  kk=text.indexOf(" ");
  jj=text.lastIndexOf(".")+1;
  len=text.length;
  if ((i>0) && (j>(1+1)) && (k==-1) && (kk==-1) && (len-jj >=2) && (len-jj<=4)) {
    return true; //OK
  }
 return false;
}

function removeSpecial(text) {
   var  re = /\$|,|@|#|~|`|\%|\*|\^|\&|\(|\)|\+|\=|\[|\-|\_|\]|\[|\}|\{|\;|\:|\'|\"|\<|\>|\?|\||\\|\!|\€|\$|\./g;
   // remove special characters like "$" and "," etc...
   return text.replace(re, "");
}

function removeNumber(text) {
   var  re = /[0-9]/g;
   return text.replace(re, "");
}

function nameCheck(text){
//alert on finding all letters
  var noalpha = /^[a-zA-Z\ \'\"\-öÖäÄüÜß]*$/;
  if (noalpha.test(text)) {
    // alert("All letters Yes!");
     return true;
   }
   return false;
}

function nicknameCheck(text){
//alert on finding all letters
  var noalpha = /^[a-zA-Z0-9\-öÖäÄüÜß]$/;
  if (noalpha.test(text)) {
    // alert("All letters Yes!");
     return true;
   }
   return false;
}

function allLetters(text){
//alert on finding all letters
  var noalpha = /^[a-zA-Z]*$/;
  if (noalpha.test(text)) {
     // alert("All letters Yes!");
     return true;
   }
   return false;
}

function allNumbers(text){
  var nonums = /^[0-9]*$/;
  if (nonums.test(text)) {
     // alert("All numbers yes !");
     return true;
  }
  return false;   
}


function isValidNickname(myText){
  if(myText==null || myText=="undefined"|| myText==""){
    return false;
  }
  // minus(-) high comma('), Exclamation(!), dot(.) and empty space " " are allowed
  // List of Allowed Characters >>>>!- .'<<<<<
//  var iChars = "@#$€%^&*()+=[]\\\;,/{}|\":<>?"; 

  // List of NOT Allowed Characters >>>>!- .'<<<<<
  var iChars = "@#$€%^!\"§$%&/() `´=?\\+*#\[]\',;:<>|&?¿"; 
  for (var i = 0; i < myText.length; i++) {
    if (iChars.indexOf(myText.charAt(i)) != -1) {
      // alert ("Your username has special characters. \nThese are not allowed.\n Please remove them and try again.");
      return false;
    }
  }
  return true;
}

function countSpecialChar(myText){
  if(myText==null || myText=="undefined"|| myText==""){
    return 0;
  }
  var specialCharCount =0; 
  // I Excepted the empty space " " and "-" and "_"because they are elegant
  // minus(-) high comma('), Exclamation(!), dot(.) and empty space " " are allowed
  // List of Allowed Characters >>>>!- .'<<<<<
  var iChars = "!.'@#$€%^&*()+=[]\\\;,/{}|\":<>?"; 
  for (var i = 0; i < myText.length; i++) {
    if (iChars.indexOf(myText.charAt(i)) != -1) {
      // alert ("Your username has special characters. \nThese are not allowed.\n Please remove them and try again.");
       specialCharCount++;
    }
  }
  //alert("specialCharCount:'"+specialCharCount+"'");
  return specialCharCount;
}

function hasSpecialChar(myText){
  if(myText==null || myText=="undefined"|| myText==""){
    return false;
  }
  
  var iChars = "!@#$%^&*()_+=-[]\\\';,./{}|\":<>?";
  for (var i = 0; i < myText.length; i++) {
  	if (iChars.indexOf(myText.charAt(i)) != -1) {
    	// alert ("Your username has special characters. \nThese are not allowed.\n Please remove them and try again.");
     	return true;
  	}
  }
  return false;
}  


function checkNicknameCharacters(myText){
  var iChars = "/\!@#\$%\^\&*()_+=-\[\]\\\';,.\/{}|\":<>\?/";
  if (iChars.test(myText)) {
  //    alert("myText:'"+myText+"', Contains special characters!");
      return false;
   }
   // alert("myText:'"+myText+"', all characters ok!");
   return true;
}

function containsSpecialCharacters(text){
 var iChars = /\!@#\$%\^\&*()+_=-\[\]\\\';,.\/{}|\":<>\?/;
if (iChars.test(text)) {
   // alert("contains special charaecters!");
     return true;
   }
   return false;
}

/*
function trim(str)
{
   return str.replace(/^\s*|\s*$/g,"");
}
*/

//---------------------------------------------------------------------//
var letters=' ABCÇDEFGHIJKLMNÑOPQRSTUVWXYZabcçdefghijklmnñopqrstuvwxyzàáÀÁéèÈÉíìÍÌïÏóòÓÒúùÚÙüÜäÄöÖüÜß';
var numbers='0123456789';
var all_special='°^!"§$%&/() =?\\+`´*#\[]\'-_,;.:@<>|&?¿';
var signs=',.:;@-\'';
//var illegal_nickname_signs='°^"§$%&/()[]=?\\+*#\,;:<>|&?¿';
var illegal_nickname_signs='@#$€%`´&°^!´"§$%&/() =?\\+*#\[]\',;:<>|&?¿';
var mathsigns='+-=()*/';
var custom='<>#$%&?¿';

function alpha(e,allow) {

   if(e.keyCode == 13|| e.keyCode == 46){
      return true;
    }

     var k;
     k=document.all?parseInt(e.keyCode): parseInt(e.which);
     return (allow.indexOf(String.fromCharCode(k))!=-1);
}



function alpha2(e,block) {
     var k;
     k=document.all?parseInt(e.keyCode): parseInt(e.which);
     var returnValue = (block.indexOf(String.fromCharCode(k))!=-1);
     returnValue = !returnValue;
     return returnValue;
}
