/* status array: keep track of menu status
   status[obj.id] = [ [ 'appearing', 'appeared' ], 
                      [ 'hiding', 'hidden' ] ]
   flow:
   initializing: 
   status[obj.id] = [ [0,0],[0,0] ];
   
   appearing:
   status[obj.id] = [ [1,0],[0,0] ];
   
   appeared:
   status[obj.id] = [ [0,1],[0,0] ];
   
   hiding:
   status[obj.id] = [ [0,0],[1,0] ];
   
   hidden:
   status[obj.id] = [ [0,0],[0,1] ];
*/
var mstatus = new Array();

function set_menu_status(id,mode) {
   switch(mode) {
      case 'hidden':
         mstatus[id] = [ [0,0],[0,1] ];
         break;
      case 'hiding':
         mstatus[id] = [ [0,0],[1,0] ];
         break;
      case 'appeared':
         mstatus[id] = [ [0,1],[0,0] ];
         break;
      case 'appearing':
         mstatus[id] = [ [1,0],[0,0] ];
         break;
      default: 
         alert('no valid menu status choosen');
      }         
}

function init_page() {
   set_content_bg();
   var uls = $("nav").getElementsByTagName("ul");
   for ( var i=0; i<uls.length; i++ ) {
      if ( uls[i].className == 'head' ) {
         // create the onmouseover function
         uls[i].onmouseover = function(e) {
            if (!e) e = window.event;
            if(checkMouseEnter(this,e)) {
               show_sub(this);
               switch_img(this,1);
               switch_title(this,1);
            }
         }
         
         // create the onmouseout function
         uls[i].onmouseout = function(e) {
            if (!e) e = window.event;
            if (checkMouseLeave(this,e) ) {
               hide_sub(this,1);
               switch_img(this,0);
               switch_title(this,0);
            }
         }
      }
   }
}

// set the css background image from the content
function set_content_bg() {
   var img = '2col.gif';

   // set regexpressions
   var r2col = new RegExp("^(jpc_(2col|contact))$");
   var r3col = new RegExp("^(jpc_(home|3col))$");
   var rnews = new RegExp("^(jpc_3col_news)$");
   
   if ( r2col.test(layout) ) {
      img = '2col.gif';
   } else if ( r3col.test(layout) ) {
      img = '3col.gif';
   } else if ( rnews.test(layout) ) {
      img = '3col_news.gif';
   }
   
   $('content').style.background = 'transparent ' 
                                 + 'url(images/css/' + img + ') '
                                 + 'repeat-y top left';   
}

// switch menu image
// obj = object acting as parent of image ( first image found in tree )
// mode = 0 or 1, where 1 = rollover and 0 = default
function switch_img(obj,mode) {
   var img = obj.getElementsByTagName("img").item(0);
   if ( mode == 1 ) {
      img.src = img.src.replace(/nav_(\d)a/,"nav_$1b");
   } else {
      img.src = img.src.replace(/nav_(\d)b/,"nav_$1a");
   }
}

// switch menu title
// obj = object acting as parent of menu title
// mode = 0 or 1, where 1 = rollover and 0 = default
function switch_title(obj,mode) {
   var mtitle = obj.getElementsByTagName("a").item(1);
   if ( mode == 1 ) {
      mtitle.className += ' nav_title_select';
   } else {
      mtitle.className = mtitle.className.replace(new RegExp(" nav_title_select\\b"),"");
   }
}

function hide_others(obj) {
   for ( var i in mstatus ) {
      if ( i != obj.id && document.getElementById(i) ) {
         hide_sub(document.getElementById(i),1);
      }
   }
}


function show_sub(obj) {
   if (  obj.id == '' ) {
      obj.id = 'menu_' + new Date().getTime().toString();
      set_menu_status(obj.id,'hidden');
   }
   hide_others(obj);
   
   var ul = obj.getElementsByTagName("ul").item(0);

   if ( !ul ) return false;
   
   if ( menu_effect && menu_effect == 1 ) {         
      // check if this object hidden
      if ( mstatus[obj.id][1][1] == 1 ) {
         new Effect.Appear(ul,
                  { beforeStart: function(effect) {
                      effect.setOpacity(0);
                      Element.show(effect.element); 
                      set_menu_status(obj.id,'appearing');
                      
                   },
                afterFinish: function(effect) {
                
                set_menu_status(obj.id,'appeared');
                 } } );
      }
   } else { 
      ul.style.display = 'block';
   }
}

function hide_sub(obj,force) {
   var ul = obj.getElementsByTagName("ul").item(0);
   
   if ( !ul ) return false;
   
   if ( menu_effect && menu_effect == 1 ) {
   
      if ( ( mstatus[obj.id][0][1] == 1 ) || force ) {
         new Effect.Fade(ul, 
              { beforeStart: function(effect) {
                   set_menu_status(obj.id,'hiding')
                   },
                afterFinish: function(effect) {
                   set_menu_status(obj.id,'hidden');
                   Element.hide(effect.element);
                   effect.setOpacity(1);
                   } } );
      }   
   } else {
      ul.style.display = 'none';
   }
}

function msg(message) {
   document.getElementById('status_dump').innerHTML += '<br />' + message;
}

function dump_status() {
   var message = 'dumping status<br />';
   for ( i in mstatus ) {
      message += 'key: ' + i + ' value: ' + mstatus[i] + '<br />';
   }
   document.getElementById('status_dump').innerHTML += message;
}

function containsDOM(container, containee) {
  var isParent = false;
  do {
    if ((isParent = container == containee))
      break;
    containee = containee.parentNode;
  }
  while (containee != null);
  return isParent;
}

function checkMouseEnter(element, e) {
  if (element.contains && e.fromElement ) {
    return !element.contains(e.fromElement);
  } else if (e.relatedTarget) {
    return !containsDOM(element, e.relatedTarget);
  }
}

function checkMouseLeave(element, e) {
  if (element.contains && e.toElement) {
    return !element.contains(e.toElement);
  } else if (e.relatedTarget) {
    return !containsDOM(element, e.relatedTarget);
  }
}



/* -------------------------------------------------------------------------- */
/* 
 * Initialise the contact form (basicly set the language)
 *
 * -------------------------------------------------------------------------- */
function init_contact_form() {
   // 'label_id', [ 'english label', 'dutch label' ],
   var labels = new Array( 
         [ 'l_name',      [ 'Name',      'Naam'      ] ],
         [ 'l_telephone', [ 'Telephone', 'Telefoon'  ] ],
         [ 'l_email',     [ 'Email',     'Email'     ] ],
         [ 'l_subject',   [ 'Subject',   'Onderwerp' ] ],
         [ 'l_message',   [ 'Message',   'Bericht'   ] ],
         [ 'legend',      [ '* = Required fields', '* = Verplichte velden' ] ]
      );
   
   // The array position for the language ( defaults to english )
   var ap = 0;
      
   if ( lang == 'nl' ) {
      ap = 1;
   }
   
   set_contact_title();
   
   // set the innerhtml
   for ( var i=0; i<labels.length; i++ ) {
      $(labels[i][0]).innerHTML = labels[i][1][ap];
   }
   
   // set the button
   if ( lang == 'nl' ) {
      $('submit').value = 'Verstuur >>'
   } else {
      $('submit').value = 'Send >>'
   }
}
/* -------------------------------------------------------------------------- */


/* -------------------------------------------------------------------------- */
function set_contact_title() {
   if ( lang == 'nl' ) {
      $('l_title').innerHTML = 'Contactformulier';
   } else {
      $('l_title').innerHTML = 'Contact form';
   }
}
/* -------------------------------------------------------------------------- */


/* -------------------------------------------------------------------------- */
/* 
 *
 * -------------------------------------------------------------------------- */
function check_contact(form) {
// #ff9999
   var fields = new Array(
      [ 'name',      1 ],
      [ 'telephone', 0 ], 
      [ 'email',     1 ],
      [ 'subject',   1 ],
      [ 'message',   1 ]
   );
   
   var is_error = 0;
   
   for ( var i=0; i<fields.length; i++ ) {
      if (  ( $(fields[i][1]) == 1 ) && ( $(fields[i][0]).value == '' ) ) {
         blink_field(fields[i][0]);
         is_error = 1;
      } else {
         $(fields[i][0]).style.backgroundColor = 'white';
      }
   }
      
   if ( is_error == 1 ) {
      init_error_message()
      return false;
   } else {
      var wid = document.createElement("input");
      wid.setAttribute("type","hidden");
      wid.setAttribute("name","website_id");
      wid.setAttribute("value",website_id);
      form.appendChild(wid);
      return true;
   }
}
/* -------------------------------------------------------------------------- */

/* -------------------------------------------------------------------------- */
function meet_and_learn_links() {
   if ( ml_ids.length == 0 ) { return ; }
   var links = $('nav').getElementsByTagName('a');
   for ( var i=0; i<links.length; i++ ) {
      for ( var j=0; j<ml_ids.length; j++ ) {
         var r = new RegExp("(website_id=|/)(" + ml_ids[j] + ")$")
         var match = links[i].getAttribute('href').match(r)       
         if ( match ) {
            links[i].setAttribute("href", '/?website_id=' + match[2] + '&action=meet_and_learn' )
         }  
      }
   }
}

function check_meat_and_learn(form) {
// #ff9999
   var fields = new Array(
      [ 'gender',            1 ],            
      [ 'first_name',        1 ],        
      [ 'last_name',         1 ],    
      [ 'company',           1 ],           
      [ 'branche',           0 ],           
      [ 'function',          1 ],          
      [ 'phone',             1 ],             
      [ 'mobile',            0 ],            
      [ 'email',             1 ],             
      [ 'company_street_nr', 1 ], 
      [ 'company_zip_city',  1 ],  
      [ 'ml_code',           1 ],           
      [ 'ml_date',           1 ],           
      [ 'remarks',           0 ]
//      [ 'newsletter',        1 ]

   );
   
   var is_error = 0;
   
   for ( var i=0; i<fields.length; i++ ) {
      if (  ( $(fields[i][1]) == 1 ) && ( $(fields[i][0]).value == '' ) ) {
         blink_field(fields[i][0]);
         is_error = 1;
      } else {
         $(fields[i][0]).style.backgroundColor = 'white';
      }
   }
      
   if ( is_error == 1 ) {
      init_error_message()
      return false;
   } else {
      var wid = document.createElement("input");
      wid.setAttribute("type","hidden");
      wid.setAttribute("name","website_id");
      wid.setAttribute("value",website_id);
      form.appendChild(wid);
      return true;
   }
}
/* -------------------------------------------------------------------------- */

/* -------------------------------------------------------------------------- */
function blink_field(field) {
   if ( $(field) ) {
      $(field).style.backgroundColor = '#ebcacb';
      $(field).onclick = function() { this.style.backgroundColor = 'transparent' };
      new Effect.Appear(field);      
   } else {
      alert("field does not exist: " + field)
   }
}
/* -------------------------------------------------------------------------- */

/* -------------------------------------------------------------------------- */
function init_error_message() {
   var message = 'Please check and re-send as the form was filled out incorrectly!';
   
   if ( lang == 'nl' ) {
      message = 'Onderstaande formulier bevat fouten, controleer deze en probeer het opnieuw!';
   }
   
   $('error_msg').innerHTML = message;
   new Effect.Appear('error_msg');
   new Effect.Shake('c');
}
/* -------------------------------------------------------------------------- */


/* -------------------------------------------------------------------------- */
function init_sent_message() {

   set_contact_title();


   var message = 'Thank you for your interest, we will contact you as soon as possible.';
   
   if ( lang == 'nl' ) {
      message = 'Bedankt voor uw interesse, wij zullen zo snel mogelijk contact met u opnemen.';
   }
   
   $('sent_message').innerHTML = message;
   new Effect.Appear('sent_message');
}
/* -------------------------------------------------------------------------- */

/* -------------------------------------------------------------------------- */
function init_ml_sent_message() {

   set_contact_title();


   var message = 'Thank you for your registration. We will send you a confirmation and further details.';
   
   if ( lang == 'nl' ) {
      message = 'Bedankt voor uw registratie. Wij zullen u een bevestiging met verdere details sturen';
   }
   
   $('sent_message').innerHTML = message;
   new Effect.Appear('sent_message');
}
/* -------------------------------------------------------------------------- */

      


