﻿var topBar = function (message) {
  $("<div />", { 'class': 'topbar', text: message }).hide().prependTo("body").slideDown('fast').delay(10000).slideUp(function () { $(this).remove(); });
};

var enableCustomMessage = function (customMessage) {
  if (null != customMessage && undefined != customMessage && "" != jQuery.trim(customMessage)) {
    $("#CustomMessageModal").dialog("open");
  };
};

var textAreaLimiterShowChars = function () {
  $("textarea[maxlength]").keyup(function () {
    var $me = $(this);
    var max = parseInt($me.attr("maxlength"));
    if ($me.val().length > max) {
      $me.val($me.val().substr(0, max));
    }

    $("#charsRemaining").html("You have " + (max - $me.val().length) + " characters remaining");
  });
};

var textAreaLimiter = function () {
  $("textarea[maxlength]").keyup(function () {
    var $me = $(this);
    var max = parseInt($me.attr("maxlength"));
    if ($me.val().length > max) {
      $me.val($me.val().substr(0, max));
    }
  });
};

var pushDownOnError = function ($defaultFocus) {
  var goDown = $("#pushDownToSeeError").val();
  if (null != goDown && undefined != goDown && "" != jQuery.trim(goDown)) {
    $("html, body").scrollTop(1000);
  }
  else {
    $defaultFocus.focus();
  }
};

var DisableCheckOnReadOnlyCheckBox = function () {
  //Hack checkboxes readonly.
  $("input:checkbox").click(function () {
    var checkBox = $(this);
    if (undefined != checkBox.attr("readonly") && null != checkBox.attr("readonly") && "" != checkBox.attr("readonly")) {
      return false;
    }
    return true;
  });
};

var disableButtonAndSubmit = function ($formId, $buttonToClick, $submitButton) {
  $buttonToClick.click(function () {
    if (!Sys.Mvc.FormContext.getValidationForForm($formId.get(0)).validate('submit').length) {
      // is valid
      $buttonToClick.attr("disabled", "disabled");
      $submitButton.click();
    }
  });
};

var disableButtonAndSubmitJqueryValidate = function ($formId, $command, $buttonToClick) {
  $buttonToClick.removeAttr("disabled", "disabled");
  $buttonToClick.click(function () {
    if ($formId.valid()) {
      //is valid
      if (null != $command && undefined != $command) {
        $command.val($buttonToClick.val()); 
      }
      $buttonToClick.attr("disabled", "disabled");
      $formId.submit();
    }
  });
};

var SetButtonCommandAndSubmitForm = function ($formId, $btn, $buttonCommandHiddenField) {
  $buttonCommandHiddenField.val($btn.val());
  $formId.submit();
};

//Alternate Row Colors On Table
var SetAlternatingRows = function ($table) {
  $table.find("tbody tr:odd").addClass("odd");
};

var PreventHtmlTag = function (e, $inputList) {
  var noFunk = /<.[^<>]*?>/g;
  $inputList.each(function () {
    if (this.value.match(noFunk)) {
      e.preventDefault();
      return false;
    }
    return true;
  });
};

var OpenLoadingWindow = function () { $("#LoadingModal").dialog('open'); };
var CloseLoadingWindow = function () { $("#LoadingModal").dialog('close'); };

//cascading dropdown plugin
$.fn.CascadingDropDown = function (options) {

  var FillDropDown = function ($ddl) {
    return function (data) {

      if (undefined == data.items || null == data.items) // || 0 == data.items.length)
        return;

      var optionsList = "";
      var optionEndTag = "</option>";
      for (var i = 0; i < data.items.length; i++) {
        var option;
        if (null == data.items[i]) {
          option = "<option value=''>";
          optionsList += option + optionEndTag;
        }
        else {
          option = "<option value='" + data.items[i].Value + "'>";
          optionsList += option + data.items[i].Text + optionEndTag;
        }
      }

      $ddl.html(optionsList);

    };

  };

  var settings = {
    'action': null,
    'callback': FillDropDown,
    'type': 'POST',
    'target': null
  };

  if (options.length != 0)
    $.extend(settings, options);
  if (null == settings.action) {
    throw "action required";
  }
  if (null == settings.target) {
    throw "drop down target required";
  }

  this.change(function () {
    $.ajax({ type: settings.type, success: FillDropDown($(settings.target)), url: settings.action, data: { id: $(this).val()} });
  });

  return this;

};

var salaryDecimalMask = function ($salaryTextBox) {
  $salaryTextBox.focus(function () {
    var inp = $salaryTextBox.val();
    if ($.trim(inp).length === 0) {
      $salaryTextBox.val('0.00');
    }
  });

  $salaryTextBox.blur(function () {
    var inp = $salaryTextBox.val();
    if ($.trim(inp) === '0.00') {
      $salaryTextBox.val('');
    }
    else if (!isNaN(parseFloat($.trim(inp)))) {
      inp = parseFloat($.trim(inp).replace(/,/g,'')).toFixed(2);
      $salaryTextBox.val(inp);
    }
  });
};


var DisableEnableDropDown = function ($dropDown, enable) {
  if (enable) {
    $dropDown.removeAttr('disabled');
  }
  else {
    $dropDown.attr('disabled', 'disabled');
    $dropDown.attr('selectedIndex', '0');
  }
};

/****** POP UP ******/
//http://www.quirksmode.org/js/popup.html
function popitup(url) {
  var newwindow = window.open(url, 'name', 'height=650,width=650,resizable=yes,scrollbars=yes');
  if (window.focus) {newwindow.focus(); }
  return false;
};
