/**
 * ajax - wrapper based on prototype to do custom ajax calls
 * @param request {boolean} 'post' or true=POST, 'get' or false=GET
 * @param action {string} url to call
 * @param option {string} optional info to send with call
 * @param e {string} html tag id where to send response
 * @param form {string} if we are POSTing name of form
 * @param confirm {string} optional message to request confirmation from user
 * @param execute {string} optional extra js function to execute after this request is complete
 * @return false
 */
function ajax (request, action, option, e, form, confirm, execute, exec_params)
{
       // check GET params
       params = window.location.href.toQueryParams();
       // by default with don't need confirmation
       var go = true;
       if (confirm)
       {
               go = window.confirm(confirm);
       }
       // inject our base params
       parameters = new Hash();
   parameters.set('option', option);
       if (params['lang'])
       {
               parameters.set('lang', params['lang']);
       }
   else
   {
       parameters.lang = '';
   }
       // our followup function needs to execute with params
       if (exec_params)
       {
               execute = String(execute+'("'+exec_params+'")');
       }
      
       // process regular get requests
       if ((!request || request == 'get' || request == 'geth') && go)
       {
               var myAjax = new Ajax.Request(action, {
                       method: 'get',
                       parameters: parameters,
                       onComplete: function (transport) {
                               ajaxHideLoadingImage(e);
                               $(e).innerHTML = transport.responseText;
                               if (execute)
                               {
                                       eval(execute);
                               }
                       }
               });
       }
       // process form post requests
       else if ((request || request == 'post') && go)
       {
               if ($(form))
               {
           // add hidden element for option
           var o = document.createElement('INPUT');
           o.setAttribute('type', 'hidden');
           o.setAttribute('name', 'option');
           o.setAttribute('value', option);
               $(form).appendChild(o);
           // submit form
                       $(form).request({
                               onComplete: function (transport) {
                                       ajaxHideLoadingImage(e);
                                       $(e).innerHTML = transport.responseText;
                                       if (execute)
                                       {
                                               eval(execute);
                                       }
                               }
                       });
               }
               else
               {
           
                       if (execute)
                       {
                               eval(execute);
                       }
               }
       }
       return false;
}