/*************************************************************
* 全局变量
*************************************************************/
//是否支持数据表格的 mouseover 和 mouseout 效果
var is_datatable_mouse = true;
//是否以TAB效果方式显示界面
var is_showtab_mode = true;
/*************************************************************
* loadUI
*************************************************************/
function loadUI(){
//装载数据表格
loadUI_datatable();
//装载 button 的效果
loadUI_formobj();
//装载 tab 效果
loadUI_tab();
}
/*************************************************************
* loadUI_tab
*************************************************************/
//装载 tab 的效果
function loadUI_tab(){
if(!is_showtab_mode||null == $("tabBox")){
return;
}
//最大TAB数
var maxTabCount = 20;
//最终要插入TAB区的代码
var overTabHtml = '
| ';
var tabTableBegin = "";
tabTableBegin += '';
tabTableBegin += '';
tabTableBegin += ' ';
tabTableBegin += ' ';
tabTableBegin += ' | ';
var tabTableEnd = "";
tabTableEnd += ' ';
tabTableEnd += ' ';
tabTableEnd += ' | ';
tabTableEnd += '
';
tabTableEnd += '
';
//第一个标题区的对象
var firstTitleObj ;
for(var i = 1;i<=maxTabCount;i++){
var tabObj = $("p" + i);
if(null == tabObj){
break;
}
//取得标题对象 就是p1这样的表格之前的一个表格
var titleObj = getPreviousSibling(tabObj);
if(i==1){
firstTitleObj = getPreviousSibling(tabObj);
}
//隐藏 标题行,还有对应的内容
titleObj.style.display="none";
tabObj.style.display="none";
//标题行,p1_btn 的所在TD
var btnTD = $("p" + i + "_btn");
//ICON图标
var btnTDIcon = btnTD.innerHTML; // |
//标题
var btnNameText = getNextSibling(btnTD).innerHTML; // 基本信息 |
//alert(btnTDIcon + btnNameText);
var tabInnerHTMLTemplet = '';
tabInnerHTMLTemplet += '';
tabInnerHTMLTemplet += ' ';
tabInnerHTMLTemplet += ' ';
tabInnerHTMLTemplet += ' TEMPLET_ICON | ';
tabInnerHTMLTemplet += ' TEMPLET_TITLE | ';
tabInnerHTMLTemplet += ' ';
tabInnerHTMLTemplet += ' ';
tabInnerHTMLTemplet += ' | ';
overTabHtml += tabInnerHTMLTemplet;
overTabHtml = overTabHtml.replaceAll("NUM",i); //第几个TAB
overTabHtml = overTabHtml.replaceAll("TEMPLET_TITLE_COUNT_",btnNameText.length); //CSS,TITLE汉字的个数
overTabHtml = overTabHtml.replaceAll("TEMPLET_ICON",btnTDIcon); //icon
overTabHtml = overTabHtml.replaceAll("TEMPLET_TITLE",btnNameText); //标题
}
//显示tab
$("tabBox").innerHTML = tabTableBegin + overTabHtml + tabTableEnd;
//选择第1个tab
selectTab(1);
}
//选择第N个TAB,N是从1开始计数
function selectTab(index){
var tabObj = $("tab_title_" + index);
if(null != tabObj){
//之前选择的是哪一个,并处理
var oldSelectValue = $("currSelectTabIndex").value;
if(oldSelectValue > 0){
//隐藏之前选择的内容
var oldTabObjContent = $("p" + oldSelectValue);
if(null != oldTabObjContent){
oldTabObjContent.style.display="none";
}
//改变之前选择的tab的样式
var oldTabObj = $("tab_title_" + oldSelectValue);
if(null != oldTabObj){
oldTabObj.className = oldTabObj.className.replaceAll("mouseover","mouseout");
}
}
//当前选择的,并处理
$("currSelectTabIndex").value=index;
var currClassName = tabObj.className;
tabObj.className = currClassName.replaceAll("mouseout","mouseover");
//显示对应的内容
var tabObj = $("p" + index);
if(null != tabObj){
tabObj.style.display="";
}
}
}
//tab的onmouseover
function tabOnMouseOver(obj){
if(obj.className.indexOf("mouseover") < 0){
obj.className = obj.className.replaceAll("mouseout","mouseover");
}
}
//tab的onmouseout
function tabOnMouseOut(obj){
//当前应该选择的是第几个
var selectedIndex = $("currSelectTabIndex").value;
//当前TAB的ID
var tabID = obj.id.substring("tab_title_".length);
if(selectedIndex != tabID){
obj.className = obj.className.replaceAll("mouseover","mouseout");
}
}
//tab的onmouseout
function tabOnClick(obj){
//当前TAB的ID
var tabIndex = obj.id.substring("tab_title_".length);
//选择
selectTab(tabIndex);
}
/*************************************************************
* loadUI_formobj
*************************************************************/
//装载 button 的效果
function loadUI_formobj(){
var allFormObj = document.getElementsByTagName("input");
//alert(document.body.innerHTML);
//alert(allFormObj.length);
for(var i = 0; i < allFormObj.length;i++){
//alert(allFormObj[i].type + "|" + allFormObj[i].id);
if(null==allFormObj[i].isExeUiJs||allFormObj[i].isExeUiJs=="true"){
if(allFormObj[i].type=="button" || allFormObj[i].type=="submit"){
allFormObj[i].onmouseover=function(){buttonOnMouseOver(this)};
allFormObj[i].onmouseout=function(){buttonOnMouseOut(this)};
}else if(allFormObj[i].type=="text" || allFormObj[i].type=="password"){
allFormObj[i].onfocus=function(){inputOnFocus(this)};
allFormObj[i].onblur=function(){inputOnBlur(this)};
}
}
}
allFormObj = document.getElementsByTagName("textarea");
for(var i = 0; i < allFormObj.length;i++){
//alert(allFormObj[i].type + "|" + allFormObj[i].id);
if(null==allFormObj[i].isExeUiJs||allFormObj[i].isExeUiJs=="true"){
allFormObj[i].onfocus=function(){inputOnFocus(this)};
allFormObj[i].onblur=function(){inputOnBlur(this)};
}
}
}
//button的onmouseover
function buttonOnMouseOver(obj){
var objID = obj.id;
if(null == objID){ //得不到id,就取name
objID = obj.name;
}
if(objID.length==2 && objID.indexOf("b") == 0){ //如果ID是2个字母的,且以b开始的
// onMouseOver="this.className='b7_add_article_1_m'" onMouseOut="this.className='b7_add_article_1'"
//alert(obj.className);
obj.className = obj.className + "_m";
}
}
//button的onmouseout
function buttonOnMouseOut(obj){
var objID = obj.id;
if(null == objID){ //得不到id,就取name
objID = obj.name;
}
if(objID.length==2 && objID.indexOf("b") == 0){ //如果ID是2个字母的,且以b开始的
obj.className = obj.className.substring(0,obj.className.length-2); //去掉后面的_m
}
}
//input 的onfocus
function inputOnFocus(obj){
obj.className = obj.className + "_m";
}
//input 的onblur
function inputOnBlur(obj){
obj.className = obj.className.substring(0,obj.className.length-2); //去掉后面的_m
}
/*************************************************************
* loadUI_datatable
*************************************************************/
//装载数据表格的效果
function loadUI_datatable(){
var dtObj = $("datatable");
if(null == dtObj){
return;
}
for(var i = 0;i < dtObj.rows.length;i++){
if(i==0){ //第一行不添加事件
continue;
}
//alert(dtObj.rows(i));
if(is_datatable_mouse){ //只是设置成 支持 效果,才应用
dtObj.rows[i].onmouseover=function(){datatableOnMouseOver(this)};
dtObj.rows[i].onmouseout=function(){datatableOnMouseOut(this)};
}
dtObj.rows[i].onclick=function(){datatableOnClick(this)};
}
}
//数据表格 onmouseover
function datatableOnMouseOver(obj){
if(obj.className == "table-cell-click"){
return;
}
obj.className = "table-cell-mouseover";
/**
var tdObj = obj.cells;
for(var i = 0;i < tdObj.length;i++){
if(tdObj[i].className == "table-cell-click"){
break;
}
tdObj[i].className = 'table-cell-mouseover';
}
**/
}
//数据表格 onmouseout
function datatableOnMouseOut(obj){
if(obj.className == "table-cell-click"){
return;
}
obj.className = 'table-cell';
/**
var tdObj = obj.cells;
for(var i = 0;i < tdObj.length;i++){
if(tdObj[i].className == "table-cell-click"){
break;
}
tdObj[i].className = 'table-cell';
}
**/
}
//数据表格 onclick
function datatableOnClick(obj){
var tdObj = obj.cells;
//当前是否为选中状态
var tdClassName = "table-cell-click";
var checkBoxState = "checked";
if(tdObj[0].className == "table-cell-click"){
tdClassName = "table-cell";
checkBoxState = false;
}
if(tdObj[0].innerHTML != ""){
//如果第一列,是一个checkbox,则选中
if(tdObj[0].childNodes[0].type=="checkbox"){
tdObj[0].childNodes[0].checked = checkBoxState;
}
}
for(var i = 0;i < tdObj.length;i++){
tdObj[i].className = tdClassName;
}
//取消全选
unselectall('selectAll');
}
/*************************************************************
* 其它综合类JS
*************************************************************/
function $(emtID){
var obj = document.getElementById(emtID);
return obj;
}
String.prototype.replaceAll = stringReplaceAll;
function stringReplaceAll(AFindText,ARepText){
var raRegExp = new RegExp(AFindText,"g")
return this.replace(raRegExp,ARepText)
}
//ex参数存储了在同一个form中可以被排除不用被checked的对象名。使得from中的checkbox不至于全部被选择
//ex可以由多个参数组成,即可以指定任意多个
function checkAllEx(form,ex){
var firstCheckBox; //第一个checkbox,我们将第一个checkbox视为全选的,当然也有特例情况
for (var i=0;i < form.elements.length;i++){
var e = form.elements[i];
var trueChecked = true;
for (var j=1;j < arguments.length;j++){
if(e.name == arguments[j]){
trueChecked = false;
break;
}
}
if(e.type=="checkbox" && trueChecked){
//第一遇遇到checkbox,就以这个为全选checkbox
if(null == firstCheckBox){
firstCheckBox = form.elements[i];
continue;
}else{
if(e.parentNode.parentNode.tagName == "TR"){//如果checkbox在一个tr中,并且不是第一个tr,则应用TR的点击效果
//当前是否为选中状态
var tdClassName = "table-cell";
if(firstCheckBox.checked){
tdClassName = "table-cell-click";
}
var tdObj = e.parentNode.parentNode.cells;
for(var j = 0;j < tdObj.length;j++){
tdObj[j].className = tdClassName;
}
}
}
if (e.name != firstCheckBox.name && e.disabled == false){
e.checked = firstCheckBox.checked;
}
}
}
}
//全选(checkbox)
function checkAll(form){
var firstCheckBox; //第一个checkbox,我们将第一个checkbox视为全选的,当然也有特例情况
for (var i=0;i < form.elements.length;i++){
var e = form.elements[i];
if(e.type=="checkbox"){
//第一遇遇到checkbox,就以这个为全选checkbox
if(null == firstCheckBox){
firstCheckBox = form.elements[i];
continue;
}else{
if(e.parentNode.parentNode.tagName == "TR"){//如果checkbox在一个tr中,并且不是第一个tr,则应用TR的点击效果
//当前是否为选中状态
var tdClassName = "table-cell";
if(firstCheckBox.checked){
tdClassName = "table-cell-click";
}
var tdObj = e.parentNode.parentNode.cells;
for(var j = 0;j < tdObj.length;j++){
tdObj[j].className = tdClassName;
}
}
}
if (e.name != firstCheckBox.name && e.disabled == false){
e.checked = firstCheckBox.checked;
}
}
}
}
//全选(checkbox)
function checkAllForCheckBox(element,evt){
if(element.elements){
checkAll(element);
}else{
var evtObj = window.event?window.event:evt;
//事件FF下事件获取的另一种方法arguments.callee.caller.arguments[0]但不知道是否通用
var eSource = evtObj.srcElement||evtObj.target; //事件源
if(element==null)
return;
if (element.Name != eSource.name && element.disabled == false)
element.checked = eSource.checked;
for (var i=0;i < element.length;i++){
var e = element[i];
if (e.Name != eSource.name && e.disabled == false)
e.checked = eSource.checked;
}
}
}
//取消全选(checkbox)
function unselectall(checkBoxID){
var selectAllObj = $(checkBoxID);
if(null == selectAllObj){
return;
}
if(selectAllObj.checked){
selectAllObj.checked = selectAllObj.checked&0;
}
}
//兼容ie和ff的,取一个对象的上一个对象的方法
function getPreviousSibling(obj){
var prevObj = obj.previousSibling;
for(var i = 0;i<1000;i++){ //不用死循环,防止真的出现
//在IE下会忽略回车和换行。FF下不会忽略。 nodeType = 3是文本节点 nodeType = 1是html节点
if(prevObj.nodeType==1){
return prevObj;
}
prevObj = prevObj.previousSibling;
}
}
//兼容ie和ff的,取一个对象的下一个对象的方法
function getNextSibling(obj){
var nextObj = obj.nextSibling;
for(var i = 0;i<1000;i++){ //不用死循环,防止真的出现
//在IE下会忽略回车和换行。FF下不会忽略。 nodeType = 3是文本节点 nodeType = 1是html节点
if(nextObj.nodeType==1){
return nextObj;
}
nextObj = nextObj.nextSibling;
}
}