﻿var JSON={};
(function () {

    function f(n) {
        return n<10?'0'+n:n;
    }

    if(typeof Date.prototype.toJSON!=='function') {

        Date.prototype.toJSON=function (key) {

            return isFinite(this.valueOf())?
                   this.getUTCFullYear()+'-'+
                 f(this.getUTCMonth()+1)+'-'+
                 f(this.getUTCDate())+'T'+
                 f(this.getUTCHours())+':'+
                 f(this.getUTCMinutes())+':'+
                 f(this.getUTCSeconds())+'Z':null;
        };

        String.prototype.toJSON=
        Number.prototype.toJSON=
        Boolean.prototype.toJSON=function (key) {
            return this.valueOf();
        };
    }

    var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
        escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
        gap,
        indent,
        meta={    // table of character substitutions
            '\b': '\\b',
            '\t': '\\t',
            '\n': '\\n',
            '\f': '\\f',
            '\r': '\\r',
            '"': '\\"',
            '\\': '\\\\'
        },
        rep;

    function quote(string) {

        escapable.lastIndex=0;
        return escapable.test(string)?
            '"'+string.replace(escapable,function (a) {
                var c=meta[a];
                return typeof c==='string'?c:
                    '\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);
            })+'"':
            '"'+string+'"';
    }

    function str(key,holder) {

        var i,          // The loop counter.
            k,          // The member key.
            v,          // The member value.
            length,
            mind=gap,
            partial,
            value=holder[key];

        if(value&&typeof value==='object'&&
                typeof value.toJSON==='function') {
            value=value.toJSON(key);
        }

        if(typeof rep==='function') {
            value=rep.call(holder,key,value);
        }

        switch(typeof value) {
            case 'string':
                return quote(value);

            case 'number':

                return isFinite(value)?String(value):'null';

            case 'boolean':
            case 'null':

                return String(value);

            case 'object':

                if(!value) {
                    return 'null';
                }

                gap+=indent;
                partial=[];

                if(Object.prototype.toString.apply(value)==='[object Array]') {
                    length=value.length;
                    for(i=0;i<length;i+=1) {
                        partial[i]=str(i,value)||'null';
                    }

                    v=partial.length===0?'[]':
                    gap?'[\n'+gap+
                            partial.join(',\n'+gap)+'\n'+
                                mind+']':
                          '['+partial.join(',')+']';
                    gap=mind;
                    return v;
                }

                if(rep&&typeof rep==='object') {
                    length=rep.length;
                    for(i=0;i<length;i+=1) {
                        k=rep[i];
                        if(typeof k==='string') {
                            v=str(k,value);
                            if(v) {
                                partial.push(quote(k)+(gap?': ':':')+v);
                            }
                        }
                    }
                } else {

                    for(k in value) {
                        if(Object.hasOwnProperty.call(value,k)) {
                            v=str(k,value);
                            if(v) {
                                partial.push(quote(k)+(gap?': ':':')+v);
                            }
                        }
                    }
                }

                v=partial.length===0?'{}':
                gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+
                        mind+'}':'{'+partial.join(',')+'}';
                gap=mind;
                return v;
        }
    }

    if(typeof JSON.encode!=='function') {
        JSON.encode=function (value,replacer,space) {

            var i;
            gap='';
            indent='';

            if(typeof space==='number') {
                for(i=0;i<space;i+=1) {
                    indent+=' ';
                }

            } else if(typeof space==='string') {
                indent=space;
            }

            rep=replacer;
            if(replacer&&typeof replacer!=='function'&&
                    (typeof replacer!=='object'||
                     typeof replacer.length!=='number')) {
                throw new Error('JSON.encode');
            }

            return str('',{ '': value });
        };
    }

    if(typeof JSON.decode!=='function') {
        JSON.decode=function (text,reviver) {

            var j;

            function walk(holder,key) {
                var k,v,value=holder[key];
                if(value&&typeof value==='object') {
                    for(k in value) {
                        if(Object.hasOwnProperty.call(value,k)) {
                            v=walk(value,k);
                            if(v!==undefined) {
                                value[k]=v;
                            } else {
                                delete value[k];
                            }
                        }
                    }
                }
                return reviver.call(holder,key,value);
            }

            text=String(text);
            cx.lastIndex=0;
            if(cx.test(text)) {
                text=text.replace(cx,function (a) {
                    return '\\u'+
                        ('0000'+a.charCodeAt(0).toString(16)).slice(-4);
                });
            }

            if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))) {

                j=eval('('+text+')');

                return typeof reviver==='function'?
                    walk({ '': j },''):j;
            }

            throw new SyntaxError('JSON.decode');
        };
    }
} ());

var Ajax={
    request: function (p) {
        if(typeof p.loading=="function")
            p.loading();
        if(typeof p.async=="undefined")
            p.async=true;
        if(typeof p.method=="undefined")
            p.method="POST";

        var postData=null;
        if(p.params) {
            postData="";
            for(var i in p.params) {
                postData+=i+"="+encodeURIComponent(p.params[i])+"&";
            }
            if(p.method=="GET") {
                p.url+="?"+postData;
                postData=null;
            }
        }
        var createXHR=window.XMLHttpRequest?
        function () {
            return new XMLHttpRequest()
        } :function () {
            return new ActiveXObject("Microsoft.XMLHTTP")
        };
        var xmlhttp=createXHR();
        xmlhttp.open(p.method,p.url,p.async);
        if(p.method=="POST") {
            xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
        }
        xmlhttp.setRequestHeader("X-Requested-With","XMLHttpRequest");
        if(p.dataType=="JSON") {
            xmlhttp.setRequestHeader("Accept","application/json");
            xmlhttp.setRequestHeader("X-Request","JSON");
        } else {
            xmlhttp.setRequestHeader("Accept","text/javascript, text/html, application/xml, text/xml, */*");
        }
        xmlhttp.onreadystatechange=function () {
            if(xmlhttp.readyState==4) {
                if(xmlhttp.status==200) {
                    if(typeof p.success=="function") {
                        if(p.dataType=="JSON") {
                            p.success(JSON.decode(xmlhttp.responseText));
                        }
                        else {
                            p.success(xmlhttp.responseText);
                        }
                    }
                } else {
                    if(typeof p.failure=="function")
                        p.failure(xmlhttp.responseText);
                    else
                        document.write(xmlhttp.responseText);
                }
            }
        }
        xmlhttp.send(postData);
    }
};

var Browser=(function (ua) {
    var b={
        msie: /msie/.test(ua)&&!/opera/.test(ua),
        opera: /opera/.test(ua),
        webkit: /webkit/.test(ua),
        firefox: /firefox/.test(ua),
        chrome: /chrome/.test(ua)
    };
    b.safari=b.webkit&&!b.chrome;
    var vMark="";
    for(var i in b) {
        if(b[i]) {
            vMark=i;
        }
    }
    if(b.safari) {
        vMark="version";
    }
    b.version=RegExp("(?:"+vMark+")[\\/: ]([\\d.]+)").test(ua)?RegExp.$1:"0";

    return b;
})(window.navigator.userAgent.toLowerCase());

var OnReady=(function () {
    var load_events=[],
        load_timer,
        script,
        done,
        exec,
        old_onload,
        init=function () {
            done=true;

            clearInterval(load_timer);

            while(exec=load_events.shift())
                exec();

            if(script) script.onreadystatechange='';
        };

    return function (func) {
        if(done) return func();

        if(!load_events[0]) {
            if(document.addEventListener)
                document.addEventListener("DOMContentLoaded",init,false);

            if(Browser.msie) {
                (function () {
                    if(done)
                        return;
                    var node=new Image();
                    try {
                        node.doScroll();
                        node=null
                    } catch(e) {
                        setTimeout(arguments.callee,64);
                        return;
                    }
                    init();
                });
            }
            else if(Browser.webkit) {
                load_timer=setInterval(function () {
                    if(/loaded|complete/.test(document.readyState))
                        init();
                },10);
            }

            old_onload=window.onload;
            window.onload=function () {
                init();
                if(old_onload) old_onload();
            };
        }

        load_events.push(func);
    }
})();

Abs={
    validateMobile: function (mobile) {
        var code=mobile;
        if(code=="") {
            return false;
        } else {
            var myReg=/^(13[0-9]|15[0-9]|18[0-9])\d{8}$/;
            return myReg.test(code);
        }
    },
    validateEmail: function (email) {
        if(email=="") {
            return false;
        } else {
            var myReg=/^[-_a-zA-Z0-9.]+@([-_a-zA-Z0-9]+\.)+[a-zA-Z0-9]{2,3}$/;
            return myReg.test(email);
        }
    },
    createElement: function (tagName,p,a) {
        var el;
        if(!!a&&!!a.name) {
            try {
                el=document.createElement("<"+tagName+" name='"+a.name+"'>");
                delete a.name;
            } catch(e) {
                el=document.createElement(tagName);
            }
        } else {
            el=document.createElement(tagName);
        }
        if(tagName.toLowerCase()=="input"&&a&&a.type) {
            el.type=a.type;
            delete a.type;
        }
        p.appendChild(el);
        if(a) {
            for(var i in a) {
                eval("el."+i+" = a[i];");
            }
        }
        return el;
    },
    Elems: function (v,n) {
        var e={};
        for(var i=0;!!v&&i<v.length;i++) {
            e[v[i]]=document.getElementById(v[i]);
        }
        for(var i=0;!!n&&i<n.length;i++) {
            e[n[i]]=document.getElementsByName(n[i]);
            e[n[i]].getValue=function () {
                var res="";
                for(var i=0;i<this.length;i++) {
                    if(this.item(i).checked)
                        res+=this.item(i).value+", ";
                }
                if(res!="")
                    res=res.substr(0,res.length-2);
                return res;
            }
        }
        return e;
    },
    getWindowSize: function () {
        if(window.innerWidth||window.innerHeight) {
            return [window.innerWidth,window.innerHeight];
        } else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)) {
            return [document.documentElement.clientWidth,document.documentElement.clientHeight];
        } else {
            return [document.body.offsetWidth,document.body.offsetHeight];
        }
    },
    getDocumentSize: function () {
        if(document.documentElement&&(document.documentElement.scrollWidth||document.documentElement.scrollHeight)) {
            return [document.documentElement.scrollWidth,document.documentElement.scrollHeight];
        } else {
            return [document.body.scrollWidth,document.body.scrollHeight];
        }
    },
    getQueryString: function (name) {
        var reg=new RegExp("(^|&)"+name+"=([^&]*)(&|$)","i");
        var r=window.location.search.substr(1).match(reg);
        if(r!=null)
            return decodeURIComponent(r[2]);
        return null;
    },
    getCookie: function (sName) {
        var value="";
        var aCookie=document.cookie.split("; ");
        for(var i=0;i<aCookie.length;i++) {
            var tCookie=aCookie[i].split("=");
            if(sName==tCookie[0]) value=unescape(tCookie[1]);
        }
        if(value=='undefined') value="";
        return value;
    },
    getElements: function (ids) {
        var elements={};
        for(var i=0;i<ids.length;i++) {
            var element=document.getElementById(ids[i]);
            if(element==null||element.id!=ids[i]) {
                element=document.getElementsByName(ids[i]);
                if(element&&element.length) {
                    element.getValue=function () {
                        var res="";
                        for(var j=0;j<this.length;j++) {
                            if(this[j].checked)
                                res+=this[j].value+", ";
                        }
                        if(res!="")
                            res=res.substr(0,res.length-2);
                        return res;
                    }
                    element.setValue=function (str_val) {
                        str_val=str_val+"";
                        var els=[];
                        var vals=str_val.split(", ");
                        for(var j=0;j<this.length;j++) {
                            var flag=false;
                            for(var n=0;n<vals.length;n++) {
                                if(this[j].value==vals[n]) {
                                    els.push(this[j]);
                                    flag=true;
                                    break;
                                }
                            }
                            if(!flag) {
                                this.item(j).checked=false;
                            }
                        }
                        for(var j=0;j<els.length;j++) {
                            els[j].checked=true;
                        }
                    }
                } else {
                    element=null;
                }
            }
            elements[ids[i]]=element;
        }
        return elements;
    }
}
Abs.JSON=Abs.Json=Abs.json=JSON;
Abs.AJAX=Abs.Ajax=Abs.ajax=Ajax;
Abs.ready=Abs.ONREADY=Abs.OnReady=Abs.onready=Abs.onReady=OnReady;

Abs.pad=function (tbl) {
    return function (num,n) {
        num=num+"";
        return (n<=num.length)?num:(tbl[n]||(tbl[n]=Array(n).join(0)))+num;
    }
} ([]);

//刷新验证码
function changecode(id) {
    document.getElementById(id).src="/ValidCode/"+new Date().getTime()+".jpg";
}

function validSearch() {
    var _keywords=document.getElementById("txt_keywords");
    if(_keywords.value=="请输入关键字"||!_keywords.value) {
        alert("请输入关键字");
        return false;
    }
    return true;
}

function openService() {
    $.open("/OnlineService/Chat.html",600,500);
    //window.open("/?action=onlineservice");
}

var noticePlay=function () {
    if(!$("headerAds"))
        return function () { };

    var ads=$("headerAds").getElementsByTagName("A");
    var curr=0,stop=false,len=ads.length,w=220,h=50,up=true;
    $("headerAds").on("mousemove",function () {
        stop=true;
    }).on("mouseout",function () {
        stop=false;
    });

    function start() {
        if(ads&&ads.length) {
            var opts=[];
            if(!stop) {

                var a=$(ads[curr]);
                curr=curr==len-1?0:(curr+1);
                var b=$(ads[curr]);
                var c,d;
                if(up) {
                    c={
                        topStart: 0,
                        topEnd: -1*h,
                        startTime: 0,
                        endTime: 10
                    };
                    d={
                        topStart: h,
                        topEnd: 0,
                        startTime: 0,
                        endTime: 10,
                        onstart: function () {
                            b.css("top:"+h+"px;left:0px;display:block");
                        }
                    };
                } else {
                    c={
                        leftStart: 0,
                        leftEnd: -1*w,
                        startTime: 0,
                        endTime: 10
                    };
                    d={
                        leftStart: w,
                        leftEnd: 0,
                        startTime: 0,
                        endTime: 10,
                        onstart: function () {
                            b.css("top:0px;left:"+w+"px;display:block");
                        }
                    };
                }
                c.element=a;
                d.element=b;
                //up=!up;

                opts.push(c);
                opts.push(d);
            }

            $.gradual(opts);

            window.setTimeout(start,6000);
        }
    };

    return start;
};
