﻿/// <reference path="jquery-1.3.1.js" />
$(document).ready(
    function() {
        watermarks = [];
        $(".watermark").each(
           function(i) {
               watermarks[i] = $(this).val();
               $(this).focus(function() {
                   if ($(this).val() == watermarks[i]) {
                       $(this).val("");
                       $(this).removeClass("watermark");
                       $(this).addClass("watermark_off");
                   }

               }
              ).blur(function() {
                  if ($.trim($(this).val()) == "") {
                      $(this).val(watermarks[i]);
                      $(this).addClass("watermark");
                      $(this).removeClass("watermark_off");
                  }
              }
              )
           }
        )
    }
);

function ensureControlGroupsInNumericalOrder(groupSelector, controlNamePrefix) {
    var groups = $(groupSelector);
    var nameToEndOfIndexRegex = new RegExp(controlNamePrefix + "\\[\\d+");
    for (var seq = 0; seq < groups.length; seq++) {
        var controls = $('*[name^="' + controlNamePrefix + '["]', groups[seq]);
        for (var c = 0; c < controls.length; c++)
            controls[c].name = controls[c].name.replace(nameToEndOfIndexRegex, controlNamePrefix + "[" + seq);
    }
}


function callbackWrapper(data, cb) {
    var html = $("<html/>");
    var body = $("<body/>");
    body.append(data);
    html.append(body);

    if ($("#loginform", html).size() > 0)
        top.location.href = "/Account/Login?returnURL=" + top.location.href;
    else
        cb(data);
}

$.postJSON = function(url, data, callback) {
    $.post(url, data, callback, "json");
};

$.keepAlive = function(refreshInterval) {
    var keepAliveURL = "/Home/KeepAlive";
    $.post(keepAliveURL);
    setTimeout("$.keepAlive(" + refreshInterval + ")", refreshInterval);
};

$.fn.reverse = function() { return this.pushStack(this.get().reverse(), arguments); };

function openVideo(url) {
    window.open(url, "video", "status=0,toolbar=0,location=0,resizable=1,scrollbars=0,width=800,height=600");
    return false;
}

function RequiredCheckbox(value, element, params) {
    var min = params.MinNumChecked;
    var max = params.MaxNumChecked;
    var group = $(element).attr("group");
    var num = $("input[group=" + group + "]:checked").length;

    if (num >= min && num <= max)
        return true;
    else
        return false;

}

var lastKeyUpRemote = new Date();

function RemotePropertyValidation(value, element, params) {
    var wrappedElement = $(element);
    

    if (wrappedElement.rules()["remote"] === undefined) {
        //add optional regEx validator to minimize ajax requests
        if (params.regEx != null && wrappedElement.rules()["xVal_regex"] == undefined) {
            wrappedElement.rules("add", {
                xVal_regex: [params.regEx],
                messages: {
                    xVal_regex: params.errorMessage
                }
            });
        }
        var remoteRule =
        //add a new remote validation rule
        wrappedElement.rules("add", {
            remote: {
                url: "/Home/PropertyValidate",
                type: "post",
                data: {
                    value: new CreateInputValueAccessor(wrappedElement.attr("name")),
                    validator: params.validator,
                    parameters: params.parameters
                }
            },
            messages: {
                remote: params.errorMessage
            }
        });

        //validate element again to trigger the new rule(s)
        $("form").validate().element(wrappedElement);
    }
    return true;
}

function CreateInputValueAccessor(inputName) {
    return function () {
        return $("[name=" + inputName + "]").val();
    };
}