// NeoSistem.js
//


Type.registerNamespace('NeoSistem');

////////////////////////////////////////////////////////////////////////////////
// NeoSistem.HttpVerb

NeoSistem.HttpVerb = function() { 
    /// <field name="GET" type="Number" integer="true" static="true">
    /// </field>
    /// <field name="POST" type="Number" integer="true" static="true">
    /// </field>
    /// <field name="DELETE" type="Number" integer="true" static="true">
    /// </field>
    /// <field name="PUT" type="Number" integer="true" static="true">
    /// </field>
};
NeoSistem.HttpVerb.prototype = {
    GET: 0, 
    POST: 1, 
    DELETE: 2, 
    PUT: 3
}
NeoSistem.HttpVerb.registerEnum('NeoSistem.HttpVerb', false);


////////////////////////////////////////////////////////////////////////////////
// NeoSistem.Model

NeoSistem.Model = function NeoSistem_Model() {
    /// <field name="_loadElementId" type="String" static="true">
    /// </field>
    /// <field name="_loadingElementId" type="String" static="true">
    /// </field>
}
NeoSistem.Model.ModelPost = function NeoSistem_Model$ModelPost(method, loadElementId, loadingElementId, model, verb) {
    /// <summary>
    /// Model Post
    /// </summary>
    /// <param name="method" type="String">
    /// Set Url
    /// </param>
    /// <param name="loadElementId" type="String">
    /// Load Element
    /// </param>
    /// <param name="loadingElementId" type="String">
    /// Loading Element
    /// </param>
    /// <param name="model" type="Object">
    /// Model Class
    /// </param>
    /// <param name="verb" type="NeoSistem.HttpVerb">
    /// NeoSistem.HttpVerb
    /// </param>
    if (loadingElementId !== '') {
        document.getElementById(loadingElementId).style.visibility = 'visible';
    }
    NeoSistem.Model._loadingElementId = loadingElementId;
    var wRequest = new Sys.Net.WebRequest();
    wRequest.set_url(method);
    switch (verb) {
        case NeoSistem.HttpVerb.GET:
            wRequest.set_httpVerb('GET');
            break;
        case NeoSistem.HttpVerb.POST:
            wRequest.set_httpVerb('POST');
            break;
        case NeoSistem.HttpVerb.DELETE:
            wRequest.set_httpVerb('DELETE');
            break;
        case NeoSistem.HttpVerb.PUT:
            wRequest.set_httpVerb('PUT');
            break;
        default:
            wRequest.set_httpVerb('POST');
            break;
    }
    if (model != null) {
        wRequest.set_body(NeoSistem.Model.ModelSerialize(model));
    }
    NeoSistem.Model._loadElementId = loadElementId;
    wRequest.add_completed(Function.createDelegate(null, NeoSistem.Model._wRequest_Completed));
    wRequest.invoke();
}
NeoSistem.Model._wRequest_Completed = function NeoSistem_Model$_wRequest_Completed(executor) {
    /// <param name="executor" type="Sys.Net.WebRequestExecutor">
    /// </param>
    document.getElementById(NeoSistem.Model._loadElementId).innerHTML = executor.get_responseData();
    if (NeoSistem.Model._loadingElementId !== '') {
        document.getElementById(NeoSistem.Model._loadingElementId).style.visibility = 'hidden';
    }
}
NeoSistem.Model.ModelSerialize = function NeoSistem_Model$ModelSerialize(model) {
    /// <summary>
    /// Model serizabe
    /// </summary>
    /// <param name="model" type="Object">
    /// Object Model
    /// </param>
    /// <returns type="String"></returns>
    var body = '';
    var $dict1 = model;
    for (var $key2 in $dict1) {
        var item = { key: $key2, value: $dict1[$key2] };
        body += String.format('{0}={1}&', item.key, item.value);
    }
    if (body.length > 0) {
        body = body.substring(0, body.length - 1);
    }
    return body;
}


////////////////////////////////////////////////////////////////////////////////
// NeoSistem.Utility

NeoSistem.Utility = function NeoSistem_Utility() {
}
NeoSistem.Utility.ViewRender = function NeoSistem_Utility$ViewRender(view) {
    /// <param name="view" type="String">
    /// </param>
    window.document.write(view);
}
NeoSistem.Utility._disableEnableControls = function NeoSistem_Utility$_disableEnableControls(formname, disabled) {
    /// <param name="formname" type="String">
    /// </param>
    /// <param name="disabled" type="Boolean">
    /// </param>
    var form = document.getElementById(formname);
    for (var i = 0; i < form.elements.length; i++) {
        form.elements[i].disabled = disabled;
    }
}
NeoSistem.Utility.EnableControls = function NeoSistem_Utility$EnableControls(formname) {
    /// <param name="formname" type="String">
    /// </param>
    NeoSistem.Utility._disableEnableControls(formname, true);
}
NeoSistem.Utility.DisableControls = function NeoSistem_Utility$DisableControls(formname) {
    /// <param name="formname" type="String">
    /// </param>
    NeoSistem.Utility._disableEnableControls(formname, false);
}
NeoSistem.Utility.ImageError = function NeoSistem_Utility$ImageError(element) {
    /// <param name="element" type="Object" domElement="true">
    /// </param>
    element.style.display = 'none';
}


NeoSistem.Model.registerClass('NeoSistem.Model');
NeoSistem.Utility.registerClass('NeoSistem.Utility');
NeoSistem.Model._loadElementId = '';
NeoSistem.Model._loadingElementId = '';

// ---- Do not remove this footer ----
// This script was generated using Script# v0.5.5.0 (http://projects.nikhilk.net/ScriptSharp)
// -----------------------------------

function bookmarksite(title, url) {
  if (window.sidebar) // firefox
    window.sidebar.addPanel(title, url, "");
  else if (window.opera && window.print) { // opera
    var elem = document.createElement('a');
    elem.setAttribute('href', url);
    elem.setAttribute('title', title);
    elem.setAttribute('rel', 'sidebar');
    elem.click();
  }
  else if (document.all)// ie
    window.external.AddFavorite(url, title);
}


