/***************************
Javascript f�r das Login der Kundenkarte
****************************/
//oeffnet das Hilfefenster
function openLoginHelp(strURL) {

	jQuery("#dialog").dialog({ 
								modal: true,
								resizable: true,
								width: 398
								});

	if (!jQuery("#dialog").dialog('isOpen')) {
		jQuery("#dialog").dialog('open');
	}

	// Inhalt der Hilfe nachladen.
	jQuery.get(strURL, function(data) {	
      jQuery("#dialog").html(data);
  	  jQuery('#ui-dialog-title-dialog').text(jQuery('#dialog_help').attr('title'));
			});

  //Events für Passwort vergessen
 window.setTimeout(setClickEvent,'500');

}

function setClickEvent(){
  jQuery("#ccHelpSendPW").click(getPassword);
}

function getPassword(event){
  
  var strCardNumber = jQuery('#ccHelpKundennummer').val();
  var data = new Array();
  
  jQuery('#ccHelpErrorMessage').remove();
  
  //bereinigt die Kartennummer Alle Zeichen die nicht 0-9 sind ersetzen.
  jQuery('#ccHelpKundennummer').val(strCardNumber.replace(/[^0-9]/g,''));

  if (strCardNumber.length != 9 || trim(strCardNumber) == "" || strCardNumber == 'Ihre Kartennummer') {
    jQuery('#ccHelpKundennummer').after('<div id="ccHelpErrorMessage" class="customerCardRed">Bitte geben Sie ihre 9 stellige Kartennummer ein!</div>');
    jQuery('#ccHelpKundennummer').focus();
    return false;
  }
  
  data = {
      Command: 'GetPassword',
      strFailURL : 'http://www.google.de',
      strSuccessURL : 'http://www.ece.de',
      Login : jQuery('#ccHelpKundennummer').val(),
      strBetreff : 'Ihr neues Passwort',
      strEmailAbsender : 'noreply@hmmh.de',
      strTemplateCenter : 'Templates/ececenter/online/PasswortVergessenMail.html',
      MandantID : intCenterID
    };

  jQuery.get(strLoginURL, data, function(data){
  
      if (data == 1) {
        //Erfolgsfall ...
        jQuery('#ccHelpKundennummer').after('<div id="ccHelpErrorMessage" class="customerCardRed">Neues Passwort angefordert.</div>');
      }
      else {
        jQuery('#ccHelpKundennummer').after('<div id="ccHelpErrorMessage" class="customerCardRed">Passwort anfordern fehlgeschlagen.</div>');
      }
    }, 'text');
    
}

function writeUsername(strName, strAnrede) {
	jQuery('#customerCardUsername').html(strName+'<span id="customerCardLinkLogout" class="customerCardLinkLogout">Abmelden</span>');
 	jQuery('#customerCardLinkLogout').click(cc_logout);
  
  jQuery('[class="standardtext"]').each( function(index, element){

    var strContent = jQuery(element).html();
    strContent = strContent.replace(/##KUNDE_ANREDE##/, strAnrede);  
    strContent = strContent.replace(/##KUNDE_NACHNAME##/, strName);

    jQuery(element).html(strContent);

  });
  
}

//entfernt die Vorbelegung aus den Inputboxen.
function removeText(event) {
	if (jQuery(this).val() == 'Ihre Kartennummer') {
		jQuery(this).val('');
	}

	if (jQuery(this).val() == 'Ihr Passwort') {  
    jQuery('#form_password_text').hide();
    jQuery('#form_password').show().focus();   
  }
}

// sendet die Logindaten an das Backend
function sendLogin(){

  //strLoginURL ist globale Variable mit der Script URL.
  var data = new Array();
  var boolCheckForm = false;
  
  //Formular pruefen
  boolCheckForm = chkLoginForm ();
  
  if (boolCheckForm) {
    // Daten die uebermittelt werden einsammeln
    data = {
      Login: jQuery('#form_mail').val(),
      Password: jQuery('#form_password').val(),
      MandantID: intCenterID,
      LoginBereichsID: 2,
      Command: 'Login',
      ssid: jQuery('#ssid').val()
    };

    jQuery.get(strLoginURL, data, function(data){

      if (typeof data['AdressID'] != 'undefined') {
        //Erfolgsfall ...
        writeUsername(data['Vorname']+' '+data['Name'], data['AnredeBezeichnung']);

        // Daten in globaler Variable wegspeichern.
        arrUserData = data;
        
        //ggfs vorhandenen Fehlertext l�schen
        jQuery('#customerCardLoginErrorSpan').html('');

        // Ausblenden des oberen Login-Bereichs.
        jQuery('#customerCardLoginArea').hide();

        // einblenden der versteckten Links im Menue
        showMenue('show');
        
        boolLogin = 1;
      }
      else {
        jQuery('#customerCardLoginErrorSpan').html('Bitte pr&uuml;fen Sie Kartennummer und Passwort!').addClass('customerCardRed');
      }
    }, 'json');
  }
}

// prueft das Loginformular
function chkLoginForm () {

  var strCardNumber = '';
  var strPassword = '';
  
  //bereinigt die Kartennummer
  clearCardNumber();
  
  
  strCardNumber = jQuery('#form_mail').val();
  strPassword = jQuery('#form_password').val();

  if (strCardNumber.length != 9 || trim(strCardNumber) == "" || strCardNumber == 'Ihre Kartennummer') {
    jQuery('#customerCardLoginErrorSpan').html("Bitte geben Sie ihre 9 stellige Kartennummer ein!").addClass('customerCardRed');
    jQuery('#form_mail').focus();
    return false;
  }
  if (trim(strPassword) == "" || strPassword == 'Ihr Passwort') {
    jQuery('#customerCardLoginErrorSpan').html("Bitte geben Sie ihr Passwort ein!").addClass('customerCardRed');
    jQuery('#form_password_text').hide();
    jQuery('#form_password').show();
    jQuery('#form_password').focus();
    return false;
  }
  jQuery('#customerCardLoginErrorSpan').html('');
  return true;
}

//bereinigt die Kartennummer
function clearCardNumber(){
  var strCardNumber = jQuery('#form_mail').val();
  
  //Alle Zeichen die nicht 0-9 sind ersetzen.
  jQuery('#form_mail').val(strCardNumber.replace(/[^0-9]/g,''));

}

function checkEmailAdr( address )
  {
    var status = true;
    var username = "";
    var hostname = "";

    if ( address.length < 8 )
      return false;

    var seperate = address.lastIndexOf("@");
    if ( seperate == -1 )
      return false;

    username = address.substring(0, seperate );
    if ( ! checkUsername( username, "<>()[],;:@\" " ) )
      return false;

    hostname = address.substring(seperate+1, address.length );
    if ( ! checkHostname( hostname ) )
      return false;

    return true;
  }


// Pr�ft eine Nummer Ziffer f�r Ziffer
function checkNr ( nr ) {
  var i=0;
  var j=nr.length;

  if( j < 1 )
    return false;

  for( ; i<j; i++ )
    if( ( nr.charAt(i) < '0' ) || ( nr.charAt(i) > '9' ) )
      return false;

  return true;
}



function forgotPassword() {
  alert('Das PW ist weg');
}

// entfernt Leerzeichen aus einem String
function trim (str) {
  return str.replace(/ +/g, ' ').replace(/^\s+/g, '').replace(/\s+$/g, '');
}

// Ausloggen des Users
function cc_logout(){
  
  data = {
    Command: 'Logout'
  };
  
  jQuery.get(strLoginURL, data, function(data){

  if (data) {
        // einblenden des oberen Bereichs.
        jQuery('#customerCardLoginArea').show();
        
        //Formularfelder leeren ...
        jQuery('#form_mail').val('Ihre Kartennummer');
        jQuery('#form_password').val('');
        jQuery('#form_password').hide();
        jQuery('#form_password_text').show();
        boolLogin = 0;
        
        jQuery('#customerCardUsername').html('&nbsp;');
      }
    }, 'text');
    
    window.document.location.href = strCustomerCardURL;
}

// Zeigt dem eingeloggtem User alle versteckten Menupunkte an
function showMenue(strMode){

  if (strMode == 'show') {
    jQuery('[class*="customerCardHideLink"]').addClass('customerCardShowLink');
    jQuery('[class*="customerCardHideLink"]').removeClass('customerCardHideLink');
  }
  else {
    jQuery('[class*="customerCardShowLink"]').removeClass('customerCardShowLink');
    jQuery('[class*="customerCardShowLink"]').addClass('customerCardHideLink');
  }
}

function checkUsername( username, mustBeQuoted )
{
  var i = 0;
  var j = username.length;
  if ( username.charAt(0) != '"' )
  {
    if ( (username.charAt(0) <  ' ') || (username.charAt(0) >  '~')
          || !notIn( mustBeQuoted, username.charAt(0) ) )
      return false;
    for( i=1; i<j; i++ )
    {
      if ( ( (username.charAt(i) < ' ') || (username.charAt(i) >  '~')
            || !notIn ( mustBeQuoted, username.charAt(i) ) )
           && ( username.charAt(i-1) != '\\' ) )
        return false;
    }
  }
  else
  {
    if ( username.charAt( j-1 ) != '"' )
      return false;
    for( i=1; i<j-1; i++ )
    {
      if ( ( (username.charAt(i) == '\n') || (username.charAt(i) == '\r')
            || (username.charAt(i) == '\"') )
          && (username.charAt(i-1) != '\\') )
        return false;
    }

  }
  return true;
}

function notIn( str1, str2 )
{
  var i = 0;
  var j = str2.length;
  for( ; i<j; i++ )
  {
    var str3 =  str2.charAt(i);
    if( str1.indexOf( str3 ) != -1 )
      return false;
  }
  return true;
}

function checkHostname( hostname )
  {
    if ( hostname.charAt(0) == '[' )
    {
      if ( hostname.charAt(hostname.length-1) != ']' )
        return false;
      var ipnr = hostname.substring( 1, hostname.length -1 );
        return checkIpnr( ipnr );
    }

    if ( hostname.charAt(0) == '#' )
    {
      var nr = hostname.substring( 1, hostname.length );
        return checkNr( nr );
    }

    return checkFqdn( hostname );
  }
function isDigit( ch )
{
  if ( (ch >= '0') && (ch <= '9') )
    return true;
  else
    return false;
}


function isAlpha( ch )
{
  if ( ((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')) )
    return true;
  else
    return false;
}


function isAlnum( ch )
{
  if ( isAlpha( ch ) || isDigit( ch ) )
    return true;
  else
    return false;
}


function checkIpnr( ipnr )
{
  var iL=0;
  var iC=0;
  var i=0;
  var sNr = "";

  for( ; i< ipnr.length; i++ )
  {
    if ( ipnr.charAt(i) == '.' )
    {
      if ( !iL || (iL> 3) || parseInt( sNr,10 ) > 255 )
        return false;
      iC++;
      iL = 0;
      sNr = "";
      continue;
    }
    if ( isDigit ( ipnr.charAt(i) ) )
    {
      iL++;
      sNr = sNr + ipnr.charAt(i);
      continue;
    }
    return false;
  }

  if ( parseInt( sNr,10 ) > 255 )
    return false;
  if ( ( (iC==3) && (iL>=1) && (iL<=3) ) || ( (iC==4) && (!iL) )  )
    return true;
  else
    return false;
}


function checkFqdn( fqdn )
{
  var iL=0;
  var iC=0;
  var i=fqdn.length-1;

  if ( (fqdn.charAt(0) == '.') || (fqdn.charAt(0) == '-') )
    return false;
  if ( fqdn.charAt(i) == '.' )
    i=i-1;

  for( ; i>=0; i-- )
  {
    if ( fqdn.charAt(i) == '.' )
    {
      if ( iL < 2 && iC < 2 )
        return false;
      if ( fqdn.charAt(i-1) == '-' )
        return false;
      iC++;
      iL = 0;
      continue;
    }
    if ( isAlnum ( fqdn.charAt(i) ) )
    {
      iL++;
      continue;
    }
    if ( fqdn.charAt(i) == '-' )
    {
      if ( !iL )
        return false;
      iL++;
      continue;
    }
    return false;
  }

  if ( !iC || ( iL == 1 && iC < 2 ) || ( !iL && iC==1 ) ) {
    return false;
  }

  return true;

}