// JavaScript Document

// Array für die Aufnahme von Personen erzeugen
// Array-Groesse voerst beschränkt
var employees = new Array(20);

// Array mit Daten zu einer Person
var employee = new Object();

function fillArray() {
  
  // neues Array anlegen, um Mitarbeiterdaten aufzunehmen
  employees[0] = new Object();
  
  // Mitarbeiterdaten hinzufügen
  employees[0]["personID"]  = "001";
  employees[0]["surname"]   = "Sch&uuml;&szlig;ler";
  employees[0]["name"]      = "Kurt";
  employees[0]["function"]  = "Verkauf | Integrierte Dienstleistungen | Finanzen";
  employees[0]["phone"]     = "0 62 52 / 79 59 -16";
  employees[0]["fax"]       = "0 62 52 / 77 29 2";
  employees[0]["email"]     = "kschuessler@schuessler-spedition.de";
  employees[0]["picture"]   = "kurt_schuessler_small.jpg";

  employees[1] = new Object();
  employees[1]["personID"]  = "002";
  employees[1]["surname"]   = "Sch&uuml;&szlig;ler";
  employees[1]["name"]      = "Siegfried";
  employees[1]["function"]  = "Einkauf | Fuhrpark";
  employees[1]["phone"]     = "0 62 52 / 79 59 -24";
  employees[1]["fax"]       = "0 62 52 / 77 29 2";
  employees[1]["email"]     = "-";
  employees[1]["picture"]   = "siegfried_schuessler_small.jpg";

  employees[2] = new Object();
  employees[2]["personID"]  = "003";
  employees[2]["surname"]   = "Sch&uuml;&szlig;ler";
  employees[2]["name"]      = "Stephan";
  employees[2]["function"]  = "Leitung Disposition | Fuhrpark";
  employees[2]["phone"]     = "0 62 52 / 79 59 -22";
  employees[2]["fax"]       = "0 62 52 / 77 29 2";
  employees[2]["email"]     = "stschuessler@schuessler-spedition.de";
  employees[2]["picture"]   = "stephan_schuessler_small.jpg";
  
  employees[3] = new Object();
  employees[3]["personID"]  = "004";
  employees[3]["surname"]   = "Lutz";
  employees[3]["name"]      = "Thomas";
  employees[3]["function"]  = "Assistent der Gesch&auml;ftsf&uuml;hrung | Qualit&auml;tsmanagement";
  employees[3]["phone"]     = "0 62 52 / 79 59 -18";
  employees[3]["fax"]       = "0 62 52 / 77 29 2";
  employees[3]["email"]     = "tlutz@schuessler-spedition.de";
  employees[3]["picture"]   = "thomas_lutz_small.jpg";
  
  employees[4] = new Object();
  employees[4]["personID"]  = "005";
  employees[4]["surname"]   = "W&ouml;llner";
  employees[4]["name"]      = "Marc";
  employees[4]["function"]  = "Warehousing & IT";
  employees[4]["phone"]     = "0 62 52 / 79 59 -15";
  employees[4]["fax"]       = "0 62 52 / 77 29 2";
  employees[4]["email"]     = "mwoellner@schuessler-spedition.de";
  employees[4]["picture"]   = "marc_woellner_small.jpg";
  
  employees[5] = new Object();
  employees[5]["personID"]  = "006";
  employees[5]["surname"]   = "Jakobi";
  employees[5]["name"]      = "Wolfgang";
  employees[5]["function"]  = "Disposition Nahverkehr";
  employees[5]["phone"]     = "0 62 52 / 79 59 -19";
  employees[5]["fax"]       = "0 62 52 / 77 29 2";
  employees[5]["email"]     = "wjakobi@schuessler-spedition.de";
  employees[5]["picture"]   = "wolfgang_jakobi_small.jpg";
  
  employees[6] = new Object();
  employees[6]["personID"]  = "007";
  employees[6]["surname"]   = "Breubeck";
  employees[6]["name"]      = "Gerhard";
  employees[6]["function"]  = "Tiefk&uuml;hllager";
  employees[6]["phone"]     = "0 62 52 / 79 59 -20";
  employees[6]["fax"]       = "0 62 52 / 77 29 2";
  employees[6]["email"]     = "gbreubeck@schuessler-spedition.de";
  employees[6]["picture"]   = "nopic.gif";
  
  employees[7] = new Object();
  employees[7]["personID"]  = "008";
  employees[7]["surname"]   = "Schreiber";
  employees[7]["name"]      = "Hagen";
  employees[7]["function"]  = "Frischelager";
  employees[7]["phone"]     = "-";
  employees[7]["fax"]       = "0 62 52 / 77 29 2";
  employees[7]["email"]     = "hschreiber@schuessler-spedition.de";
  employees[7]["picture"]   = "nopic.gif";
  
  employees[8] = new Object();
  employees[8]["personID"]  = "009";
  employees[8]["surname"]   = "Stephan";
  employees[8]["name"]      = "Brigitte";
  employees[8]["function"]  = "Buchhaltung";
  employees[8]["phone"]     = "0 62 52 / 79 59 -26";
  employees[8]["fax"]       = "0 62 52 / 77 29 2";
  employees[8]["email"]     = "bstephan@schuessler-spedition.de";
  employees[8]["picture"]   = "brigitte_stephan_small.jpg";
  
  employees[9] = new Object();
  employees[9]["personID"]  = "010";
  employees[9]["surname"]   = "Jantz";
  employees[9]["name"]      = "Hannelore";
  employees[9]["function"]  = "Administration";
  employees[9]["phone"]     = "0 62 52 / 79 59 -14";
  employees[9]["fax"]       = "0 62 52 / 77 29 2";
  employees[9]["email"]     = "hjantz@schuessler-spedition.de";
  employees[9]["picture"]   = "hannelore_jantz_small.jpg";
  
  employees[10] = new Object();
  employees[10]["personID"]  = "011";
  employees[10]["surname"]   = "Schaffner";
  employees[10]["name"]      = "Herbert";
  employees[10]["function"]  = "Disposition Nahverkehr";
  employees[10]["phone"]     = "0 62 52 / 79 59 -12";
  employees[10]["fax"]       = "0 62 52 / 77 29 2";
  employees[10]["email"]     = "hschaffner@schuessler-spedition.de";
  employees[10]["picture"]   = "nopic.gif";

  employees[11] = new Object();
  employees[11]["personID"]  = "012";
  employees[11]["surname"]   = "Schaaf";
  employees[11]["name"]      = "Nadine";
  employees[11]["function"]  = "Warehousing & IT";
  employees[11]["phone"]     = "0 62 52 / 79 59 -23";
  employees[11]["fax"]       = "0 62 52 / 77 29 2";
  employees[11]["email"]     = "nschaaf@schuessler-spedition.de";
  employees[11]["picture"]   = "nopic.gif";
  
  employees[12] = new Object();
  employees[12]["personID"]  = "013";
  employees[12]["surname"]   = "Magass";
  employees[12]["name"]      = "Nathalie";
  employees[12]["function"]  = "Palettenmanagement";
  employees[12]["phone"]     = "0 62 52 / 79 59 -13";
  employees[12]["fax"]       = "0 62 52 / 77 29 2";
  employees[12]["email"]     = "nmagass@schuessler-spedition.de";
  employees[12]["picture"]   = "nopic.gif";

  employees[13] = new Object();
  employees[13]["personID"]  = "014";
  employees[13]["surname"]   = "Simon";
  employees[13]["name"]      = "Kay";
  employees[13]["function"]  = "Werkstudent (BA) QM & Projektbetreuung";
  employees[13]["phone"]     = "0 62 52 / 79 59 -25";
  employees[13]["fax"]       = "0 62 52 / 77 29 2";
  employees[13]["email"]     = "ksimon@schuessler-spedition.de";
  employees[13]["picture"]   = "nopic.gif";

  employees[14] = new Object();
  employees[14]["personID"]  = "015";
  employees[14]["surname"]   = "Kaltschmitt";
  employees[14]["name"]      = "Tim";
  employees[14]["function"]  = "Disposition Fernverkehr";
  employees[14]["phone"]     = "0 62 52 / 79 59 -10";
  employees[14]["fax"]       = "0 62 52 / 77 29 2";
  employees[14]["email"]     = "tkaltschmitt@schuessler-spedition.de";
  employees[14]["picture"]   = "nopic.gif";

  employees[15] = new Object();
  employees[15]["personID"]  = "016";
  employees[15]["surname"]   = "Sch&uuml;&szlig;ler";
  employees[15]["name"]      = "Petra";
  employees[15]["function"]  = "Immobilien";
  employees[15]["phone"]     = "0 62 52 / 79 59 -27";
  employees[15]["fax"]       = "0 62 52 / 77 29 2";
  employees[15]["email"]     = "pschuessler@schuessler-spedition.de";
  employees[15]["picture"]   = "nopic.gif";

  return employees;
};

function showVcard(tmp_personID) {

  // Sicherstellen, dass die Mitarbeiterdaten bereits geladen sind
  if ( !employees[0] ) {
    // alert('error#1');
    fillArray();
  }

  // Array durchlaufen, bis der entsprechende Mitarbeiter gefunden ist,
  // oder das Array zuende geht
  for (var i = 0; i < employees.length; i++) {
    
    if ( employees[i]["personID"] == tmp_personID ) {
      //alert(employees[i]["email"]);
      employee = employees[i];
      // Sicherstellen, dass Layer bereits vorhanden ist,
      // ansonsten Layer erzeugen
      if ( !(document.getElementById('vcard')) ) {
        createVcardLayer();
        //Layer anzeigen
        //setVisibleVcardLayer();
      }
      //alert("2");
      setVcardData();
      setVisibleVcardLayer();
      break;
    }
    
  }
  
}

function createVcardLayer() {

  // Layer für vCard erzeugen
  var vcard_layer;
  
  vcard_layer = "<div id=\"vcard\" onClick=\"setInvisibleVcardLayer();\">" +
                "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" width=\"100%\">" +
                "<tr><td colspan=\"2\"><img src=\"images/logo/logo_small.gif\" align=\"center\" ></td></tr>" + 
                "<tr><td>" +

                "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" width=\"100%\">" +
                "<tr><td colspan=\"3\" class=\"text_headline_a\"><div id=\"vcard_name\"></div></td>" +                
                "<td rowspan=\"5\"><div id=\"vcard_picture\" align=\"right\"></div></td></tr>" +
                "<tr><td colspan=\"3\"><div id=\"vcard_function\"></div><p /></td></tr>" +   
                "<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>" +
                "<tr><td width=\"20\"><img src=\"images/icon/telephone.gif\" border=\"0\" ></td><td width=\"60\">Telefon</td><td><div id=\"vcard_phone\"></div></td></tr>" +
                "<tr><td><img src=\"images/icon/printer.gif\" border=\"0\" ></td><td>Telefax</td><td><div id=\"vcard_fax\"></div></td></tr>" +
                "<tr><td><img src=\"images/icon/email.gif\" border=\"0\" ></td><td>EMail</td><td colspan=\"2\"><div id=\"vcard_email\"></div></td></tr>" +   

                "</table>" +
                "</td></tr>" +
                "</table>" + 
                "</div>";
  
  document.getElementById('placeholder').innerHTML = vcard_layer;

}

function setVisibleVcardLayer() {
  
  // der folgende GlumBatsch, bis auf die letzte Zeile,
  // wird nur benötigt, dass der Layer vertikal und horizontal
  // mittig ausgegeben wird
  var browser_height, browser_width, vcard_height, vcard_width, scroll_positionY;
  var position_left, position_top;
  
  if ( window.innerHeight ) {
    browser_height = window.innerHeight;
    browser_width = window.innerWidth;
  }
  else {
    browser_height = document.documentElement.clientHeight;
    browser_width = document.documentElement.clientWidth;
  }
   
  // konnten kein sichtbarer Bereich ermittelt werden,
  // wird davon ausgegangen, dass der Browser mit einem sichtbaren
  // Bereich von 800x600 eingesetzt wird
  if ( !browser_width ) {
    browser_width = "800";
  }
  if ( !browser_height ) {
    browser_height = "600";
  }
  
  if ( document.getElementById('vcard') ) {
    vcard_height = document.getElementById('vcard').offsetHeight;
    vcard_width  = document.getElementById('vcard').offsetWidth;
  }
  else {
    // wenn das Layer bisher noch nicht existiert,
    // müssen die Werte für Höhe und Breite manuell gesetzt werden
    vcard_width = "410";
    vcard_height = "250";
  }
    
  // aktuelle Scrollposition ermitteln
  if ( window.pageYOffset ) {
    scroll_positionY = window.pageYOffset;
  }
  else {
    scroll_positionY = document.documentElement.scrollTop;
  }
  
  if ( !scroll_positionY ) {
    scroll_positionY = 0;
  }
  
  // Abstand nach oben / nach links für Layer-Positionierung ermitteln
  position_top  = ( browser_height / 2 ) - ( vcard_height / 2 );
  position_left = ( browser_width / 2 ) - ( vcard_width / 2 );

  // aktuelle Scrollposition für Layer-Positionierung (top) berücksichtigen
  position_top = position_top + scroll_positionY;

  position_top  = position_top + "px";
  position_left = position_left + "px";

  // Layer-Position anpassen
	document.getElementById('vcard').style.top = position_top;
	document.getElementById('vcard').style.left = position_left;
	
	// Layer einblenden
	document.getElementById('vcard').style.visibility = 'visible';
	
} 

function setInvisibleVcardLayer() {
  // Layer ausblenden
  document.getElementById('vcard').style.visibility = 'hidden';
}

function setVcardData() {
  // Daten auf VCard aktualisieren
  tmp_string = employee["name"] + '&nbsp;' +  employee["surname"]; 
  document.getElementById('vcard_name').innerHTML = tmp_string;
 
  tmp_string = employee["function"];
  document.getElementById('vcard_function').innerHTML = tmp_string;
  
  tmp_string = employee["phone"];
  document.getElementById('vcard_phone').innerHTML = tmp_string;
  
  tmp_string = employee["fax"];
  document.getElementById('vcard_fax').innerHTML = tmp_string;
  
  tmp_string = employee["email"];
  tmp_string = encodeSMTP(tmp_string);
  document.getElementById('vcard_email').innerHTML = tmp_string;
 
  tmp_string = employee["picture"];
  tmp_string = "<img src=\"images/person/" + tmp_string + "\" border=\"0\" >";
  document.getElementById('vcard_picture').innerHTML = tmp_string;
}

function encodeSMTP(tmp_smtp) {

  var string;
  var mailto = "mailto:";
	var aHref = "\<a href=\"";
	var aHrefEnd = "\">";
	var endHref = "\<\/a>";
	var mode = 3;
	var encodedMailto = encodeString (mailto, mode);
	var encodedEmail = encodeString (tmp_smtp, mode);
	
  tmp_smtp = aHref + encodedMailto + encodedEmail + aHrefEnd + encodedEmail + endHref;	
	return tmp_smtp;
}

/* This is where the real encoding is done */
function encodeString (originalString, mode) {
	var encodedString = "";
	var nowCodeString = "";
	var randomNumber = -1;
	var originalLength = originalString.length;
	for (var i = 0; i < originalLength; i++) {
		switch (mode) {
			case 1:	// Decimal code:
				nowCodeString = "&#" + Number(originalString.charCodeAt(i)).toString() + ";";
			break;
			case 2: // Hexadecimal code:
				nowCodeString = "&#x" + Number(originalString.charCodeAt(i)).toString(16) + ";";
			break;
			case 3: // Random encoding - which mode now?
				randomNumber = Math.ceil(2 * Math.random());
				switch (randomNumber) {
					case 1: // Random encoding - decimal code:
						nowCodeString = "&#" + Number(originalString.charCodeAt(i)).toString() + ";";
					break;
					case 2: // Random encoding - hexadecimal code:
						nowCodeString = "&#x" + Number(originalString.charCodeAt(i)).toString(16) + ";";
					break;
					// eliminated this option, because in rare cases it could lead to 
					// a readable email address. (2003-09-11, Andreas)
					//case 3: // Random encoding - don't encode, use character itself:
					//	nowCodeString = originalString.charAt(i);
					//break;
					default:
						return("ERROR: wrong random number.");
					break;
				}
			break;
			case 4: // Don't encode, use character itself:
				nowCodeString = originalString.charAt(i);
			break;
			default:
				return ("ERROR: wrong encoding mode.");
			break;
		}
		encodedString += nowCodeString;
	}
	return (encodedString);
}

