function less_json_eval(json){return eval('(' +  json + ')')}  

function jq_defined(){return typeof(jQuery) != "undefined"}

function less_get_params(obj){
   
  if (jq_defined()) { return obj }
  if (obj == null) {return '';}
  var s = [];
  for (prop in obj){
    s.push(prop + "=" + obj[prop]);
  }
  return s.join('&') + '';
}

function less_merge_objects(a, b){
   
  if (b == null) {return a;}
  z = new Object;
  for (prop in a){z[prop] = a[prop]}
  for (prop in b){z[prop] = b[prop]}
  return z;
}

function less_ajax(url, verb, params, options){
   
  if (verb == undefined) {verb = 'get';}
  var res;
  if (jq_defined()){
    v = verb.toLowerCase() == 'get' ? 'GET' : 'POST'
    if (verb.toLowerCase() == 'get' || verb.toLowerCase() == 'post'){p = less_get_params(params);}
    else{p = less_get_params(less_merge_objects({'_method': verb.toLowerCase()}, params))} 
     
     
    res = jQuery.ajax(less_merge_objects({async:false, url: url, type: v, data: p}, options)).responseText;
  } else {  
    new Ajax.Request(url, less_merge_objects({asynchronous: false, method: verb, parameters: less_get_params(params), onComplete: function(r){res = r.responseText;}}, options));
  }
  if (url.indexOf('.json') == url.length-5){ return less_json_eval(res);}
  else {return res;}
}
function less_ajaxx(url, verb, params, options){
   
  if (verb == undefined) {verb = 'get';}
  if (jq_defined()){
    v = verb.toLowerCase() == 'get' ? 'GET' : 'POST'
    if (verb.toLowerCase() == 'get' || verb.toLowerCase() == 'post'){p = less_get_params(params);}
    else{p = less_get_params(less_merge_objects({'_method': verb.toLowerCase()}, params))} 
     
     
    jQuery.ajax(less_merge_objects({ url: url, type: v, data: p, complete: function(r){eval(r.responseText)}}, options));
  } else {  
    new Ajax.Request(url, less_merge_objects({method: verb, parameters: less_get_params(params), onComplete: function(r){eval(r.responseText);}}, options));
  }
}
function get_lovd_downloads_path(verb){ return '/downloads/get_lovd';}
function get_lovd_downloads_ajax(verb, params, options){ return less_ajax('/downloads/get_lovd', verb, params, options);}
function get_lovd_downloads_ajaxx(verb, params, options){ return less_ajaxx('/downloads/get_lovd', verb, params, options);}
function formatted_get_lovd_downloads_path(format, verb){ return '/downloads/get_lovd.' + format + '';}
function formatted_get_lovd_downloads_ajax(format, verb, params, options){ return less_ajax('/downloads/get_lovd.' + format + '', verb, params, options);}
function formatted_get_lovd_downloads_ajaxx(format, verb, params, options){ return less_ajaxx('/downloads/get_lovd.' + format + '', verb, params, options);}
function downloads_path(verb){ return '/downloads';}
function downloads_ajax(verb, params, options){ return less_ajax('/downloads', verb, params, options);}
function downloads_ajaxx(verb, params, options){ return less_ajaxx('/downloads', verb, params, options);}
function formatted_downloads_path(format, verb){ return '/downloads.' + format + '';}
function formatted_downloads_ajax(format, verb, params, options){ return less_ajax('/downloads.' + format + '', verb, params, options);}
function formatted_downloads_ajaxx(format, verb, params, options){ return less_ajaxx('/downloads.' + format + '', verb, params, options);}
function new_download_path(verb){ return '/downloads/new';}
function new_download_ajax(verb, params, options){ return less_ajax('/downloads/new', verb, params, options);}
function new_download_ajaxx(verb, params, options){ return less_ajaxx('/downloads/new', verb, params, options);}
function formatted_new_download_path(format, verb){ return '/downloads/new.' + format + '';}
function formatted_new_download_ajax(format, verb, params, options){ return less_ajax('/downloads/new.' + format + '', verb, params, options);}
function formatted_new_download_ajaxx(format, verb, params, options){ return less_ajaxx('/downloads/new.' + format + '', verb, params, options);}
function edit_download_path(id, verb){ return '/downloads/' + id + '/edit';}
function edit_download_ajax(id, verb, params, options){ return less_ajax('/downloads/' + id + '/edit', verb, params, options);}
function edit_download_ajaxx(id, verb, params, options){ return less_ajaxx('/downloads/' + id + '/edit', verb, params, options);}
function formatted_edit_download_path(id, format, verb){ return '/downloads/' + id + '/edit.' + format + '';}
function formatted_edit_download_ajax(id, format, verb, params, options){ return less_ajax('/downloads/' + id + '/edit.' + format + '', verb, params, options);}
function formatted_edit_download_ajaxx(id, format, verb, params, options){ return less_ajaxx('/downloads/' + id + '/edit.' + format + '', verb, params, options);}
function download_path(id, verb){ return '/downloads/' + id + '';}
function download_ajax(id, verb, params, options){ return less_ajax('/downloads/' + id + '', verb, params, options);}
function download_ajaxx(id, verb, params, options){ return less_ajaxx('/downloads/' + id + '', verb, params, options);}
function formatted_download_path(id, format, verb){ return '/downloads/' + id + '.' + format + '';}
function formatted_download_ajax(id, format, verb, params, options){ return less_ajax('/downloads/' + id + '.' + format + '', verb, params, options);}
function formatted_download_ajaxx(id, format, verb, params, options){ return less_ajaxx('/downloads/' + id + '.' + format + '', verb, params, options);}
function contact_path(verb){ return '/contact';}
function contact_ajax(verb, params, options){ return less_ajax('/contact', verb, params, options);}
function contact_ajaxx(verb, params, options){ return less_ajaxx('/contact', verb, params, options);}
