﻿/// <reference name="MicrosoftAjax.js"/>

Type.registerNamespace("Cachinko");

Cachinko.DynamicPostBehavior = function(element) {
    Cachinko.DynamicPostBehavior.initializeBase(this, [element]);
    this._url = '';
    this._textControlsCollection = null;    
    this._clickDelegate = null;
    this._validationGroupText = '';
    this._hfUsertoConnect = null;
    this._chkJoin = null;
    this._hfPublicFunctionality = null;
}


Cachinko.DynamicPostBehavior.prototype = {
    initialize: function() {
        Cachinko.DynamicPostBehavior.callBaseMethod(this, 'initialize');

        // Add custom initialization here
        this._clickDelegate = Function.createDelegate(this, this._clickHandler);
        $addHandler(this.get_element(), "click", this._clickDelegate);
    },
    dispose: function() {
        //Add custom dispose actions here
        Cachinko.DynamicPostBehavior.callBaseMethod(this, 'dispose');
    },
    _clickHandler: function(e) {
        if (e.rawEvent.cancelBubble) return;
        if (this._validate()) {
            e.preventDefault();
            e.stopPropagation();
            this._sendDynamicPost();
        }
    },
    _sendDynamicPost: function() {
        var textBoxes = this._textControlsCollection.split(';');
        var textBox;
        var qs = '';
        for (index in textBoxes) {
            qs = qs + $get(textBoxes[index]).value + '&';
        }
        qs = qs.substr(0, qs.lastIndexOf('&'));

        if (this._hfPublicFunctionality != null && this._hfPublicFunctionality.value.trim().length > 0)
            qs = qs + '&' + this._hfPublicFunctionality.value.trim();
            
        if (this._hfUsertoConnect != null && this._chkJoin != null) {
            if (this._chkJoin.checked) {
                if (this._hfUsertoConnect.value.trim().length > 0)
                    qs = qs + '&' + this._hfUsertoConnect.value.trim();
            }
        }

        fnSubmitForm(qs, this._url);

    },
    _validate: function() {
        var validateFlag = Page_ClientValidate(this._validationGroupText);
        return validateFlag;

    },
    get_validationGroupText: function() {
        return this._validationGroupText;
    },
    set_validationGroupText: function(value) {
        this._validationGroupText = value;
    },
    get_url: function() {
        return this._url;
    },
    set_url: function(value) {
        this._url = value;
    },
    get_textControlsCollection: function() {
        return this._textControlsCollection;
    },
    set_textControlsCollection: function(value) {
        this._textControlsCollection = value;
    },
    get_hfUsertoConnect: function() {
        return this._hfUsertoConnect;
    },
    set_hfUsertoConnect: function(value) {
        this._hfUsertoConnect = value;
    },
    get_chkJoin: function() {
        return this._chkJoin;
    },
    set_chkJoin: function(value) {
        this._chkJoin = value;
    },
    get_hfPublicFunctionality: function() {
        return this._hfPublicFunctionality;
    },
    set_hfPublicFunctionality: function(value) {
        this._hfPublicFunctionality = value;
    }
}
Cachinko.DynamicPostBehavior.registerClass('Cachinko.DynamicPostBehavior', Sys.UI.Behavior);

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
