/*
*	Copyright VeryIDE,2007-2010
*	http://www.veryide.com/
*	
*	$Id: veryide.library.js,v2 22:12 2009-4-13 leilei $
*/

if(typeof VeryIDE!='object'){
	var VeryIDE={script:[]}
}

function $(obj){return document.getElementById(obj);}
function $N(obj){return document.getElementsByName(obj);}
function $T(obj){return document.getElementsByTagName(obj);}
function $V(str){document.write(str);}

function rand(min,max){
	return Math.round(min+(Math.random()*(max-min)));
};

/**/

function getSel()
{
	var txt = '';
	var foundIn = '';
	if (window.getSelection)
	{
		txt = window.getSelection();		
	}
	else if (document.getSelection)
	{
		txt = document.getSelection();		
	}
	else if (document.selection)
	{
		txt = document.selection.createRange().text;
	}
	else return;
	return foundIn;
}

//设置元素高度
function setHeight(array){
	var height = 0;
	for(var i=0; i<array.length; i++){
		if( typeof array[i] == 'object') height=Math.max(array[i].scrollHeight,height);
	}	
	
	for(var i=0; i<array.length; i++){
		array[i].style.height=height+"px";
	}
	
	return height;
}

//获取元素css属性值
var $S=function(){ 
    var f=document.defaultView; 
    return new Function('el','style',[ 
        "style.indexOf('-')>-1 && (style=style.replace(/-(\\w)/g,function(m,a){return a.toUpperCase()}));", 
        "style=='float' && (style='", 
        f ? 'cssFloat' : 'styleFloat', 
        "');return el.style[style] || ", 
        f ? 'window.getComputedStyle(el, null)[style]' : 'el.currentStyle[style]', 
        ' || null;'].join('')); 
}();

//获取元素css属性值
function getStyle( elem, name )    
{    
    //如果该属性存在于style[]中，则它最近被设置过(且就是当前的)    
    if (elem.style[name])    
    {    
        return elem.style[name];    
    }    
    //否则，尝试IE的方式    
    else if (elem.currentStyle)    
    {    
        return elem.currentStyle[name];    
    }    
    //或者W3C的方法，如果存在的话    
    else if (document.defaultView && document.defaultView.getComputedStyle)    
    {    
        //它使用传统的"text-Align"风格的规则书写方式，而不是"textAlign"    
        name = name.replace(/([A-Z])/g,"-$1");    
        name = name.toLowerCase();    
        //获取style对象并取得属性的值(如果存在的话)    
        var s = document.defaultView.getComputedStyle(elem,"");    
        return s && s.getPropertyValue(name);    
    //否则，就是在使用其它的浏览器    
    }    
    else    
    {    
        return null;
    }    
}

/*
	elements finder
	单个对象返回对象，多个对象返回数组
*/
function $E(s,wrap) {
	var eleExpr =  /([a-zA-Z0-9]*)([#\.]?)([A-Za-z0-9_-]+)[^\s+]*/g,
		  result = [wrap || document];
	
	while(eleExpr.test(s)) {
		var tag = RegExp.$1,
			type = RegExp.$2,
			content = RegExp.$3,
			elems = [];
		for(var i=0; i<result.length; i++) {
			var temp;
			switch(type) {
				case "#":
					temp = [result[i].getElementById(content)];
					break;
				case ".":
					temp = getElemsByClassName(content,result[i],tag);
					break;
				default:
					temp = result[i].getElementsByTagName(tag+content);
			}
			for(var key in temp) {
				if(temp[key] && temp[key].nodeType == 1) elems.push(temp[key]);
			}					
		}
		result = [];
		for(var key in elems) {
			if(elems[key].nodeType == 1) result.push(elems[key]);
		}	
	}
	return result.length == 1 ? result[0] : result;
	
}

//通过classname获取元素
function getElemsByClassName(classname,elem,tag) {
	var result = [],
		tag = tag || "*",
		allElems = elem.getElementsByTagName(tag) || elem.all;
	for(var i=0; i<allElems.length; i++){
		var list = allElems[i].className.split(" ");
		for(var j=0; j<list.length; j++){
			if(list[j] == classname) result.push(allElems[i]);
		}       
	}
	return result;
}

//class为*的所有元素
/*
document.getElementsByClassName = function() {
  var children = document.getElementsByTagName('*') || document.all;
  var elements = new Array();
  var len = children.length;

  for (var i = 0; i < len; i++) {
    var child = children[i];
    var classNames = child.className.split(' ');
    for (var j = 0; j < classNames.length; j++) {
    	for (var k = 0; k < arguments.length; k++) {	
			if (classNames[j] == arguments[k]) {
        		elements.push(child);
       			break;
      		}
      }
    }
  }
  
  return elements;
}
*/

//ID以*开头的所有元素
document.getElementsByPrefix = function(prefix) {
	var children = document.getElementsByTagName('*') || document.all;
	var elements = new Array();
	var len = children.length;

	for (var i = 0; i < len; i++) {
	var child = children[i];
	var eid = child.id;
	if(eid&&eid.indexOf(prefix)>-1)
		elements.push(child);
	}

	return elements;
}

//body load
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	}else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

//object event
function addObjectEvent(ele,evt,func){
	var oldonevent = ele['on'+evt];
	if (typeof ele['on'+evt] != 'function') {
		ele['on'+evt] = func;
	} else {
		ele['on'+evt] = function(event) {
			oldonevent(event);
			func(event);
		}
	}
}

//key event
function addKeyEvent(key,func){
	if(!VeryIDE.tmpKey){
		VeryIDE.tmpKey=[];
	}
	
	VeryIDE.tmpKey["k"+key]=func;
}

//注册按键事件
addKeyEvent.Listener=function(e,test){
	var event=e||window.event;
	if(VeryIDE.tmpKey["k"+event.keyCode]){
		VeryIDE.tmpKey["k"+event.keyCode](event);
	}
	if(test){
		alert(event.keyCode);
	}
}

/*
	获取对象
	o	对象ID
	s	[可选]子对象标签名
*/
function getObject(o,s){
	if(typeof(o)!="object"){
		var o=$(o);
	}
	
	if(s){
		var a=new Array();
		var c=o.childNodes;
		for(var i=0;i<c.length;i++){
			var n=c[i];
			if(!!n.tagName && n.tagName.toLowerCase()==s){
				a.push(n);
			}
		}
		return a
	}
	
	return o;
}

/*随机颜色*/
function getColor(){var n = "0123456789abcdef";var c = "#"; for(var i=0;i<6;i++){ c = c+ n.charAt(Math.random()*n.length);} return c;}

String.prototype.Trim = function(){
    return this.replace(/(^\s*)|(\s*$)/g, "");
}
String.prototype.LTrim = function(){
    return this.replace(/(^\s*)/g, "");
}
String.prototype.Rtrim = function(){
    return this.replace(/(\s*$)/g, "");
}
String.prototype.isInChinese = function() { 
  return (this.length != this.replace(/[^\x00-\xff]/g,"**").length); 
} 

//返回字符串字节数
String.prototype.long = function(){
	var i;
	var l = this.length;
	var len;
	len = 0;
	for (i=0;i<l;i++){
		if (this.charCodeAt(i)>255) 
			len+=2; 
		else 
			len++;
	}
	return len;
}

//检查在数组内是否存在某值
function inArray(a,v) {
	var l = a.length;
	for(var i=0; i<=l; i++) {
		if(a[i]==v) return i;
	}
	return false;
}

/*查找页面Meta*/     
function getMeta(name,att){
	metatags = document.getElementsByTagName("meta"); 
	for (cnt = 0; cnt < metatags.length; cnt++){                   
		if(metatags[cnt].getAttribute("name")==name){
			if(!att){
				return metatags[cnt];
			}else{
				return metatags[cnt].getAttribute(att);
			}
		}else{
			return null;
		}
	}
}

//加载新脚本
function loadScript(src,target){
	if(!target){ 
		var root=$T("HEAD")[0];
	}else{
		var root=getObject(target);
	}
	
	var script=document.createElement("script");
	script.type="text/javascript";
	script.src=src;
	
	var code=arguments[2];
	if(code){
		script.charset=code;
	}
	
	root.appendChild(script);
}

//取得文件名
function getSelf(url){
	if(!url){
		var url=location.href;
	}
	var arr=url.split("/"); 
	var cur=arr[arr.length-1]; 
	return cur; 
}

//对象绝对属性
function getPosition(obj){	
	var obj=getObject(obj);

	var width=obj.offsetWidth; 
	var height=obj.offsetHeight;  
	var attr=obj.attributes;
	
	var top=obj.offsetTop;  
	var left=obj.offsetLeft;  
	while(obj=obj.offsetParent){  
		top+=obj.offsetTop;  
		left+=obj.offsetLeft;
	}

	return {width:width, height:height, top:top, left:left, attr:attr};
}

//获取Select对象值
function getSelect(obj){
	var obj=getObject(obj);
	
	var value="";
	var text="";
	var index="";
	var attr="";
	
	if(obj.length>0){
		value=obj[obj.selectedIndex].value;
		text=obj[obj.selectedIndex].text;
		index=obj.selectedIndex;
		attr=obj[obj.selectedIndex].attributes;
	}
	
	return {value:value, index:index, text:text, length:obj.length, attr:attr};
}

//获取Radio对象值
function getRadio(obj){
	var obj=$N(obj);
	var len = obj.length;
	
	var value="";
	var index=null;
	
	for(var i=0;i<len;i++){
		if(obj[i].checked==true){
			index=i;
			value=obj[i].value;
			break;
		}
	}
	
	return {value:value, index:index, length:len};
}


/*
	设置Select状态
	obj		目标对象
	v			值
*/
function setSelect(obj,v){
	var obj=$(obj);
	var len = obj.length;
	for(var i=0;i<len;i++){
		if(obj[i].value == v){
			obj.selectedIndex=i;
			break;
		}
	}
	
	if (typeof obj.onchange == 'function' && !obj.getAttribute("ignore")) {
		obj.onchange();
	}
	
}

/*
	设置滚动条位置
	obj 参照对象
*/
function setScroll(obj){	
	var pos = getPosition(obj);										  
	window.scrollTo(pos.left,pos.top);
}

/*
	设置Radio状态
	obj		目标对象
	v			值
*/
function setRadio(o,v){		
	var obj=$N(o);
	var len = obj.length;
	for(var i=0;i<len;i++){
		if(obj[i].value == v){
			obj[i].checked=true;
			break;
		}
	}
}

/*
	设置CheckBox状态
	obj		目标对象
	v			值
*/
function setCheckBox(obj,v){
	var obj=$N(obj);

	if(obj[0]){
		
		var len = obj.length;
		for(var i=0;i<len;i++){
			if(obj[i].value==v){
				obj[i].checked=true;
			}else{
				obj[i].checked=false;
			}
	
			if (typeof obj.onchange == 'function' && !obj.getAttribute("ignore")) {
				obj.onchange();
			}
		}
	}else{
		obj=$(obj);
		if(obj.value==v){
			obj.checked=true;
		}else{
			obj[i].checked=false;
		}
	
		if (typeof obj.onchange == 'function' && !obj.getAttribute("ignore")) {
			obj.onchange();
		}
	}
}

//禁用对象
function setDisabled(obj,b){	
	var obj=getObject(obj);
	if (obj){
		obj.disabled=b;
	}else{
		return false;
	}
}

/*
	设置对象Class
	obj		目标对象
	Class		Class名称
	Type		更新方式(+ 累加, - 移除,默认为直接设置)
*/
function setClass(obj,Class,Type){
	var obj=getObject(obj);
	if(obj){
		switch(Type){
			case "+":
				obj.className+=" "+Class;
			break;
			
			case "-":
				obj.className=obj.className.replace(Class,"");
			break;
			
			case "":
				obj.className=Class;
			break;
		}
	}
}

/*
	新建连续选项
	obj	select对象
	s		开始数值
	e		结束数值
	n		更新方式(true 清空 select,false 累加 select)
*/
function setOption(obj,s,e,n){
	var obj=getObject(obj);
	if(n){obj.length=0;}
	
	for(var i=s;i<(e+1);i++){
		obj.options[obj.length] = new Option(i,i); 
	}
}

/*
	设置对象值
	o	对象
	v	值
	s	方式
*/
function setValue(o,v,s){		
	var o=getObject(o);
	
	if(!o) return false;
	
	switch(s){
		case 'insert':
			if(o.value.indexOf(v)>-1){
				o.value = o.value.replace(v,'');
			}else{
				o.value += v;
			}
			
		break;
		
		case 'add':
		case '':
		default:
			o.value += v;
		break;
	}
}

	
/*	
	全选_反选_全不选
	path 选择器
	checked 状态
*/
function setAll(path,checked){
	//var box = $E("#"+box+" input");
	var box = $E(path);
	if( !box.length ) box = new Array(box);	
	
	var res = '';
	for(var i=0; i<box.length; i++){
		if( box[i].type == 'checkbox' ){
			
			if(checked == 'anti'){
				box[i].checked = (box[i].checked?false:true);
			}else{					
				box[i].checked=checked;
			}
			
			if(box[i].checked && box[i].value){
				res+=box[i].value+",";
			}	
			
			if (typeof box[i].onclick == 'function' && !box[i].getAttribute("ignore")) {
				box[i].onclick();
			}
		}
	}
	
	return res.substr(0,res.length-1);
}

function setObject(obj,val){
	window.status += obj.type;
	switch(obj.type){
		case "text"	:			obj.value=val;				break;
		case "hidden":			obj.value=val;				break;
		case "select-one":		setSelect(obj,val);			break;
		case "radio":			setSelect(obj,val);			break;
		case "textarea":		obj.value=val;				break;
	}	
}

//显示隐藏对象
function toggle(obj,fun){
	var obj=getObject(obj);
	if(obj){
		if(obj.offsetHeight == 0 || obj.offsetWidth == 0) {
			obj.style.display = "block";
			var res = true;
		}else{
			obj.style.display = "none";
			var res = false;
		}
		
		if(typeof(fun)=="function"){
			fun(res);
		}
	}
	
	return res;
}

//删除对象
function remove(obj){
	var obj=getObject(obj);
	if(obj){
		obj.parentNode.removeChild(obj);
		return true;
	}else{
		return false;
	}
}
/*
	新窗口打开链接
	a	rel="_blank"
*/
function blank(){
	var anchors = document.getElementsByTagName("A");
	var len = anchors.length;
	for (var i=0; i<len; i++) {
		var anchor = anchors[i];
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "_blank"){
			anchor.target = "_blank";
		}
	}
}

//确认操作
function getConfirm(info){
	return confirm(info);
}

function htmlDecode(s) {
	return (s == null)?s:s.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&").replace(/&quot;/g,"\"");
}
function htmlEncode(s) {
	return (s == null)?s:s.replace(/&/g,"&amp;").replace(/\"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;");
}

//过滤js
function stripScript(s) {
	return s.replace(/<script.*?>.*?<\/script>/ig, '');
}

/*
	获取URL参数
	n		名称
	url		URL链接
*/
function getQuery(n,url){
	if(!url){
		var url=location.href;
	}
	
	var v = '';
	var o = url.indexOf(n+"=");
	if (o != -1){
		o += n.length + 1 ;
		e = url.indexOf("&", o);
		if (e == -1){
			e = url.length;
		}
		v = decodeURIComponent(url.substring(o, e));
	}
	
	//seo
	if(!v){
		var o = url.indexOf(n+"-");
		if (o != -1){
			o += n.length + 1 ;
			e = url.indexOf("-", o);
			if (e == -1){
				e = url.length;
			}
			v = decodeURIComponent(url.substring(o, e));
		}
	}
	
	return v;
}

/*
	获取随机字符
	len		长度 
	upper	是否允许大写字母 
	lower	是否允许小写字母 
	num		是否允许数字
*/
function getRnd(len,upper,lower,num){
	var a=new Array(); 
	var b=new Array(""); 
	var c=new Array(""); 
	var e=""; 

	a[0]= ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
	a[1]= ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
	a[2]= ["0","1","2","3","4","5","6","7","8","9"]; 

	if(upper){b=b.concat(a[0]);}
	if(lower){b=b.concat(a[1]);}
	if(num){b=b.concat(a[2]);}
	
	c = b;

	for (var i=0;i<len;i++){ 
		e+=c[Math.round(Math.random()*(c.length-1))] 
	}
	return e; 
}

/*
	获取随机颜色
*/
function getRndColor(){
	var n = "0123456789abcdef"; 
	var c = "#"; 
	for(var i=0;i<6;i++){
		c = c+ n.charAt(Math.random()*n.length);
	}
	return c;
}

/*
	获取Cookie
	name	名称
	sub		子键
*/
function getCookie(name,sub){
	var str="";
	var arr = document.cookie.replace(/%25/g,"%").replace(/%5F/g,"_").match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
	if(arr !=null){
		try{
			str=decodeURIComponent(arr[2]);
		}catch(e){
			str=arr[2];
		}
	}
	
	if(sub){
		if(str){
			var nSub = str.indexOf(sub+"=");
		}else{
			var nSub =-1
		}
		
		if(nSub != -1){
			var nSubValueEnd = str.indexOf("&", nSub);
			if(nSubValueEnd == -1)
			nSubValueEnd = str.length;
			var sSubValue = str.substring(nSub + sub.length+1, nSubValueEnd);
			str=sSubValue;
		}else{
			str="";
		}
	}
	return str;
}

/*
	保存Cookie
	key		名称
	value		值
	days		多少天有效
	domain	域
*/
function setCookie(key,value,days,domain,path){
	var cookies=key.replace("_","%5F") + "=" + encodeURIComponent(value)+ "; ";
	if (days){
		var dExpire = new Date();
		dExpire.setTime(dExpire.getTime()+parseInt(days*24*60*60*1000));
		cookies += "expires=" + dExpire.toGMTString()+ "; ";
	}
	domain ? cookies += "domain="+domain+";" : "";
	path ? cookies += "path="+path+";" : "/";
	document.cookie = cookies;
}

function updateCache(alias){
	var url = 'mode.php?m=area&q=static&alias='+alias;
	ajax.send(url,'',ajax.get);
}

function clearDefault(el) {if (el.defaultValue==el.value) el.value = "";}

function switchHide( src, id ){
	switch( id ){
		case "xiala":
			$("password").style.display="none";		
		break;
		case "password":	
			$("xiala").style.display="none";	
		break;
	}
	var obj=$(id);
	if (id == 'password'){
		//var username = getObj('nav_pwuser').value;
		//ajax.send('pw_ajax.php?action=ifshowsafeinput','username='+username,function(){
				//var result = ajax.request.responseText;
				//if (result){
					obj.style.display=(obj.style.display==""?"none":"");
				//}
			//}
		//);
	} else {
		obj.style.display=(obj.style.display==""?"none":"");
	}
	addObjectEvent(document,'click',
		function(e){
			var e = e || window.event;
			var target=e.target||e.srcElement;
			if( target != src && !isParent(target,obj) ){
				obj.style.display="none";
			}
		}
	);
}
/*判断是否子对象*/
function isParent(obj,pobj){
	while (obj != undefined && obj != null && obj.tagName && obj.tagName.toUpperCase() != 'BODY'){        
		if (obj == pobj){
return true;
		}else{ 
obj = obj.parentNode;
		}
	}  
	return false;  
}

/*state*/
VeryIDE.script["library"]=true;
