1/**//*------------------------------------------------------------ 
  2 *                    S.Sams Lifexperience 
  3 * CopyRight (C) 2003-2007 S.Sams Lifexperience ScriptClassLib 
  4 * MSNLive: S.Sams#msn.com 
  5 *  
  6 * UPdate by : 2007-01-19 转载传播请保留版权 
  7 *-----------------------------------------------------------*/ 
  8  
  9 
 10/**//*    $ 获取指定对象 
 11    @element    对象名 
 12    可以使用对象名集合,返回值为对象的集合 
 13    如果您使用了 Prototype 类库, 请把该函数注释掉 
 14    Sams_object.Get() 中同样实现该函数的所有功能 
 15*/ 
 16function $(element) { 
 17  if (arguments.length > 1) { 
 18    for (var i = 0, elements = [], length = arguments.length; i < length; i++) 
 19      elements.push($(arguments[i])); 
 20    return elements; 
 21  } 
 22  if (typeof element == 'string') 
 23    element = document.getElementById(element); 
 24  return element; 
 25} 
 26 
 27/// 浏览器相关操作 
 28var Sams_browse = { 
 29    /**//*    检测浏览信息 */ 
 30    checkBrowser : function () 
 31    {  
 32                this.ver=navigator.appVersion  
 33                this.dom=document.getElementById?1:0  
 34                this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom)?1:0;  
 35                this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0;  
 36                this.ie4=(document.all && !this.dom)?1:0;  
 37                this.ns5=(this.dom && parseInt(this.ver) >= 5) ?1:0;  
 38                this.ns4=(document.layers && !this.dom)?1:0;  
 39                this.mac=(this.ver.indexOf('Mac') > -1) ?1:0;  
 40                this.ope=(navigator.userAgent.indexOf('Opera')>-1);  
 41                this.ie=(this.ie6 || this.ie5 || this.ie4)  
 42                this.ns=(this.ns4 || this.ns5)  
 43                this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns5 || this.ns4 || this.mac || this.ope)  
 44                this.nbw=(!this.bw)  
 45                return this; 
 46    }, 
 47 
 48    /**//*    设为首页 
 49        @url        要设为首页的地址 
 50    */ 
 51    SetDefault : function () 
 52    { 
 53        this.style.behavior='url(#default#homepage)'; 
 54        this.setHomePage(this.GetUrl()); 
 55        return false; 
 56    }, 
 57 
 58    /**//*    复制指定URL地址 
 59        @Msg        要写入剪贴板的字符集 
 60    */ 
 61    SetCopy    : function (Msg){ 
 62        if(navigator.userAgent.toLowerCase().indexOf('ie') > -1) { 
 63            clipboardData.setData('Text',Msg); 
 64            alert ("网址“"+Msg+"”\n已经复制到您的剪贴板中\n您可以使用Ctrl+V快捷键粘贴到需要的地方"); 
 65        } 
 66        else  
 67        { 
 68            prompt("请复制网站地址:",Msg);  
 69        } 
 70    }, 
 71 
 72    /**//*    加入收藏 
 73        @site        站点名称 
 74        @url        地址 
 75    */ 
 76    AddBookmark : function (site, url){ 
 77        if(navigator.userAgent.toLowerCase().indexOf('ie') > -1) { 
 78            window.external.addFavorite(url,site) 
 79        } else if (navigator.userAgent.toLowerCase().indexOf('opera') > -1) { 
 80            alert ("请使用Ctrl+T将本页加入收藏夹"); 
 81        } else { 
 82            alert ("请使用Ctrl+D将本页加入收藏夹"); 
 83        } 
 84    }, 
 85 
 86    /**//*    打开Url指定宽度和高度的窗口 */ 
 87    OpenWindows : function (url,width,height) 
 88    { 
 89        window.open(url,'newwin','width='+width+',height='+height); 
 90        return false; 
 91    }, 
 92 
 93    /**//*    禁止浏览器的Javascript错误提示 */ 
 94    CloseError : function(){ 
 95        window.onerror = function(){return true;}; 
 96    }, 
 97 
 98    /**//*    获取浏览器URL */ 
 99    GetUrl : function(){ 
100        return location.href; 
101    }, 
102 
103    /**//*    获取URL参数 */ 
104    GetUrlParam : function(){ 
105        return location.search; 
106    }, 
107     
108    /**//*    获取页面来源 */ 
109    GetFrom : function(){ 
110        return document.referrer; 
111    }, 
112 
113    /**//*    获取指定的URL参数值 
114        @name        参数名 
115    */ 
116    Request : function(name){ 
117        var GetUrl = this.GetUrl(); 
118        var Plist = new Array(); 
119        if(GetUrl.indexOf('?') > 0) 
120        { 
121            Plist = GetUrl.split('?')[1].split('&'); 
122        } 
123        else if(GetUrl.indexOf('#') > 0) 
124        { 
125            Plist = GetUrl.split('#')[1].split('&'); 
126        } 
127        if (GetUrl.length > 0) 
128        { 
129            for(var i=0; i<Plist.length; i++) 
130            { 
131                var GetValue = Plist[i].split('='); 
132                if (GetValue[0].toUpperCase() == name.toUpperCase()) 
133                { 
134                    return GetValue[1]; 
135                    break; 
136                } 
137            } 
138            return; 
139        } 
140    }, 
141 
142    /**//*    直接将HTML写到新窗口 
143        @title        标题 
144        @msg        内容 
145    */ 
146    Popmsg : function PopIt(title,msg) 
147    { 
148        var popup = window.open('','popDialog','height=500,width=400,scrollbars=yes'); 
149        popup.document.write('<html><title>'+title+'</title><style>body{margin:10px;font:13px Arial;}span{text-line:20px;}</style><body><span style=\'font:14px arial;\'>'+msg + '</span></body></html>'); 
150        popup.document.close(); 
151    } 
152}; 
153 
154 
155/// 对象操作 
156var Sams_object = { 
157     
158    /**//*    创建一个DIV对象 
159        @ID            要创建的对象ID 
160        @ClassName    创建对象的Class 
161        @SetValue    设置该对象值 
162        @ToDiv        将对象追加到指定的对象,如指定的对象不存在,则追加在Body的后面 
163        返回        创建后的对象 
164    */ 
165    CreateDiv : function (ID,ClassName,SetValue,ToDiv){ 
166        var creatediv = document.createElement('div'); 
167        if(ID != null) creatediv.id = ID; 
168        creatediv.style.position = 'absolute'; 
169        if(ClassName != null) creatediv.className = ClassName; 
170        if(this.Get(ToDiv)) 
171        { 
172            this.Get(ToDiv).appendChild(creatediv); 
173        } 
174        else 
175        { 
176            document.getElementsByTagName('body')[0].appendChild(creatediv); 
177        } 
178        this.SetValue(ID,SetValue); 
179        return this.Get(ID); 
180    }, 
181     
182    /**//*    删除指定DIV对象 
183        @objid        要删除的对象ID 
184        返回        Bool 操作结果 
185    */ 
186    DeleteDiv : function (objid) 
187    { 
188        try 
189        { 
190            if(this.Get(objid)) 
191            { 
192                var GetParent = this.Get(objid).parentNode; 
193                GetParent.removeChild(this.Get(objid)); 
194                return true; 
195            } 
196            else 
197            { 
198                return false; 
199            } 
200        } 
201        catch(e) 
202        { 
203            return false; 
204        } 
205    }, 
206 
207    /**//*    获取浏览器对象 
208        @id        要获取的对象ID 
209        可以使用对象名集合,返回值为对象的集合 
210    */ 
211    Get : function (objid) { 
212        if (arguments.length > 1) { 
213            for (var i = 0, objids = [], length = arguments.length; i < length; i++) 
214              objids.push(this.Get(arguments[i])); 
215            return objids; 
216        } 
217        if (typeof objid == 'string') 
218        { 
219            if (document.getElementById) { 
220                objid = document.getElementById(objid); 
221            } else if (document.all) { 
222                objid = document.all[objid]; 
223            } else if (document.layers) { 
224                objid = document.layers[objid]; 
225            } 
226        } 
227        return objid; 
228    }, 
229     
230    /**//*    获取对象的值 
231        @objid        对象ID 
232    */ 
233    GetValue : function (objid) { 
234        if (typeof objid == 'string') 
235        { 
236            var getTagName = this.Get(objid).tagName.toLowerCase(); 
237            if (getTagName == 'input' || getTagName == 'textarea' || getTagName == 'select') 
238            { 
239                return this.Get(objid).value; 
240            } 
241            else if (getTagName == 'div' || getTagName == 'span') 
242            { 
243                return this.Get(objid).innerText; 
244            } 
245        } 
246        else if (typeof objid == 'object') 
247        { 
248            return objid.value; 
249        } 
250    }, 
251 
252    /**//*    设置指定对象的值,实现可以直接赋值或清除操作 
253        @objid        对象ID 
254        @inserValue    传入值(可选项 Null:清除该ID的值, 则直接赋值) 
255    */ 
256    SetValue: function(objid,inserValue) { 
257        var getTagName = this.Get(objid).tagName.toLowerCase(); 
258        if (inserValue == null) inserValue = ''; 
259        if (getTagName == 'input' || getTagName == 'textarea') 
260        { 
261            this.Get(objid).value = inserValue; 
262        } 
263        else if (getTagName == 'div' || getTagName == 'sapn') 
264        { 
265             
266            this.Get(objid).innerText = inserValue; 
267        } 
268    }, 
269     
270    /**//*    拷贝对象值到剪贴板   
271        @str        对象值 
272    */ 
273    CopyCode : function (str) { 
274        var rng = document.body.createTextRange(); 
275        rng.moveToElementText(str); 
276        rng.scrollIntoView(); 
277        rng.select(); 
278        rng.execCommand("Copy"); 
279        rng.collapse(false); 
280    }, 
281     
282    /**//*    显示隐藏一个对象  
283        @Objid        对象ID 
284        @isshow        具体操作,指定Obj为False : none或者True : block (可选) 
285    */ 
286    ShowHidd : function(objid,isshow){ 
287        if (isshow != null) 
288        { 
289            if(isshow) 
290            { 
291                this.Get(objid).style.display = 'block'; 
292            } 
293            else 
294            { 
295                this.Get(objid).style.display = 'none'; 
296            } 
297        } 
298        else 
299        { 
300            if(this.Get(objid).style.display == 'none') 
301            { 
302                this.Get(objid).style.display = 'block'; 
303            } 
304            else 
305            { 
306                this.Get(objid).style.display = 'none'; 
307            } 
308        } 
309    }, 
310     
311    /**//*    当前对象是否可见 
312        @objid        对象ID 
313    */ 
314    IsVisible : function(objid){ 
315        if(this.Get(objid)) 
316        { 
317            try 
318            { 
319                if (this.Get(objid).style.display == 'none') 
320                { 
321                    return false 
322                } 
323                if(this.Get(objid).style.visibility == 'hidden') 
324                { 
325                    return false; 
326                } 
327                return true; 
328            } 
329            catch(e) 
330            { 
331                return false; 
332            } 
333        } 
334        else 
335        { 
336            return false; 
337        } 
338    } 
339}; 
340 
341/// 字符处理 
342var Sams_string = { 
343    /**//*    取左边的指定长度的值   
344        @str        要处理的字符集 
345        @n            长度 
346    */ 
347    Left : function (str,n) 
348    { 
349        if(str.length > 0) 
350        { 
351            if(n>str.length) n = str.length; 
352            return str.substr(0,n) 
353        } 
354        else 
355        { 
356         return; 
357        } 
358    }, 
359     
360    /**//*    取右边的指定长度的值    
361        @str        要处理的字符集 
362        @n            长度 
363    */ 
364    Right : function (str,n) 
365    { 
366        if(str.length > 0) 
367        { 
368            if(n>=str.length) return str; 
369            return str.substr(str.length-n,n); 
370        } 
371        else 
372        { 
373            return; 
374        } 
375    }, 
376     
377    /**//*    Trim:清除两边空格  
378        @str        要处理的字符集 
379    */ 
380    Trim : function (str)  
381    { 
382        if (typeof str == 'string') return str.replace(/(^\s*)|(\s*$)/g, ''); 
383    }, 
384 
385    /**//*    LTrim:清除左边的空格  
386        @str        要处理的字符集 
387    */ 
388    Ltrim : function (str)  
389    {  
390        if (typeof str == 'string') return str.replace(/(^\s*)/g, ''); 
391    }, 
392 
393    /**//*    RTrim: 清除右边的空格  
394        @str        要处理的字符集 
395    */ 
396    Rtrim : function (str)  
397    {  
398        if (typeof str == 'string') return str.replace(/(\s*$)/g, ''); 
399    }, 
400     
401    /**//*    清除前后的非字符 
402        @str        要处理的字符集 
403    */ 
404    strip : function(str) { 
405        if (typeof str == 'string') return str.replace(/^\s+/, '').replace(/(^\s*)|(\s*$)/g, ''); 
406    }, 
407 
408    /**//*    过滤字符里面的HTML标签 
409        @str        要处理的字符集 
410    */ 
411    stripTags : function(str) { 
412        if (typeof str == 'string')return str.replace(/<\/?[^>]+>/gi, '').replace(/(^\s*)|(\s*$)/g, ''); 
413    } 
414}; 
415 
416/// 时间相关操作 
417var Sams_time = { 
418    /**//*    获取当天日期 yyyy-MM-dd */ 
419    GetDateNow : function (){ 
420        var d,y,m,dd; 
421        d = new Date();  
422        y = d.getYear(); 
423        m = d.getMonth() + 1; 
424        dd = d.getDate();                                                 
425        return y+"-"+m+"-"+dd; 
426    }, 
427 
428    /**//*    获取指定日期后的特定天数的日期值 
429        @toDate        当前指定的日期 
430        @N            要添加的日期数 
431    */  
432    AddDays : function(toDate,N){ 
433        var aDate=this._cvtISOToDate(toDate); 
434        if (!aDate) return ""; 
435        var millis=86400000 * N; 
436        aDate=new Date(aDate.getTime()+millis); 
437        return this._fmtDateISO(aDate); 
438    }, 
439    _fmtDateISO : function (aDate) { 
440        with (aDate) { 
441            var mm=getMonth()+1; 
442            if (mm<10) {mm='0'+mm;} 
443            var dd=getDate(); 
444            if (dd<10) {dd='0'+dd;} 
445            return (getFullYear() + '-' + mm + '-' + dd); 
446        } 
447    }, 
448    _cvtISOToDate : function (isoDate) { 
449        var atomDate= isoDate.split('-'); 
450        var aDate=new Date(parseInt(atomDate[0],10),parseInt(atomDate[1],10)-1,parseInt(atomDate[2],10),6,0,0); 
451        return aDate; 
452    } 
453}; 
454 
455/// 图像相关操作 
456var Sams_media = { 
457    /**//*    为单一图像添加鼠标中键放大缩小功能, 批量可以直接用 ResizeImage(指定添加该功能的图片大小:Int) 即可 (该功能只适用于IE) 
458        objid        对象ID     
459    */ 
460    ZoomFun : function(objid){ 
461        Sams_object.Get(objid).onmousewheel = function(){return Sams_media.imagecontrol(this);} 
462    }, 
463 
464    /**//*    重置图片尺寸同时添加放大功能 (该功能只适用于IE)  
465        @IntSize    指定图像的大小 
466        如果适合图像大小就添加放大缩小功能 
467    */  
468    ResizeImage: function (IntSize) { 
469        var imgsinlog=document.getElementsByTagName('img'); 
470        for(j=0; j<imgsinlog.length; j++) { 
471            if (imgsinlog[j].width >= IntSize) { 
472                imgsinlog[j].width = IntSize; 
473                imgsinlog[j].style.cursor= 'pointer'; 
474                imgsinlog[j].onclick = function() {window.open(this.src);} 
475                if (navigator.userAgent.toLowerCase().indexOf('ie') > -1) { 
476                    imgsinlog[j].title = '您可以用鼠标中键或者使用Ctrl+鼠标滚轮缩放图片,点击图片可在新窗口打开'; 
477                    imgsinlog[j].onmousewheel = function(){return Sams_media.imagecontrol(this);}; 
478                } 
479                else 
480                { 
481                    imgsinlog[j].title = '点击图片可在新窗口打开'; 
482                } 
483            } 
484        } 
485    }, 
486    imagecontrol : function(obj){ 
487        var zoom=parseInt(obj.style.zoom, 10)||100;zoom+=event.wheelDelta/12; 
488        if (zoom>0) obj.style.zoom=zoom+'%'; 
489        return false; 
490    }, 
491 
492    /**//*    如果图像出现下载不了等异常,显示的错误提示图片 
493        @errimgpath    显示错误提示的图像路径 
494    */  
495    ImagesError : function(errimgpath){ 
496        var imglist = document.getElementsByTagName('img'); 
497        for(j=0; j<imglist.length; j++) { 
498            imglist[j].onerror = function(){ 
499                this.src = errimgpath; 
500            } 
501        } 
502    }, 
503 
504    /**//*    显示媒体 
505        @mFile        文件路径 
506        @mFileType    文件类型(可为空,如为Flash,要指定为swf类型) 
507        @ObjID        对象ID 
508        @mWidth        显示的对象宽度 
509        @mHeight    显示对象的高度 
510        注: 可以指定对象的ID, 如果ID不存在,会自动创建,追加在Body后面 
511    */ 
512    ShowMedia : function (mFile, mFileType, ObjID, mWidth, mHeight) { 
513        var mediaStr; 
514        switch(mFileType){ 
515            case "swf": 
516                mediaStr="<object codeBase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='"+mWidth+"' height='"+mHeight+"'><param name='movie' value='"+mFile+"'><param name='quality' value='high'><param name='AllowScriptAccess' value='never'><embed src='"+mFile+"' quality='high' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width='"+mWidth+"' height='"+mHeight+"'></embed></OBJECT>"; 
517                break; 
518            default : 
519                mediaStr="<object width='"+mWidth+"' height='"+mHeight+"' classid='CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6'><param name='url' value='"+mFile+"' /><embed width='"+mWidth+"' height='"+mHeight+"' type='application/x-mplayer2' src='"+mFile+"'></embed></object>"; 
520        } 
521         
522        var mediaDiv = Sams_object.Get(ObjID); 
523         
524        if (mediaDiv) { 
525            mediaDiv.innerHTML = mediaStr; 
526        }  
527        else 
528        { 
529            mediaDiv = document.createElement("div"); 
530            mediaDiv.id = ObjID; 
531            mediaDiv.innerHTML = mediaStr; 
532            document.getElementsByTagName('body')[0].appendChild(mediaDiv); 
533        } 
534        return false; 
535    } 
536}; 
537 
538/// 样式相关操作 
539var Sams_style = { 
540    /**//*    改变字体大小 
541        @objid        对象ID 
542        @size        字号 
543    */ 
544    doZoom : function (objid,size){ 
545        Sams_object.Get(objid).style.fontSize=size+'px'; 
546    }, 
547 
548    /**//*    改变指定对象样式 
549        @objid        对象ID 
550        @className    要更改的ClassName 
551    */ 
552    ClassName: function(objid, className) { 
553        Sams_object.Get(objid).className = className; 
554    }, 
555     
556    /**//*    对象定位 
557        @obj        要定位的对象 
558        返回        X.Y 结果的数组对象 
559    */ 
560    GotoXY : function (obj) { 
561        var t=obj.offsetTop;  
562        var l=obj.offsetLeft;  
563        while(obj=obj.offsetParent){  
564            t+=obj.offsetTop;  
565            l+=obj.offsetLeft;  
566        } 
567        return Array(t,l); 
568    } 
569}; 
570 
571/// 科学计算 
572var Sams_account = { 
573    /**//*    逢1进10计算 
574        @ 数值 
575    */ 
576    GetTen: function (i) 
577    { 
578        var items_One,Get_One; 
579        if (i.length > 1&& (/^\d+$/.test(i))) 
580        { 
581           items_One = i.substr(0,i.length-1); 
582           Get_One = i.substr(i.length-1,1); 
583           if (parseInt(Get_One)>0) 
584           { 
585            items_One = parseInt(items_One)+1; 
586            items_One = items_One + '0'; 
587           } 
588           else 
589            { 
590            items_One = items_One + '0';     
591            } 
592        } 
593        else 
594        { 
595            items_One = i; 
596        } 
597        return items_One; 
598    } 
599}; 
600 
601/// 数据验证(所有数值返回值均为Bool型) 
602var Sams_validate = { 
603    /**//*    是否是数字型数据 
604        @str        字符集 
605    */ 
606    IsNumber : function(str){ 
607        if (/^\d+$/.test(str)){return true;}else{return false;} 
608    }, 
609 
610    /**//*    是否是数字型数据 
611        @objid        对象ID 
612    */ 
613    IsNumberObj : function(objid){ 
614        return this.IsNumber(Sams_object.GetValue(objid)); 
615    }, 
616 
617    /**//*    是否是自然数型数据 
618        @str        字符集 
619    */ 
620    IsInt : function(str){ 
621        if (/^(\+|-)?\d+$/.test(str)){return true;}else{return false;} 
622    }, 
623 
624    /**//*    是否是自然数型数据 
625        @objid        对象ID 
626    */ 
627    IsIntObj : function(objid){ 
628        return this.IsInt(Sams_object.GetValue(objid)); 
629    }, 
630     
631    /**//*    是否是中文字符 
632        @str        字符集 
633    */ 
634    IsChinese : function(str) 
635    { 
636        if (/^[\u4e00-\u9fa5]+$/.test(str)){return true;}else{return false;} 
637    }, 
638 
639    /**//*    是否是中文字符 
640        @objid        对象ID 
641    */ 
642    IsChineseObj : function(objid) 
643    { 
644        return this.IsChinese(Sams_object.GetValue(objid)); 
645    }, 
646 
647    /**//*    是否为英文字母 
648        @str        字符集 
649    */ 
650    IsLower : function(str) 
651    { 
652         if (/^[A-Za-z]+$/.test(str)){return true}else{return false;} 
653    }, 
654 
655    /**//*    是否为英文字母 
656        @objid        对象ID 
657    */ 
658    IsLowerObj : function(objid) 
659    { 
660         return this.IsLower(Sams_object.GetValue(objid)); 
661    }, 
662 
663    /**//*    是否为正确的网址 
664        @str        字符集 
665    */ 
666    IsUrl : function(str) 
667    { 
668        var myReg = /^((http:[/][/])?\w+([.]\w+|[/]\w*)*)?$/;     
669        if(myReg.test(str)){return true;}else{return false;} 
670    }, 
671 
672    /**//*    是否为正确的网址 
673        @objid        对象ID 
674    */ 
675    IsUrlObj : function(objid) 
676    { 
677        return this.IsUrl(Sams_object.GetValue(objid)); 
678    }, 
679 
680    /**//*    是否为正确的Email形式 
681        @str        字符集 
682    */ 
683    IsEmail : function(str) 
684    { 
685        var myReg = /^([-_A-Za-z0-9\.]+)@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/;     
686        if(myReg.test(str)){return true;}else{return false;} 
687    }, 
688     
689     
690    /**//*    是否为正确的Email形式 
691        @objid        对象ID 
692    */ 
693    IsEmailObj : function(objid) 
694    { 
695        return this.IsEmail(Sams_object.GetValue(objid)); 
696    }, 
697 
698    /**//*    是否为正确的手机号码 
699        @str        字符集 
700    */ 
701    IsMobile : function(str) 
702    { 
703        var regu =https://www.jb51.net/(^[1][3][0-9]{9}$)|(^0[1][3][0-9]{9}$)/;    
704        var re = new RegExp(regu);    
705        if (re.test(str)){return true;}else{return false;} 
706    }, 
707 
708    /**//*    是否为正确的手机号码 
709        @objid        对象ID 
710    */ 
711    IsMobileObj : function(objid) 
712    { 
713        return this.IsMobile(Sams_object.GetValue(objid)); 
714    } 
715}; 
716 
717/**//* 
718    实现Ajax功能 
719    Sams_ajax.SendRequest('GET', url, null, recall, "addtohome"); 
720    Sams_ajax.SendRequest('GET', url, null, null); 
721    obj.responseText; 
722*/ 
723var Sams_ajax = { 
724    _objPool: [], 
725    _getInstance: function (){ 
726        for (var i = 0; i < this._objPool.length; i ++){ 
727            if (this._objPool[i].readyState == 0 || this._objPool[i].readyState == 4){ 
728                return this._objPool[i]; 
729            } 
730        } 
731        this._objPool[this._objPool.length] = this._createObj(); 
732        return this._objPool[this._objPool.length - 1]; 
733    }, 
734     _createObj : function (){ 
735        if (window.XMLHttpRequest){ 
736            var objXMLHttp = new XMLHttpRequest(); 
737        } 
738        else{ 
739            var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP']; 
740            for(var n = 0; n < MSXML.length; n ++){ 
741                try{ 
742                    var objXMLHttp = new ActiveXObject(MSXML[n]); 
743                    break; 
744                } 
745                catch(e){ 
746                } 
747            } 
748         }           
749        if (objXMLHttp.readyState == null){ 
750            objXMLHttp.readyState = 0; 
751            objXMLHttp.addEventListener("load", function (){ 
752                    objXMLHttp.readyState = 4; 
753                    if (typeof objXMLHttp.onreadystatechange == "function"){ 
754                        objXMLHttp.onreadystatechange(); 
755                    } 
756                },  false); 
757        } 
758        return objXMLHttp; 
759    }, 
760 
761    /// 开始发送请求 
762    SendRequest : function (method, url, data, callback,funparam,funparam2){ 
763        var objXMLHttp = this._getInstance(); 
764        with(objXMLHttp){ 
765            try{ 
766                if (url.indexOf("?") > 0){ 
767                    url += "&randnum=" + Math.random(); 
768                } 
769                else{ 
770                    url += "?randnum=" + Math.random(); 
771                } 
772                open(method, url, true);             
773                setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
774                send(data); 
775                onreadystatechange = function (){ 
776                    if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304)) 
777                    { 
778                        callback(objXMLHttp,funparam,funparam2); 
779                    }else{ 
780                        callback(null,funparam,funparam2); 
781                    } 
782                } 
783            } 
784            catch(e){ 
785                alert(e); 
786            } 
787        } 
788    } 
789}; 
790 
791/// Cookies操作 
792var Sams_cookies = { 
793    /**//*    cookies设置函数 
794        @name        Cookies名称 
795        @value        值 
796    */ 
797    setCookie : function (name, value) 
798    { 
799        try 
800        { 
801            var argv = setCookie.arguments; 
802            var argc = setCookie.arguments.length; 
803            var expires = (argc > 2) ? argv[2] : null; 
804            if(expires!=null) 
805            { 
806                var LargeExpDate = new Date (); 
807                LargeExpDate.setTime(LargeExpDate.getTime() + (expires*1000*3600*24)); 
808            } 
809            document.cookie = name + "=" + escape (value)+((expires == null) ? "" : ("; expires=" +LargeExpDate.toGMTString())); 
810            return true; 
811        } 
812        catch(e) 
813        { 
814            return false; 
815        } 
816    }, 
817 
818    /**//*    cookies读取函数 
819        @Name        Cookies名称 
820        返回值        Cookies值 
821    */ 
822    getCookie : function (Name) 
823    { 
824        var search = Name + "=" 
825        if(document.cookie.length > 0)  
826        { 
827            offset = document.cookie.indexOf(search) 
828            if(offset != -1)  
829            { 
830                offset += search.length 
831                end = document.cookie.indexOf(";", offset) 
832                if(end == -1) end = document.cookie.length 
833                return unescape(document.cookie.substring(offset, end)) 
834            } 
835            else 
836            { 
837                return; 
838            } 
839        } 
840    } 
841}; 
