// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
$.ajaxSetup({ "beforeSend": function(xhr) { xhr.setRequestHeader("Accept", "text/javascript") } });

$.fn.enable = function(id)  { this.each(function() { $(this).attr("disabled", false).removeClass("ui-state-disabled"); }); return $(this); }
$.fn.disable = function(id) { this.each(function() { $(this).attr("disabled", true).addClass("ui-state-disabled"); }); return $(this); }

$(document).ready(function(){
  $(".datepicker").datepicker({ dateFormat: "dd/mm/yy"});
  $("#ajax_loading").hide();

  if(oldBrowser()) {
    $("#browser_warning").html("This version of " + browserName() + " (" + browserVersion() + ") is not fully supported. Please upgrade to " + browserMinVersionRequired() + " for a better user experience.");
    $("#browser_warning").show();
  }

  $(".edit_link a").click(function(){ 
    field = $(this).attr('rel');
    $(this).parent().hide();
    $("#static_" + field).hide();
    $("#editable_" + field).fadeIn();
    return false;
  });
  $("select.spec_option").change(function(){
    text_field = $("#job_" + $(this).attr("name"));
    if($(this).val() != '' && this.options[0].value == '') {
      this.remove(0);
    }
    if($(this).val() == 'Other') {
      text_field.fadeIn();
    } else {
      text_field.val($(this).val());
      text_field.hide()
    }
  });
  $(".option .spec_option").click(function(){
    text_field = $("#job_" + $(this).attr("name"));
    if($(this).val() == 'Other') {
      text_field.fadeIn();
    } else {
      text_field.val($(this).val());
      text_field.hide()
    }
    return true;
  });
  $(".check .spec_option").click(function(){
    text_field = $("#job_" + $(this).attr("name"));
    text_value = '';
    $(".check .spec_option[name=" + $(this).attr("name") + "]").each(function() {
      label = $("label[for=" + $(this).attr('id') + "]")
      if($(this).attr('checked')) {
        if(text_value != '') {
          text_value += ', ';
        }
        text_value = text_value + label.text();
      }
    });
    text_field.val(text_value);
    return true;
  });
	$.jgrid.defaults = $.extend($.jgrid.defaults,{
    datatype: 'xml',
    mtype: 'GET',
    hidegrid: false,
    viewrecords: true,
    pager: jQuery("#contents_footer"),
    pginput: true,
    pgtext: ' of ',
    rowNum: 10,
    rowList: [5,10,20,50,100],
	  sortascimg: 'sort_asc.png',
	  sortdescimg: 'sort_desc.png',
    firstimg: 'icon_first.png',
    lastimg: 'icon_last.png',
    previmg: 'icon_prev.png',
    nextimg: 'icon_next.png',
    imgpath: '/images/themes/' + CURRENT_THEME,
    loadui: 'disable',
    height: 'auto',
    shrinkToFit: true,
    beforeRequest: function() { $("#ajax_loading").fadeIn();  },
    loadComplete:  function() { $("#ajax_loading").fadeOut(); },
    gridComplete:  function() {
      pager = $("#" + this.id).getGridParam("pager");
      if(pager) {
        $(pager).children(".pager_hack").remove();
        $(pager).children("select.selbox").before("<span class='pager_hack' style='margin-left: 20px'>Items per page:</span>");
      }
      $(".file_link").click(function() { popup = false; });
    }
  });
});

function oldBrowser() {
  return ($.browser.msie && $.browser.version < "7.0") || ($.browser.mozilla && $.browser.version < "1.9");
}

function browserName() {
  if($.browser.msie)    { return "Internet Explorer"; }
  if($.browser.mozilla) { return "Mozilla Firefox";   }
  if($.browser.webkit)  { return "Safari or Chrome";  }
  if($.browser.safari)  { return "Safari";            }
  if($.browser.opera)   { return "Opera";             }

  return "Unknown Browser";
}

function browserVersion() {
  return $.browser.version;
}

function browserMinVersionRequired() {
  if($.browser.msie)    { return "Internet Explorer v7.0 or higher"; }
  if($.browser.mozilla) { return "Mozilla Firefox v3.0 or higher";   }

  return "";
}

/* Rails-like number_to_currency functions in Javascript, by Barry Hess - http://blog.bjhess.com/ */

function number_to_currency(number, options) {
  try {
    var options   = options || {};
    var precision = options["precision"] || 2;
    var unit      = options["unit"] || "$";
    var separator = precision > 0 ? options["separator"] || "." : "";
    var delimiter = options["delimiter"] || ",";
  
    var parts = parseFloat(number).toFixed(precision).split('.');
    return unit + number_with_delimiter(parts[0], delimiter) + separator + parts[1].toString();
  } catch(e) {
    return number
  }
}

function number_with_delimiter(number, delimiter, separator) {
  try {
    var delimiter = delimiter || ",";
    var separator = separator || ".";
    
    var parts = number.toString().split('.');
    parts[0] = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1" + delimiter);
    return parts.join(separator);
  } catch(e) {
    return number
  }
}
