//=============================================================================
//	ecards.js - Javascript for the error-handling of the e-card form and
//  for setting the respective destination of the forms action attribute
//  ---------------------------------------------------------------------------
//  created:       08/08/2003
//  last modified: 08/15/2003
//  (c) Jan-Eric Strohsal (strohsal.jan-eric@geo.de) - GEO.de
//=============================================================================


//=============================================================================
//  *** SAVE FORMDATA, REFILL THE FORM AND KILL THE COOKIE AFTER SUBMIT ***
//=============================================================================

  function setCookie() {    
    var send_value = "true";
    if(document.getElementById("send_later").checked) 
      send_value = "false";
    var current_date = new Date();
    var hour         = current_date.getTime() + (60 * 60 * 1000);
    current_date.setTime(hour);
    var expires      = current_date.toGMTString();
    var value        = "empf_name:==:"+escape(document.ecards.empf_name.value)+":==:empf_mail:==:"+escape(document.ecards.empf_mail.value)+":==:sender_name:==:"+escape(document.ecards.sender_name.value)+":==:sender_mail:==:"+escape(document.ecards.sender_mail.value)+":==:notify_me:==:"+escape(document.ecards.notify_me.checked)+":==:subject:==:"+escape(document.ecards.subject.value)+":==:message:==:"+escape(document.ecards.message.value)+":==:day:==:"+escape(document.ecards.day.value)+":==:month:==:"+escape(document.ecards.month.value)+":==:year:==:"+escape(document.ecards.year.value)+":==:time:==:"+escape(document.ecards.time.value)+":==:send_now:==:"+send_value+":==:;";
    document.cookie  = "ecard_data="+value+"expires="+expires+"; path=/GEO/; domain=geo.de;";
  }

  function killCookie() {
    var send_value = "true";
    if(document.getElementById("send_later").checked) 
      send_value = "false";
    var kill_time    = new Date("February 2, 1975");
    var kill_string  = "ecard_data=empf_name:==:"+escape(document.ecards.empf_name.value)+":==:empf_mail:==:"+escape(document.ecards.empf_mail.value)+":==:sender_name:==:"+escape(document.ecards.sender_name.value)+":==:sender_mail:==:"+escape(document.ecards.sender_mail.value)+":==:notify_me:==:"+escape(document.ecards.notify_me.checked)+":==:subject:==:"+escape(document.ecards.subject.value)+":==:message:==:"+escape(document.ecards.message.value)+":==:day:==:"+escape(document.ecards.day.value)+":==:month:==:"+escape(document.ecards.month.value)+":==:year:==:"+escape(document.ecards.year.value)+":==:time:==:"+escape(document.ecards.time.value)+":==:send_now:==:"+send_value+":==:;expires=" + kill_time.toGMTString() + "; path=/GEO/; domain=geo.de;";
    document.cookie  = kill_string;
  }  
  
  //function restoreFormData() {
    //alert(document.cookie);
    /*if(document.cookie && document.cookie.match(/ecard_data/g)) {
      var cookie_crumbs = document.cookie.split(":==:");
      document.ecards.empf_name.value   = unescape(cookie_crumbs[1]);
      document.ecards.empf_mail.value   = unescape(cookie_crumbs[3]);
      document.ecards.sender_name.value = unescape(cookie_crumbs[5]);
      document.ecards.sender_mail.value = unescape(cookie_crumbs[7]);
      if(unescape(cookie_crumbs[9])  == "true")  document.ecards.notify_me.checked=true;
      document.ecards.subject.value     = unescape(cookie_crumbs[11]);
      document.ecards.message.value     = unescape(cookie_crumbs[13]);      
      document.ecards.day.value         = unescape(cookie_crumbs[15]);
      document.ecards.month.value       = unescape(cookie_crumbs[17]);
      document.ecards.year.value        = unescape(cookie_crumbs[19]);
      document.ecards.time.value        = unescape(cookie_crumbs[21]);
      if(unescape(cookie_crumbs[23]) == "false") document.ecards.send_now.checked=false; 
		*/                                     
    //}
  //}
    

//=============================================================================
//  *** SPECIAL MAC SECTION ***
//=============================================================================

  function previewCard(){
    //setCookie();
    document.ecards.action='/GEO/fotografie/e-cards/ecard.php?preview=1';document.ecards.submit();
  }

  function sendCard(){
    //killCookie();
    document.ecards.action='/GEO/fotografie/e-cards/ecard.php?save=1';document.ecards.submit();
  }

  function changeCard(){
    //setCookie();
    void(opener.location.href='/GEO/fotografie/e-cards/');opener.focus();
  }


//=============================================================================
//  *** DISPLAY/HIDE ERROR MESSAGES ***
//=============================================================================

  function showErrorMsg(error_nr) {
    //set error-msg prophylactic invisible
    if(document.ecards.empf_name.value != '') {
    	document.getElementById("errormsg1").style.visibility = 'hidden';
      document.getElementById("errormsg1").style.display    = 'none';
    }
    if(document.ecards.empf_mail.value != '') {
    	document.getElementById("errormsg2").style.visibility = 'hidden';
      document.getElementById("errormsg2").style.display    = 'none';
    }
    if(document.ecards.sender_name.value != '') {
    	document.getElementById("errormsg3").style.visibility = 'hidden';
      document.getElementById("errormsg3").style.display    = 'none';
    }
    if(document.ecards.sender_mail.value != '') {
    	document.getElementById("errormsg4").style.visibility = 'hidden';
      document.getElementById("errormsg4").style.display    = 'none';
    }
    document.getElementById("errormsg5").style.visibility = 'hidden';
    document.getElementById("errormsg5").style.display    = 'none';
    document.getElementById("errormsg6").style.visibility = 'hidden';
    document.getElementById("errormsg6").style.display    = 'none';
    document.getElementById("errormsg7").style.visibility = 'hidden';
    document.getElementById("errormsg7").style.display    = 'none';
    document.getElementById("errormsg8").style.visibility = 'hidden';
    document.getElementById("errormsg8").style.display    = 'none';
    document.getElementById("errormsg9").style.visibility = 'hidden';
    document.getElementById("errormsg9").style.display    = 'none';
    document.getElementById("errormsg10").style.visibility = 'hidden';
    document.getElementById("errormsg10").style.display    = 'none';

    //display respective error-msg by switching through error_nr
    switch(error_nr) {
    	case '1':
    	  document.getElementById("errormsg1").style.visibility = 'visible';
    	  document.getElementById("errormsg1").style.display    = 'block';
        break;
      case '2':
        document.getElementById("errormsg2").style.visibility = 'visible';
        document.getElementById("errormsg2").style.display    = 'block';
        break;
      case '3':
        document.getElementById("errormsg3").style.visibility = 'visible';
        document.getElementById("errormsg3").style.display    = 'block';
        break;
      case '4':
        document.getElementById("errormsg4").style.visibility = 'visible';
        document.getElementById("errormsg4").style.display    = 'block';
        break;
      case '5':
        document.getElementById("errormsg5").style.visibility = 'visible';
        document.getElementById("errormsg5").style.display    = 'block';
        break;
      case '6':
        document.getElementById("errormsg6").style.visibility = 'visible';
        document.getElementById("errormsg6").style.display    = 'block';
        break;
      case '7':
        document.getElementById("errormsg7").style.visibility = 'visible';
        document.getElementById("errormsg7").style.display    = 'block';
        break;
      case '8':
        document.getElementById("errormsg8").style.visibility = 'visible';
        document.getElementById("errormsg8").style.display    = 'block';
        break;
      case '9':
        document.getElementById("errormsg9").style.visibility = 'visible';
        document.getElementById("errormsg9").style.display    = 'block';
        break;
      case '10':
        document.getElementById("errormsg10").style.visibility = 'visible';
        document.getElementById("errormsg10").style.display    = 'block';
        break;
      default:
        alert('keine Fehlermeldung vorhanden');
    }
  }


//=============================================================================
//  *** CHECK THE FORM, CALL ERROR MESSAGES AND SET THE FORMS DESTINATION ***
//=============================================================================
  function setFormDestination(target){
    //if(mac) { alert('Immerhin!'); }
    //presetting submit conditions
    fields_are_valid = 1;
    s_email_is_valid = 1;
    r_email_is_valid = 1;
    time_is_valid    = 1;
    if(document.ecards.notify_me.checked == true) notification = 1;
    else notification = 0;

    //merge DOM-Browsers
    dom = ie6||ie||op||moz;

    //query for IE 5.0
    ie5_0 = navigator.userAgent.match(/MSIE\s5\.0/i);
//-----------------------------------------------------------------------------
//	check for blank fields
//-----------------------------------------------------------------------------
    if(document.ecards.empf_name.value == '') {
      if(mac || ie5_0) alert('Bitte geben Sie einen Empfängernamen an');
    	else if(dom)     showErrorMsg('1');
    	else             alert('Bitte geben Sie einen Empfängernamen an');
      fields_are_valid = 0;
    }
    if(document.ecards.empf_mail.value == '') {
      if(mac || ie5_0) alert('Bitte geben Sie die Empfängeradresse/n an');
      else if(dom)     showErrorMsg('2');
    	else             alert('Bitte geben Sie die Empfängeradresse/n an');
      fields_are_valid = 0;
    }
    if(document.ecards.sender_name.value == '') {
      if(mac || ie5_0) alert('Bitte geben Sie Ihren Namen an');
    	else if(dom)     showErrorMsg('3');
    	else             alert('Bitte geben Sie Ihren Namen an');
      fields_are_valid = 0;
    }
    if(notification && document.ecards.sender_mail.value == ''){
      if(mac || ie5_0) alert('Bitte geben Sie Ihre E-Mail-Adresse an');
      else if(dom)     showErrorMsg('4');
    	else             alert('Bitte geben Sie Ihre E-Mail-Adresse an');
      fields_are_valid = 0;
    }

//-----------------------------------------------------------------------------
//  check syntax and number of entered e-mail-adresses
//-----------------------------------------------------------------------------
    if(document.ecards.empf_mail.value != '') {
    	e_email          = document.ecards.empf_mail.value.replace(/^\s+|\s+$/g, ''); // trim
		regex_syntax = /^(((?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\])))\s*[,;]{0,1}\s*)+$/;
		regex_count 	 = /^(((?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\])))\s*[,;]{0,1}\s*){1,10}$/;
		e_mail_is_valid  = regex_syntax.test(e_email);
    	valid_nof_emails = regex_count.test(e_email);
      if (e_mail_is_valid && valid_nof_emails) {
        r_email_is_valid = 1;
      } else {
        if(dom) {
        	if(!e_mail_is_valid)       showErrorMsg('5');
        	else if(!valid_nof_emails) showErrorMsg('9');
        } else {
    	  	if(!e_mail_is_valid)       alert('Die angegebene E-Mail-Adresse ist ungültig');
          else if(!valid_nof_emails) alert('Sie können maximal zehn Empfänger angeben');
        }
        r_email_is_valid = 0;
      }
    }
    if(document.ecards.sender_mail.value != '') {
    	s_email         = document.ecards.sender_mail.value;
    	regex_syntax    = /^\w[\w|\.|\-]+@\w[\w|\.|\-]+\.[a-zA-Z]{2,4}?$/;
    	s_mail_is_valid = regex_syntax.test(s_email);
      if (s_mail_is_valid) {
        s_email_is_valid = 1;
      } else {
      	if(dom) showErrorMsg('6');      	
        else    alert('Die angegebene E-Mail-Adresse ist ungültig');       
        s_email_is_valid = 0;
      }
    }

//-----------------------------------------------------------------------------
//	check the time for sending    
    
    if (document.ecards.send.value == "send_now" || document.getElementById('send_now').checked == true) {
    	//no further time check necessary
    	time_is_valid = 1;
    }
    else {
    	// extract and declare the needed values from current date
      var now   = new Date();
      var hour  = now.getHours();
      var day   = now.getDate();
      var month = now.getMonth() + 1;
      var year  = now.getYear();   
            
      // replace the first char with '20', cause mozilla returns 105/106 instead of 2005/2006 when calling 'getYear()'
      if(year < 2000) {
      	// prepare 'year' for string-replacement
        year  = year.toLocaleString(); 
      	year = year.replace(/1/, "20");  
      }           
      
      // concat the hour-string
      if (hour < 10) hour = '0' + hour + ':00';
      else           hour = hour + ':00'; 
          

      // check sendtime for values in the past or future and call the error-msg
      if((document.ecards.day.value < day) && (document.ecards.month.value == month) && (document.ecards.year.value == year)){
      	if(dom) showErrorMsg('7');
    	  else    alert('Der gewählte Sendezeitpunkt liegt in der Vergangenheit');
      	time_is_valid = 0;
      }
      else if((document.ecards.day.value == day) && (document.ecards.month.value == month) && (document.ecards.year.value == year) && (document.ecards.time.value <= hour)){
      	if(dom) showErrorMsg('7');
    	  else    alert('Der gewählte Sendezeitpunkt liegt in der Vergangenheit');
      	time_is_valid = 0;
      }
      else if((document.ecards.month.value < month) && (year == document.ecards.year.value)){
      	if(dom) showErrorMsg('7');
    	  else    alert('Der gewählte Sendezeitpunkt liegt in der Vergangenheit');
      	time_is_valid = 0;
      }
      else if(((document.ecards.day.value > day) && (document.ecards.month.value >= month) && (year < document.ecards.year.value)) || ((document.ecards.month.value > month) && (year < document.ecards.year.value))){
      	if(dom) showErrorMsg('8');
    	  else    alert('Der gewählte Sendezeitpunkt liegt über ein Jahr in der Zukunft.<br /> Der spätmöglichste Sendezeitpunkt ist der <?php echo $latest_time; ?>.');
      	time_is_valid = 0;
      }
      else if((document.ecards.day.value <= day) && (year < document.ecards.year.value) && (document.ecards.month.value >= month) && (document.ecards.time.value >= hour)){
      	if(dom) showErrorMsg('8');            
    	  else    alert('Der gewählte Sendezeitpunkt liegt über ein Jahr in der Zukunft.<br /> Der spätmöglichste Sendezeitpunkt ist der <?php echo $latest_time; ?>.');
      	time_is_valid = 0;
      }

      // validate the date and call the error-msg
      else if((document.ecards.month.value == 2) && (document.ecards.day.value > 29)){
        if(dom) showErrorMsg('10');
    	  else    alert('Der gewählte Sendezeitpunkt ist ungültig! Das angegebene Datum existiert nicht.');
      	time_is_valid = 0;
      }
      else if((document.ecards.month.value == (4||6||9||11)) && (document.ecards.day.value > 30)){
        if(dom) showErrorMsg('10');
    	  else    alert('Der gewählte Sendezeitpunkt ist ungültig! Das angegebene Datum existiert nicht.');
      	time_is_valid = 0;
      }
      else {
        time_is_valid = 1;
      }
    }

//-----------------------------------------------------------------------------
//  check for valid submit conditions and set the value of the action attribute
//-----------------------------------------------------------------------------
    if(fields_are_valid && r_email_is_valid && s_email_is_valid && time_is_valid){
      // the next 3 lines are the main lines of this script
      // remember to leave action field blank when defining the form
      //script_url = "http://cms.guj.de/iw-mount/iwstore2/main/geo2/WORKAREA/redaktion/htdocs/GEO/fotografie/e-cards/ecard.php"
      script_url = "http://www.geo.de/GEO/fotografie/e-cards/ecard.php"
      if(target == 0){
      	 document.ecards.action=script_url+"?preview=1";
      	 document.ecards.submit();
      	 }
      if(target == 1){
      	document.ecards.action=script_url+"?save=1";
      	document.ecards.submit();
      }
      if(target == 2){
      	document.ecards.action=script_url+"?changecard=1";
      	document.ecards.submit();
      }
      // options for GEOPostkarten
      if(target == 3){
      	document.ecards.action=script_url+"?save=1&geopostcard=1";
      	document.ecards.submit();
      }
      if(target == 4){
      	 document.ecards.action=script_url+"?preview=1&geopostcard=1";
      	 document.ecards.submit();
      }
    }
  }  
  
  
