﻿
var IsIE=(navigator.appName.indexOf("Microsoft",0)!=-1)?true:false;   

function addEvent(obj,eventType,fn){        //添加事件，对对象上原有事件不冲突，
    var cfn=fn;
	var res=false;
	if(!obj) {
		return res;
	}
	if(obj.addEventListener) {
		obj.addEventListener(eventType,cfn,false);
		res=true;
	}
	else if(obj.attachEvent) {
		res=obj.attachEvent("on"+eventType,cfn);
	}
	else {
		res=false;
	}
	return res;
}
function GetUrlParm(url , par)          //获得URL上的参数
{ 
     if(url.substring(url.length-1)=="#")url=url.substring(0,url.length-1);
     var svalue = url.match(new RegExp("[\?\&]" + par + "=([^\&]*)(\&?)","i"));
     svalue = svalue ? svalue[1] : svalue;
     return svalue?svalue:"";
} 
if (!Array.prototype.push) {
    Array.prototype.push = function array_push() {
	    for(var i=0;i<arguments.length;i++)
		    this[this.length]=arguments[i];
	    return this.length;
    }
}
if (!Array.prototype.pop) {
    Array.prototype.pop = function array_pop() {
	    lastElement = this[this.length-1];
	    this.length = Math.max(this.length-1,0);
	    return lastElement;
    }
}
Array.prototype.indexOf=function(p_var){   
    for (var i=0; i<this.length; i++) {
        if (this[i] == p_var)   {   
          return(i);   
        }   
    }   
    return(-1);   
}   
Array.prototype.exists=function(p_var){return(this.indexOf(p_var)!=-1);}
Array.prototype.queue=function(p_var){this.push(p_var)}
Array.prototype.dequeue=function(){return(this.shift());}
Array.prototype.removeAt=function(p_iIndex){return this.splice(p_iIndex,1);}
Array.prototype.remove=function(o){
    var i = this.indexOf(o);
    if (i>-1) this.splice(i,1);  
    return (i>-1)   
}   
Array.prototype.clear = function()   {   
    var iLength   = this.length;   
    for (var i=0; i < iLength; i++)   {   
      this.shift();   
    }   
}   
Array.prototype.addArray = function(p_a) {   
    if(p_a){   
      for (var i=0; i < p_a.length; i++) {   
        this.push(p_a[i]);   
      }   
    }   
}
if (!String._FORMAT_SEPARATOR)
{
    String._FORMAT_SEPARATOR = String.fromCharCode(0x1f);
    String._FORMAT_ARGS_PATTERN = new RegExp('^[^' + String._FORMAT_SEPARATOR + ']*'
        + new Array(100).join('(?:.([^' + String._FORMAT_SEPARATOR + ']*))?'));
}
if (!String.format)
{
    String.format = function (s){
        return Array.prototype.join.call(arguments, String._FORMAT_SEPARATOR).
            replace(String._FORMAT_ARGS_PATTERN, s);
    }
}
if (!''.format)         //模仿 format 
{
    String.prototype.format = function (){
        return (String._FORMAT_SEPARATOR +
            Array.prototype.join.call(arguments, String._FORMAT_SEPARATOR)).
            replace(String._FORMAT_ARGS_PATTERN, this);
    }
}
function oStringBuffer(){               //模仿stringbuilder 加快字符串对象操作
    this._strings_=new Array;
    if(typeof oStringBuffer._initialized=="undefined"){
	    oStringBuffer.prototype.append=function (str){
		    this._strings_.push(str);	
	    };
	    oStringBuffer.prototype.toString =function (){
		    return this._strings_.join("");
	    };
	    oStringBuffer._initialized=true;
    }
}

function insertHtml(where, el, html){           //兼容ie跟ff的html操作 主要是因为 ff只支持innerHTML 
   where = where.toLowerCase();
   if(el.insertAdjacentHTML){
            switch(where){
                case "beforebegin":
                    el.insertAdjacentHTML('BeforeBegin', html);
                    return el.previousSibling;
                case "afterbegin":
                    el.insertAdjacentHTML('AfterBegin', html);
                    return el.firstChild;
                case "beforeend":
                    el.insertAdjacentHTML('BeforeEnd', html);
                    return el.lastChild;
                case "afterend":
                    el.insertAdjacentHTML('AfterEnd', html);
                    return el.nextSibling;
            }
            //throw 'Illegal insertion point -> "' + where + '"';
   }
   else
   {
        var range = el.ownerDocument.createRange();
        var frag;
        switch(where){
             case "beforebegin":
                range.setStartBefore(el);
                frag = range.createContextualFragment(html);
                el.parentNode.insertBefore(frag, el);
                return el.previousSibling;
             case "afterbegin":
                if(el.firstChild){
                    range.setStartBefore(el.firstChild);
                    frag = range.createContextualFragment(html);
                    el.insertBefore(frag, el.firstChild);
                    return el.firstChild;
                }else{
                    el.innerHTML = html;
                    return el.firstChild;
                }
            case "beforeend":
                if(el.lastChild){
                    range.setStartAfter(el.lastChild);
                    frag = range.createContextualFragment(html);
                    el.appendChild(frag);
                    return el.lastChild;
                }else{
                    el.innerHTML = html;
                    return el.lastChild;
                }
            case "afterend":
                range.setStartAfter(el);
                frag = range.createContextualFragment(html);
                el.parentNode.insertBefore(frag, el.nextSibling);
                return el.nextSibling;
        }
        //throw 'Illegal insertion point -> "' + where + '"';
   }
}
function getClassName(d){       
    if(IsIE){return d.getAttribute("className");}
    else{return d.getAttribute("class");}
}
function setClassName(d,cs){
    if(IsIE){d.setAttribute("className",cs);}
    else{return d.setAttribute("class",cs);}
}
