/*============================================================================
AUTOR(EN):                       
   copyright by Dr.-Ing. Dirk Fischer, Köln
-----------------------------------------------------------------------------
ZWECK:
   erzeugt eine Dialogbox zum Versenden von eMails und nutzt zum versenden den
   Service easyMailToTo.de
-----------------------------------------------------------------------------
AENDERUNGEN:
   Erstellung:         10.05.2010  DFI
   letzte Änderung:    10.05.2010  DFI
============================================================================*/
window.easyMailTo={
   fromMail:            "k.soltani@moebel-soltani.de",
   DialogStyle:{        // Style-Parameter für eingeblendten E-Mail-Dialog
	   width:            "450px",    // Breite der Dialogbox
	   top:              "20%",      // Lage der Box von oben
	   color:            "#564226",  // Textfarbe in der Box
	   backgroundColor:  "#FBE2AC",  // Hintergrundfarbe der Box
	   border:           "8px ridge #543E30"  // Rahmen der Box
   },
   MsgStyle:{           // Style-Parameter für eingeblendte Meldungen
	   width:            "400px",    // Breite der Meldungsbox
	   top:              "10%",      // Lage der Box von oben
	   color:            "#564226",  // Textfarbe in der Box
	   backgroundColor:  "white",    // Hintergrundfarbe der Box
	   border:           "8px solid red"  // Rahmen der Box
   },
   ButtonClass:         "nKn",      // Klassenname für Links der Formular-Knöpfe
   opacity:             0.6,        // Transparenz des Hintergrunds
   
   text: {
      source:        'Ihre E-Mail-Adresse',
      target:        'E-Mail-Ziel-Adresse',
      afterMail:     '<div style="text-align:right;font-size:80%">Sie können die eMail-Adresse auch nur im ersten Feld eingeben.</div>',
      textMail:      'Ihre Mitteilung',
      afterText:     '<div style="text-align:right;font-size:80%">Sie können den Text ändern und ergänzen.</div>',
      beforeFailure: '<span style="color:red">>>&nbsp;</span>',
      sendText:      ' abschicken',
      cancel:        'Schließen'
   },

   msg: {     // %1 wird ersetzt durch Benennung in 'text' (s. o.)
      waiting: "<b>Geduld</b> =><br>Ihre E-Mail wird jetzt übertragen, dies kann einen Augenblick dauern!",
      sendSuccess: "<b>Erfolg</b> =><br>Ihre E-Mail wurde erfolgreich versendet!",
      sendFailure: "<b>Fehler</b> =><br>Leider konnte Ihre E-Mail aufgrund einer Störung nicht versendet werden!",
      tellFailure: "<p><b>Fehler</b> =><br>bitte prüfen Sie die Eingabe und vervollständigen Sie diese.</p>",
      emptyFailure: "Bitte geben Sie %1 an.",
      formatFailure:"In %1 hat sich ein Fehler eingeschlichen.",
      eMailFailure: "%1: Der Teil hinter dem '@' ist fehlerhaft."
   },

   buttonCSS: "",  // CSS-Deklaration für die Knopf-Klassen, falls nicht in CSS-Datei
      
   /*****   don't touch!!  ****  ab hier nichts verändern!!  ******/
   version:0.9,
   easyMailToHome: "http://easy-mailto.com/easymailto.php",
   sender: new Image(),
   
   init: function(){
   var o=document.getElementsByTagName('a'),
      p=easyMailTo.fromMail.indexOf('@')+1;

      if (!p||location.href.indexOf(easyMailTo.fromMail.slice(p))==-1)
         alert("Configuration failure in fromMail:\ngiven eMail address must be from this website!\n\n"
            +"Konfigurationsproblem bei Wert von fromMail:\nangegebene E-Mail-Adresse muß zu dieser Seite gehören!");
      easyMailTo.initBox();
      for (var i=0,l=o.length||0;i<l;i++)
         if (o[i].href.toLowerCase().indexOf('mailto:')!=-1){
         var t=o[i].innerText?o[i].innerHTML:false;   // because IE will change 'innerHTML' on also on mailto-Links

            o[i].href='javascript:easyMailTo.openDialog("'+(o[i].innerText||o[i].textContent).trim()
               +'","'+o[i].title+'","'+o[i].href+'")';
            if (t)
               o[i].innerHTML=t;  
         }
   },
   
   initBox: function(){
   function getStyles(s,p,z){
   var r=p+"font-size:1.0em;padding:10px;left:50%;display:none;z-index:"+z+";";
   
      for (var n in s)
         r+=n+":"+s[n]+";"
      r+="margin-left:-"+(parseInt(s.width)/2)+"px";     // because IE<7
      return r;
   }
   function setStyles(o,s){
      for (var n in s)
         o.style[n]=s[n];
   }
   function createDiv(id,z,s){
   var allStyle={
         position:(window.execScript&&!window.XMLHttpRequest?"absolute":"fixed"),  // for IE<7
         fontSize:'1.0em',
         display:'none',
         zoom:1.,
         zIndex:z
      },
      o=document.createElement("div");
   
      if (id!='Box'){
         s.padding='10px';
         s.left='50%';
         s.marginLeft="-"+(parseInt(s.width)/2)+"px";
      }
      o.id="easyMailTo"+id;
      setStyles(o,allStyle);
      setStyles(o,s);
      document.body.appendChild(o);
      return o;
   }
   /* -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; first! IE8 */
   /* filter:alpha(opacity=60);					                      second!  IE 5-7 */
	/* -khtml-opacity: 0.6;                         für alte Safari-Versionen (1.x) */
	/* -moz-opacity:0.6;                  für alte Mozilla-Browser wie Netscape 7.x */
   /* opacity:0.6;                                          aber ist kein css 2.1! */
   var op=this.opacity;
         
      createDiv('Box',997,{
         filter:"alpha(opacity="+Math.round(op*100)+")",
         KhtmlOpacity:op,
         MozOpacity:op,
         opacity:op,
         top:0,
         left:0,
         width:'100%',
         paddingTop:'100%',      // padding-top for IE<7
         backgroundColor:'#cccccc'
         }
      );
      createDiv('Dialog',998,this.DialogStyle);
      createDiv('Msg',999,this.MsgStyle);
   },
      
   display: function(id,on){
      for (var i=0;i<id.length;i++)
         document.getElementById('easyMailTo'+id[i]).style.display=on?"block":"none";
   },
   
   openDialog: function(name,title,href){
   function analizeHref(href){
   var r=href.match(/mailto:([^\?].+)\?(.+)/i),
      subject=r&&r[2]?r[2].match(/subject=([^&]+)/i)||0:0,
      textMail=r&&r[2]?r[2].match(/body=([^&]+)/i)||0:0;

      return {
         target:r?r[1]:'',
         textMail:textMail?textMail[1]:'',
         subject:subject?subject[1]:''
      };
   }
   function getFormRow(html,typ){
      return '<fieldset><label for="_'+typ+'_" '
         +'style="font-weight:bold;vertical-align:top;text-align:right;padding-right:0.6em;float:left;width:120px">'
         +easyMailTo.text[typ]+'</label>'+html+'</fieldset>'
   }
   function getFormEmail(typ,eMail){
      return '<input type="text" id="_'+typ+'_" name="'+typ
         +'" value="'+eMail+'" size="20" maxlength="30"><big><b>@</b></big><input type="text" name="'
         +typ+'Provider" value="" size="15" maxlength="20">'
         +easyMailTo.text.afterMail;
   }
   function getHiddenHTML(href,typ){
      return '<input type="hidden" name="'+typ+'" value="'+href[typ]+'">';
   }
   function getDialogHTML(name,title,href){
      return '<h1>'+name+'</h1>'
         +(title.length?'<p>'+title+'</p>':'')
         +'<form name="eMail" action="#">'
         +getFormRow(getFormEmail('source',''),'source')
         +(href.target==''?getFormRow(getFormEmail('target',''),'target')
            :getHiddenHTML(href,'target'))
         +getHiddenHTML(href,'subject')
         +getFormRow('<textarea id="_textMail_" name="textMail" cols="33" rows="10">'
         +href.textMail+'</textarea>'+easyMailTo.text.afterText,'textMail')
         +'<div style="margin-top:0.6em"><div style="float:right">'
         +easyMailTo.getButton('easyMailTo.sendDialog();',name+easyMailTo.text.sendText)
         +'</div>'+easyMailTo.getCancel("['Box','Dialog','Msg']")+'</div></form>';
   }
      this.display(["Msg"],false);
      document.getElementById("easyMailToDialog").innerHTML=getDialogHTML(name,title,analizeHref(href));
      this.display(["Box","Dialog"],true);
   },

   sendDialog: function(){
   function checkMail(f,typ){
   var r= "^[a-zäöü0-9][a-zäöü0-9_.-]*"                                 // Name
      + "\\@([a-zäöü0-9][a-zäöü0-9._-]*\\.)*[a-zäöü0-9][a-zäöü0-9._-]*" // Domain
      +"\\.[a-z]{2,5}$",                                                // Toplevel
      eMail=!f[typ+'Provider']?'':f[typ+'Provider'].value.trim(),
      m='';
      
      if (eMail.length){
         eMail=f[typ].value.trim()+'@'+eMail;
         f[typ+'Provider'].value='';
      }
      else
         eMail=f[typ].value.trim();
      if (!eMail.length)
         m=easyMailTo.getFailure('emptyFailure',easyMailTo.text[typ]);
      else if (!eMail.match(r))
         m=easyMailTo.getFailure('formatFailure',easyMailTo.text[typ]);
      f[typ].value=eMail;
      return m;
   }
   function getURI(f,t){
      return '&'+t+'='+encodeURIComponent(f[t].value);
   }
   var f=document.forms.eMail,
      m=checkMail(f,'source')+checkMail(f,'target');
      
      if (!f.textMail.value.trim().length)
         m+=this.getFailure('emptyFailure',this.text.textMail);
      if (m.length)
         this.setMsg(this.msg.tellFailure+m,true);
      else{
         this.sender.onload=function(){easyMailTo.setAnswer(this.width);};
         this.sender.src=this.easyMailToHome+'?fromMail='+this.fromMail+getURI(f,'target')
            +getURI(f,'source')+getURI(f,'subject')+getURI(f,'textMail');
         this.setMsg(this.msg.waiting,false);
      }
   },
   
   // 4px = eMailFailure:source, 8px = eMailFailure:target, 12px = eMailFailure:source
   // and eMailFailure:target, 16px = sendFailure, 32px = sendSuccess
   setAnswer: function(w){
   var m="";

      if (w>15){
         if (w==32){
            m='<p>'+this.msg.sendSuccess+'</p>';
            this.display(["Box","Dialog"],false);
         }
         else
            m=this.getFailure('sendFailure','');
      }
      else{
         m=this.msg.tellFailure;
         if (w&4)
            m+=this.getFailure('eMailFailure',this.text.source);
         if (w&8)
            m+=this.getFailure('eMailFailure',this.text.target);
      }
      this.setMsg(m,true);
   },
   
   getFailure: function(typ,text){
      return '<p>'+this.text.beforeFailure+this.msg[typ].replace(/%1/,text)+'</p>';
   },

   setMsg: function(txt,cancel){
      document.getElementById("easyMailToMsg").innerHTML=txt+(cancel?this.getCancel("['Msg']"):'');
      this.display(["Msg"],true);
   },
   
   getButton: function(fn,txt){
      return '<a class="'+this.ButtonClass+'" href="javascript:'+fn+'"><span><span><span><span>'+txt
         +'</span></span></span></span></a>';
   },

   getCancel: function(box){
      return this.getButton("easyMailTo.display("+box+",false);",this.text.cancel);
   }
};
if (easyMailTo.buttonCSS.length)
   document.write("\x3Cstyle id='easyMailTo' type='text/css'>"+easyMailTo.buttonCSS+"\x3C/style>");

if (document.addEventListener)
   window.addEventListener('load',easyMailTo.init,false);
else if (window.attachEvent)
   window.attachEvent('onload',easyMailTo.init);
//else window.onload=easyMailTo.init;  // not for older Browsers, because there may be difficulties
// Wert trimmen, d. h. führende und folgende Leerzeichen etc. weg
if (!String.prototype.trim)
   String.prototype.trim=function(){
   var r=this.replace(/\s+$/,"");      // nacheinander wg. Browser-Fehlern
      return r.replace(/^\s+/,"");
   };


