﻿// JavaScript Document
(function()
{

    //ADS命名空间
    if (!window.ads) { window['ads'] = {} }

    //检查js是否能正确运行
    function runCheck(other)
    {
        if (other === false
	   || !Array.prototype.push
	   || !Object.hasOwnProperty
	   || !document.createElement
	   || !document.getElementsByTagName
	   )
        {
            return false;
        }
        return true;
    }
    window['ads']['runCheck'] = runCheck;

    //根据ID获取元素，可同时获取多个
    function $()
    {
        var elements = new Array();

        for (var i = 0; i < arguments.length; i++)
        {
            var element = arguments[i];
            if (typeof arguments[i] == 'string')
            {
                element = document.getElementById(element);
            }
            if (arguments.length == 1)
            {
                return element;
            }
            elements.push(element);
        }
        return elements;
    }
    window['ads']['$'] = $;

    //根据Class获取元素
    function $c(className, tag, parent)
    {
        parent = parent || document;
        tag = tag || '*';
        if (!(parent = $(parent))) { return false; }

        //查找匹配标签
        var allTags = (tag == "*" && parent.all) ? parent.all : parent.getElementsByTagName(tag);

        var elements = new Array();

        //正则表达式，判断className是否正确
        className = className.replace(/\-/g, "\\-");
        var regex = new RegExp("(^|\\s)" + className + "(\\s|$)");

        var element;
        for (var i = 0; i < allTags.length; i++)
        {
            element = allTags[i];
            if (regex.test(element.className))
            {
                elements.push(element);
            }
        }
        if (elements.length == 1) return elements[0];
        return elements;
    }
    window['ads']['$c'] = $c;

    //根据html标签获取元素
    function $t(tag, parent)
    {
        parent = parent || document;
        tag = tag || '*';
        if (!(parent = $(parent))) { return false; }

        //查找匹配标签
        var allTags = (tag == "*" && parent.all) ? parent.all : parent.getElementsByTagName(tag);

        var elements = new Array();

        if (allTags.length == 1) { return allTags[0] };

        for (var i = 0; i < allTags.length; i++)
        {
            elements.push(allTags[i]);
        }
        return elements;
    }
    window['ads']['$t'] = $t;

    function getBrowserSize()
    {
        var de = document.documentElement;

        return {
            'width': (
            window.innerWidth
            || (de && de.clientWidth)
            || document.body.clientWidth),
            'height': (
            window.innerHeight
            || (de && de.clientHeight)
            || document.body.clientHeight)
        }
    };
    window['ads']['getBrowserSize'] = getBrowserSize;

    //添加、移除事件
    function addEvent(node, type, listener)
    {
        if (!runCheck()) { return false; }
        if (!(node = $(node))) { return false; }

        //W3C添加事件方法
        if (node.addEventListener)
        {
            node.addEventListener(type, listener, false);
            return true;
        }
        //MSIE添加事件方法
        else if (node.attachEvent)
        {
            node['e' + type + listener] = listener;
            node[type + listener] = function()
            {
                node['e' + type + listener](window.event);
            }
            node.attachEvent('on' + type, node[type + listener]);
            return true;
        }
        return false;
    }
    window['ads']['addEvent'] = addEvent;

    function removeEvent(node, type, listener)
    {
        if (!runCheck()) { return false; }
        if (!(node = $(node))) { return false; }

        //W3C添加事件方法
        if (node.removeEventListener)
        {
            node.removeEventListener(type, listener, false);
            return true;
        }
        //MSIE添加事件方法
        else if (node.detachEvent)
        {
            node.detachEvent('on' + type, node[type + listener]);
            node[type + listener] = null;
            return true;
        }
        return false;
    }
    window['ads']['removeEvent'] = removeEvent;

    //取消默认动作
    function preventDefault(eventObject)
    {
        eventObject = eventObject || getEventObject(eventObject);
        if (eventObject.preventDefault)
        {
            eventObject.preventDefault();
        }
        else
        {
            eventObject.returnValue = false;
        }
    }
    window['ads']['preventDefault'] = preventDefault;

    //更改函数执行环境
    function bindFunction(obj, func)
    {
        return function()
        {
            func.apply(obj, arguments);
        };
    }
    window['ads']['bindFunc'] = bindFunction;

    function Cookies() { };
    Cookies.prototype = {
        set: function(name, value, expiresDate)
        {
            expiresDate = expiresDate || 1;
            var date = new Date();
            date.setTime(date.getTime() + expiresDate * 24 * 60 * 60 * 1000);
            document.cookie = name + '=' + value + ";expires=" + date.toGMTString();
        },
        get: function(name)
        {
            var cookiesValue = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)")) || 'null';
            if (cookiesValue != null) return unescape(cookiesValue[2]);
            return cookiesValue;
        }
    }
    window['ads']['Cookies'] = Cookies;

    function setCookies(name, value, expiresDate)
    {
        expiresDate = expiresDate || 1;
        var date = new Date();
        date.setTime(date.getTime() + expiresDate * 24 * 60 * 60 * 1000);
        document.cookie = name + '=' + value + ";expires=" + date.toGMTString();
    }
    window['ads']['setCookies'] = setCookies;

    function getCookies(name)
    {
        var cookiesValue = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)")) || 'null';
        if (cookiesValue != null) return unescape(cookiesValue[2]);
        return cookiesValue;
    }
    window['ads']['getCookies'] = getCookies;



    //JS调试日记对象
    function Log(id)
    {
        id = id || 'LogWindow';
        var logWindow = null;
        var createWindow = function()
        {

            //建立窗口
            var browserSize = ads.getBrowserSize();
            var top = (browserSize.height - 235) || 0;
            var left = (browserSize.width - 235) || 0;

            logWindow = document.createElement('ul');

            logWindow.setAttribute('id', id);

            logWindow.style.position = 'absolute';
            logWindow.style.top = top + 'px';
            logWindow.style.left = left + 'px';

            logWindow.style.width = logWindow.style.height = '200px';
            logWindow.style.overflow = 'scroll';

            logWindow.style.padding = '5px';
            logWindow.style.margin = '0';
            logWindow.style.border = '1px solid #000';
            logWindow.style.backgroundColor = '#fff';
            logWindow.style.listStyle = 'none';

            document.body.appendChild(logWindow);

        }
        this.writeMSG = function(msg)
        {
            if (!logWindow) createWindow();

            var li = document.createElement('li');
            li.style.padding = '2px';
            li.style.border = 'none';
            li.style.borderBottom = '1px dotted #000';
            li.style.margin = '0';
            li.style.color = '#000';

            if (typeof msg == 'undefined')
            {
                li.appendChild(document.createTextNode('Message was undefined'));
            }
            else if (typeof li.innerHTML != undefined)
            {
                li.innerHTML = msg;
            }
            else
            {
                li.appendChild(document.createTextNode(msg));
            }

            logWindow.appendChild(li);

            return true;
        }
    }
    Log.prototype = {
        write: function(msg)
        {
            if (typeof msg == 'string' && msg.length == 0)
            {
                return this.writeMSG('null message');
            }
            if (typeof msg != 'string')
            {
                if (msg.toString) return this.writeMSG(msg.toString());
                else return this.writeMSG(typeof msg);
            }

            msg = msg.replace(/</g, '&lt;').replace(/>/g, '&gt;');
            return this.writeMSG(msg);
        },

        header: function(msg)
        {
            msg = '<span style="color:#fff;background-color:#000;padding:0px 5px;">' + msg + '</span>';
            return this.writeMSG(msg);
        }
    }
    window['ads']['Log'] = Log;
    
    ///隐藏元素
    function hidden(Element)
    {
        Element = $(Element);
        Element.style.display = "none";
    }
    window['ads']['hidden'] = hidden;

    ///显示元素
    function Show(Element)
    {
        Element = $(Element);
        Element.style.display = "";
    }
    window['ads']['Show'] = Show;


    ///去处字符串两端的空格
    function Trim(value)
    {
        var str = value;
        while (str.substring(0, 1) == ' ')
        {
            str = str.substring(1, str.length);
        }
        while (str.substring(str.length - 1, str.length) == ' ')
        {
            str = str.substring(0, str.length - 1);
        }
        return str;
    }
    window['ads']['Trim'] = Trim;
})();
