﻿S.apply(S,{
    WebService : function(service,method,parms,callback,errorcallback){
        this.Ajax.Request({
            method:'POST',
            url: S.WebServiceBase + service+".asmx/" + method,
	        asynchronous : false,
            success: function(response){
                obj = S.JSON.decode(response.responseText);
                callback(obj);
            },
            failure: errorcallback || function(error){alert("错误,系统出现异常!");},
            headers: {'Content-Type':'application/json;charset=GB2312'},
            params:this.JSON.encode(parms)
        });
    },
    Ajax : {
	    url: '',
	    method:"POST",
        success: function(data){alert('data:'+data);},
        failure: function(error){alert('error:'+error);},
        headers: null,
        asynchronous:true,
        params: '',
	    connect:function (){
	        var request = null;
	        var activeX = ['MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP'];
		    try {request = new XMLHttpRequest();} 
            catch(e) {for (var i = 0; i < activeX.length; ++i) try {request = new ActiveXObject(activeX[i]);break;} catch(e) {continue;}}
		    return request;
	    },
	    Request:function (config){
	        S.apply(this,config);
	        var request= this.connect();
	        var ajax = this;
		    var statechange = function(){
		        if(request.readyState==4){
		            if(request.status==200)ajax.success(request);
		            else ajax.failure(request.statusText);
		        };
		    }
		    request.onreadystatechange = S.Browse.isFF() ? statechange():statechange;
	        if(S.Browse.isFF()){try {netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");}catch (exception) {}}
	        if(this.method.toUpperCase()=="GET"){
	            if(this.params) this.url += (this.url.match(/\?/)?'&':'?') + this.params;
	            //this.request.setRequestHeader("If-Modified-Since","0"); 
	        }
	        request.open(this.method,this.url,this.asynchronous);
            if(this.headers) for(i in this.headers) request.setRequestHeader(i,this.headers[i]);
	        request.send((this.method.toUpperCase()=='POST') ? this.params:null);
    	    
		    request.onreadystatechange = S.Browse.isFF() ? statechange():statechange;
        }
    },
    getData : function(params){
        S.WebService(
            params.service || 'artService',
            params.method || 'getArticle',
            params.pm = S.apply({dirs:-1,author:-1,dept:-1,topic:-1,pageSize:9,pageNo:1},params.pm),
            function(arts){
                if(params.fn) params.fn(arts);
                else{
                    S.Content(S.apply({data:arts,type:1,len:22},params.cp));
                    S.PageBar(params.pb||'pageBar',arts.Sum,params.pm.pageSize,params.pm.pageNo);
                }
            });
    },
    Navigate : function(pm,fn){S.WebService("dirService","navigate",{id:pm.id},function(dirs){S.Navi(pm.pos||'navi',dirs,pm.fn);});},
    SetMenu : function(pm){S.WebService("dirService","getDirs",{id:pm.id},function(dirs){S.Menu(pm.pos||'menu',dirs);});},
    advt : null,
    MediaArt : function(pos,pm,width,height){
        this.WebService("artService","getMediaArt",S.apply({type:1,dirs:-1,dept:-1,topic:-1,pageSize:5,pageNo:1},pm),function(arts){
            var pics=[];var mylinks=[];var texts=[];
            if(S.advt) jQuery(S.advt).each(function(){pics.push(this.pic);mylinks.push(this.lk);texts.push(this.title);});
            if(arts.List) jQuery(arts.List).each(function(){
                if(!this.Attach) return;
                pics.push([S.FilePath,this.Attach.Dir,'/news/',this.Attach.StoreName].join(''));
                mylinks.push('articleRead.aspx?id='+this.ID);
                texts.push(this.Title);
            });
		    var sohuFlash2 = new sohuFlash(S.baseURL+"/js/focus0414a.swf",pos,width||"270",height||"200","5","#ffffff");
            sohuFlash2.addParam("quality", "medium");
            sohuFlash2.addParam("wmode", "opaque");
            sohuFlash2.addVariable("speed",3000);
		    sohuFlash2.addVariable("p",pics.join('|'));
		    sohuFlash2.addVariable("l",mylinks.join('|'));
		    sohuFlash2.addVariable("icon",texts.join('|'));
		    sohuFlash2.write(pos);
        });
    },
    MediaArt1 : function(pos){
        S.WebService("artService","getMediaArt",{type:S.Enum.ArticleType.图片新闻,dirs:-1,dept:-1,topic:-1,pageSize:4,pageNo:1},function(arts){
            S(pos).innerHTML = '';
            jQuery(arts.List).each(function(){
                if(!this.Attach) return;
                S(pos).appendChild(S.E({tag:'div',items:[
                    {tag:'a',href:'articleRead.aspx?id='+this.ID,target:'_blank',title:this.Title,items:[
                        {tag:'img',src:S.FilePath+this.Attach.Dir+"/small/"+this.Attach.StoreName},{tag:'br'},{text:this.Title.Limit(22)}
                    ]}
                ]}));
            });
            S(pos).appendChild(S.E({tag:'div',className:'clearfix'}));
        });
    },
    JSON : new(function(){
        var useHasOwn = !!{}.hasOwnProperty;
        var m = {"\b": '\\b',"\t": '\\t',"\n": '\\n',"\f": '\\f',"\r": '\\r','"' : '\\"',"\\": '\\\\'};
        var encodeString = function(s){
            if (/["\\\x00-\x1f]/.test(s)) {
            return '"' + s.replace(/([\x00-\x1f\\"])/g, function(a, b) {
                var c = m[b];
                if(c) return c;
                c = b.charCodeAt();
                return "\\u00" +Math.floor(c / 16).toString(16) +(c % 16).toString(16);}) + '"';
            }
            return '"' + s + '"';
        };
        var encodeArray = function(o){
            var a = ["["], b, i, l = o.length, v;
            for (i = 0; i < l; i += 1) {
                v = o[i];
                switch (typeof v) {
                    case "undefined":
                    case "function":
                    case "unknown":
                    break;
                    default:
                    if (b) a.push(',');
                    a.push(v === null ? "null" : S.JSON.encode(v));
                    b = true;
                }
            }
            a.push("]");
            return a.join("");
        };
        this.encodeDate = function(o){return "\"\\/Date("+o.getTime()+")\\/\"";};
        this.encode = function(o){
            if(typeof o == "undefined" || o === null){
                return "null";
            }else if(Object.prototype.toString.apply(o) === '[object Array]'){
                return encodeArray(o);
            }else if(Object.prototype.toString.apply(o) === '[object Date]'){
                return S.JSON.encodeDate(o);
            }else if(typeof o == "string"){
                return encodeString(o);
            }else if(typeof o == "number"){ 
                return isFinite(o) ? String(o) : "null"; 
            }else if(typeof o == "boolean"){
                return String(o);
            }else {
                var a = ["{"], b, i, v; 
                for (i in o) {
                    if(!useHasOwn || o.hasOwnProperty(i)) 
                    {
                        v = o[i];
                        switch (typeof v) { 
                        case "undefined":
                        case "function": 
                        case "unknown":
                        break;
                        default:
                            if(b) a.push(',');
                            a.push(this.encode(i), ":", v === null ? "null" : this.encode(v));
                            b = true;
                        }
                    }
                }
                a.push("}");
                return a.join("");
            }
        };
        var getDate = function(value){return eval("new "+eval(value).source);}
        var transDate = function(value){
            for(i in value){
                if(typeof(value[i])=='object')transDate(value[i]);
                else {
                    var t = new RegExp(/\/Date\((\d*)\)\//);
                    if(t.test(value[i]))value[i] = getDate(value[i]);
                }
            }
        }
        this.decode = function(json){
            obj = eval("(" + json + ')').d;
            transDate(obj);
            return obj;
        };

    })(),
    Enum : {
        ZPGStatus : new S.EnumBase({
            准备:0,
            正在公示:1,
            正在挂牌:2,
            已结束:3,
            转拍卖:4,
            已成交:5,
            流拍:6,
            无:7,  
            Name : function(value){
                for(j in this) if(this[j]==value) switch(value){
                    case 1: return '<span style="color:blue;">'+j+'</span>';
                    case 2: return '<span style="color:green;">'+j+'</span>';
                    default: return '<span style="color:red;">'+j+'</span>';
                }
            }
        }),
        GKZJtype : new S.EnumBase({
            身份证:0,
            其他证件:1
        }),
         GKGetMode : new S.EnumBase({
            邮寄:0,
            快递:1,
            电子邮件:2,
            传真:3,
            自行领取:4
        }),
        GKType : new S.EnumBase({
            纸面:0,
            电子邮件:1,
            光盘:2,
            磁盘:3
        }),
        DataType : new S.EnumBase({
            网站目录:0,
            部门目录:1,
            专题目录:2,
            管理目录:3,
            普通文章:4,
            咨询回复:5,
            调查投票:6,
            附件信息:7,
            交易信息:8,
            农土流转:9,
            其他信息:10
        }),
        ArticleType : new S.EnumBase({
            普通文章:0,
            图片新闻:1,
            文件下载:2,
            视频新闻:3
        }),
        ArticleStatus : new S.EnumBase({
            草稿:0,
            待审核:1,
            退稿:2,
            待发布:3,
            已发布:4,
            下线归档:5,
            无:6
        }),
        ReferStatus : new S.EnumBase({
            待回复:0,
            待发布:1,
            已发布:2,
            无:3
        })
    }
});
