function clearText(field)
{
 if (field.defaultValue==field.value)
 field.value = ""
}

document.observe('dom:loaded', function() 
 {
  function mail_list_join(event) 
  {
   Event.stop(event);
   var oOptions = {method: "POST",
                   parameters: Form.serialize("mail_list_form"),
                   asynchronous: true,
                   onFailure: function (oXHR) {$('mail_list_feedback').update(oXHR.statusText);},
                   onLoading: function (oXHR) {$('mail_list_feedback').update('Hetki ...');},
                   onSuccess: function(oXHR) {$('mail_list_feedback').update(oXHR.responseText);}};

   var oRequest = new Ajax.Updater({success: oOptions.onSuccess.bindAsEventListener(oOptions)}, 
                                    "/mail_list_join", oOptions);

   $('mail_list_form').email.value="";
  }  
  Event.observe('join_button', 'click', mail_list_join, false);
});

document.observe('dom:loaded', function() 
 {
  function mail_list_unjoin(event) 
  {
   Event.stop(event);
   var oOptions = {method: "POST",
                   parameters: Form.serialize("mail_list_form"),
                   asynchronous: true,
                   onFailure: function (oXHR) {$('mail_list_feedback').update(oXHR.statusText);},
                   onLoading: function (oXHR) {$('mail_list_feedback').update('Hetki ...');},
                   onSuccess: function(oXHR) {$('mail_list_feedback').update(oXHR.responseText);}};

   var oRequest = new Ajax.Updater({success: oOptions.onSuccess.bindAsEventListener(oOptions)}, 
                                    "/mail_list_unjoin", oOptions);
   $('mail_list_form').email.value="";
  }  
  Event.observe('unjoin_button', 'click', mail_list_unjoin, false);
});


document.observe('dom:loaded', function() 
 {
  function request(event) 
  {
   Event.stop(event);
   var oOptions = {method: "POST",
                   parameters: Form.serialize("request_form"),
                   asynchronous: true,
                   onFailure: function (oXHR) {$('request_feedback').update(oXHR.statusText);},
                   onLoading: function (oXHR) {$('request_feedback').update('Hetki ...');},
                   onSuccess: function(oXHR) {$('request_feedback').update(oXHR.responseText);}};

   if ($('request_form').name.value=="" || $('request_form').phone.value=="Puhelinnumero arkisin klo. 9-17" || $('request_form').phone.value=="" || $('request_form').destination.value=="" || $('request_form').time.value=="Sopiva lähtöpäivä ja matkan kesto" || $('request_form').time.value=="" || $('request_form').pax.value=="")
   {
    var oRequest = new Ajax.Updater({success: oOptions.onSuccess.bindAsEventListener(oOptions)},"/request_response_error", oOptions);
   }
   else
   { 
    var oRequest = new Ajax.Updater({success: oOptions.onSuccess.bindAsEventListener(oOptions)},"/request_response", oOptions);
    $('request_form').name.value="";
    $('request_form').phone.value="";
    $('request_form').email.value="";
    $('request_form').time.value="";
    $('request_form').pax.value="";
    $('request_form').comment.value="";
   }
  }

  Event.observe('request_button', 'click', request, false);
});





document.observe('dom:loaded', function() 
 {
  function request_grp(event) 
  {
   Event.stop(event);
   var oOptions = {method: "POST",
                   parameters: Form.serialize("request_grp_form"),
                   asynchronous: true,
                   onFailure: function (oXHR) {$('request_grp_feedback').update(oXHR.statusText);},
                   onLoading: function (oXHR) {$('request_grp_feedback').update('Hetki ...');},
                   onSuccess: function(oXHR) {$('request_grp_feedback').update(oXHR.responseText);}};

   if ($('request_grp_form').name.value=="" || $('request_grp_form').phone.value=="Puhelinnumero arkisin klo. 9-17" || $('request_grp_form').phone.value=="" || $('request_grp_form').destination.value=="Ensisijainen kohde tai kohteet" || $('request_grp_form').destination.value=="" || $('request_grp_form').time.value=="Sopiva lähtöpäivä ja matkan kesto" || $('request_grp_form').time.value=="" || $('request_grp_form').pax.value=="Henkilöä yhteensä matkustamassa" || $('request_grp_form').pax.value=="")
   {
    var oRequest = new Ajax.Updater({success: oOptions.onSuccess.bindAsEventListener(oOptions)},"/request_response_error", oOptions);
   }
  else
  {
   var oRequest = new Ajax.Updater({success: oOptions.onSuccess.bindAsEventListener(oOptions)},"/request_grp_response", oOptions);
   $('request_grp_form').name.value="";
   $('request_grp_form').phone.value="";
   $('request_grp_form').time.value="";
   $('request_grp_form').destination.value="";
   $('request_grp_form').pax.value="";
   $('request_grp_form').comment.value="";
  }
 }  
 Event.observe('request_grp_button', 'click', request_grp, false);
});







/* Relies on the Prototype framework */

function load_map(id,latitudes,longitudes,tag_texts,main_marker,zom)
{
 /* Make main location */
 var pos=new google.maps.LatLng(latitudes[main_marker],longitudes[main_marker]); 
 var opt={zoom:zom,center:pos,mapTypeId:google.maps.MapTypeId.ROADMAP};
 var map=new google.maps.Map($(id),opt);
 var mark=new google.maps.Marker({position:pos,map:map,title:tag_texts[main_marker],icon:'/images/map_mark1.png'});

 /* Add markers */
 for (var i=0;i<latitudes.length;i++)
 {
  if (i!=main_marker)
  {
   pos=new google.maps.LatLng(latitudes[i],longitudes[i]);
   mark=new google.maps.Marker({position:pos,map:map,title:tag_texts[i],icon:'/images/map_mark2.png'});
  }
 }
}


function gallery_animate(id,pictures,action)
{
 /* Animate a gallery by rotating the pictures passed
 /* pictures: CSV string of picture URLs, must be at least URLs pictures long */
 /* current picture in document at $(id).src must exist in 'pictures' */

 var curr_picture=$(id).src;
 var pict_arr=pictures.split(",");
 var indices=pict_arr.indexOf(curr_picture);

 /* Figure out whitch picture is visible now */
 /* $(id).src contains the complete url of the picture in the tag including server etc. */
 /* In order to find out which picture is visible, we need to find the shorter picture URLs */
 /* in $(id).src, not the other way around. */

 var index=-1
 for (var i=0;i<pict_arr.length;i++)
 {
  if (curr_picture.indexOf(pict_arr[i])>-1) index=i;
 }

 switch(action)
 {
  case 1: /* previous pic */
   if (index>0) 
   { $(id).src = pict_arr[index-1]; }
   else
   { $(id).src = pict_arr[pict_arr.length-1]; }
  break;

  case 2: /* next pic */
   if (index<pict_arr.length-1)
   { $(id).src = pict_arr[index+1]; }
   else
   { $(id).src = pict_arr[0]; }
  break;
 }
}


function showElement()
{
 var argv = showElement.arguments;
 for (var i = 0; i < argv.length; i++) 
 {
  $(argv[i]).style.display = 'block';
  /* $(elementId).show() does not presently work as the Prototype framework */
  /* does not work with "display: none/inline" if these CCS tags are in an external file */
  /* "display: none/inline" only work as inline tag */
 }
}

function hideElement()
{
 var argv = hideElement.arguments;
 for (var i = 0; i < argv.length; i++) 
 {
  $(argv[i]).hide();
 }
}

function switchElement(offElements,onElements)
{
 /* Turn off/on a pile of elements from 2 arrays */
 /* This is just a function to compact successive hide/show functions into one call */

 for (var i = 0; i < offElements.length; i++) 
 {
  $(offElements[i]).hide();
 }
 for (var i = 0; i < onElements.length; i++) 
 {
  $(onElements[i]).style.display = 'block';
 }
}


