﻿/*
*@author Darkly
*@version 0.1
*@created 2008-4-30
*@modified 2008-4-30
*@else QQ:85860068,MSN/Email:dqfcj@163.com
*@CopyRight Joyousteam
*/

/*
@获取表单元素值 参数[el:HTML的表单元素]
@将Object 转换为 search字符串链 参数[o:输入的Object] 
@获取表单内的全部表单元素 参数[fm:HTML的表单] 
@以上3个方法放到一起就是将指定的表单内的所有表单元素 转换成 search字符串的形式
*/


 /*--===================--*\
*			FOR PUBLIC		*
 \*--===================--*/

JD = document;
DB = document.body;
DD = document.documentElement;
var Dh = function(){JD.clientHeight ? JD.clientHeight : DB.clientHeight;}
var Dw = function(){JD.clientWidth ? JD.clientWidth : DB.clientWidth;}

function $(_id){return (JD.getElementById) ? JD.getElementById(_id): document.all[_id];}
function $a(_name){return (JD.getElementByName) ? JD.getElementByName(_name): document.all[_name];}
function $at(_name){return (JD.getElementsByTagName) ? JD.getElementsByTagName(_name): document.all.tags(_name);}

 /*--===================--*\
*			AJAX CLS		*
 \*--===================--*/
	JS.req = function(_url,_method,_type,_her,_recall){
		http_request = false;
		if(window.XMLHttpRequest){
		   	var	JoyXML = new XMLHttpRequest();
		 	}else{
		 	var  JoyXML = [joyarrxml]; 
			for(var n = 0,j=JoyXML.length; n < j; n ++) { 
				try { 
				JoyXML = new ActiveXObject(JoyXML[n]);
				    } catch(e) {JS.msg(e.message);} 
			   	} 
			 }
			if (!JoyXML && typeof XMLHttpRequest=="undefined") {
			JS.sysmsg(joymsxmlerr);return false;
			}
			JoyXML.onreadystatechange = function(){
					if (JoyXML.readyState == 4) {
					var _ret = null;
					switch(_type){
						case 'text' : case 'code' :_ret = JoyXML.responseText;break;
						case 'json' :_ret = eval('(' + JoyXML.responseText + ')');break;
						case 'xml'  :_ret = JoyXML.responseXML;break;
						default 	:_ret = JoyXML.responseText;break;
					}
					if (JoyXML.status == 0||JoyXML.status == 200){
						JS.callback(_type,_ret,_recall);
						}else{
						JS.msg('Request Err: '+JoyXML.status+' Pleace Try Again');return false;
						}
					JS.msg('Request '+JoyXML.status+': Loading...');
					}else{
					JS.msg('Request '+JoyXML.status);
				}
			}
		_url += (_url.indexOf("?")>-1 ? "&" : "?") + "joyrand=" + new Date().getTime();
		var mm=(_method||"POST").toUpperCase();
		if (mm='GET'){
		JoyXML.open('GET',_url,true);
		JoyXML.send(null);
		}else{
		JoyXML.open("POST",_url, true); 
		JoyXML.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
		JoyXML.send(_her);
		}
	}

 /*--===================--*\
*			FOR AJAX		*
 \*--===================--*/
// -----------------------------------------------------------
	function fParseJson() {
		try{
			return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(this.replace(/'(\\.|[^"\\])*'/g, '')))&&eval('(' + this + ')');
		} catch (e) {
			return false;
		}
	};
	
	 function toQueryString(o) {
		 if(typeof o == 'string') return o;
		 else if(typeof o == 'object') {
			var queryString = [];
			for(var j in o) queryString.push(encodeURIComponent(j)+ '='+encodeURIComponent(o[j]));
			return queryString.join('&');
		}else return false;
	}

	function getElementValue(el) {
		 var value = false;
		 switch(el.tagName.toLowerCase()) {
			case 'select'  : value = el.getElementsByTagName('option')[el.selectedIndex].value; break;
			case 'input'   : if ((el.checked && /checkbox|radio/.test(el.type)) || (/button|hidden|text|password/.test(el.type))) value = el.value;break;
			case 'textarea': value = el.value;
		} return value;
	}

	function getFormObject(fm){
		 var J ={};
		 Function.forEach(fm.getElementsByTagName('*'), function(el){
			 var name = el.name;
			 var value = Aj.getElementValue(el);
			 if(value && name) J[name] = value;	});	 return J;
	}
	
	function evalScripts(Y) {
		var scripts = null;
		if(scripts = Y.match(/<script[^>]*?>[\S\s]*?<\/script>/g)) {
			Function.forEach(scripts, function(script){
			eval(script.replace(/^<script[^>]*?>/, '').replace(/<\/script>$/, ''));}); 
		}
	}
	
	
	function Aqj(len){
		var i=0,j=0;
		if(this.len()<=len)	{return this;}
		while(j<len){
			if(this.charCodeAt(i)>255){
				j+=2;
			}else{
				j ++;
			}
			i ++;
		}
		return this.substring(0,i) + "..";
	};

	function Aoo(){	for (var i=0; i < arguments.length; i++)$(arguments[i]).value='';}
	
	function Ajn(aa) {
		try	{
			$(aa).focus();
			$(aa).select();
		}catch(exp){}
	}
	
	function fToggleText(v, text1, text2){
		v=$(v);
		if(v.innerHTML==text1){
			v.innerHTML=text2;
		}else{
			v.innerHTML=text1;
		}
	}
	
 /*--===================--*\
*				FOR SYS		*
 \*--===================--*/
 
	JS.sysmsg = function(_msg,_timeout,_return){
		if ($('sysmsg') == null) {
		var msg=JD.createElement("DIV");
		msg.id="sysmsg";
		msg.className="sysmsg";
		msg.style.backgroundColor = '#000';
		msg.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=80,finishOpacity=100,style=0)';
		msg.style.opacity = 0.8;
		DB.appendChild(msg);
		msg.innerHTML = '<div id="sysmsgman"><span id="sysmsgleft"></span><span id="sysmsgcenter">系统消息：</span> <span id="sysmsgclose" onclick="DM.remove(\'sysmsg\')"></span><span id="sysmsgright"></span><span id="sysmsgcomment"><span id="sysmsglogo"></span><span id="smsg">'+_msg+'</span></span>'+
		'<div id="dsysmsgcenter"><span id="dsysmsgleft"></span><span id="dsysmsgfoot">'+joyver+'</span><span id="dsysmsgright"></span></div></div>';
		if (_timeout > 0) setTimeout('DM.remove(\'sysmsg\')',_timeout*1000); 
		}
	}
	
	JS.serach = function(){
	var st=	'<input type="text" class="gSipt left" id="txtKey" value="JoyCMS" style="color:#aaaaaa"  '+
		'onfocus="JS.fEvent(\'blur\',this)" onmouseover="JS.fEvent('+
		'\'mouseover\',this)" onmouseout="JS.fEvent(\'mouseout\',this)" maxlength="100" onkeyup="if(event.keyCode==13)'+
		'{;this.blur()}" onblur="JS.fEvent(\'blur\',this);if(this.value==\'\')this.value=\'JoyCMS\';" onclick="if(this.value==\'JoyCMS\')'+
		'this.value=\'\'" />'+
		'<a href="javascript:void(0);" class="srhBtn left" onclick="$(\'txtKey\').onclick();$(\'txtKey\').onblur();" title="JoyCMS搜索">'+
		'<b>JoyCMS搜索</b></a>'+
		'<a href="javascript:void(0);" class="AdsrhBtn left" onclick="" title="JoyCMS高级搜索"><b>JoyCMS高级搜索</b></a>'
		DM.create('div','search',st,'gSrh left');
	}
	
	JS.msg = function(_MSG){
			if ($(joymsg) == null) {
			DM.create('DIV',joymsg,_MSG,joymsg);
			}else{
			$(joymsg).innerHTML=_MSG;
		}
		setTimeout('DM.remove(joymsg)',msgtimeout);
	}
	
	JS.marquee = function (_length,_speed,_delay,_iid){
		var t, p=false,o=$(_iid);
		o.innerHTML+=o.innerHTML;
		o.onmouseover=function(){p=true}
		o.onmouseout=function(){p=false}
		o.scrollTop = 2;
		function start(){
			t=setInterval(scrolling,_speed);
			if(!p) o.scrollTop += 2;
		}
		function scrolling(){
			if(o.scrollTop%_length!=0){
			o.scrollTop += 2;
				if(o.scrollTop>=o.scrollHeight/2) o.scrollTop = 0;
				}else{
				clearInterval(t);
				setTimeout(start,_delay);
			}
		}
		setTimeout(start,_delay);
	}
	
	JS.fEvent = function(_sType,_oInput){
		switch (_sType){
			case "focus" : _oInput.isfocus = true;
			case "mouseover" : _oInput.style.borderColor = '#99E300';break;
			case "blur" : _oInput.isfocus = false;
			case "mouseout" :if(!_oInput.isfocus){_oInput.style.borderColor='#A1BCA3';}break;
		}
	}
	
	JS.relto = function(){
		if (!document.getElementsByTagName) return;
			var anchors = $at("a");
			for (var i=0; i < anchors.length; i++) {
				var anchor = anchors[i];
				if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") anchor.target = "mmmmm";
		}
	}
	JS.open = function(_url,_focus){
		var op = window.open(_url,joyver,'');
	    if (_focus){
	    op.blur();
	    op.opener.focus();
	    }
	}

	JS.menu = function (obj){
		var menu = obj.parentNode.parentNode.getElementsByTagName("li");
		    for(var i=0,j=menu.length; i<j; i++){
		    var yy=menu[i].firstChild;
		    yy.className="menuli";
			yy.nextSibling.className="menuli2";
		}
		obj.className="menuli_on";
		obj.nextSibling.className="menuli2_on";
	}
	
	JS.selectall= function (obj) {
		var joy = obj.parentNode.getElementsByTagName("input");
		    for(var i=0,j=joy.length; i<j; i++){
			        if (joy[i].type== "checkbox"){
				if(obj.checked==true){
					joy[i].checked=true;
					}else{
					joy[i].checked=false;
				}
			}
		}
	}
	
	JS.callback = function(_type,_ret,_recall){
		 switch(_type) {
		 			case 'code'  : $(_recall).innerHTML=JS.HtmlEncode(_ret);break;
					case 'text'  : $(_recall).innerHTML=_ret;break;
					case 'xml'   : //插入数据岛;break;
					case 'json'  : //读取数据;break;
					default 	 : $(_recall).innerHTML=_ret;break;
				} return _ret,_type,_recall;
	}

	//editor api
	JS.HtmlDecode = function(s) {
		return (s == null)?s:s.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&").replace(/&quot;/g,"\"");
	}

	JS.HtmlEncode = function(s) {
		return (s == null)?s:s.replace(/&/g,"&amp;").replace(/\"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;");
	}

	//editor api
	JS.TextToHtml = function(content) {
		//the attr of innerHTML in firefox is diff in ie
		var res = "<DIV>" + content.replace((content.indexOf("<BR>") >= 0)? /<BR>/ig: /\n/g, "</DIV><DIV>") + "</DIV>";
		res = res.replace(new RegExp("\x0D","g"), "");
		res = res.replace(new RegExp("\x20","g"), "&nbsp;");
		res = res.replace(new RegExp("(<DIV><\/DIV>)*$","g"), "");
		return res.replace(/<DIV><\/DIV>/g, "<DIV>&nbsp;</DIV>");
	}

	JS.HtmlToText = function(content) {
		var res = content.replace(/<\/div>/ig, "\n");
		res = res.replace(/<\/p>/ig, "\n");
		return res.replace(/<br>/ig, "\n");
	}

 /*--===================--*\
*				FOR DOM		*
 \*--===================--*/
 
	DM.create = function(_eLement,_Id,_sHtml,_className) {
	 		var D = JD.createElement(_eLement);	D.id = _Id;
			D.className=_className;
			DB.appendChild(D);
			D.innerHTML= _sHtml;
		}
		
	DM.remove = function(_eLement) {
		if ($(_eLement) != null) DB.removeChild($(_eLement));return;
	}

 /*--===================--*\
*			FOR DEBUG		*
 \*--===================--*/

	JO.source = function(){
	if (joytest){
		if (is_ie){
		var _sssss=JD.documentElement.outerHTML;
		}else{
		var _sssss='<html xmlns="http://www.w3.org/1999/xhtml">'+JD.documentElement.innerHTML+'</html>'
		}
		var	_shtml='<script type="text/javascript" src="/public/js/public.js"></script>' +
					'<script type="text/javascript" src="/public/js/format.js"></script>' +
					'<textarea style="width: 100%;height: 90%" id="init">' + JS.HtmlEncode(_sssss) + '</textarea><div>装载用时：<span id="times"></span></div>'+
					'<input type="button" onclick="JO.runit()" value="运行" /><input type="button" onclick="JO.copyit()" value="复制" />' +
					'<input type="button" onclick="JO.setit()" value="粘贴" /><input type="button" onclick="JO.printit()" value="打印" />' +
					'<input type="button" onclick="JO.clearit()" value="清除" /><input type="button" onclick="JO.refreshit()" value="刷新" />'+
					'<input type="button" onclick="JO.closeit()" value="关闭" />';
		var Josource = open('','Josource','height=400, width=600, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no');
		Josource.document.open();
		Josource.document.write(_shtml);
		Josource.document.close();
		return _sssss,_shtml;
		}
	}

	//javascript: var j=open('','j','');j.document.open();j.document.write('<textarea>'+document.documentElement.innerHTML+'</textarea>');j.document.close();
	JO.debug = function(){
		if (joydebug) {
		var dt='FUNCTION: <input type="text" id="txtFunc" style="width:300px" /><input type="button" onclick="fDebugRequest()" value="发送" />'+
			'<input type="button" value="关闭" onclick="DM.remove(\'divDebug\')" /><br />'+
			'参数:<textarea id="txtBody" style="height:200px;width:380px;"></textarea><br /><div style="height:300px;overflow:scroll" id="divResult"></div>';
		DM.create('div','divDebug',dt,'divDebug');
		return dt;
		}
	}

	JO.testis= function(){
	if (joydebug||joytest){
		var T='<input type="button" value="检　查" class="inp_L1" onmouseover="this.className=\'inp_L2\'" onmouseout="this.className=\'inp_L1\'" id="input_btn1" name="ech" tabindex="4" onclick="JO.source();" />'+
			  '<input type="button" value="调　试" class="inp_L1" onmouseover="this.className=\'inp_L2\'" onmouseout="this.className=\'inp_L1\'" id="input_btn1" name="dec" tabindex="4" onclick="JO.debug();" />'
		DM.create('div','debug',T,'debug');
		return T;
		}
	}

function setTab(name,cursel,n){
for(i=1;i<=n;i++){
var menu=document.getElementById(name+i);
var con=document.getElementById("con_"+name+"_"+i);
menu.className=i==cursel?"hover":"";
con.style.display=i==cursel?"block":"none";
}
}

 /*--===================--*\
*			FOR MENU		*
 \*--===================--*/
window.onload=MM.initial = function(){
		//var m='<ul class="menuul" id="sysmenu"><li id="menustart"><span onclick="JS.menu(this);" class="menuli_on"><b>今天</b></span><span class="menuli2_on"><b>●</b></span></li><li id="menuaddnews"><span onclick="JS.menu(this);" class="menuli"><b>发表新闻</b></span><span class="menuli2"><b>x</b></span></li></ul>';
		//DM.create('div','toolbar',m,'gTab');
		//return m;
		JS.relto();
		//JO.testis();
};

