/******* Core Js **********/
/*	Based on prototypes (prototype.conio.net)
/*	Modifid by Todd Lee (www.todd-lee.com)
/*	Last update: 2006-04-12
*/

var Prototype = {
    Version: '1.3.1',
    emptyFunction: function()
    {
    }
}

var Class = {
    create: function()
    {
        return function()
        {
            this.initialize.apply(this, arguments);
        }
    }
}

var Abstract = new Object();

Object.extend = function(destination, source)
{
    for (property in source)
    {
        destination[property] = source[property];
    }
    return destination;
}

Object.prototype.extend = function(object)
{
    return Object.extend.apply(this, [this, object]);
}

Function.prototype.bind = function(object)
{
    var __method = this;
    return function()
    {
        __method.apply(object, arguments);
    }
}

Function.prototype.bindAsEventListener = function(object)
{
    var __method = this;
    return function(event)
    {
        __method.call(object, event || window.event);
    }
}

Number.prototype.toColorPart = function()
{
    var digits = this.toString(16);
    if (this < 16) return '0' + digits;
    return digits;
}

var Try = {
    these: function()
    {
        var returnValue;

        for (var i = 0; i < arguments.length; i++)
        {
            var lambda = arguments[i];
            try
            {
                returnValue = lambda();
                break;
            }
            catch (e)
            {
            }
        }

        return returnValue;
    }
}

/*--------------------------------------------------------------------------*/

var PeriodicalExecuter = Class.create();
PeriodicalExecuter.prototype = {
    initialize: function(callback, frequency)
    {
        this.callback = callback;
        this.frequency = frequency;
        this.currentlyExecuting = false;

        this.registerCallback();
    },

    registerCallback: function()
    {
        setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
    },

    onTimerEvent: function()
    {
        if (!this.currentlyExecuting)
        {
            try
            {
                this.currentlyExecuting = true;
                this.callback();
            }
            finally
            {
                this.currentlyExecuting = false;
            }
        }
    }
}

/*--------------------------------------------------------------------------*/
function $()
{
    var elements = new Array();
    for (var i = 0; i < arguments.length; i++)
    {
        var element = arguments[i];
        if (typeof element == 'string')
            element = document.getElementById(element);
        if (arguments.length == 1)
            return element;
        elements.push(element);
    }
    return elements;
}

function $S(tagName)
{
    return document.getElementsByName(tagName);
}

/*--------------------------------------------------------------------------*/
String.prototype.extend({
    stripTags: function()
    {
        return this.replace(/<\/?[^>]+>/gi, '');
    },

    escapeHTML: function()
    {
        var div = document.createElement('div');
        var text = document.createTextNode(this);
        div.appendChild(text);
        return div.innerHTML;
    },

    unescapeHTML: function()
    {
        var div = document.createElement('div');
        div.innerHTML = this.stripTags();
        return div.childNodes[0].nodeValue;
    },
// Todd Lee
    convertTextToHTML: function()
    {
        return (this.replace(/\&/g, "&").replace(/</g, "&lt;").replace(/>/g, ">").replace(/\r\n|\n|\r/g, "<br \/>").replace(/  /g, "&nbsp; "));
    },
    convertHTMLToText: function()
    {
        return (this.replace(/(\s*(\r\n|\n|\r)\s*)/g, "").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/<br\s*\/?>/ig, "\r\n").replace(/\&nbsp;/g, " "));
    },
    trim: function()
    {
        return (this.replace(/(^\s*)|(\s*$)/g, ""));
    }
});

/*--------------------------------------------------------------------------*/
var Ajax = {
    getTransport: function()
    {
        return Try.these(
                function()
                {
                    return new ActiveXObject('Msxml2.XMLHTTP')
                },
                function()
                {
                    return new ActiveXObject('Microsoft.XMLHTTP')
                },
                function()
                {
                    return new XMLHttpRequest()
                }
                ) || false;
    }
}

Ajax.Base = function()
{
};
Ajax.Base.prototype = {
    setOptions: function(options)
    {
        this.options = {
            method:       'post',
            asynchronous: true,
            parameters:   ''
        }.extend(options || {});
    },

    responseIsSuccess: function()
    {
        return this.transport.status == undefined
                || this.transport.status == 0
                || (this.transport.status >= 200 && this.transport.status < 300);
    },

    responseIsFailure: function()
    {
        return !this.responseIsSuccess();
    }
}

Ajax.Request = Class.create();
Ajax.Request.Events =
['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];

Ajax.Request.prototype = (new Ajax.Base()).extend({
    initialize: function(url, options)
    {
        this.transport = Ajax.getTransport();
        this.setOptions(options);
        this.request(url);
    },

    request: function(url)
    {
        var parameters = this.options.parameters || '';
        if (parameters.length > 0) parameters += '&_=';

        try
        {
            if (this.options.method == 'get' && parameters.length > 0)
                url += '?' + parameters;

            this.transport.open(this.options.method, url,
                    this.options.asynchronous);

            if (this.options.asynchronous)
            {
                this.transport.onreadystatechange = this.onStateChange.bind(this);
                setTimeout((function()
                {
                    this.respondToReadyState(1)
                }).bind(this), 10);
            }

            this.setRequestHeaders();

            var body = this.options.postBody ? this.options.postBody : parameters;
            this.transport.send(this.options.method == 'post' ? body : null);

        }
        catch (e)
        {
        }
    },

    setRequestHeaders: function()
    {
        var requestHeaders =
                ['X-Requested-With', 'XMLHttpRequest',
                        'X-Prototype-Version', Prototype.Version];

        if (this.options.method == 'post')
        {
            requestHeaders.push('Content-type',
                    'application/x-www-form-urlencoded');

            /* Force "Connection: close" for Mozilla browsers to work around
            * a bug where XMLHttpReqeuest sends an incorrect Content-length
            * header. See Mozilla Bugzilla #246651.
            */
            if (this.transport.overrideMimeType)
                requestHeaders.push('Connection', 'close');
        }

        if (this.options.requestHeaders)
            requestHeaders.push.apply(requestHeaders, this.options.requestHeaders);

        for (var i = 0; i < requestHeaders.length; i += 2)
            this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i + 1]);
    },

    onStateChange: function()
    {
        var readyState = this.transport.readyState;
        if (readyState != 1)
            this.respondToReadyState(this.transport.readyState);
    },

    respondToReadyState: function(readyState)
    {
        var event = Ajax.Request.Events[readyState];
        var _arguments = this.options['responseArguments'];

        if (event == 'Complete')
            (this.options['on' + this.transport.status]
                    || this.options['on' + (this.responseIsSuccess() ? 'Success' : 'Failure')]
                    || Prototype.emptyFunction)(this.transport, _arguments);

        (this.options['on' + event] || Prototype.emptyFunction)(this.transport, _arguments);

        /* Avoid memory leak in MSIE: clean up the oncomplete event handler */
        if (event == 'Complete')
            this.transport.onreadystatechange = Prototype.emptyFunction;
    }
});

/******* Core Js End **********/

function setRadio(rName, v)
{
    var l = $S(rName);
    for (i = 0; i < l.length; i++)
    {
        if (l[i].value == v)
        {
            l[i].checked = "checked";
        }
    }
}
function setCheckBox(cName, v)
{
    var l = $S(cName);
    for (i = 0; i < l.length; i++)
    {
        if (l[i].value == v)
        {
            l[i].checked = "checked";
        }
    }
}
function urlReplace(url)
{
    location.replace(url);
}
function urlGoto(url)
{
    location.href = url;
}
function divShow()
{
    for (var i = 0; i < arguments.length; i++)
    {
        var element = arguments[i];
        if (typeof element == 'string')
        {
            element = document.getElementById(element);
            if (i == 0)
            {
                element.style.display = 'block';
            }
            else
            {
                element.style.display = 'none';
            }
        }
    }
}
function disableButton(array, st)
{
    for (var i = 0; i < array.length; i++)
    {
        var element = array[i];
        if (typeof element == 'string')
        {
            document.getElementById(element).disabled = st;
        }
    }
}
function buildArray(str)
{
    var retArr = new Array();
    var arr1 = new Array();
    arr1 = str.split('|');
    for (var i = 0; i < arr1.length; i++)
    {
        var str2 = arr1[i];
        if (typeof(str2) == 'string' && str2.length > 0)
        {
            var arr2 = str2.split('#');
            if (arr2.length == 2)
            {
                retArr[i] = new Array(arr2[0], arr2[1]);
            }
        }
    }
    return retArr;
}
function getRadioStr(arr, name)
{
    var retStr = new String();
    for (var i = 0; i < arr.length; i++)
    {
        retStr = retStr + "<input name='" + name + "' type='radio' value='" + arr[i][0] + "'> " + arr[i][1] + "&nbsp;";
    }
    return retStr;
}
function getSelectStr(arr, name, size, className)
{
    var retStr = new String();
    if (arr.length > 0)
    {
        retStr = "<select size='" + size + "' name='" + name + "' class='" + className + "'><option value='' selected>-��ѡ��-</option>";
        for (var i = 0; i < arr.length; i++)
        {
            retStr = retStr + "<option value='" + arr[i][0] + "'>" + arr[i][1] + "</option>";
        }
        retStr = retStr + "</select>";
    }
    return retStr;
}
function getCheckBoxStr(arr, name)
{
    return "<input name='" + name + "' type='checkbox' value='" + arr[0] + "'> " + arr[1] + "";
}
function alertSpan(name, st, arr)
{
  var obj = $(name);
  if(st)
  {

  }
  else
  {

  }
}