﻿/// <reference path="E:\Source\Intermex@WEB\Intermex\Scripts\jquery-1.2.6-vsdoc.js"/>

String.prototype.beginsWith = function(t, i) {
    if (i == false) {
        return
        (t == this.substring(0, t.length));
    } else {
        return (t.toLowerCase()
== this.substring(0, t.length).toLowerCase());
    }
}

String.prototype.endsWith = function(t, i) {
    if (i == false) {
        return (t
== this.substring(this.length - t.length));
    } else {
        return
        (t.toLowerCase() == this.substring(this.length -
t.length).toLowerCase());
    }
}


//////////////
/// Global
Sys = {};

////////////////////////
// JQMvc
Sys.JQMvc = {};

Sys.JQMvc.OnComplete = function(resultObj, status, updateElement, loadingElement) {
    updateElement.html(resultObj.responseText);
    loadingElement.hide();
}


Sys.JQMvc.asyncRequest = function(url, method, data, ajaxOptions) {
    if (ajaxOptions.confirm) {
        if (!confirm(ajaxOptions.confirm)) {
            return;
        }
    }

    if (ajaxOptions.url) {
        url = ajaxOptions.url;
    }

    if (ajaxOptions.httpMethod) {
        method = ajaxOptions.httpMethod;
    }

    if (data.length > 0 && !data.endsWith('&')) {
        data += '&';
    }
    data += '__MVCASYNCPOST=true';

    var updateElement = null;
    if (ajaxOptions.updateTargetId) {
        updateElement = $('#' + ajaxOptions.updateTargetId);
    }

    var loadingElement = null;
    if (ajaxOptions.loadingElementId) {
        loadingElement = $('#' + ajaxOptions.loadingElementId);
    }

    if (ajaxOptions.OnBegin) {
        ajaxOptions.OnBegin();
    }

    if (loadingElement) {
        loadingElement.show();
    }

    $.ajax({
        type: method,
        url: url,
        data: data,
        json: false,
        success: function() {
            if (ajaxOptions.OnSuccess)
                ajaxOptions.OnSuccess();
        },
        error: function() {
            if (ajaxOptions.OnError)
                ajaxOptions.OnError();
        },
        complete: function(resultObj, status) { Sys.JQMvc.OnComplete(resultObj, status, updateElement, loadingElement); }
    });
}

///////////////////////
// AjaxHelper



Sys.UI = {};
Sys.UI.DomEvent = function SysUIDomEvent(evt) {
    if (!evt) evt = window.event;
    if (evt) return $.event.fix(evt);
}

Sys.Mvc = {};
Sys.Mvc.InsertionMode = {
    replace: 0,
    insertBefore: 1,
    insertAfter: 2
}

Sys.Mvc.AsyncHyperlink = {}
Sys.Mvc.AsyncHyperlink.handleClick = function(anchor, evt, ajaxOptions) {
    evt.preventDefault();
    Sys.JQMvc.asyncRequest(anchor.href, 'post', '', ajaxOptions);
}

Sys.Mvc.AsyncForm = {}
Sys.Mvc.AsyncForm.handleSubmit = function(form, evt, ajaxOptions) {
    evt.preventDefault();
    var data = jQuery(form).serialize();
    Sys.JQMvc.asyncRequest(form.action, 'post', data, ajaxOptions);
}