function AjaxSuccessFunc(result, ctx)
{
    if (result.substring(0, 7) == 'JSEXEC=')
    {
        eval(result.substring(7));
    }
    else if (result && result.length > 0 && dnn.dom.getById(ctx + '_contentContainer'))
    {
	dnn.dom.getById(ctx + '_contentContainer').innerHTML = result;
    }
}

function AjaxErrorFunc(result, ctx)
{
	alert('An internal error ocurred, please try again later.');
}

function AjaxStatusFunc(result, ctx)
{
    return;
}

function AjaxProcessRequest(SubmitButton, ModuleDiv, CallBackFunction)
{
	if (SubmitButton && SubmitButton.name)
	{
		ChangeSubmitButtons(SubmitButton.name, true);
		var ajaxTimeout = window.setTimeout("ChangeSubmitButtons('" + SubmitButton.name + "', false);", 20000);
	}

	eval(CallBackFunction);
}

function AjaxOnEnterKeyPress(e, submitButton)
{
	var e  = (e) ? e : ((event) ? event : null);
	var node = (e.target) ? e.target : ((e.srcElement) ? e.srcElement : null);
	if (e.keyCode == 13 && (node.type == 'text' || node.type == 'radio' || node.type == 'checkbox' || node.type == 'button' || node.type == 'password'))
	{
		if (document.getElementById(submitButton) && document.getElementById(submitButton).type == 'button')
		{
			document.getElementById(submitButton).click();
			return false;
		}
	}
}

function AjaxGetParameters(RequestedFields)
{
    var parameters = "";
    if (RequestedFields != null)
    {
        for (var i = 0; i <= RequestedFields.length - 1; i++)
        {
            var field = null;
            field = document.getElementById(RequestedFields[i]);
            if (document.getElementById(RequestedFields[i]) != null)
            {
                switch (field.type)
                {
                    case "text":
                    case "select-one":
                    case "hidden":
                    case "button":
                    case "password":
                        parameters += field.name + "|" + Base64.encode(field.value) + ";";
                        break;
                    case "radio":
                        parameters += field.id + "|";
                        if (field.checked)
                            parameters += Base64.encode(field.value);
                            
                        parameters += ";";
                        break;
                    case "checkbox":
                        parameters += field.name + "|";
                        if (field.checked)
                            parameters += Base64.encode(field.value);
                            
                        parameters += ";";
                        break;
                    case "select-multiple":
                         for (var x = 0; x < field.options.length - 1; x++)
                         {
                            if (field.options[x].selected)
                                parameters += field.name + "_"+ x + "|" + Base64.encode(field.options[x].value) + ";";
                         }
                         break;
                }
            }
        }
    }
    return parameters;
}
	
function ChangeSubmitButtons(Name, Disabled)
{
	var buttons = document.getElementsByName(Name);
	for (var i = 0; i <= buttons.length - 1; i++)
		buttons[i].disabled = Disabled;
}

var Base64 = {
    // private property
    _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

    // public method for encoding
    encode : function (input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;

        input = Base64._utf8_encode(input);

        while (i < input.length) {

            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);

            enc1 = chr1 >> 2;
            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
            enc4 = chr3 & 63;

            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }

            output = output +
            this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
            this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

        }

        return output;
    },

    // private method for UTF-8 encoding
    _utf8_encode : function (txt) {
        txt = String(txt).replace("\r\n", "\n");
        var utftext = "";

        for (var n = 0; n < txt.length; n++) {

            var c = txt.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    }
}
