/**
 * Nachricht löschen
 *
 * @author maichele
 */
function deleteMessage(message_id, language) {

   if(parseInt(message_id) == message_id) {

       var translation = new Object();
       translation['messagetitle']          = new Object();
       translation['messagetitle']['de_DE'] = 'Frage';
       translation['messagetitle']['en']    = 'Question';

       translation['messagetext']          = new Object();
       translation['messagetext']['de_DE'] = 'Wollen Sie diese Nachricht wirklich löschen?';
       translation['messagetext']['en']    = 'Do you really want to delete this message?';

       translation['messagetextno']          = new Object();
       translation['messagetextno']['de_DE'] = 'Nein';
       translation['messagetextno']['en']    = 'No';

       translation['messagetextyes']          = new Object();
       translation['messagetextyes']['de_DE'] = 'Ja';
       translation['messagetextyes']['en']    = 'Yes';

       htmltext  = '<div>' +
                   '  <h3>' + translation['messagetitle'][language] + '</h3>' +
                   '  <p>' +
                   translation['messagetext'][language] +
                   '    <br /><br />' +
                   '    <p class="right">' +
                   '      <a class="plink" onclick="location.href=\'/messaging/deleteMessage/' + message_id + '\'" href="javascript:void(0);">' + translation['messagetextyes'][language] + '</a>&nbsp;&nbsp;&nbsp;&nbsp;' +
                   '      <a class="plink" onclick="Modalbox.hide();" href="javascript:void(0);">' + translation['messagetextno'][language] + '</a>' +
                   '    </p>' +
                   '  </p>' +
                   '</div>';

       Modalbox.show(htmltext, {title: translation['messagetitle'][language], width: 350, height: 180});
  }
}

/**
 * Pager für gesendete Nachrichten
 *
 * @author maichele
 */
function messagePager(page, mode) {

  if (mode == 'unnread') {

    new Ajax.Updater('unreadmessages', '/messaging/ajaxMessagePager/' + page + '/' + mode, {asynchronous:true, evalScripts:true});
  } else if (mode == 'read') {

    new Ajax.Updater('readmessages', '/messaging/ajaxMessagePager/' + page + '/' + mode, {asynchronous:true, evalScripts:true});
  } else if (mode == 'send') {

    new Ajax.Updater('sendmessages', '/messaging/ajaxMessagePager/' + page + '/' + mode, {asynchronous:true, evalScripts:true});
  }
}

/**
 * Nachricht versenden
 *
 * @author maichele
 */
function sendmessage() {

  if (($('subject').value != '') && ($('messagetext').value != '')) {

    new Ajax.Updater('messageresult', '/messaging/messageSend', {asynchronous:true, evalScripts:true, parameters:Form.serialize('form')});
  }
}

/**
 * Führt die Benutzersuche aus
 *
 * @author maichele
 */
function herosearch(page) {

  query = $('query').value;

  if (query != '') {

    new Ajax.Updater('searchresult', '/search/ajaxSearch/' + query + '/' + page, {asynchronous:true, evalScripts:true});
  } else {

    $('searchresult').innerHTML = '';
  }
}

/**
 * Prüft, ob der letzte Tastendruck ein ENTER war,
 * wenn ja, dann wird das übergebene Formular abgesendet
 *
 * @author sweber
 */
function checkDoSubmit(event, formname) {

  // Firefox
  if(event.which) {

    if(event.which == 13) {

      window.setTimeout("$("+formname+").submit()", 10);
    }
  } else {

    if(event.keyCode == 13) {

      window.setTimeout("$("+formname+").submit()", 10);
    }
  }
}


/**
 * Fügt einen Eintrag in eine Shoutbox ein
 *
 * @author sweber
 */
function saveShoutboxEntry() {

  var profile_id = $('profile_id').value;

  if(parseInt(profile_id) == profile_id) {

    new Ajax.Updater('shoutboxholder',
                      '/shoutbox/add/' + profile_id,
                      { asynchronous:true,
                          evalScripts:true,
                          parameters:Form.serialize('shoutboxform'),
                          onComplete: function() { window.scroll(0, 558); }
                      }
                     );
  }
}

/**
 * Fügt einen Kommentar zu einem Bild hinzu
 *
 * @author sweber
 */
function saveComment() {

  var image_id = $('image_id').value;

  if(parseInt(image_id) == image_id) {

    new Ajax.Updater('kommentare',
                      '/comment/add/' + image_id,
                      { asynchronous:true,
                          evalScripts:true,
                          parameters:Form.serialize('comment_form'),
                          onComplete: function() { window.scroll(0, 816); }
                      }
                     );
  }
}

/**
 * Zeigt eine Hinweismeldung über das Speichern der Beschreibung an
 *
 * @author sweber
 */
function showModalAfterSaveDescrition(language) {

  var translation = new Object();
  translation['messagetitle']          = new Object();
  translation['messagetitle']['de_DE'] = 'Hinweis';
  translation['messagetitle']['en']    = 'Notice';

  translation['messagetext']          = new Object();
  translation['messagetext']['de_DE'] = 'Die Bildbeschreibung wurde gespeichert!';
  translation['messagetext']['en']    = 'Description saved!';

  var htmltext  = '<div>' +
                  '  <h3>' + translation['messagetitle'][language] + '</h3>' +
                  '  <p>' +
                  translation['messagetext'][language] +
                  '    <br /><br />' +
                  '    <p class="right">' +
                  '      <a class="plink" onclick="Modalbox.hide();" href="javascript:void(0);">OK</a>' +
                  '    </p>' +
                  '  </p>' +
                  '</div>';

  Modalbox.show(htmltext, {title: translation['messagetitle'][language], width: 350, height: 180});
}

/**
 * Speichert Beschreibung und Credentiol eines Bildes
 *
 * @author maichele
 */
function saveDescription(language) {

  var image_id = $('imageid').value;

    if(parseInt(image_id) == image_id) {



        new Ajax.Updater('description', '/picture/saveDescription/' + image_id, {  asynchronous:true,
                                                                                   evalScripts:true,
                                                                                   parameters:Form.serialize('description_form')
                                                                                }
                        );
        showModalAfterSaveDescrition(language);
    }
}

/**
 * Ein Pager JS-Call zum wechseln der Kommentarlistenseiten
 *
 * @author sweber
 */
function openCommentPage(image_id, page) {

  if(parseInt(image_id) == image_id &&
      parseInt(page) == page) {

    new Ajax.Updater('kommentare',
                        '/comment/list/' + image_id + '/' + page,
                        { asynchronous:true, evalScripts:true }
                    );
  }
}

/**
 * Ein Pager JS-Call zum wechseln der Bilderseiten eines Benutzerprofils
 *
 * @author sweber
 */
function openProfilePage(profile_id, page) {

  if(parseInt(profile_id) == profile_id &&
      parseInt(page) == page) {

    new Ajax.Updater('bilderliste',
                        '/listPictures/' + profile_id + '/' + page,
                        { asynchronous:true, evalScripts:true }
                     );
  }
}

/**
 * Ein Pager JS-Call zum wechseln der Bilderseiten auf der Startseite
 *
 * @author sweber
 */
function openProfilePage(page) {

  if(parseInt(page) == page) {

    new Ajax.Updater('bilderliste',
                        '/listPictures/' + page,
                        { asynchronous:true, evalScripts:true }
                     );
  }
}

/**
 * Prüft während der Eingabe in ein Textfeld die erluabte Länge und
 * kürzt ggf den Text um das letzte Zeichen.
 *
 * @author sweber
 */
function checkAvailableCharsLeft(textarea, maxlength) {

  var span = document.getElementById(textarea.name + '_leftChars');
  var text = textarea.value;

  if(text.length > maxlength) {

    textarea.value = text.substr(0, (maxlength - 1));
    span.innerHTML = '0';
  } else {

    span.innerHTML = (maxlength - text.length);
  }
}

/**
 * zeigt einen Hinweis darauf, dass der User sich anmelden muss, um ein Feature nutzen zu k�nnen
 *
 * @author sweber
 */
function pleaseLogin(action) {

  new Ajax.Updater('hidden_puffer',
                      '/system/pleaseLogin/' + action,
                      { asynchronous: true, evalScripts: true }
                  );
}

var user_exists = false;

/*
 * JS in_array
 */
function in_array(item, arr) {

  for(p=0;p<arr.length;p++) {

    if (item == arr[p]) {

      return true;
    }
  }
  return false;
}

/**
 * Gibt den vorraussichtlichen camherodomainnamen aus
 *
 * @author sweber
 */
function generateDomain(base, nickname) {

  var domainname = nickname.replace(/[^a-z0-9]/gi, "");

  if(domainname.length > 0) {

    var output_domain                     = 'http://' + domainname + '.' + base + '/';
    $('pagepreview').innerHTML            = output_domain.toLowerCase();
    $('pagepreviewwrapper').style.display = 'block';
  } else {

    $('pagepreview').innerHTML            = '';
    $('pagepreviewwrapper').style.display = 'none';
  }

}

function checkEmailSyntax (wert) {

    var a   = false;
    var res = false;

    // testen, ob regexp korrekt unterstuetzt werden
    if(typeof(RegExp) == 'function') {
      var b = new RegExp('abc');
      if(b.test('abc') == true){

        a = true;
      }
    }

    if(wert.length){
      if(a == true) {

        reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+
                       '(\\@)([a-zA-Z0-9\\-\\.]+)'+
                       '(\\.)([a-zA-Z]{2,4})$');
        res = (reg.test(wert));

      } else {

        res = (wert.search('@') >= 1 &&
             wert.lastIndexOf('.') > wert.search('@') &&
             wert.lastIndexOf('.') >= wert.length-5);
      }

      error = !res;
      if (error) {

       return false;
      }
    } else {

      return false;
    }

    return true;
}

var email1valid;
var email2valid;
var email3valid;

function validateEmail(doAfterAjax, emptyAllowed) {

    lang = document.getElementById('global_culture').value;

    var translation = new Object();
    translation['validemail']          = new Object();
    translation['validemail']['de_DE'] = 'Bitte gültige Emailadresse eingeben';
    translation['validemail']['en']    = 'Please enter a valid e-mail address';

    translation['emptyemail']          = new Object();
    translation['emptyemail']['de_DE'] = 'Bitte Emailadresse eingeben';
    translation['emptyemail']['en']    = 'Please enter an e-mail address';

    email1valid = false;
    email2valid = false;
    email3valid = false;

  var email1 = document.getElementById('email1').value;

  if (document.getElementById('email2')) {

     var email2 = document.getElementById('email2').value;
     var email3 = document.getElementById('email3').value;
  }

  if (!(email1 == '') && !emptyAllowed) {

      if (checkEmailSyntax(email1)) {

        email1valid = true;
        document.getElementById('email1').style.border   = '1px solid #6DC41E';
        document.getElementById('eemail1').style.display = 'none';

      } else {

        document.getElementById('eemail1').innerHTML     = translation['validemail'][lang];
        document.getElementById('email1').style.border   = '1px solid #ff0000';
        document.getElementById('eemail1').style.display = 'block';
      }
    } else {

      if(!emptyAllowed) {

        email1valid = false;
        document.getElementById('eemail1').innerHTML     = translation['emptyemail'][lang];
        document.getElementById('email1').style.border   = '1px solid #ff0000';
        document.getElementById('eemail1').style.display = 'block';
      } else {

        email1valid = true;
      }
    }

    if (document.getElementById('email2')) {

      if (!(email2 == '')) {

        if (checkEmailSyntax(email2)) {

          email2valid = true;
          document.getElementById('email2').style.border = '1px solid #6DC41E';
          document.getElementById('eemail2').style.display = 'none';
        } else {

          email2valid = false;
          document.getElementById('eemail2').innerHTML = translation['validemail'][lang];
          document.getElementById('email2').style.border = '1px solid #ff0000';
          document.getElementById('eemail2').style.display = 'block';
        }
      } else {

        email2valid = true;
      }

      if (!(email3 == '') && !emptyAllowed) {

        if (checkEmailSyntax(email3)) {

          email2valid = true;
          document.getElementById('email3').style.border = '1px solid #6DC41E';
          document.getElementById('eemail3').style.display = 'none';
        } else {

          email3valid = false;
          document.getElementById('eemail3').innerHTML = translation['validemail'][lang];
          document.getElementById('email3').style.border = '1px solid #ff0000';
          document.getElementById('eemail3').style.display = 'block';
        }
      } else {

        email3valid = true;
      }
    } else {

      email2valid = true;
      email3valid = true;
    }

    if(doAfterAjax) {

      new Ajax.Updater('emailvalidate', '/profile/validateEmail', {asynchronous:true, evalScripts:true, parameters:Form.serialize('form'), onComplete: function() { window.setTimeout("doValidateForm('true')", 100); }});
    } else {

      new Ajax.Updater('emailvalidate', '/profile/validateEmail', {asynchronous:true, evalScripts:true, parameters:Form.serialize('form'), onComplete: function() { return true; }});
    }

}

/**
 * Nickname validieren, darf nicht doppelt vorkommen
 *
 * @author maichele
 */
function validateNick(doAfterAjax) {

  nickValid = true;

  if (document.getElementById('nickname') == '') {

    nickValid = false;
  }

  if(doAfterAjax) {

    new Ajax.Updater('nickvalidate', '/upload/validateNickname', {asynchronous:true, evalScripts:true, parameters:Form.serialize('form'), onComplete: function() { window.setTimeout("validateEmail(true, false)", 100); }});
  } else {

    new Ajax.Updater('nickvalidate', '/upload/validateNickname', {asynchronous:true, evalScripts:true, parameters:Form.serialize('form'), onComplete: function() { return true; }});
  }
}

/**
 * Registrierung beim Uploaden validieren
 *
 * @author maichele
 */
var nickValid;
function doValidateOnUploadForm(reg) {

  language = document.getElementById('global_culture').value;

  var translation = new Object();
  translation['validemail']          = new Object();
  translation['validemail']['de_DE'] = 'Bitte gültige Emailadresse eingeben';
  translation['validemail']['en']    = 'Please enter a valid e-mail address';

  missing     = false;
  email1valid = true;

    if (reg == true) {

      validateEmail(false, true);
      validateNick(false);

      if (email1valid == false) {

          missing = true;
      }

      if (nickValid == false) {

          missing = true;
      }
    }

    document.getElementById('file1').style.border = '1px solid #6DC41E';
    if (document.getElementById('file1').value == '') {

      document.getElementById('file1').style.border = '1px solid #ff0000';
      missing = true;
    }

    document.getElementById('emailfriend1').style.border = '1px solid #6DC41E';
    document.getElementById('eemailfriend1').style.display = 'none';

    if (checkEmailSyntax(document.getElementById('emailfriend1').value) == false && document.getElementById('emailfriend1').value != '') {

      document.getElementById('eemailfriend1').innerHTML = translation['validemail'][language];
      document.getElementById('emailfriend1').style.border = '1px solid #ff0000';
      document.getElementById('eemailfriend1').style.display = 'block';
      missing = true;
    }

    document.getElementById('emailfriend2').style.border = '1px solid #6DC41E';
    document.getElementById('eemailfriend2').style.display = 'none';
    if (checkEmailSyntax(document.getElementById('emailfriend2').value) == false && document.getElementById('emailfriend2').value != '') {

      document.getElementById('eemailfriend2').innerHTML = translation['validemail'][language];
      document.getElementById('emailfriend2').style.border = '1px solid #ff0000';
      document.getElementById('eemailfriend2').style.display = 'block';
      missing = true;
    }

    document.getElementById('emailfriend3').style.border = '1px solid #6DC41E';
    document.getElementById('eemailfriend3').style.display = 'none';
    if (checkEmailSyntax(document.getElementById('emailfriend3').value) == false && document.getElementById('emailfriend3').value != '') {

      document.getElementById('eemailfriend3').innerHTML = translation['validemail'][language];
      document.getElementById('emailfriend3').style.border = '1px solid #ff0000';
      document.getElementById('eemailfriend3').style.display = 'block';
      missing = true;
    }

    if (missing) {

      return false;
    }

    var htmltext  = '<div>' +
                    '  <p>' +
                    '    <center><img src="/images/spinner.gif" /></center>' +
                    '  </p>' +
                    '</div>';

    Modalbox.show(htmltext, {title: 'Uploading', width: 240, height: 120});
    window.setTimeout("$('uploadform').submit()", 10);
}

/**
 * Prüft, ob alle Pflichtfelder gefüllt worden sind
 *
 * @author sweber
 */
function doValidateForm(checkMail, makeReturn) {

  var mandatory = document.getElementById('mandatory').value;
  mandatory     = mandatory.split(',');

  var count          = 0;
  var missing        = false;
  var missing_fields = new Array();

  for (count; count < mandatory.length; count++) {

    var element      = document.getElementById(mandatory[count]);
    var label        = 'l'+mandatory[count];
    var errormessage = 'e'+mandatory[count];
    label            = document.getElementById(label);
    errormessage     = document.getElementById(errormessage);

    if(element.type == 'selectOne') {

      if(element.options[element.options.selectedIndex].value == '') {

        missing_fields.push(mandatory[count]);
        missing                    = true;
        element.style.border       = '1px solid #ff0000';
        label.style.color          = '#ff0000';
        errormessage.style.display = 'block';
      } else {

        element.style.border       = '1px solid #6DC41E';
        label.style.color          = '#333333';
        errormessage.style.display = 'none';
      }
    } else if(element.type == 'checkbox') {

      if(element.checked == false) {

        missing_fields.push(mandatory[count]);
        missing                    = true;
        element.style.border       = '1px solid #ff0000';
        label.style.color          = '#ff0000';
        errormessage.style.display = 'block';
      } else {

        element.style.border       = '1px solid #6DC41E';
        label.style.color          = '#333333';
        errormessage.style.display = 'none';
      }
    } else {

      if(element.value == '') {

         missing_fields.push(mandatory[count]);
        missing                    = true;
        element.style.border       = '1px solid #ff0000';
        label.style.color          = '#ff0000';
        errormessage.style.display = 'block';
      } else {

        if(mandatory[count] == 'nickname') {

          update = (nickValid === true) ? true : false;
        } else if(mandatory[count] == 'email1') {

          update = (email1valid === true) ? true : false;
        } else {

          update = true;
        }

        if(update) {

          element.style.border       = '1px solid #6DC41E';
          label.style.color          = '#333333';
          errormessage.style.display = 'none';
        }
      }
    }
  }

  if (checkMail) {

    if ((email1valid == false) || (email2valid == false) || (email3valid == false)) {

       missing = true;
    }
  }

  if (nickValid == false) {

    missing = true;
  }

  if(in_array('gender', mandatory)) {

    var list           = document.getElementsByClassName('gender');
    var anrede_checked = false;
    var label          = document.getElementById('lgender');
    var errormessage   = document.getElementById('egender');

    errormessage.style.display = 'none';

    for(count = 0; count < list.length; count++) {

      if(list[count].checked == true) {

        anrede_checked = true;
      }
    }

    if(!anrede_checked) {

      errormessage.style.display = 'block';
      label.style.color          = '#ff0000';
      missing                    = true;
    }
  }

  /*
   * Check passwords
   */

  try {

    if(!($('password').value == '') || !($('password2').value == '') || (in_array('password', mandatory))) {

      if(checkPasswords() == false) {

        missing = true;
      }
    }
  } catch (error) {}

  if(missing == true) {

    return false;
  } else {

    if(makeReturn) {

      return true;
    } else {
      if($('form')) {

        window.setTimeout("document.getElementById('form').submit()", 10);
      }
    }
  }
}

/**
 * Prüft, ob die eingegebenen Passwörter übereinstimmen
 *
 * @author sweber
 */
function checkPasswords() {

  language = $('global_culture').value;

  var translation = new Object();
  translation['enterpassword']          = new Object();
  translation['enterpassword']['de_DE'] = 'Bitte gib ein Passwort ein!';
  translation['enterpassword']['en']    = 'Please enter a password';

  translation['repeatpassword']          = new Object();
  translation['repeatpassword']['de_DE'] = 'Bitte gib dein Passwort nochmal ein!';
  translation['repeatpassword']['en']    = 'Please repeat your password';

  translation['passwordlength']          = new Object();
  translation['passwordlength']['de_DE'] = 'Dein Passwort muss mindestens 6 Zeichen haben!';
  translation['passwordlength']['en']    = 'Your password has to consist of at least six characters';

  translation['passwordmatch']          = new Object();
  translation['passwordmatch']['de_DE'] = 'Die Passw&ouml;rter stimmen leider nicht &uuml;berein!';
  translation['passwordmatch']['en']    = 'The passwords you have entered mismatch';

  var password1       = $('password');
  var password1_label = $('lpassword');
  var password1_error = $('epassword');

  password1_label.style.color   = '#333333';
  password1.style.border        = '1px solid #6DC41E';
  password1_error.style.display = 'none';
  password1_error.innerHTML     = '';

  var password2       = $('password2');
  var password2_label = $('lpassword2');
  var password2_error = $('epassword2');

  password2_label.style.color   = '#333333';
  password2.style.border  			= '1px solid #6DC41E';
  password2_error.style.display = 'none';
  password2_error.innerHTML     = '';

  if(password1.value == '') {

    password1_label.style.color   = '#ff0000';
    password1.style.border        = '1px solid #ff0000';
    password1_error.style.display = 'block';
    password1_error.innerHTML     = translation['enterpassword'][language];
    return false;
  }

  if(password2.value == '') {

    password2_label.style.color   = '#ff0000';
    password2.style.border        = '1px solid #ff0000';
    password2_error.style.display = 'block';
    password2_error.innerHTML     = translation['repeatpassword'][language];
    return false;
  }

  if(password1.value.length < 6) {

    password1_label.style.color   = '#ff0000';
    password1.style.border        = '1px solid #ff0000';
    password1_error.innerHTML     = translation['passwordlength'][language];
    password1_error.style.display = 'block';
    return false;
  }

  if(password1.value != password2.value) {

    password1_label.style.color   = '#ff0000';
    password1.style.border        = '1px solid #ff0000';
    password1_error.innerHTML     = translation['passwordmatch'][language];
    password1_error.style.display = 'block';

    password2_label.style.color   = '#ff0000';
    password2.style.border        = '1px solid #ff0000';
    return false;
  }

  return true;
}

/**
 * Uploadfelder hinzufügen
 *
 * @author maichele, sweber
 */
var fieldcount = 2;
function addFileInputField(credential, language) {

  var translation = new Object();
  translation['labelcaption']          = new Object();
  translation['labelcaption']['de_DE'] = 'Bild';
  translation['labelcaption']['en']    = 'picture';

  translation['allopt']          = new Object();
  translation['allopt']['de_DE'] = 'für alle sichtbar';
  translation['allopt']['en']    = 'visible to all';

  translation['registeredopt']          = new Object();
  translation['registeredopt']['de_DE'] = 'nur für registrierte Benutzer';
  translation['registeredopt']['en']    = 'only visible to all registered users';

  translation['friendsopt']          = new Object();
  translation['friendsopt']['de_DE'] = 'nur für meine Freunde';
  translation['friendsopt']['en']    = 'only visible to my friends';

  translation['privateopt']          = new Object();
  translation['privateopt']['de_DE'] = 'nur für mich sichtbar';
  translation['privateopt']['en']    = 'only visible to myself';

  if (fieldcount < 11) {

    var fileinput        = document.createElement("input");
    var credentialselect = document.createElement("select");
    var allopt           = document.createElement("option");
    var registeredopt    = document.createElement("option");
    var friendsopt       = document.createElement("option");
    var privateopt       = document.createElement("option");
    var br               = document.createElement("br");
    var p                = document.createElement("p");
    var label            = document.createElement("label");

    p.setAttribute('id', 'p' + fieldcount);

    label.setAttribute('class', 'collabel');
    label.style.width = '80px';
    label.innerHTML   = translation['labelcaption'][language]+' ' + fieldcount + ':';

    fileinput.setAttribute('id',    'file' + fieldcount);
    fileinput.setAttribute('name',  'file' + fieldcount);
    fileinput.setAttribute('type',  'file');
    fileinput.setAttribute('class', 'input colinput');

    credentialselect.setAttribute('id',    'credential' + fieldcount);
    credentialselect.setAttribute('name',  'credential' + fieldcount);
    credentialselect.setAttribute('class', 'input colinput');

    allopt.setAttribute('value',        'all');
    registeredopt.setAttribute('value', 'registered');
    friendsopt.setAttribute('value',    'friends');
    privateopt.setAttribute('value',    'private');

    if (credential == 'all') {

      allopt.setAttribute('selected', 'selected');
    } else if (credential == 'registered') {

      registeredopt.setAttribute('selected', 'selected');
    } else if (credential == 'friends') {

      friendsopt.setAttribute('selected', 'selected');
    } else if (credential == 'private') {

      privateopt.setAttribute('selected', 'selected');
    }

    allopt.text        = translation['allopt'][language];
    registeredopt.text = translation['registeredopt'][language];
    friendsopt.text    = translation['friendsopt'][language];
    privateopt.text    = translation['privateopt'][language];

    document.getElementById('uploadfields').appendChild(p);
    document.getElementById('p' + fieldcount).appendChild(label);
    document.getElementById('p' + fieldcount).appendChild(credentialselect);
    document.getElementById('credential' + fieldcount).appendChild(allopt);
    document.getElementById('credential' + fieldcount).appendChild(registeredopt);
    document.getElementById('credential' + fieldcount).appendChild(friendsopt);
    document.getElementById('credential' + fieldcount).appendChild(privateopt);
    document.getElementById('p' + fieldcount).appendChild(fileinput);
    document.getElementById('p' + fieldcount).appendChild(br);

    if (fieldcount == 10) {

      document.getElementById('addField').style.display = 'none';
    }

    fieldcount++;
  }

}

/**
 * Email-Felder bei Bild-Empfehlung validieren
 *
 * @author fpreusner <fpreusner@soft-science.de>
 */
function doValidateOnRecommend(reg) {

  missing = false;

    if(document.getElementById('emailfriend1') != null) {
      document.getElementById('emailfriend1').style.border = '1px solid #6DC41E';
      if (checkEmailSyntax(document.getElementById('emailfriend1').value) == false && document.getElementById('emailfriend1').value != '') {

        document.getElementById('emailfriend1').style.border = '1px solid #ff0000';
        missing = true;
      }
     }

    if(document.getElementById('emailfriend2') != null) {
      document.getElementById('emailfriend2').style.border = '1px solid #6DC41E';
      if (checkEmailSyntax(document.getElementById('emailfriend2').value) == false && document.getElementById('emailfriend2').value != '') {

        document.getElementById('emailfriend2').style.border = '1px solid #ff0000';
        missing = true;
      }
    }

    if(document.getElementById('emailfriend3') != null) {
      document.getElementById('emailfriend3').style.border = '1px solid #6DC41E';

      if (checkEmailSyntax(document.getElementById('emailfriend3').value) == false && document.getElementById('emailfriend3').value != '') {

        document.getElementById('emailfriend3').style.border = '1px solid #ff0000';
        missing = true;
      }
    }

    if(document.getElementById('emailfriend4') != null) {
      document.getElementById('emailfriend4').style.border = '1px solid #6DC41E';

      if (checkEmailSyntax(document.getElementById('emailfriend4').value) == false && document.getElementById('emailfriend4').value != '') {

        document.getElementById('emailfriend4').style.border = '1px solid #ff0000';
        missing = true;
      }
    }

    if(document.getElementById('emailfriend5') != null) {
      document.getElementById('emailfriend5').style.border = '1px solid #6DC41E';

      if (checkEmailSyntax(document.getElementById('emailfriend5').value) == false && document.getElementById('emailfriend5').value != '') {

        document.getElementById('emailfriend5').style.border = '1px solid #ff0000';
        missing = true;
      }
    }

    if (missing) {

      return false;
    }

    window.setTimeout("$('recommendForm').submit()", 1);
}



/**
 * Email-Felder (Bildempfehlung) hinzufügen
 *
 * @author maichele, sweber
 */
var fieldemailcount = 2;
function addEmailInputField(language) {

  var translation = new Object();
  translation['labelcaption']          = new Object();
  translation['labelcaption']['de_DE'] = 'Email';
  translation['labelcaption']['en']    = 'E-mail';

  if (fieldemailcount < 6) {

    var email		         = document.createElement("input");
    var br               = document.createElement("br");
    var label            = document.createElement("label");

    label.setAttribute('class', 'collabel', 'indent');
    label.innerHTML   = translation['labelcaption'][language]+' ' + fieldemailcount;

    email.setAttribute('id',    'emailfriend' + fieldemailcount);
    email.setAttribute('name',  'emailfriend' + fieldemailcount);
    email.setAttribute('class', 'input colinput');

    document.getElementById('addEmailInputs').appendChild(label);
    document.getElementById('addEmailInputs').appendChild(email);
    document.getElementById('addEmailInputs').appendChild(br);

    if (fieldemailcount == 5) {

      document.getElementById('addField').style.display = 'none';
    }

    fieldemailcount++;
  }

}

/**
 * Name-/Email-Felder (Freunde Einladen) hinzufügen
 *
 * @author fpreusner <fpreusner@soft-science.de>
 */
var fieldinvitecount = 2;
function addInviteInputFields(language) {

  var translation = new Object();
  translation['labelcaption']          = new Object();
  translation['labelcaption']['mail']  = new Object();
  translation['labelcaption']['mail']['de_DE'] = 'Email';
  translation['labelcaption']['mail']['en']    = 'E-mail';
  translation['labelcaption']['name']  = new Object();
  translation['labelcaption']['name']['de_DE'] = 'Name ' + fieldinvitecount + ' (optional)';
  translation['labelcaption']['name']['en']    = 'Name (optional)';

  if (fieldinvitecount < 6) {

    var name						 = document.createElement("input");
    var email		         = document.createElement("input");
    var br               = document.createElement("br");
    var br2              = document.createElement("br");
    var br3              = document.createElement("br");
    var labelname        = document.createElement("label");
    var labelemail       = document.createElement("label");
    var error					   = document.createElement("span");

    labelemail.setAttribute('class', 'collabel', 'indent');
    labelemail.innerHTML   = translation['labelcaption']['mail'][language]+' ' + fieldinvitecount;

    labelname.setAttribute('class', 'collabel', 'indent');
    labelname.innerHTML   = translation['labelcaption']['name'][language];

    name.setAttribute('id',    'invite_name' + fieldinvitecount);
    name.setAttribute('name',  'invite_name' + fieldinvitecount);
    name.setAttribute('class', 'input colinput');

    email.setAttribute('id',    'invite_email' + fieldinvitecount);
    email.setAttribute('name',  'invite_email' + fieldinvitecount);
    email.setAttribute('class', 'input colinput');

    error.setAttribute('id',    'einvite_email' + fieldinvitecount);
    error.setAttribute('class', 'infocol invalid');

    document.getElementById('addInviteInputs').appendChild(br);
    document.getElementById('addInviteInputs').appendChild(br2);

    document.getElementById('addInviteInputs').appendChild(labelname);
    document.getElementById('addInviteInputs').appendChild(name);
    document.getElementById('addInviteInputs').appendChild(br3);

    document.getElementById('addInviteInputs').appendChild(labelemail);
    document.getElementById('addInviteInputs').appendChild(email);
    document.getElementById('addInviteInputs').appendChild(error);


    if (fieldinvitecount == 5) {

      document.getElementById('addField').style.display = 'none';
    }

    fieldinvitecount++;
  }

}

/**
 * Email-Felder bei Bild-Empfehlung validieren
 *
 * @author fpreusner <fpreusner@soft-science.de>
 */
function doValidateOnInvite(reg) {

  language = $('global_culture').value;

  var translation = new Object();
  translation['validemail']          = new Object();
  translation['validemail']['de_DE'] = 'Bitte gültige Emailadresse eingeben';
  translation['validemail']['en']    = 'Please enter a valid e-mail address';


  missing = false;

    if(document.getElementById('invite_email1') != null) {
      document.getElementById('invite_email1').style.border = '1px solid #6DC41E';
      document.getElementById('einvite_email1').style.display = 'none';
      if (checkEmailSyntax(document.getElementById('invite_email1').value) == false && document.getElementById('invite_email1').value != '') {

        document.getElementById('einvite_email1').innerHTML = translation['validemail'][language];
        document.getElementById('invite_email1').style.border = '1px solid #ff0000';
        document.getElementById('einvite_email1').style.display = 'block';
        missing = true;
      }
    }

    if(document.getElementById('invite_email2') != null) {
      document.getElementById('invite_email2').style.border = '1px solid #6DC41E';
      document.getElementById('einvite_email2').style.display = 'none';
      if (checkEmailSyntax(document.getElementById('invite_email2').value) == false && document.getElementById('invite_email2').value != '') {

        document.getElementById('einvite_email2').innerHTML = translation['validemail'][language];
        document.getElementById('invite_email2').style.border = '1px solid #ff0000';
        document.getElementById('einvite_email2').style.display = 'block';
        missing = true;
      }
    }

    if(document.getElementById('invite_email3') != null) {
      document.getElementById('invite_email3').style.border = '1px solid #6DC41E';
      document.getElementById('einvite_email3').style.display = 'none';
      if (checkEmailSyntax(document.getElementById('invite_email3').value) == false && document.getElementById('invite_email3').value != '') {

        document.getElementById('einvite_email3').innerHTML = translation['validemail'][language];
        document.getElementById('invite_email3').style.border = '1px solid #ff0000';
        document.getElementById('einvite_email3').style.display = 'block';
        missing = true;
      }
    }

    if(document.getElementById('invite_email4') != null) {
      document.getElementById('invite_email4').style.border = '1px solid #6DC41E';
      document.getElementById('einvite_email4').style.display = 'none';
      if (checkEmailSyntax(document.getElementById('invite_email4').value) == false && document.getElementById('invite_email4').value != '') {

        document.getElementById('einvite_email4').innerHTML = translation['validemail'][language];
        document.getElementById('invite_email4').style.border = '1px solid #ff0000';
        document.getElementById('einvite_email4').style.display = 'block';
        missing = true;
      }
    }

    if(document.getElementById('invite_email5') != null) {
      document.getElementById('invite_email5').style.border = '1px solid #6DC41E';
      document.getElementById('einvite_email5').style.display = 'none';
      if (checkEmailSyntax(document.getElementById('invite_email5').value) == false && document.getElementById('invite_email5').value != '') {

        document.getElementById('einvite_email5').innerHTML = translation['validemail'][language];
        document.getElementById('invite_email5').style.border = '1px solid #ff0000';
        document.getElementById('einvite_email5').style.display = 'block';
        missing = true;
      }
    }

    if (missing) {

      return false;
    }

    window.setTimeout("$('recommendForm').submit()", 1);
}



/**
 * Ajax, fügt User einer Box hinzu
 */
function addUserToBox() {
  if ($('recommendUserBox').value != "") {

    new Ajax.Updater('userlist', '/profile/addusertobox', {asynchronous:true, evalScripts:true, parameters:Form.serialize('recommendForm')});
  }
}

/**
 * Ajax, löscht den ausgewählten user aus der Box
 */
function delUserFromBox(usernameAjaxBox) {
    new Ajax.Updater('userlist', '/profile/delUserFromBox/'+usernameAjaxBox, {asynchronous:true, evalScripts:true, parameters:Form.serialize('recommendForm')});
}

/**
 * zeigt den jeweiligen Banner für den Generator
 *
 * @author fpreusner <fpreusner@soft-science.de>
 */
function showBanner(banner, breite, hoehe) {

  Modalbox.show('/system/showBanner/' + banner, {title: 'Preview', width: breite, height: hoehe});
}

/**
 * Funktion zum anpassen des Selectfeldes im Banner-Generator
 *
 * @author fpreusner <fpreusner@soft-science.de>
 */
function changeSelectForPictures(format, language) {

  var select	  = document.createElement('select');
                  select.setAttribute('name', 'anzahl_bilder');
  var oldselect = document.getElementById('anzahl_bilder_select');

  if(language == 'de') {

    var picture  = ' Bild';
    var pictures = ' Bilder';
  } else {

    var picture  = ' picture';
    var pictures = ' pictures';
  }

  if(format == 'fullsize') {

    var limit = 13;

    for(i = 4; i <= limit; i++) {

      var option 		= document.createElement('option');

      option.setAttribute('value', i);

      if(i == limit) {

        option.selected = true;
      }


      if(i == 1) {

        option.innerHTML = i + picture;
       } else {

         option.innerHTML = i + pictures;
       }
      select.appendChild(option);
    }
  }

  if(format == 'leaderboard') {

    var limit = 25;

    for(i = 4; i <= limit; i++) {

      var option 		= document.createElement('option');

      option.setAttribute('value', i);

      if(i == limit) {

        option.selected = true;
      }


      if(i == 1) {

        option.innerHTML = i + picture;
       } else {

         option.innerHTML = i + pictures;
       }
      select.appendChild(option);
    }
  }


  if(format == 'skyscraper') {

    var limit = 18;

    for(i = 4; i <= limit; i++) {

      var option 		= document.createElement('option');

      option.setAttribute('value', i);

      if(i == limit) {

        option.selected = true;
      }


      if(i == 1) {

        option.innerHTML = i + picture;
       } else {

         option.innerHTML = i + pictures;
       }
      select.appendChild(option);
    }
  }

  if(format == 'content') {

    var limit = 15;

    for(i = 4; i <= limit; i++) {

      var option 		= document.createElement('option');

      option.setAttribute('value', i);

      if(i == limit) {

        option.selected = true;
      }


      if(i == 1) {

        option.innerHTML = i + picture;
       } else {

         option.innerHTML = i + pictures;
       }
      select.appendChild(option);
    }
  }

  oldselect.innerHTML = '';
  oldselect.appendChild(select);
}

/**
 * zeigt Bildoptionen (Verlinkt unter der Detailansicht)
 *
 * @author fpreusner
 */
function pictureOptions(picture_id) {

  new Ajax.Updater( 'hidden_puffer',
                    '/picture/showOptions/' + picture_id,
                     { asynchronous: true, evalScripts: true }
                  );
}

/**
 * Ruft die Bestätigungsseite zum Lsöchen auf
 *
 * @author fpreusner
 */
function pictureConfirmDelete(picture_id) {

  new Ajax.Updater( 'hidden_puffer',
                    '/picture/confirmDelete/' + picture_id,
                     { asynchronous: true, evalScripts: true }
                  );
}

/**
 * Delete wird vorgenommen, Template zur erfolgreichen Löschung
 *
 * @author fpreusner
 */
function pictureMakeDelete(picture_id) {

  new Ajax.Updater( 'hidden_puffer',
                    '/picture/makeDelete/' + picture_id,
                     { asynchronous: true, evalScripts: true }
                  );
}

/**
 * Zeigt das Template nachdem das Kontaktformular abgeshcickt wurde
 *
 * @author fpreusner
 */
function sendContactFormular() {

  new Ajax.Updater( 'hidden_puffer',
                    '/contact/sent',
                     { asynchronous: true, evalScripts: true, parameters:Form.serialize('contactformular')}
                  );
}

/**
 * Zeigt die Hilfe für das Kontaktformular
 *
 * @author fpreusner
 */
function contactHelpSubject() {

  new Ajax.Updater( 'hidden_puffer',
                    '/contact/help/subject',
                     { asynchronous: true, evalScripts: true }
                  );
}

/**
 * Führt Validierung aus und bei einem true wird das Kontaktformular versendet
 *
 * @author fpreusner
 */
function validateFormAndSend() {


  if(doValidateForm(false, true)) {

    sendContactFormular();

  } else {

    return false;
  }
}

/**
 * zeigt Bildoptionen (Verlinkt unter der Detailansicht)
 *
 * @author fpreusner
 */
function deleteFriendship(friend_pk) {

  new Ajax.Updater( 'hidden_puffer',
                    '/friendship/delete/' + friend_pk,
                     { asynchronous: true, evalScripts: true }
                  );
}

/**
 * Ausführen des Löschens der Freundschaft
 *
 * @author fpreusner
 */
function friendshipMakeDelete(friend_pk) {

  new Ajax.Updater( 'hidden_puffer',
                    '/friendship/makeDelete/' + friend_pk,
                     { asynchronous: true, evalScripts: true }
                  );
}

/**
 * Return des User-Browsers
 *
 * @author fpreusner <fpreusner@soft-science.de>
 */
function retrieveUserAgent() {

   var useragent = navigator.userAgent;
   var bName     = (useragent.indexOf('Opera') > -1) ? 'Opera' : navigator.appName;
   var pos       = useragent.indexOf('MSIE');

   if (pos > -1) {

     bVer     = useragent.substring(pos + 5);
     var pos  = bVer.indexOf(';');
     var bVer = bVer.substring(0,pos);
   }

   var pos = useragent.indexOf('Opera');

   if (pos > -1) {

     bVer     = useragent.substring(pos + 6);
     var pos  = bVer.indexOf(' ');
     var bVer = bVer.substring(0, pos);
   }

   if (bName == "Netscape") {

     var bVer = useragent.substring(8);
     var pos  = bVer.indexOf(' ');
     var bVer = bVer.substring(0, pos);
   }

   if(bName == "Netscape" && parseInt(navigator.appVersion) >= 5) {

     var pos  = useragent.lastIndexOf('/');
     var bVer = useragent.substring(pos + 1);
   }

   if ((bName == "Netscape")) {

     return "NETSCAPE";
   }

   if ((bName == "Microsoft Internet Explorer")) {

     return "IE";
   }
}

/**
 * Blendet Infos zum Removen der Facebook-Applikation ein, falls der User
 * diese deaktivieren möchte
 *
 * @author fpreusner <fpreusner@soft-science.de>
 */
function notifyFacebookRemoving(facebook_id, language) {

  checkbox = document.getElementById('facebook_checkbox');

  if(!checkbox.checked && facebook_id) {

    var translation = new Object();
       translation['title']            = new Object();
       translation['title']['german']  = 'Facebook-Applikation entfernen';
       translation['title']['english'] = 'Remove facebook application';

       translation['text']          	= new Object();
       translation['text']['german']  = 'Um die Applikation korrekt zu entfernen müssen Sie diese unter den "Anwendungs-Einstellungen" auf facebook.de löschen. Nach erfolgreichem Abschließen ist die Applikation deaktiviert.';
       translation['text']['english'] = 'To remove the application correctly you have to delete it in your application settings on facebook.com. After success the facebook application is deactivated.';

       translation['link']          	= new Object();
       translation['link']['german']  = '<a href="http://www.facebook.de" target="_blank">&raquo; Direkt zur Facebook-Seite</a>';
       translation['link']['english'] = '<a href="http://www.facebook.com" target="_blank">&raquo; facebook.com</a>';

       htmltext  = '<div>' +
                   '  <h3>' + translation['title'][language] + '</h3>' +
                   '  <p>' +
                   translation['text'][language] +
                   '		<br /><br />' +
                   translation['link'][language] +
                   '  </p>' +
                   '</div>';

       Modalbox.show(htmltext, {title: translation['title'][language], width: 350, height: 180});
  }
}