var nf_available   = true;
var language       = 'de';
var topLevelDomain = language;
var msg_username   = 'Benutzername:';
var msg_password   = 'Kennwort:';
var msg_lost_pwd   = 'Kennwort vergessen?';
var msg_cookie     = 'Um sich bei net-files anmelden zu k&ouml;nnen, m&uuml;ssen Sie in Ihrem Browser Cookies aktivieren';
var msg_axsId      = 'AXSionics ID';
var msg_axsBrand   = 'AXSionics Karte f&uuml;r net-files freischalten';

var successTitle = "Vielen Dank!";
var rTest1  = "";
var rTest2  = "";
var googleConversion  = "";
rTest1 += '<h2 class="red">Vielen Dank!</h2>';
rTest1 += '<p>Wir haben einen net-files Testaccount f&uuml;r Sie angelegt. Ihren Benutzernamen und Ihr Kennwort (das Sie sp&auml;ter &auml;ndern k&ouml;nnen), haben wir Ihnen gerade per ';
rTest1 += 'e-Mail zugesendet und sollte in K&uuml;rze bei Ihnen eintreffen. Mit Ihrem Benutzernamen und Ihrem Kennwort k&ouml;nnen ';
rTest1 += 'Sie sich sofort bei net-files einloggen und Ihren Test Account nutzen.</p>';
rTest1 += '<p>Ihr Account steht Ihnen ab sofort 14 Tage kostenlos und unverbindlich zur Verf&uuml;gung. In dieser Zeit haben Sie Gelegenheit, ';
rTest1 += 'net-files kennenzulernen und f&uuml;r sich zu entdecken. Dabei entstehen f&uuml;r Sie keinerlei Verpflichtungen.</p>';
rTest2 += '<h2>&nbsp;</h2>';
rTest2 += '<p>Nat&uuml;rlich hoffen wir, dass Ihnen das Arbeiten mit net-files gef&auml;llt und Sie Ihren ';
rTest2 += 'Account auch in Zukunft nutzen wollen. Vor Ablauf der kostenlosen Testphase werden ';
rTest2 += 'wir Ihnen dazu die entsprechenden Informationen rechtzeitig zukommen lassen.</p>';
rTest2 += '<p>Zun&auml;chst w&uuml;nschen wir Ihnen jedoch viel Erfolg beim Arbeiten mit net-files.</p>';
googleConversion += '<!-- Google Code for Signup Conversion Page -->';
googleConversion += '<script language="JavaScript" type="text/javascript">';
googleConversion += '<!--';
googleConversion += 'alert("jetzt kommt das Google Script")';
googleConversion += 'var google_conversion_id = 1070903060;';
googleConversion += 'var google_conversion_language = "de";';
googleConversion += 'var google_conversion_format = "3";';
googleConversion += 'var google_conversion_color = "ffffff";';
googleConversion += 'var google_conversion_label = "signup";';
googleConversion += '//-->';
googleConversion += '</script>';
googleConversion += '<script language="JavaScript" src="http://www.googleadservices.com/pagead/conversion.js">';
googleConversion += '</script>';
googleConversion += '<noscript>';
googleConversion += '<img height="1" width="1" border="0" src="http://www.googleadservices.com/pagead/conversion/1070903060/?label=signup&amp;guid=ON&amp;script=0"/>';
googleConversion += '</noscript>';

var rOffer = "";
rOffer += 'Vielen Dank f&uuml;r Ihr Interesse an einer L&ouml;sung von net-files. ';
rOffer += 'Wir werden Ihnen das gew&uuml;nschte Angebote in K&uuml;rze an Ihre angegebene e-Mail Adresse zusenden.';

var textIncomplete = "Bitte erg&auml;nzen/korrigieren Sie noch die hellblau hinterlegten, fehlenden Eingabefelder. ";

var pwQuestSuccess     = "Ihr Kennwort wurde neu gesetzt und Ihnen an die hinterlegte e-Mail Adresse geschickt";
var pwQuestEnterUser   = "Bitte geben Sie Ihren Benutzernamen ein.";
var pwQuestUnkownUser  = "Der von Ihnen angegebene Benutzername existiert nicht. Bitte korrigieren Sie Ihre Eingabe";
var pwQuestWrongAnswer = "Ihre Antwort ist nicht korrekt. Bitte korrigieren Sie Ihre Eingabe";
var pwQuestEnterAnswer = "Bitte beantworten Sie Ihre oben angezeigte, selbst gestellte Kennwortfrage";
var pwQuestBackToLogin = "Zur&uuml;ck zum Login";

var loginHint          = "Bitte melden Sie sich mit <br>Hilfe der nebenstehenden <br>Eingabefelder an.";
var axsLoginHint       = '<a href="http://w01.net-files.de/;internal&action=frameset.action&parameter=dialog.axsIdentify.action">Login mit AXSionics Internetpassport</a>';
var contactMessage     = "Vielen Dank f&uuml;r Ihre Anfrage. Wir werden diese umgehend bearbeiten und uns wieder bei Ihnen melden.";
var acceptMessage      = "Bitte akzeptieren Sie die Nutzungsbedingungen."

/*
if (document.pricecalculator.salutation.value.indexOf("Herr") != -1)
  var anrede = "Sehr geehrter ";
else if (document.pricecalculator.salutation.value.indexOf("Frau") != -1)
  var anrede = "Sehr geehrte ";
else
  var anrede = 'Sehr geehrte/r Frau/Herr';
anrede += ' ' + document.pricecalculator.salutation.value + ' ' + document.pricecalculator.lastname.value + ',';
*/


function loadConversionFrame()
{
  var conversion_frame = document.createElement("IFRAME");
  conversion_frame.setAttribute("src","conversion.html");
  conversion_frame.style.width = "10px";
  conversion_frame.style.height = "10px";
  document.body.appendChild(conversion_frame);
}


function cleanToEmail(dirty,removeDots)
{
  dirty = dirty.replace(/[^a-zA-Z_0-9\.\-\@]/g,"_");
  if (removeDots)
    dirty = dirty.replace(/\./g,"");
  return dirty;
}


function formatNumber(n,comma)
{
  var gsThousandDelimiter = ".";
  var gsCommaDelimiter    = ",";

  if (typeof(n) != "number") n = Number(n);
  if (typeof(n) != "number") return n;

  if (typeof(comma) != "number") comma = 0;
  var multiplier = Math.pow(10,comma);
  var nNumber = Math.round(n*multiplier)/multiplier;
  
  var sNumber = nNumber.toString();
  var ret = "";
  var commaPos = sNumber.indexOf(".")
  if (commaPos < 0) commaPos = sNumber.length;
  var h = commaPos%3;

//  alert("n: " + n + "; nNumber: " + nNumber + "; sNumber: " + sNumber + "; h: " + h + "; typeof(sNumber): " + typeof(sNumber) + "; sNumber.length: " + sNumber.length);

  if (nNumber < 1)
  {
    ret += "0";
  }
  else
  {
    for (var i=0;i<commaPos;i++)
    {
//      alert ("sNumber["+i+"]: " + sNumber[i] + "; sNumber.charAt("+i+"): " + sNumber.charAt(i));
      ret += sNumber.charAt(i);
      h--;
      if (h == 0 && i != commaPos-1)
      {
        ret += gsThousandDelimiter;
        h = 3;
      }
    }
  }
  
  if (comma && comma > 0)
  {
    ret += gsCommaDelimiter;
    for (var j=0;j<comma;j++)
    {
      ret += sNumber[commaPos+1+j] || "0";
    }
  }
  return ret;
}


function calculatePrice()
{
  var users   = parseInt(document.pricecalculator.users.value);
  var storage = parseInt(document.pricecalculator.storage.value);
  var month   = parseInt(document.pricecalculator.month.value);
  if (typeof(users)   != "number" || isNaN(users))   users   = 0;
  if (typeof(storage) != "number" || isNaN(storage)) storage = 0;
  if (typeof(month)   != "number" || isNaN(month))   month   = 0;

  if (users > 250)			var pricePerUser = 5;
  else if (users >= 100)	var pricePerUser = 5.17;
  else if (users >= 50)		var pricePerUser = 5.33;
  else if (users >= 25)		var pricePerUser = 5.5;
  else if (users >= 10)		var pricePerUser = 6;
  else if (users >= 5)		var pricePerUser = 7;
  else 						var pricePerUser = 8;

  var aStorageSteps = [0.5, 0.5, 1.5, 2.5,   5,   15,  25,  50];
  var aStoragePrice = [ 45,  33,  30,  25,  20, 17.5,  15,  10,  10];			// Preise 2008
//  var aStoragePrice = [  24,  24,  15,  10,   9,   8,   7,   6,   5];			// Preise 2009
  var storagePrice = 0;
  storage = storage / 1000;
  

  for (var i=0;i<aStorageSteps.length;i++)
  {
//    alert("aStorageSteps["+i+"]: " + aStorageSteps[i] + "; aStoragePrice["+i+"]: " + aStoragePrice[i] + "; storagePrice: " + storagePrice);
    if (storage <= aStorageSteps[i])
    {
      storagePrice += storage * aStoragePrice[i];
      storage = 0;
      break;
    }
    else
    {
      storagePrice += aStorageSteps[i] * aStoragePrice[i];
      storage -= aStorageSteps[i];
    }
  }
  if (storage > 0)
  {
    storagePrice += storage * aStoragePrice[aStoragePrice.length-1];
  }

  switch (month)
  {
    case 24:	var reduction = 1.5;
    			break;
    case 12:	var reduction = 0.5;
    			break;
    case 6:		var reduction = 0;
    			break;
    case 3:		var reduction = -1;
    			break;
    case 1:		var reduction = -2;
    			break;
  }

//  var nPrice = Math.round(( (users * pricePerUser) + (storage * pricePer100MB/100) ) * (1 - reduction/10));
  var nPrice = Math.round(( (users * pricePerUser) + storagePrice) * (1 - reduction/10));
  var sPrice = formatNumber(nPrice,2);
//  alert("users: " + users + "; storage: " + storage + "; month: " + month + "; nPrice: " + nPrice);
  
  document.getElementById("price").innerHTML = "&#x20AC; " + sPrice + " pro Monat";
  document.pricecalculator.price.value = sPrice;
}


function showLostPwFields()
{
  document.getElementById("loginform").style.visibility            = "hidden";
  document.getElementById("loginform").style.display               = "none";
  document.getElementById("lostPasswordUsername").style.visibility = "visible";
  document.getElementById("lostPasswordUsername").style.display    = "";
  document.getElementById('resendButton').style.visibility         = 'visible'; 
  document.getElementById('resendButton').style.display            = '';
  document.getElementById('message').style.visibility              = 'visible'; 
  document.getElementById('message').style.display                 = '';
  document.getElementById('message').innerHTML                     = pwQuestEnterUser; 
}


function backToLogin()
{
  document.getElementById("loginform").style.visibility            = "visible";
  document.getElementById("loginform").style.display               = "";
  document.getElementById("lostPasswordUsername").style.visibility = "hidden";
  document.getElementById("lostPasswordUsername").style.display    = "none";
  document.getElementById("lostPasswordQuestion").style.visibility = "hidden";
  document.getElementById("lostPasswordQuestion").style.display    = "none";
  document.getElementById('resendButton').style.visibility         = 'hidden'; 
  document.getElementById('resendButton').style.display            = 'none';
  document.getElementById('message').style.visibility              = 'hidden'; 
  document.getElementById('message').style.display                 = 'none';
  document.getElementById('message').innerHTML                     = ''; 
}


function submitResend()
{
  logDebug(4,"submitResend document.lostpwform.username.value",document.lostpwform.username.value);
  if (!document.lostpwform.username.value || document.lostpwform.username.value == "")
  {
    document.lostpwform.username.className = "mandatory";
    document.getElementById("message").style.color = "#990000;";
  }
  else
  {
    document.lostpwform.username.className = "";
    document.getElementById("message").style.color = "";
    document.getElementById('resendButton').style.visibility = 'hidden'; 
    document.getElementById('resendButton').style.display    = 'none';
    submitAjaxForm("lostpwform","actions/lostPassword.php");
  }
}


function submitLogin()
{
  document.loginform.submit();
}


function loginFields(longFields,nf_server,iphone,axsid) 
{
  var sLoginFields = ""; 
  if (!nf_server) nf_server = 'https://www.net-files.net/';

  document.cookie = 'cookie_uto=testcookie';
  if (!document.cookie && !iphone)
  {
    sLoginFields += msg_cookie;
  }
  else
  {
    if (nf_available)
    {
      if (axsid)
        var loginaction  = nf_server + ";internal&action=frameset.action&parameter=axsIdentify.action";
      else
        var loginaction  = nf_server + ";internal&action=netfilesIdentify.action";
      var loginmethod  = "post";
    }
    else
    {
      var loginaction  = "http://www.net-files." + topLevelDomain + "/unavailable.html";
      var loginmethod  = "get";
    }

    // write login form
    sLoginFields += '<form method="' + loginmethod + '" name="loginform" id="loginform" action="' + loginaction + '">';
    sLoginFields += '  <fieldset id="loginfields">';
//    sLoginFields += '    <input type="hidden" name="language" value="' + language + '">';
    if (iphone)
    {
      sLoginFields += '    <div class="loginBox">' + msg_username + '</div>';
      sLoginFields += '    <input name="name" type="text" size="20" maxlength="256" style="width: 200px; font-size:120%;">';
      sLoginFields += '    <div class="loginBox">' + msg_password + '</div>';
      sLoginFields += '    <input name="passwd" type="password" size="20" maxlength="30" style="width: 200px; font-size:120%;">';
      sLoginFields += '    <div class="loginBox"></div>';
    }
    else if (axsid)
    {
      sLoginFields += '    <div class="loginBox" style="text-align=middle;padding-bottom:6px;" align="middle">&nbsp;&nbsp;&nbsp;&nbsp;' + msg_axsId + '</div>';
      sLoginFields += '    <input type="text" id="sn_part1" name="sn_part1" size="4" value="" maxlength="4" align="middle" onkeyup="valid(this); changefocus(this,\'sn_part2\'); checkauto()">';
      sLoginFields += '    <input type="text" id="sn_part2" name="sn_part2" size="4" value="" maxlength="4" align="middle" onkeyup="valid(this); changefocus(this,\'sn_part3\'); checkauto()">';
      sLoginFields += '    <input type="text" id="sn_part3" name="sn_part3" size="4" value="" maxlength="4" align="middle" onkeyup="valid(this); checkauto()">';
    }
    else if (longFields)
    {
      sLoginFields += '    <label for="name">' + msg_username + '</label>';
      sLoginFields += '    <input name="name" type="text" style="width:190px" maxlength="256" value="" />';
      sLoginFields += '    <br />';
      sLoginFields += '    <label for="passwd">' + msg_password + '</label>';
      sLoginFields += '    <input name="passwd" type="password" style="width:190px" maxlength="30" value="" />';
      sLoginFields += '    <br />';
      sLoginFields += '    <label for="loginButton">&nbsp;</label>';
    }
    else
    {
      sLoginFields += '    <div class="loginBox">' + msg_username + '</div>';
      sLoginFields += '    <input name="name" type="text" size="20" maxlength="256" style="width: 140px;">';
      sLoginFields += '    <div class="loginBox">' + msg_password + '</div>';
      sLoginFields += '    <input name="passwd" type="password" size="20" maxlength="30" style="width: 140px;">';
    }
    sLoginFields += '    <input id="loginButton" type="submit" name="loginButton" value="Login">';
    sLoginFields += '  </fieldset>';
    sLoginFields += '</form>';

    // write form for lost password
    if (longFields)
    {
      sLoginFields += '<form method="post" name="lostpwform" id="lostpwform" action="">';
      sLoginFields += '  <fieldset id="lostpwfields">';
      sLoginFields += '    <label for="lostPassword">&nbsp;</label>';
      sLoginFields += '    <a href="#" onClick="showLostPwFields()">' + msg_lost_pwd + '</a>';
      sLoginFields += '    <div id="lostPasswordUsername" style="visibility: hidden; display: none;">';
      sLoginFields += '      <label for="username">' + msg_username + '</label>';
      if (iphone) sLoginFields += '      <br />';
      sLoginFields += '      <input name="username" type="text" style="width:190px" maxlength="256" value="" />';
      sLoginFields += '      <br />';
      sLoginFields += '    </div>';
      sLoginFields += '    <div id="lostPasswordQuestion" style="visibility: hidden; display: none;">';
      sLoginFields += '      <label id="question" for="answer">&nbsp;</label>';
      if (iphone) sLoginFields += '      <br />';
      sLoginFields += '      <input id="answer" name="answer" type="text" style="width:190px" maxlength="30" value="" />';
      sLoginFields += '      <br />';
      sLoginFields += '    </div>';
      sLoginFields += '    <p id="message" style="visibility: hidden; display: none;"></p>';
      sLoginFields += '    <div id="resendButton" style="visibility: hidden; display: none;">';
      sLoginFields += '      <label for="resendButton">&nbsp;</label>';
      sLoginFields += '      <input type="button" name="resendButton" value="Neues Kennwort zusenden" onClick="submitResend()"><br>';
      if (!iphone) sLoginFields += '      <br /><br />';
      sLoginFields += '      <label for="backToLogin">&nbsp;</label>';
      sLoginFields += '      <a href="#" onClick="backToLogin()">' + pwQuestBackToLogin + '</a>';
      sLoginFields += '    </div>';
      sLoginFields += '  </fieldset>';
      sLoginFields += '</form>';
    }
    else
    {
//      sLoginFields += '<a href="#" onClick=window.open("' + nf_server + ';internal&action=frameset.action&parameter=_setlanguage.action?LANGUAGE=' + language + '&FUNCTION=pwdUsernameDialog","dialog","status=yes,toolbar=no,scrollbars=0,resizable=0,width=860,height=560")>' + msg_lost_pwd + '</a></form>';
    }
  }
  return sLoginFields;
}


function axsLoginFields(nf_server) 
{
  var sLoginFields = ""; 
  if (!nf_server) nf_server = 'https://w01.net-files.de/';

  document.cookie = 'cookie_uto=testcookie';
  if (!document.cookie)
  {
    sLoginFields += msg_cookie;
  }
  else
  {
    if (nf_available)
    {
      var loginaction  = nf_server + ";internal&action=axsIdentify.action";
      var loginmethod  = "post";
    }
    else
    {
      var loginaction  = "http://www.net-files." + topLevelDomain + "/unavailable.html";
      var loginmethod  = "get";
    }

    // write login form
    sLoginFields += '<script type="text/javascript" language="javascript" src="scripts/axsFunctions.js"></script>';
    sLoginFields += '<form method="' + loginmethod + '" name="loginform" id="loginform" action="' + loginaction + '">';
    sLoginFields += '  <fieldset id="loginfields">';
    sLoginFields += '    <label for="name">' + msg_axsId + '</label>';
    sLoginFields += '    <input type="text" name="sn_part1" size="4" value="" maxlength="4" align="middle" onkeyup="return valid(this)&changefocus()&checkauto()" />';
    sLoginFields += '    <input type="text" name="sn_part2" size="4" value="" maxlength="4" align="middle" onkeyup="return valid(this)&changefocus2()&checkauto()">';
    sLoginFields += '    <input type="text" name="sn_part3" size="4" value="" maxlength="4" align="middle" onkeyup="return valid(this)&checkauto()">';
    sLoginFields += '    <br />';
    sLoginFields += '    <label for="loginButton">&nbsp;</label>';
    sLoginFields += '    <input id="loginButton" type="submit" name="loginButton" value="Login">';
    sLoginFields += '  </fieldset>';
    sLoginFields += '</form>';
    sLoginFields += '<br /><br />';
    sLoginFields += '<a href="' + nf_server + ';internal&action=dialog.axsBranding.action" target="dialog">' + msg_axsBrand + '</a></li>';

  }
  return sLoginFields;
}


function writeLoginFields()
{
  if (window.location.href.indexOf("login") > 0)
  {
    document.writeln(loginHint);
  }
  else if (window.location.href.indexOf("myflicker") > 0)
  {
    document.writeln(axsLoginHint);
//    document.writeln(loginFields(false,false,false,true));
  }
  else
  {
    document.writeln(loginFields());
  }
}


var contactTypes = ["call","pricecalculation","support","test","other"]

function showInputFields(select)
{
  for (var i in contactTypes)
  {
    if (select == contactTypes[i])
    {
      document.getElementById(contactTypes[i]).style.visibility = "visible";
      document.getElementById(contactTypes[i]).style.display    = "";
    }
    else
    {
      document.getElementById(contactTypes[i]).style.visibility = "hidden";
      document.getElementById(contactTypes[i]).style.display    = "none";
    }
  }
}


//------------------------------------------------------------------------------
//   show result of request
//------------------------------------------------------------------------------

function showResult()
{
  if (httpRequest.readyState == 4)
  {
    if (httpRequest.status == 200) 
    {
      logDebug(5,"showResult() httpRequest.responseText",httpRequest.responseText)
      if (httpRequest.responseText.indexOf("\&") != -1)
      {
        var response = getKeyValueField(httpRequest.responseText);
        if (response && response.action)
        {
          logDebug(3,"showResult() response.result",response.result + "; response.action: " + response.action)
          if (response.action == "passwordQuestion")
          {
            if (response.result == "OK" && response.question && response.question != "")
            {
              document.getElementById('resendButton').style.visibility = "visible";
              document.getElementById('resendButton').style.display    = "";
              document.getElementById("lostPasswordQuestion").style.visibility = "visible";
              document.getElementById("lostPasswordQuestion").style.display    = "";
              document.getElementById("question").innerHTML = response.question;
              document.getElementById("message").innerHTML = pwQuestEnterAnswer;
            }
            else if (response.result == "wrong_answer")
            {
              document.getElementById("message").innerHTML = pwQuestWrongAnswer;
              document.getElementById('resendButton').style.visibility = "visible";
              document.getElementById('resendButton').style.display    = "";
            }
            else if (response.result == "user_not_found")
            {
              document.getElementById("message").innerHTML = pwQuestUnkownUser;
              document.getElementById('resendButton').style.visibility = "visible";
              document.getElementById('resendButton').style.display    = "";
            }
            else
            {
              document.getElementById("loginform").style.visibility = "visible";
              document.getElementById("loginform").style.display    = "";
              document.getElementById("lostPasswordUsername").style.visibility = "hidden";
              document.getElementById("lostPasswordUsername").style.display    = "none";
              document.getElementById("lostPasswordQuestion").style.visibility = "hidden";
              document.getElementById("lostPasswordQuestion").style.display    = "none";
              document.getElementById("message").innerHTML = pwQuestSuccess;
            }
          }
          else if (response.action == "projectCreate")
          {
            if (response.result == "ERROR")
            {
              document.getElementById("formPart1").innerHTML = httpRequest.responseText;
              document.getElementById("formPart2").innerHTML = "";
            }
            else
            {
              loadConversionFrame();
            }
          }
        }
      }
    }
    else
    {
      alert('There was a problem with the request.' + httpRequest.status);
    }
  }
}


//------------------------------------------------------------------------------
//   form submission
//------------------------------------------------------------------------------

function submitAjaxForm(formname,action)
{
  logDebug(5,"submitAjaxForm() typeof(httpRequest)",typeof(httpRequest) + "\n formname: " + formname + "\n action: " + action);
  if (!httpRequest)
  {
    // normal submit
    document.forms[formname].action = action;
    document.forms[formname].method = "post";
    document.forms[formname].submit(); // there MUST NOT be an ID or input with name submit!!!
  }
  else
  {
    // use ajax technologie
    var form_content = getFormValues(document.forms[formname]);
    logDebug(4,"submitAjaxForm() form_content",form_content)
    httpRequest.open('POST', action, true);
    httpRequest.onreadystatechange = showResult;
    httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
    httpRequest.setRequestHeader("Content-length", form_content.length);
    httpRequest.setRequestHeader("Connection", "close");
    httpRequest.send(form_content);
  }
  return false;
}


function validEmailAddress(name,value)
{
  logDebug(1,"validEmailAddress() name",name + "; value: " + value);
  if (name.indexOf("email") == -1) return true;
  var at  = value.indexOf("@");
  var dot = value.lastIndexOf(".");
  logDebug(2,"validEmailAddress() at",at + "; dot: " + dot + "; length: " + value.length);
  if (value.length < 8 || value != cleanToEmail(value)) return false;
  if (at < 1 || dot < (at+2) || dot > (value.length-3) || value.indexOf(" ") != -1 || at > (value.length-6)) return false;
  return true;
}


function checkInputFields(form,contactType)
{
  var fieldsToCheck = [];
  logDebug(2,"checkInputFields() form.name",form.name);
  if (contactType == "call")
  {
    fieldsToCheck = ["firstname","lastname","phone"];
  }
  else if (contactType == "pricecalculation")
  {
    fieldsToCheck = ["firstname","lastname","company","street","zip","city","country","phone","email","storage"];
  }
  else if (contactType == "support")
  {
    fieldsToCheck = ["firstname","lastname","email","description"];
  }
  else if (contactType == "test")
  {
    fieldsToCheck = ["firstname","lastname","company","street","zip","city","country","phone","email","project_title","accept"];
  }
  else if (contactType == "other")
  {
    fieldsToCheck = ["firstname","lastname","email","other"];
  }
  
  var missingFields = [];
  for (var i in fieldsToCheck)
  {
    if (form.elements[fieldsToCheck[i]])
    {
      switch(form.elements[fieldsToCheck[i]].type)
      {
        case "text":
        case "textarea":
        case "select-one":
        case "hidden":
        case "password":    	if (!form.elements[fieldsToCheck[i]].value || 
                                    form.elements[fieldsToCheck[i]].value.length < 2 || 
                                    !validEmailAddress(fieldsToCheck[i],form.elements[fieldsToCheck[i]].value)) missingFields.push(fieldsToCheck[i]);
                                break;
        case "radio":
        case "checkbox":        if (!form.elements[fieldsToCheck[i]].checked) missingFields.push(fieldsToCheck[i]);
                                break;
        case "select-multiple": break;
      }
      form.elements[fieldsToCheck[i]].className = "";
    }
  }
  
  logDebug(3,"checkInputFields() missingFields",missingFields);
  var textAccept = "";
  for (var k in missingFields)
  {
    form.elements[missingFields[k]].className = "mandatory";
    if (missingFields[k] == "accept") textAccept = acceptMessage;
  }
  if (missingFields.length > 0)
  {
    if (missingFields.length == 1)
    {
      if (missingFields[0] == "accept")
        document.getElementById("textHint").innerHTML   = textAccept;
      else
        document.getElementById("textHint").innerHTML   = textIncomplete;
    }
    else
    {
      document.getElementById("textHint").innerHTML   = textIncomplete + textAccept;
    }
    document.getElementById("textHint").className = "error";
    return false;
  }
  else
  {
    return true;
  }
}


function submitContactForm()
{
  var form        = document.pricecalculator
  var contactType = form.contacttype.value;
  logDebug(5,"submitContactForm() contactType",contactType);

  if (checkInputFields(form,contactType))
  {
    if (contactType == "test")
    {
      var action = "actions/test.php";
    }
    else if (contactType == "test_dev")
    {
      var action = "actions/test_dev.php";
    }
    else if (contactType == "pricecalculation")
    {
      var action = "actions/offer.php";
//      form.target = "_new";
    }
    else
    {
      var action = "actions/contact.php";
    }
    submitAjaxForm("pricecalculator",action);
    if (contactType == "test")
    {
      document.getElementById("formPart1").innerHTML = rTest1;
      document.getElementById("formPart2").innerHTML = rTest2;
    }
    else if (contactType == "pricecalculation")
    {
      document.getElementById("formPart1").innerHTML = rOffer;
      document.getElementById("formPart2").innerHTML = "";
    }
    else
    {
      document.getElementById("formPart1").innerHTML = contactMessage;
      document.getElementById("formPart2").innerHTML = "";
    }
  }
}
