﻿/*
=========================================================
 Version: Jax 0.5
 Date: 2006-5-1
 Script Written by Utoper Jax Group
 Copyright (C) 2006 Utoper Corp. All rights reserved.
 Web: http://Jax.Utoper.com
 Email: UtoJax@163.com
=========================================================
******************************************************************
** 名: base  属于JFC － Jax Foundation Class
** 创建：welsham 2006-7-8  修改: welsham 2006-7-8
** 描述: parser基础库，兼容性、扩展性函数库
** 修改描述: 
******************************************************************
*/

//**************初始化parser对象***********************************
if(typeof parser != "object") { var parser={}; }

//**************通过id调用DOM节点对象******************************
function $()
{
  var elements = new Array();
  for (var i = 0; i < arguments.length; i++)
  {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);
    if (arguments.length == 1)
      return element;
    elements.push(element);
  }
  return elements;
}

function p$(_id)
{
	return window.opener.document.getElementById(_id);
}
//**************dom的select/input或其他节点的选中值**************
function $$(_id,_getText)
{
	var nodeType=$(_id).nodeName.toLowerCase();
	switch(nodeType)
	{
		case "input":
		case "textarea":return $(_id).value;
		case "select":
		{
			if( _getText ) return $(_id).options[$(_id).selectedIndex].text;
			else return $(_id).options[$(_id).selectedIndex].value;
		}
		default:
		{
			if( _getText ) return $(_id).innerText;
			else return $(_id).innerHTML;
		}
	}	
}

//**************取得DOM节点绝对位置******************************
function getXY(e)
{
	var l=e.offsetLeft;
	var t=e.offsetTop;
	while(e=e.offsetParent)
	{  
		l+=e.offsetLeft;t+=e.offsetTop;
	}
	return {left:l,top:t}
}

//**************获取url查询参数*********************************
function getQuery(_p,url)
{
	if(url&&url=="") return "";
	var p=new RegExp("[&]{0,1}"+_p+"=([^&]*)","i");
	if(!url) url=location.search;
	url=url.match(p);
	if(url) return url[1];
	else return "";
}

//**************去字符串空格*********************************
//str 为输入字符串，trimType为类型，分别为　空-去除前后空格; 1-去前导空格; 2-去尾部空格

function trim(str,trimType)
{
	var i,tempStr;
	//去前空格
	if(!trimType || trimType==1)
	{
		i=-1; tempStr=' ';
		while(tempStr==' '||tempStr=='　')
		{
			i++; tempStr=str.substr(i,1);
		}
		str=str.substring(i);
	}
	if(!trimType || trimType==2)
	{
		i=str.length;tempStr=' ';
		while(tempStr==' '||tempStr=='　')
		{
			--i; tempStr=str.substr(i,1);	
		}
		str=str.substring(0,i+1);
	}
	return str;
}


/****************************************************************** 
** 名: Compatible  属于JFC － Jax Foundation Class
** 创建：welsham 2006-7-8  修改: welsham 2006-7-8
** 描述: 兼容处理
** 修改描述:
******************************************************************/
//**************浏览器类型检测*************************************
parser.ie = /msie/i.test(navigator.userAgent);
parser.mz = !parser.ie && /mozilla\/5/i.test(navigator.userAgent);
parser.op = !parser.ie && !parser.mz && /opera 5|opera\/5/i.test(navigator.userAgent);

//**************添加下级节点*************************************
function appendChild(_parent,_child)
{
	if(parser.ie) _parent.add(_child);
	else if(parser.mz || parser.op) _parent.appendChild(_child);
}

//**************删除select的所有option*****************************
function removeAllOption(o)
{
	var oLen=o.options.length;
	for(i=oLen-1;i>=0;i--)
	{
		o.remove(i);
	}
	o.reset
};

/****************************************************************** 
** 名: transform  属于JFC － Jax Foundation Class
** 创建：welsham 2006-7-8  修改: welsham 2006-7-8
** 描述: 数据转换
** 修改描述: 
******************************************************************/
//**************编辑框数据转换*************************************
//换行、空格
function covHtml(str)
{
	return str.replace(/\r\n/g,"<br>").replace(/  /g,"&nbsp;&nbsp;");
}
function unCovHtml(str)
{
	return str.replace(/\<br>/gi,"\n").replace(/&nbsp;&nbsp;/g,"  ");
}


/****************************************************************** 
** 名: JSON  属于JFC － Jax Foundation Class
** 创建：welsham 2006-7-8  修改: welsham 2006-7-8
** 描述: JSON的解析
** 修改描述: 
******************************************************************/
//**************初始化JSON对象*************************************
if(typeof parser.JSON != "object") { parser.JSON={}; }

//**************JSON某一节点的子节点*********************************
//_node:当前节点键,空时为DD的子节点；isSD:是否标准JSON，false(用于DD)，true(用于tree等);order：排序属性；返回“键”
parser.JSON.childNodes=function(DD,_node,isSD,order)
{
	var key,nodes=[],orders,isASC;
	if(isSD)
	{
		for(key in DD)
		{
			if(DD[key].parent&&DD[key].parent==_node) nodes[nodes.length]=key;
		}
	}
	else
	{
		//不限的子项，剔除
		if(_node=="0") return nodes;
		//一级子项,_node为空
		if(!_node) _node="0";
		for(key in DD)
		{
			if(!DD[key].parent || DD[key].parent==_node) nodes[nodes.length]=key;
		}
	}
	if( order)
	{
		orders = order.split("_");
		order=orders[0];
		if( orders[1]=="DESC" ) isASC=false;
		else isASC=true;
		nodes.sort(
				   function(a,b){ 
				   		if( isASC ) return DD[a][order]-DD[b][order];
						else return DD[b][order]-DD[a][order];
				   }
				   )
	}
	return nodes;
};
parser.JSON.childNode=function(DD,_node)
{
	
};