//window.vDebugOpt = true;
window.vDebugOpt = false;

<!--
/** 
 * @fileoverview brand_common.js QzoneAct公用方法文件  
 */

/*+++++++浏览+++++++*/
/**
 * 浏览器对象，包括类别属性
 */
var Browser = new Object(); 
/**
 * 判断是否为IE旧版浏览器
 * @type boolean
 */
Browser.isIE = window.ActiveXObject ? true : false;
/**
 * 判断是否为IE7浏览器
 * @type boolean
 */
Browser.isIE7 = Browser.isIE && window.XMLHttpRequest;
/**
 * 判断是否为Mozilla浏览器
 * @type boolean
 */
Browser.isMozilla = Browser.isIE?false:(typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined') && (typeof HTMLDocument!='undefined');
/**
 * 判断是否为Firefox浏览器
 * @type boolean
 */
Browser.isFirefox = Browser.isIE?false:(navigator.userAgent.toLowerCase().indexOf("firefox")!=-1);

/**
 * 判断是否为Safari浏览器
 * @type boolean
 */
Browser.isSafari = Browser.isIE?false:(navigator.userAgent.toLowerCase().indexOf("safari")!=-1);

/**
 * 判断是否为Opera浏览器
 * @type boolean
 */
Browser.isOpera = Browser.isIE?false:(navigator.userAgent.toLowerCase().indexOf("opera")!=-1);

/**
* $ 取代 document.getElementById
* @param {String} id 元素在document中的id或者uniqueID
* @return 指定的id的元素。如不存在则返回null。
* @type DocumentElement
* @version 1.0
*/
function $(el){
	if(typeof el != 'object'){
		ele = document.getElementById(el);
		if(window.vDebugOpt && !ele)
		{
			logMsg("获取不到元素" + el);
		}
		return ele;
	}
	return el;
}

/**
* $n 取代 document.getElementsByName
* @param {String} n 元素在document中的name或者id（IE only）
* @return 指定的name的元素集合。如不存在则返回[]。
* @type set of DocumentElement 
* @version 1.0
*/
function $n(n){return document.getElementsByName(n);}

/**
 *  将 类数组的object 转化为数组
 *	@param iterable 类数组的object
 *	@return	results  类数组object的值数组
 */
var $A = Array.from = function(iterable) {
	if (!iterable) return [];
	if (iterable.toArray) {
		return iterable.toArray();
	} else {
		var results = [];
		for (var i = 0, length = iterable.length; i < length; i++)
	results.push(iterable[i]);
	return results;
	}
}

Function.prototype.bind = function() {
	var __method = this, args = $A(arguments), object = args.shift();
	return function() {
		return __method.apply(object, args.concat($A(arguments)));
	}
}

/**
 *    绑定为监听函数
 *    返回值为一个函数
 *  	@param thisObj  this指针的作用域
 *  	@return  绑定了指定参数的函数 
 */
Function.prototype.bindAsEventListener = function(thisObj) {
	var __method = this, args = $A(arguments), thisObj = args.shift();
	return function(event) {
		return __method.apply(thisObj, [( event || window.event)].concat(args).concat($A(arguments)));
	}
}

/**
 *
 *  在文档末尾记log， 
 *  @param msg  要记log的信息
 *  @logId 		记log 的div的外层div，程序自己创建
 */
function logMsg(msg, logId, level) {
	logId =  logId || "logDiv";
   	var logDiv = document.getElementById(logId);
	 if(!logDiv) {
		 logDiv = document.createElement('div');
		 logDiv.id = logId;
		 //logDiv.style.width = "100%";
		 logDiv.style.cssText = "border: red 1px solid";
		 document.body.appendChild(logDiv);
	 }
	 var msgDiv = document.createElement('div');
	 var levelCss = {
		 1: 'color: lightblue; text-align: center;',
		 2: 'color: darkred; text-align: center;',
		 3: 'color: red; text-align: center;'
	 };
	 level = level || 2;
	 msgDiv.style.cssText = levelCss[level];
	 msgDiv.innerHTML = msg;
	 logDiv.appendChild(msgDiv);
 }

/**
 * 获取web参数
 * @param {String} name
 * @param {Boolean} cancelBubble
 */
function getParameter(name,cancelBubble){
    var r = new RegExp("(\\?|#|&)"+name+"=([^&#]*)(&|#|$)");
    var m = location.href.match(r);
    if ((!m || m=="") && !cancelBubble) m = top.location.href.match(r);
    return (!m?"":m[2]);
}


 /**
  * 对象的属性复制
  * @param src		源对象
  * @param dest 	目标对象
  * @param override   两者都有一个属性，并且override 为ture，src 的属性值覆盖dest的值
  *
  */ 
Object.extend = function(src, dest, override) {
	for(var prop in src) {
		if(typeof dest[prop] == 'undefined') {
			dest[prop] = src[prop];
		} else if(override) {
			dest[prop] = src[prop];
		}
	}
}

	/**
	 * 	用遍历函数应用于obj 对象中的每一个元素，类似于php 的walk 函数
	 * 	@param obj 需要遍历的的对象
	 * 	@param iterator 遍历函数
	 * 		@param ele 	obj 的属性
	 * 		@param field_val obj 的值
	 */
	Object.each = function(obj, iterator) {
		for(var ele in obj) {
			iterator(obj[ele], ele);
		}
	}

	/**
	 * 数组遍历的 continue 和 break 支持
	 */
$break = {};
$continue = {};

	/**
	 *	数组的扩展
	 *	@param iterator 便利数组的函数
	 *		@param value   数组值
	 *		@param index   数组下标
	 *
	 *	结束当前
	 *		抛出$break 
	 *	结束循环
	 *		抛出 $continue
	 */
Array.prototype.each = function(iterator) {
    var index = 0;
    try {
		for (var i = 0, length = this.length; i < length; i++) {
			iterator(this[i], index++);
		}
    } catch (e) {
      if (e != $break) throw e;
    }
    return this;
}

/*+++++++Cookie处理+++++++*/

/**
 * 设置文件Cookie
 * @param {String} name 字段名称
 * @param {Object} value 值
 * @param {Int} timeout 过期时间 time精确到毫秒
 * @param {String} 域名,默认域名为"qq.com"
 */ 
function setFileCookie(name,value,timeout,dm){
    var expires=new Date();
    if(!timeout)
        timeout=10*12*30*24*3600*1000;
    if(!dm)
        dm="qq.com";
    expires.setTime(expires.getTime()+timeout);
    document.cookie = name + "=" + value + ";expires="+expires.toGMTString()+"; path=/; domain="+dm;
}

/**
 * 设置Cookie
 * @param {String} name 字段名称
 * @param {Object} value 值
 * @param {String} path 路径
 * @param {String} 域名,默认域名为"qq.com"
 */
function setCookie(name,value,path,domain){
    if(!path)
        path="/";
    if(!domain)
        domain="qq.com";
   document.cookie = name + "=" + value + "; path="+path+"; domain="+domain;
}

/**
 * 获取Cookie
 * @param {String} name 字段名称
 */ 
function getCookie(name){
    var r = new RegExp("(^|;|\\s)"+name+"=([^;]*)(;|$)");
    var m = document.cookie.match(r);
    return (!m?"":m[2]);
}

/**
 * 清除Cookie
 * @param {String} name 字段名称
 * @param {String} path 路径
 * @param {String} 域名,默认域名为"qq.com"
 */ 
function deleteCookie(name, path, domain){
    if(!path)
        path="/";
    if(!domain)
        domain="qq.com";
    document.cookie = name + "=" + "; path=" + path + "; domain=" + domain + "; expires=Thu, 1 Jan 1970 00:00:01 UTC";
}

/*+++++++UserData处理+++++++*/

/**
 * UserData 支持
 * 创建UserData对象
 */ 
var userData = function(){
    this.normalDB = "defaultDB";
    this.error = false;
    if (Browser.isIE){
        var id = "udLink";
        this.UD = $(id);
        if (!this.UD){
            this.UD = document.createElement("script");
            this.UD.id = id;
            document.getElementsByTagName("head")[0].appendChild(this.UD);
            try{
                UDiID = this.UD.addBehavior("#default#userdata");
            }catch(e){this.error = true;return;}
        }
        var expiresDate = new Date();
        expiresDate.setTime(expiresDate.getTime() + 12*30*24*3600*1000); // 有效期默认是一年
        this.UD.expires = expiresDate.toUTCString();
    }
    if (getCookie("userData") != 1) {this.clear();}
}

/**
 * 设置UserData的清理操作
 * @param {String} sStoreName
 */
userData.prototype.clear = function(sStoreName){
    if (this.error) return false;
    if (Browser.isIE){
        sStoreName = (!sStoreName)?this.normalDB:sStoreName;
        this.UD.load(sStoreName);
        this.UD.expires = new Date(315532799000).toUTCString();
        this.UD.save(sStoreName);
        setFileCookie("userData",1,0,"qzone.qq.com");
    }
}        

/**
 * 移除 UserData 节点
 * @param {NodeItem} key  
 * @param {String} sStoreName
 */
userData.prototype.remove = function(key,sStoreName){
    if (Browser.isIE){
        sStoreName = (!sStoreName)?this.normalDB:sStoreName;
        this.UD.setAttribute(key,null);
        this.UD.save(sStoreName);
    }else if(window.sessionStorage){
        sessionStorage.removeItem(key);
    }
}

/**
 * 保存数据到 UserData 数据
 * @param {NodeItem} key
 * @param {Object} value
 * @param {String} sStoreName
 */
userData.prototype.save = function(key,value,sStoreName){
    if (this.error) return false;
    if (Browser.isIE){
        sStoreName = (!sStoreName)?this.normalDB:sStoreName;
        this.UD.setAttribute(key,value);
        this.UD.save(sStoreName);
    }else if(window.sessionStorage){
        sessionStorage.setItem(key,value);
    }
}

/**
 * 读取数据到 UserData 数据
 * @param {NodeItem} key
 * @param {String} sStoreName
 */
userData.prototype.load = function(key,sStoreName){
    if (this.error) return false;
    if (Browser.isIE)
    {
        sStoreName = (!sStoreName)?this.normalDB:sStoreName;
        this.UD.load(sStoreName);
        return this.UD.getAttribute(key);
    }else if(window.sessionStorage){
        return sessionStorage.getItem(key);
    }
}

/*+++ Flash ShareObject 对象应用++++*/

/**
* 利用ShareObject存储数据
* @param {string} key 存储的key
* @param {string} value 存储内容
* @deprecated 不建议存Object
*/
function setShareData(key,value){
	if (window._shareObjectReady){
		$("shareObject").set("seed",Math.random());
		$("shareObject").set(key,value);
		$("shareObject").flush();
	}
}

/**
* 获取ShareObject数据
* @param {string} key 存储的key
* @return 返回value
* @type string
*/
function getShareData(key){
	if (window._shareObjectReady)
		return $("shareObject").get(key);
	else
		return "";
}

/**
* 利用Flash设置剪贴板内容
* @param {string} value 存储到剪贴版的内容
*/
function setClipboard(value){
	if (window._shareObjectReady)
		$("shareObject").setClipboard(value);
	else 
		copyToClip(value);
}

/**
* 清除ShareObject数据
*/
function clearShareData(){
	if (window._shareObjectReady)
		$("shareObject").clear();
}

/**
* 获取ShareObject已用大小
* @return 返回存储空间已占用空间
* @type int
*/
function getShareDataSize(){
	if (window._shareObjectReady)
		return $("shareObject").getSize();
	else
		return -1;
}

/**
 * 向ShareObject请求权限。
 */
function getShareObjectPrefix(){
	window._shareObjectReady = true;	
	return location.host.match(/\w+/)[0];
}

/**
* 建立存储对象
*/
function buildShareObject(){
	if (flashVersion.major < 8) {
		window._shareObjectReady = false;
		return false;
	}
	var shareObjectDiv = document.createElement("div");
	document.body.appendChild(shareObjectDiv);
	shareObjectDiv.innerHTML = insertFlash({
		src:"http://"+top.imgcacheDomain+"/qzone/dataset/getset.swf",
		id:"shareObject",width:0,height:0,
		allowscriptaccess:"always"});
}

/*+++++++事件+++++++*/

/**
* 事件绑定
* @param {DocumentElement} obj 需要添加事件的页面对象
* @param {String} evenTypeName 需要添加的事件
* @param {Function} fn 事件需要绑定到的处理函数
* @return  是否绑定成功(true为成功，false为失败)
* @type Boolean
* @version 1.0
*/
function addEvent(obj, evenTypeName, fn){
     if (obj.addEventListener){
            obj.addEventListener(evenTypeName, fn, true);
            return true;
     } else if (obj.attachEvent){
            return obj.attachEvent("on"+evenTypeName, fn);
     } else {
            return false;
     }
}

/**
* 方法取消绑定
* @param {DocumentElement} obj 需要取消事件绑定的页面对象
* @param {String} evenTypeName 需要取消绑定的事件
* @param {Function} fn 需要取消绑定的函数
* @return  是否成功取消(true为成功，false为失败)
* @type Boolean
* @version 1.0
*/
function removeEvent(obj, evenTypeName, fn){
      if (obj.removeEventListener){
            obj.removeEventListener(evenTypeName, fn, true);
            return true;
      } else if (obj.detachEvent){
            var r = obj.detachEvent("on"+evenTypeName, fn);
            return r;
      } else {
            alert("Error.");
      }
}

/**
 * 根据不同浏览器获取对应的Event对象
 * @param {Event} evt
 * @return 修正过的Event对象
 * @type Event
 */ 
function getEvent(evt){
    evt=(Browser.isIE)?(window.event?window.event:null):evt;
    if (!evt) return null;
    if (Browser.isMozilla) {evt.btn=evt.button+1;} else {evt.btn=evt.button;}
    return evt;
}


/**
 *    事件处理
 *
 */
Event = {
	observe: function(element, name, observer, useCapture) {
		element = $(element);
		useCapture = useCapture || false;
		if (element.addEventListener) {
			element.addEventListener(name, observer, useCapture);
		} else if (element.attachEvent) {
			element.attachEvent('on' + name, observer);
		}
	},

	stopObserving: function(element, name, observer, useCapture) {
		element = document.getElementById(element);
		useCapture = useCapture || false;

		if (element.removeEventListener) {
			element.removeEventListener(name, observer, useCapture);
		} else if (element.detachEvent) {
			try { 
				element.detachEvent('on' + name, observer); 
			} catch (e) {}
		}
	}
}

/*+++++++对象处理+++++++*/

/**
 * 在创建Document Element时指定名字
 * @param {DocumentElement} element
 * @param {String} name，名字为null时操作和document.createElement相同
 * @type DocumentElement
 */
document.createElementByName = function (element,name) {
    if (!name) return document.createElement(element);
    if (Browser.isIE){
        return document.createElement("<" + element + " name=\""+name+"\"/>");
    } else {
          element = document.createElement(element);
          element.name=name;
          return element;
    }
}

/**
* 删除Dom对象
* @see #$
* @param {DocumentElement or String} element 需要从页面中删除的对象
* @version 1.0
*/
function removeElement(element){
	if((typeof element)=="string")
		element=$(element);

	if(!!element && (typeof element)=="object"){
		element.parentNode.removeChild(element);
	}
}

function pickNumFromDom(path,o,type,attr){
	var tn;
	if(!type)
		type="n";
	try{
		if(/n/.test(type))
			tn=parseInt(o.selectSingleNode(path).text);
		else{
			if(path=="")
				tn=parseInt(o.getAttribute(attr));
			else
				tn=parseInt(o.selectSingleNode(path).getAttribute(attr));
		}
		if(isNaN(tn))
			tn=0;
	}
	catch(err){
		tn=0;
	}
	return tn;
}


/**
 * 获取Dom对象,如果对象不存在则自动在body创建
 * @param {Object} id 对象ID
 * @param {String} tagName 标签名
 * @param {Boolean} insertFirst 创建对象时插入的次序；如果为true则作为父结
 *                               点的第一个节点插入，否则附加在其他子结点之后
 * @param {Object} parentNodeID  
 * @param {String} className
 * @param {String} initCSSText
 * @return 已存在或新创建的Dom对象
 * @type NodeElement
 */ 
function getElementInBody(id,tagName,insertFirst,parentNodeID,className,initCSSText){
    var e = $(id);
    if (!e){
        tagName = (!tagName)?"div":tagName; //如果没有设置tagName 则默认为div
        e = document.createElement(tagName);
        e.id = id;
        var parentNode = (!parentNodeID)?document.body:$(parentNodeID)
        if (insertFirst)
            parentNode.insertBefore(e,parentNode.firstChild);
        else
            parentNode.appendChild(e);
        e.className = className?className:"";
        e.style.cssText = initCSSText?initCSSText:"";
    }
    parentNode = null;
    return e;
}

/**
 * 获取对象坐标
 * @param {Object} obj
 * @return 坐标数组，["top","left","width","height"]
 * @type Array
 */ 
function getPosition(obj) {
    var top=0;
    var left=0;
    var width=obj.offsetWidth;
    var height=obj.offsetHeight;
    while (obj.offsetParent) {
        top += obj.offsetTop;
        left += obj.offsetLeft;
        obj = obj.offsetParent;
    }
    
    return {"top":top,"left":left,"width":width,"height":height};
}

/**
 * 计算对象高度
 * @param {String} sName
 */
function contheight (sName){
    if (parent.$[sName]!=null) {
        parent.$[sName].style.height = document.body.scrollHeight;
    }
}
/*++++++++++样式相关++++++++/
/**
 * 根据class名称来获取对象
 * @param {Object} source
 * @param {String} className
 * @return 如果找到和class名称相对应的对象,则返回该对象,否则返回null
 * @type Object
 */
function getParentByClass(source,className) {
    while (source.offsetParent) {
          if (source.className == className) {
              return source;
          }
            source = source.offsetParent;
    }

    return null;
}

/**
 * 样式表控制
 * @type Array
 */
var blogStyleSheet = [];

/**
 * 插入新的样式
 * @param {Int} sheetIndex  样式索引值,
 * @param {String} selectorText
 * @param {String} cssText
 */
function insertCSS(sheetIndex,selectorText,cssText){ 
    if (!blogStyleSheet[sheetIndex]) blogStyleSheet[sheetIndex] = [];
    document.styleSheets[sheetIndex].addRule(selectorText,"{" + cssText + "}",blogStyleSheet[sheetIndex].length);
    blogStyleSheet[sheetIndex].push({selectorText:selectorText,cssText:cssText});
}

/**
 * 更新样式	
 * @param {Int} sheetIndex 样式索引值
 * @param {Int} ruleId 
 * @param {String} cssText
 */
function updateCSS(sheetIndex,ruleId,cssText){ 
    var selectorText = blogStyleSheet[sheetIndex][ruleId].selectorText;
    blogStyleSheet[sheetIndex][ruleId].cssText = cssText;
    document.styleSheets[sheetIndex].removeRule(ruleId);
    document.styleSheets[sheetIndex].addRule(selectorText, "{" + cssText + "}", ruleId);
}

/*++++多媒体处理方法+++*/

/**
 * 获取Flash版本号
 * @param {Object} reqVer
 * @type swfVersion Object
 */
function getFlashVersion(reqVer) {
    var PlayerVersion = new swfVersion(0, 0, 0);
    if (navigator.plugins && navigator.mimeTypes.length) {
    var x = navigator.plugins['Shockwave Flash'];
        if (x && x.description)	{
            PlayerVersion = new swfVersion(x.description.replace(/([a-z]|[A-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));
        }
    }else{
        try {
        var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
            for (var i = 3; axo != null; i++) {
                axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + i);
                PlayerVersion = new swfVersion([i, 0, 0]);
            }
        } catch (e) {}
        if (reqVer && PlayerVersion.major > reqVer.major) {return PlayerVersion;}
        if (!reqVer || (reqVer.minor != 0 || reqVer.rev != 0) && PlayerVersion.major == reqVer.major || PlayerVersion.major != 6) {
            try {PlayerVersion = new swfVersion(axo.GetVariable("$version").split(" ")[1].split(","));} catch (e) {}
        }
    }
    return PlayerVersion;
};

/**
 * swfVersion类
 * 处理Flash版本号
 * @param {Array} arrVersion
 */
function swfVersion(arrVersion) {
    this.major = parseInt(arrVersion[0]) || 0;
    this.minor = parseInt(arrVersion[1]) || 0;
    this.rev = parseInt(arrVersion[2]) || 0;
    this.version = arrVersion.toString();
};

var flashVersion = getFlashVersion();

/**
 * Fix IE WCO(Window Crazy Opening) Bug
 */
function fixWCO(){try{$("myFrame").innerHTML="";}catch(e){}}	

/**
 * Fix Flash Player 9,0,16,0 Bug
 */
function fixFlashBug(){__flash_unloadHandler = function(){};__flash_savedUnloadHandler = function(){};}

/**
 * beforeunload functoin 
 */
function prepUnload(){
	fixWCO();
	fixFlashBug();
}

addEvent(window,"beforeunload",prepUnload);
    
/**
 * 插入Flash动画
 * @param {Array} flashArguments 作为一个 Hash表，把flash的参数进行传递,例如 a={id:"swf1",src:"123.swf",allowScriptAccess:"always"}
 * @param {Object} requiredVersion
 * @type String
 */ 
function insertFlash(flashArguments,requiredVersion){
	var params="",embedArgm="",objArgm="";
	for (k in flashArguments){
		switch(k){
			case "movie":
				continue;
				break;
			case "id":
			case "name":
			case "width":
			case "height":
			case "style":
				objArgm += k + '=\'' + flashArguments[k]+'\' ';
				embedArgm += k + '=\''+flashArguments[k]+'\' ';
				break;
			default:
				params += '<param name=\'' + ((k=="src")?"movie":k) + '\' value=\''+flashArguments[k]+'\' />';
				embedArgm += k + '="'+flashArguments[k]+'" ';
		}
	}
	if (requiredVersion) {
		objArgm += 'codeBase=\'http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab#version=' + requiredVersion+'\' ';
	}
	
	fixFlashBug();
	if (Browser.isIE)
		return '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ' + objArgm + '>' + params + '</object>';
	else
		return '<embed '+ embedArgm +' pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed>'
}

/**
 * 插入Window Media Player 播放器
 * 例如a={id:"wmp1",src:"123.mp3"}; insertWMP(a) 
 * @param {Array} wmpArguments 作为一个 Hash表，把WMP的参数进行传递
 * @param {Object} mp9Upon 使用更高版本的 WMP Player
 * @param {Boolean} outputEmbed 是否嵌入到html中
 * @return 嵌入在html中的语句
 * @type String
 */ 
function insertWMP(wmpArguments,mp9Upon,outputEmbed){
	
	var params="",objArgm="";
	for (k in wmpArguments){
		switch(k){
			case "id":
			case "width":
			case "height":
			case "style":
				objArgm += k + '="' + wmpArguments[k]+'" ';
				break;
			case "src":
				if (outputEmbed) objArgm += k + '="' + wmpArguments[k]+'" ';
				break;
			default:
				if (outputEmbed) objArgm += k + '="' + wmpArguments[k]+'" ';
				params += '<param name="' + k + '" value="'+wmpArguments[k]+'" />';
		}
	}
	if (mp9Upon == "auto"){ //自动检测是否使用 WMP 9 的播放插件
		mp9Upon = false;
		if (window.ActiveXObject){
			var clsId="{22D6F312-B0F6-11D0-94AB-0080C74C7E95}";
			with(document.body){
				addBehavior('#default#clientcaps');
				if (isComponentInstalled(clsId,"componentid")){
					mp9Upon = (getComponentVersion(clsId,"componentid").split(",")[0] > 6.4)?true:false;
				}
			}
		}
	}

	if (mp9Upon){
			classId = "clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6"; //使用 WMP 9 以上的播放插件
			if (wmpArguments["src"]) {
				params += '<param name="URL" value="'+wmpArguments["src"]+'" />';
			}
	}
	else{
		
			classId = "clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95"; //默认使用 WMP 6.4 播放插件
			if (wmpArguments["src"]) {
				params += '<param name="src" value="'+wmpArguments["src"]+'" />';
			}
	}
	
	if (outputEmbed)
		return '<embed '+ objArgm +'></embed>';
	else
		return '<object classid="' + classId + '" ' + objArgm + '>' + params + '</object>';
}


/**
*预加载图片
*/
var preImg=[]
function preImage(img){
	for(i=0;i<img.length;i++){
		preImg[preImg.length] = new Image();
		preImg[preImg.length-1].src = img[i];
		try{
			if (preImg[preImg.length-1].readyState == "complete"){return};
		}catch(e){}
	}
}

/**
 * 调整大小到指定的范围内
 * @param {Object} obj
 * @param {Int} w 指定宽度
 * @param {Int} h 指定高度
 * @param {Boolean} openWindows 预览新图
 */
function adjustSize(obj,w, h,openWindows) {
    var w0=obj.width,h0=obj.height,r=false;
    if(w0<1){var i = new Image();i.src=obj.src;w0=i.width;h0=i.height;}
    if((w0/h0)>(w/h)){
        if(w0>w){obj.style.width = w;r=true;}
    }else {
        if(h0>h){obj.style.height = h;r=true;}
    }
    if (openWindows && r) { 
        obj.style.cursor = "pointer";
        obj.title = "点击预览原图";
        obj.onclick = function(){
            window.open(obj.src);
        }
    }
    obj.onload=null;
}

/*++++定时器+++++*/

var _st = window.setTimeout;
if(!window.setTimeout.constructor)
window.setTimeout = function(fRef, mDelay) {
    if(typeof fRef == 'function'){
        var argu = Array.prototype.slice.call(arguments,2);
        var f = (function(){ fRef.apply(null, argu); });
        return _st(f, mDelay);
    }
    return _st(fRef,mDelay);
}

var _int = window.setInterval;
if(!window.setInterval.constructor)
window.setInterval = function(fRef, mDelay) {
    if(typeof fRef == 'function'){
        var argu = Array.prototype.slice.call(arguments,2);
        var f = (function(){ fRef.apply(null, argu); });
        return _int(f, mDelay);
    }
    return _int(fRef,mDelay);
}


/*++++字符串扩展处理方法++++*/

/**
* 取字符串左边len个字符
* @param {Number} len 长度
* @return 返回所要的字符串
*/
String.prototype.left = function(len){
	if(isNaN(len)||len==null)	
		len = this.length;
	else{
		if(parseInt(len)<0||parseInt(len)>this.length)	{
			len = this.length;
		}
	}
	
	return this.substr(0,len);
}

/**
* 取字符串右边len个字符
* @param {Number} len 长度
* @return 返回所要的字符串
*/
String.prototype.right = function(len){
	if(isNaN(len)||len==null)	
		len = this.length;
	else{
		if(parseInt(len)<0||parseInt(len)>this.length)	{
			len = this.length;
		}
	}
	
	return this.substring(this.length-len,this.length);
}

/**
* 字符串前后去除空白字符（包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]）
* @param 空
* @return 返回所要的字符串
*/
String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"");}
/**
* 字符串前去除空白字符（包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]）
* @param 空
* @return 返回所要的字符串
*/
String.prototype.ltrim=function(){return this.replace(/^\s+/g,"");}
/**
* 字符串后去除空白字符（包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]）
* @param 空
* @return 返回所要的字符串
*/
String.prototype.rtrim=function(){return this.replace(/\s+$/g,"");}

/**
* 字符串后实际字节长度
* @param 空
* @return 返回字符串实际字节长度
*/
String.prototype.getRealLength=function(){	return this.replace(/[^\x00-\xff]/g,"**").length;}

/**
* 转换html为文本内容
*/
String.prototype.HTML2Text=function(){
	var div_for_convert_html = document.createElement("DIV");
	with(div_for_convert_html){
		innerHTML = this.replace(/&#13;/g,"<br>").replace(/&#32;/g,"&nbsp;");
		return (Browser.isIE?innerText:textContent).replace(/\xa0/g," ");
	};
}

/**
* 转换文本内容为html
*/
String.prototype.Text2HTML=function(){
	var d=document.createElement("DIV");
	if(Browser.isIE) {d.innerText=this;return d.innerHTML}
	d.textContent=this;
	return d.innerHTML.replace(/\x0a/g,"<br>").replace(/ /g,"&nbsp;")
};

/**
*url转义(get方法时使用)
*/
String.prototype.encode=function(){
	return this.replace(/\?/g, '%3F').replace(/%/g, '%25').replace(/=/g, '%3D').replace(/&/g, '%26').replace(/\'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\+/g, '%2B').replace(/ /g, '+').replace(/\//g, '%2F').replace(/\\/g, '%5C').replace(/\r/g, '%0D').replace(/\n/g, '%0A')
}

/*****************************************************************************
*如果存在下面的情况：
*	八位字节数在US-ASCII字符集中没有相应的可显示字符:0x80-0xFF 0x00-0x1F 7F 
*	使用相应字符会产生不安全因素:空格 ,“<”, “>”,“"”,“#”,“%”,"{" ,"}", "|" ,"\", "^" ,"~" ,"["  ,"]" 和"`"
*	相应的字符被保留用于特定的URL方案的解释:";","/", "?", ":", "@", "=" 和 "&"
*那么它们必须被编成代码。
******************************************************************************/

var r = /([!-\/:-@[-`{-~])/g
String.prototype.encode=function(){return this.replace(r,function(a){return "%"+a.charCodeAt(0).toString(16)}).replace(/ /g,"+")}


/**
*url解码
*/
String.prototype.decode=function(){
	return this.replace(/&#58;/g,":").replace(/&quot;/g,"\"").replace(/(?:&#0?39;)|(?:&apos;)/g,"\'").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&").replace(/&#(\d+);/g,
		function($0,$1){
			var num = parseInt($1,10).toString(16);
			if(num.length > 2){
				return unescape('%u' + num);
			}else{
				return decodeURI('%' + num);
			}
		}
	);
};

/**
*html特殊符号转义
*/
String.prototype.encode2 = function(){return this.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")};

/**
* 转换样式长度为数字
* @param 
*/
String.prototype.s2n=function(unit){
	if(!unit)
		unit="px";
	var re=new RegExp(unit+"$","i");
	return parseInt(this.replace(re,""),10);
};

/*+++++ 格式化显示+++++*/
/**
*格式化显示数字
* @param {Number} srcStr 初始数字
* @param {Number} nAfterDot 保留小数点后几位
* @return 返回格式化后的数字
*/
function formatNumber(srcStr,nAfterDot){
	if(!srcStr)srcStr=0;
	var re=new RegExp("(\\d*)\\.(\\d*)")
	srcStr=String(srcStr);
	var m=srcStr.match(re);
	if(!m){
		srcStr+='.'
		srcStr+=new Array(nAfterDot+1).join("0")
	}else{
		var div=m[2].length - nAfterDot;
		if(div>=0)
			srcStr=srcStr.substr(0,srcStr.length-div);
		else{
			div=-div;
			srcStr+=new Array(div+1).join("0")
		}
	}
	return srcStr;
}
/**
*如上功能
*/
Number.prototype.format=function(nAfterDot){return formatNumber(this,nAfterDot)}

/**
*格式化显示数字
* @param {String} srcStr 初始字符串
* @param {Number} len 显示的长度
* @return 返回格式化后的字符串
*/
function formatString(srcStr, len){
	if(!srcStr)return "";
	var re=new RegExp("[^\\x00-\\xff]|[\\x41-\\x5a]");
	var m=srcStr.split("");
	if(m){
		var i,j;
		for(i=0,j=0;i<len&&j<m.length;j++){
			if(m[j].match(re)){
				i+=2;
			}else i++;
		}
		if(j<m.length)
			return srcStr.substr(0,j)+'.';
		else
			return srcStr;
	}
}
String.prototype.format=function(len){return formatString(this,len)}

/**
 * 日期转换
 * @param {String} expression 日期表达式例如: "YYYY-MM-DD hh:mm:ss"
 */
Date.prototype.format = function(expression){
	var str = expression?expression:"YYYY-MM-DD hh:mm:ss";
	str = str.replace(/YYYY/g,this.getFullYear());
	str = str.replace(/YY/g,this.getFullYear().toString().substr(2));

	str = str.replace(/MM/g,(this.getMonth() + 1).fixDigit(2));
	str = str.replace(/DD/g,this.getDate().fixDigit(2));
	str = str.replace(/hh/g,this.getHours().fixDigit(2));
	str = str.replace(/mm/g,this.getMinutes().fixDigit(2));
	str = str.replace(/ss/g,this.getSeconds().fixDigit(2));

	return str;
}
/**
*辅助函数，在数字前补0
* @param {Number} len 最终的长度
*/
Number.prototype.fixDigit = function(len){
	var fixLen = len - this.toString().length + 1;
	return new Array(fixLen<0?0:fixLen).join("0") + this;
}

/**
*取位值
* @param {Number} i 第几位
*/
Number.prototype.getBitValue=function(i){
	return (this>>i&0x01);
}
Number.prototype.toDate = function() {
	var num = this;
	return new Date(num);
}
/*++++++++++++++++安全性过滤++++++++++++++++++*/
/**
 * 过滤特殊符号
 * @param {String} srcString
 * @type String
 */
function htmlReplace(srcString) {
    return srcString.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\n/g,"<br/>").replace(/\"/g,"&quot;").replace(/&/g,"&amp;");
}

/**
 * 还原特殊符号
 * @param {String} srcString
 */
function unReplaceStr(srcString){
    return srcString.replace(/&amp;/g,"&").replace(/&#45;/g,"-").replace(/&#95;/g,"_").replace(/&#63;/g,"?").replace(/&#61;/g,"=").replace(/&#37;/g,"%").replace(/&#58;/g,":").replace(/&#32;/g," ").replace(/&#64;/g,".");
}


/**
 * 过滤注入脚本
 * @param {String} srcString
 */
function scriptReplace(srcString) {
    srcString = srcString.replace(/&#(\d+);?/g,function(a,b){return String.fromCharCode(b)}).replace(/&#x(\d+);?/ig,function(a,b){return String.fromCharCode(parseInt(b,16))}).replace(/(\Won)(\w+\s*=)/ig,"$1<wbr>$2").replace(/(\Wexpres)(sion\()/ig,"$1<wbr>$2").replace(/(\Wbehav)(ior\s*:)/ig,"$1<wbr>$2").replace(/(obj)(ect)/ig,"$1<wbr>$2").replace(/(scr)(ipt)/ig,"$1<wbr>$2").replace(/(emb)(ed)/ig,"$1<wbr>$2").replace(/\n|\r/g,"<br>").replace(/\t/g," &nbsp; &nbsp;");
    return srcString;
}

/**
 * 校验url地址合法性,一般用来判断get方式获得的url地址
 * @param {String} url
 */
function vaildUrl(url){ 
    if (/javascript/ig.test(url)) return false;
    if (/^http/ig.test(url) && !(/^http:\/\/([\w\.]+)\.(qq.com|paipai.com|soso.com)/ig.test(url))) return false;
    return true;
}

/**
 * 过滤关键脚本
 * @param {String} str
 */
function scriptSearch(str) {
    var reg = new RegExp("Location|onload|meta|iframe|cookie|craker|innerHTML|object|script", "gi");
    var returnStr = str.match(reg);
    return returnStr;
}

/**
 * 复制到剪贴板
 * @param {String} text 将要复制的内容，暂时只支持在IE中复制内容
 */
function copyToClip(text){
    if (Browser.isIE) {
        clipboardData.setData("Text",text);
        alert("链接已经复制到剪贴板");
    }else{
        alert("抱歉没有权限复制文本",1,1000);
    }
}
//-->
