﻿function S(){
    return document.getElementById(arguments[0]);
}
S.apply = function(o, c, defaults){
     if (defaults) S.apply(o, defaults);
    if(o && c && typeof c == 'object') for(var p in c)
        if(p == 'style') S.apply(o[p],c[p]);
        else o[p] = c[p];
    return o;
}
S.apply(S,{
    baseURL : "./",
    WebServiceBase : "/Service/",
    FilePath : "/Files/",
    Request : function(name){return location.getParm(name);},
    Input : function(pos,config){
        jQuery('#'+pos).each(function(){
            S.apply(this,config,{
                inType : 'string',
                msg : '',
                showType : 0,//0:class tip,1:show tip,2:msgbox
                required : true,
                Exp : '',
                isValid : false,
                len : 50,
                theSame : null,
                validate : function(v){ return true;},
                onfocus : function(){this.content=this.value;this.value="";},
                onblur  : function(){if(!this.value) this.value=this.content; else this.content = this.value;this.check();},
                onchange : this.onblur,
                check : function(){
                    //if(!this.required){this.isValid = true; return;}
                    var ss = this.Exp;
                    if(this.theSame)jQuery('#'+this.theSame).each(function(){ss = ss.replace("STR",this.value);}); 
                    this.setResult((this.required ? this.value!="":true) && new RegExp(ss).test(this.value) && this.validate(this.value));
                    return this.isValid;
                },
                setResult : function(result,msg){
                    this.isValid = result;
                    msg = msg || this.msg;
                    jQuery('#'+this.id+"_msg").each(function(){this.innerHTML = msg;});
                    switch(this.showType){
                        case 0:if(result) jQuery('#'+this.id+"_msg").attr('class',''); else jQuery('#'+this.id+"_msg").attr('class','inputerror'); break;
                        case 1:if(result){this.appendSpan();}else{ jQuery('#'+this.id+"_msg").hide(); } break;
                        case 2:if(!result)alert(msg ? msg : this.msg);break;
                    }
                },
                appendSpan : function(){
                    var span = this.nextSibling;
                    if(span && span.tagName=='SPAN'){span.innerHTML = this.msg;return;}
                    else span = document.createElement("span");
                    span.innerHTML = this.msg;
                    span.id=this.id+"_msg";
                    if(this.nextSibling) this.parentNode.insertBefore(span,this.nextSibling);
                    else this.parentNode.appendChild(span);
                },
                init : function(){
                    testStr = {"string":"^[\w\u4e00-\u9fa5\-\_0-9a-zA-Z]{1,LEN}$",
                    "tel":"(^[0-9]{3,4}\\-[0-9]{7,8}$)|(^[0-9]{7,8}$)|(^0[0-9]{10})|(^\\([0-9]{3,4}\\)[0-9]{3,8}$)|(^1[3|5][0-9]{9}$)",
                    "email":"^[_a-zA-Z0-9]+@([_a-zA-Z0-9]+\.)+[a-zA-Z0-9]{2,3}$",
                    "same":"^STR$"};
                    if(!this.Exp)this.Exp = testStr[this.inType];
                    if(!this.Exp) alert("输入类型错误");
                    if(this.showType==0)this.appendSpan();
                    if(this.inType=="string") this.Exp = this.Exp.replace("LEN",this.len);
                    this.isValid = false;
                }
            });
            this.init();
        });
    },
    PageBar : function(pos,artSum,pageSize,pageNo){
        jQuery('#'+pos).each(function(){
            S.apply(this,{
                item:'#'+pos,
                artSum:artSum,
                pageSize:pageSize,
                pageNo:pageNo,
                firstText:'第一页',privText:'上一页',nextText:'下一页',lastText:'最后一页',
                itemCls:'item',selectCls:'seled',labelCls:'label',disableCls:'disable',
                pageChange : function(pn){if(typeof(pageChange)!='undefined') pageChange(pn);},
                appendText : function(str,cls){this.appendChild(S.E({tag:'div',innerHTML:str,className: cls || this.disableCls}));},
                appendLink : function(text,pn){this.appendChild(S.E({tag:'div',className:this.itemCls,items:[{tag:'a',innerHTML:text,pageNo:pn,pageChange:this.pageChange}]}));},   
                init:function(){
                    var top=0,bottom=0;
                    var pageSum = parseInt(this.artSum / this.pageSize);
                    if(this.artSum % this.pageSize > 0) pageSum++;//计算页数
                    if(pageSum <= 5) {bottom = 1; top = pageSum;}
                    else if(this.pageNo <= 3) {bottom = 1; top = 5;}
                    else if(this.pageNo >= pageSum-2){top = pageSum; bottom = pageSum - 4;}
                    else {top = parseInt(this.pageNo) + 2;bottom = parseInt(this.pageNo) - 2;}//计算top，bottom页号
                    this.innerHTML='';
                    var div = this;
                    if(pageSum <100){
                        this.appendText('页',this.labelCls);
                        var sel = S.E({tag:'select',onchange:function(){div.pageChange(this.value);}});
                        for(i=1;i<=pageSum;i++) sel.appendChild(S.E({tag:'option',value:i,innerHTML:i,selected:i==this.pageNo}));
                        this.appendChild(S.E({tag:'div',items:[sel]}));
                        this.appendText('转到',this.labelCls);
                    }
                    if(this.pageNo!=pageSum) {this.appendLink(this.lastText,pageSum);this.appendLink(this.nextText,this.pageNo+1);}
                    else {this.appendText(this.lastText);this.appendText(this.nextText);}
                    for(i=top;i>=bottom;i--)if(i!=this.pageNo) this.appendLink(i,i);else this.appendText(i,this.selectCls);
                    if(this.pageNo > 1) {this.appendLink(this.privText,this.pageNo-1);this.appendLink(this.firstText,1);}
                    else {this.appendText(this.privText);this.appendText(this.firstText);}
                    this.appendText("共"+this.artSum+"条记录 共"+pageSum+"页 ",this.labelCls);
                }
            });
            this.init();
        });
    },
    Navi : function(pos,data,fn){
        jQuery('#'+pos).each(function(){
            S.apply(this,{
                data:data,
                init:function(){
                    this.innerHTML="";
                    this.appendChild(S.E({tag:'div',className:'label',innerHTML:'当前位置： '}));
                    for (var i = this.data.length -1; i >=0 ; i--){
                        var lk = S.E({tag:'a',Dir:this.data[i],innerHTML:this.data[i].Name});
                        var div = S.E({tag:'div',className:'dir',items:[lk]});
                        if(i==0) lk.id='pos';
                        if(i==this.data.length -1){ lk.href = S.baseURL+"/Default.aspx"; div.className = 'navi-head';}
                        if(i>0 && i<this.data.length -1 && typeof(dirChange)!='undefined') lk.dirChange = dirChange;
                        this.appendChild(div);
                        if(i!=0) this.appendChild(S.E({tag:'div',items:[{text:' -> '}]}));
                    }
                }
            });
            this.init();
            if(fn) fn(this.data[this.data.length-2],this.data[0]);
        });
    },
    Menu : function(pos,data,check){
        jQuery('#'+pos).each(function(){
            S.apply(this,{
                data:data,
                check : check || function(dir){ return dir.Valid;},
                init:function(){
                    this.innerHTML="";
                    var ul = document.createElement('UL');
                    for(i = 0;i<this.data.length;i++){
                        if(!this.check(this.data[i])) continue;
                        var lk = S.E({tag:'a',Dir:this.data[i],innerHTML:this.data[i].Name});
                        if(typeof(dirChange)!='undefined') lk.dirChange = dirChange;
                        ul.appendChild(S.E({tag:'li',items:[{tag:'div',items:[lk]}]}));
                    }
                    this.appendChild(ul);
                }
            });
            this.init();
        });
    },
    Content : function(){
        var params = arguments[0];
        var pos = typeof params == 'object' ? params.pos : params;
        var arts = arguments[1] || params.data;
        var type = arguments[2] || params.type;
        var len = arguments[3] || params.len;
        var headtype = arguments[4] || params.headtype;
        var pageto = arguments[5] || params.pageto;
        var cmd = arguments[6] || params.cmd;
        var ul = S.E({tag:'ul',width:'96%'});
        if(!arts.List) ul.appendChild(S.E({tag:'li',items:[{tag:'a',innerHTML:'没有文章'}]}));
        else {
            var count = arts.List.length;
            for(i = 0;i<count;i++){
                var a = arts.List[i];
                var href = (pageto || 'articleRead.aspx') + '?id='+a.ID;
                if(headtype>5) href +=  '&dept='+ headtype;
                /*if(i==0 && a.Commend){
                    if(cmd){ul.appendChild(S.E({tag:'div',className:'topic',items:[
                        {tag:'a',href:href,title:a.Title,target:'_blank',innerHTML:a.Title.Limit(len*1.5)}
                        ]}));count--;}
                    continue;
                }*/
                var str = a.Title.Limit(len);
                if(headtype) switch(headtype){
                    case 1: if(a.Directory != 17) str ='<span style="color:#888;">['+ a.DirName +']</span>' +str.Limit(len-a.DirName.length);break;
                    case 2: if(a.Dept != 18) str ='<span style="color:#888;">['+ a.DeptName +']</span>' +str.Limit(len-a.DirName.length);break;
                    case 5: str ='<span style="color:#888;">['+ S.Enum.ZPGStatus.Name(a.Status) +']</span>' +str.Limit(len-2);break;
                }
                if(a.PublishDate && ((new Date()).getTime()-a.PublishDate.getTime())/(24*60*60*1000) < 3)
                    str = str.Limit(Math.max(len,str.length)-3)+'<img src="'+S.baseURL+'/images/li-new.gif" />';
                else switch(a.Type){
                    case 1:str =str.Limit(Math.max(len,str.length)-3) + '<img src="'+S.baseURL+'/images/li-img.gif" />';break;
                    case 2:str =str.Limit(Math.max(len,str.length)-3) + '<img src="'+S.baseURL+'/images/li-file.gif" />';break;
                    case 3:str =str.Limit(Math.max(len,str.length)-3) + '<img src="'+S.baseURL+'/images/li-media.gif" />';break;
                }
                switch(type){
                    case 1:ul.appendChild(S.E({tag:'li',items:[{tag:'a',href:href,title:a.Title,target:'_blank',innerHTML:str},
                        {tag:'div',innerHTML:a.PublishDate.format(params.dateformat||"yyyy年MM月dd日")}]}));break;
                    case 2:ul.appendChild(S.E({tag:'li',items:[{tag:'a',href:href,title:a.Title,target:'_blank',innerHTML:str}]}));break;
                    case 3:ul.appendChild(S.E({tag:'li',items:[{tag:'a',href:href,title:a.Title,target:'_blank',innerHTML:a.Title}]}));break;
                    default:break;
                }
            }
        }
        jQuery('#'+pos).each(function(){this.innerHTML = '';this.appendChild(ul);});
        return ul;
    },
    E : function(config){
        if(!config) return null;
        if(config.tagName) return config;
        if(!config.tag) return document.createTextNode(config.text);
        var elem = document.createElement(config.tag);
        var defaults = null;
        if(config.tag=='a') defaults = {
            onclick :function(){
                if(this.Dir && this.dirChange) this.dirChange(this.Dir);
                if(this.pageNo && this.pageChange) this.pageChange(this.pageNo);
            }
        };
        if(config.tag=='table')defaults = {border:0,cellSpacing:0,cellPadding:0};
        S.apply(elem,config,defaults);
        if(config.items) for(var i=0;i<config.items.length;i++) elem.appendChild(S.E(config.items[i]));
        return elem;
    },
    Browse : {
	    isIE : function(){return navigator.userAgent.indexOf("MSIE")!=-1;},
	    isFF : function(){return navigator.userAgent.indexOf("Firefox")!=-1;},
	    isOpera : function(){return navigator.userAgent.indexOf("Opera")!=-1},
	    isSafari : function(){return navigator.userAgent.indexOf("Safari")!=-1;},
	    isGecko : function(){return navigator.userAgent.indexOf("Gecko")!=-1;}
    },
    EnumBase : function(config){
        S.apply(this,config,{
            Name : function(value){
                for(j in this) if(this[j]==value) return j;
            },
            toArray : function(){
                var ar = [];
                for(j in this){if(j!='Name' && j != 'toArray') ar.push([this[j],j]);}
                return ar;
            }
        });
    }
});
location.getParm = function(name){var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");var r = this.search.substr(1).match(reg);if (r!=null) return unescape(r[2]); return null;},
location.getPage = function(){return this.pathname;}

Date.prototype.format=function(fmt) {
    var week = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]; 
    var o = {
    "M+" : this.getMonth()+1, //月份
    "d+" : this.getDate(), //日
    "h+" : this.getHours()%12 == 0 ? 12 : this.getHours()%12, //小时
    "H+" : this.getHours(), //小时
    "m+" : this.getMinutes(), //分
    "s+" : this.getSeconds(), //秒
    "q+" : Math.floor((this.getMonth()+3)/3), //季度
    "S" : this.getMilliseconds(), //毫秒 
    "w+" : week[this.getDay()]    
    };
    if(/(y+)/.test(fmt)){fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));}
    if(/(E+)/.test(fmt)){fmt=fmt.replace(RegExp.$1, ((RegExp.$1.length>1) ? (RegExp.$1.length>2 ? "\u661f\u671f" : "\u5468") : "")+week[this.getDay()]);}
    for(var k in o){if(new RegExp("("+ k +")").test(fmt)){fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));}}         
    return fmt;         
}
String.prototype.Limit = function(len){
    var ss = [];k = 0;flag=false;
    for(l=0;l<this.length;l++){ss.push(this.charAt(l));
        if( this.charCodeAt(l) > 255) k++; else{if(flag) k++;flag = !flag;}
        if (k > len - 1){ss.push("..");break;}}
    return ss.join('');
}
S.apply(String.prototype,{
    findCookie : function(key){
        var content = decodeURI(document.cookie).split(";");
        for(var i=content.length - 1;i>=0 ;i--){
            if(key == content[i].substring(0,content[i].indexOf("=")))return content[i];
        }
        return null;
    },
    getCookie : function(key){
        key = key.split(".");
        var content = this.findCookie(key[0]);
        if(!content) return null;
        if(!key[1]) return content.substring(content[i].indexOf("=")+1,content[i].length);
        content = content.substring(content.indexOf("=")+1,content.length).split("&");
        var str = null;
        for(var i=0;i<content.length;i++)if(content[i].indexOf(key[1]) != -1) str = content[i].split("=");
        if(!str) return null;
        else if(str[1]!=null && str[1].toLowerCase()=="false") return false;
        else if(str[1]!=null && str[1].toLowerCase()=="true") return true;
        else if(!isNaN(parseInt(str[1])))return parseInt(str[1]);
        else return str[1];
    },
    setCookie : function(key,value){
        key = key.split(".");
        var content = null;
        if(key[1]){
            content = this.findCookie(key[0]);
            if(!content) content = key[0]+"="+key[1]+"="+value;
            else if(content.indexOf(key[1])!=-1){
                    var cookies = content.substring(content.indexOf("=")+1,content.length).split("&");
                    for(i=0;i<cookies.length;i++){ 
                    if(cookies[i].indexOf(key[1])!=-1)
                    content = content.replace((cookies[i]),cookies[i].replace(/\=[\w|\W]+/,"="+value));}
                }
            else content +="&"+key[1]+"="+value;
        }
        else content = key[0]+"="+value;
        document.cookie = encodeURI(content);
    }
});
