/* $.pmws.post("addemp",formDataJSon,onAddEmpFunc); */
jQuery.pmws = {
  post: function(aId, data, callback) {
    var TickId = $("input[name$='__TickId']").val();
    var FormName = $("input[name$='__FORMNAME']").val();
    var url = FormName + "?Ajax=" + aId + "&__FORMNAME=" + FormName + "&__TickID=" + TickId;
    $.ajax({
        type: "POST",
        url: url,
        data: data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: callback,
        error:function (xhr, ajaxOptions, thrownError) {
          alert("http error:" + xhr.status);
          alert(thrownError);
        }
      });
  },
  get: function(aId, aAjaxModule, data, callback) {
    var url = "ewfTemplate?Ajax=" + aId + "&AjaxModule=" + aAjaxModule;
    $.ajax({
        type: "POST",
        url: url,
        data: data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: callback,
        error:function (xhr, ajaxOptions, thrownError) {
          alert("http error:" + xhr.status);
          alert(thrownError);
        }
      });
  },
  test: function() {
    alert("f�lkdf�dlkf");
  },
  InitAjaxCursorChange: function () {
    $("html").bind("ajaxStart",
      function() {
        if ($("#ajaxloader").length == 0) {
          $(document.body).append('<div id="ajaxloader"></div>');
          var $b = $("#ajaxloader");
          $b.css("position", "absolute");
          $b.css("top", "50%");
          $b.css("left", "50%");
          $b.css("width", "32px");
          $b.css("height", "32px");
          $b.css("margin-top", "-16px");
          $b.css("margin-left", "-16px");
          $b.css("background-image", "url('ajax-loader.gif')");
          $b.css("z-index", "999");
        }
        $("#ajaxloader").show();
      }).bind("ajaxStop", function() {
        $("#ajaxloader").hide();
      });
  }
};

jQuery.fn.pmwsAutoComplete = function(aUrl, options) {
  var opts = jQuery.extend({}, jQuery.fn.pmwsAutoComplete.defaults, options);
  return this.each(function() {
    var $element = jQuery(this);
    var aAjaxId = $element.attr("id");
    if (!aAjaxId) {
      aAjaxId = $element.attr("name")
    }
    var aAjaxSource = {
      source: function(request, response) {

        var postOpts = {name: aAjaxId, value: request.term};
        postOpts = jQuery.extend(postOpts, opts.extraParams);
        /* alert(opts.module); */
        if (opts.module != "") {
          /* alert('Yes'); */
          jQuery.pmws.get("autocomplete", opts.module, postOpts,
            function(data) {
              if (data.error) alert("Ajax error:" + data.error);
              response($.map(data.value.values, function(item) {
                if (opts.postLabel) {
                  return {
                    label: item.label,
                    value: item.label
                  }
                } else {
                  return {
                    label: item.label,
                    value: item.value
                  }
                }

              }))
            })
        }
        else {
          jQuery.pmws.post("autocomplete", postOpts,
            function(data) {
              if (data.error) alert("Ajax error:" + data.error);
              response($.map(data.value.values, function(item) {
                if (opts.postLabel) {
                  return {
                    label: item.label,
                    value: item.label
                  }
                } else {
                  return {
                    label: item.label,
                    value: item.value
                  }
                }
              }))
            })
        }
      }
    };
    $element.autocomplete(jQuery.extend({}, opts, aAjaxSource))
  })
}
jQuery.fn.pmwsAutoComplete.defaults = {
  minLength: 1,
  module:"",
  postLabel:false
}
jQuery.fn.pmwsAutoCompleteTable = function(aTableName, options) {
  options.module = aTableName;
  jQuery.extend(true, options, {extraParams: {tablename: aTableName}});
  jQuery(this).pmwsAutoComplete('', options);
}

jQuery.fn.pmwsFormatTable = function() {
  return this.each(function() {
    var $t = jQuery(this);
    $t.addClass('dmEWFscTbl');
    $t.find('thead tr').addClass('dmEWFscTblHead');
    $t.find('tbody tr:even').addClass('dmEWFscTblAltItem');
    $t.find('tbody tr').mouseover(
      function() {
        $(this).addClass('dmEWFscTblItemH ')
      }).mouseout(function() {
        $(this).removeClass('dmEWFscTblItemH ');
      });
  })
}

jQuery.fn.pmwsExport = function(options) {
  jQuery.pmws.InitAjaxCursorChange();
  var opts = jQuery.extend({}, jQuery.fn.pmwsExport.defaults, options);
  /* opts.title+=" <a href='#' onclick='$('+$(self).getSelector()+').pmwsExport({type:jpg})' > Vis som jepg</a>" */

  var sHtml = $('<html><head>');
  sHtml += $('head').html();
  if (opts.addStyles) {
    sHtml += '<style type="text/css">';
    for (var i=0; i < opts.addStyles.length; i++) sHtml += opts.addStyles[i];
    sHtml += "</style>";
  }
  sHtml += '</head><body>';
  if (opts.addToBodyBefore)
    for (var i=0; i < opts.addToBodyBefore.length; i++) sHtml += opts.addToBodyBefore[i];
  this.each(function() {
    sHtml += $(this).html()
  });
  if (opts.addToBodyAfter)
    for (var i=0; i < opts.addToBodyAfter.length; i++) sHtml += opts.addToBodyAfter[i];
  sHtml += '</body></html>'
  opts.data = escape(sHtml); // Using opts as the ajax params.

  jQuery.pmws.get('export', '', opts,
    function(data) {
      if (opts.useColorBox)
        $.colorbox({width:opts.width, height:opts.height,title:opts.title, iframe:true, href:data.value.file});
      else
        window.location = (data.value.file);
    }
  );
}
jQuery.fn.pmwsExport.defaults = {
  type: 'pdf',
  width: '900px',
  height:"98%",
  title: "ScreenExport &copy;Gitek AS",
  addStyles: [],
  addToBodyBefore: [],
  addToBodyAfter: [],
  useColorBox: true,
  xlsTemplateFile: "",
  xlsUseTemplateFormat: true,
  xlsTemplateRow: 2, /* Start row in Excel template where results will be copied to. */
  xlsGeneratedRow: 1 /* Start row in Excel result, to start copying to template. */
}

jQuery.fn.pmwsIFrame = function(url, selector, callback) {
  return this.each(function() {
    var $a = jQuery(this);
    $a.html('<img src="ajax-loader.gif" />');
    $($a).append('<iframe id="tmpIFrame" width="100%" height="100%" scrolling="no" style="border: none">');
    $('iframe#tmpIFrame').attr('src', url);
    $('iframe#tmpIFrame').load(function()
    {
      if (!selector) {selector='body'};
      var sDocument = $(this.contentDocument).find(selector);
      $('iframe#tmpIFrame').remove();
      $a.html(sDocument.html());
      callback(this);
    });
  })
}

function pmwsSetTransMode(mode) {
  jQuery.pmws.InitAjaxCursorChange();
  jQuery.pmws.get('setTransMode', '', {mode: (mode ? true : false) },
    function(data) {
      // Refresh page.
      if (navigator.appName=="Microsoft Internet Explorer")
        window.history.go(0);
      else
        window.location.reload();
    }
  );
}

