function back(url)
{
  qc_fun.action = url;
  qc_fun.submit();
}


/**//*
*   XMLHttpRequest对象初始化
*/
var setresponse_text_ = "";
function getHttp_request()
{
	http_request = false;
	//开始初始化XMLHttpRequest对象
	if(window.XMLHttpRequest) { //Mozilla 浏览器
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {//设置MiME类别
			http_request.overrideMimeType('text/xml');
		}
	}
	else if (window.ActiveXObject) { // IE浏览器
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) { // 异常，创建对象实例失败
		window.alert("不能创建XMLHttpRequest对象实例.");
		return false;
	}
	return http_request;
}
/**//*
* disp调用(不传参数，直接得到表单上的所有值)
* @http_request1 可以传也可以不管，
* @param url   获取数据的URL
* @param divId 插入节点id,要是 TD 下的话必须得有 table 元素包涵着才成, 必须用 ID 哦，用 name 得改下面的 document.getElementById(divId1);
* @param element 自定义的responseXML节点名称,如果为空，则为text对象
* @param para 参数名(如果不输入，则为提交整个表单的参数) 例如： disp("b.jsp","aaa","?qqq");
* @loadtext   取代 “读取中。。。。”的文本
*/
function disp( url, divId1, para,loadtext, http_request1,element)
{
	var divId = document.getElementById(divId1);
	var http_request1;
	if(http_request1 == null || http_request1 == "")http_request1 = getHttp_request();
     var htmlProcess = loadtext == undefined ? "加载中...":loadtext;
     if (typeof(element) == "undefined" || "" == element)
         http_request.onreadystatechange = callbackText;
     else
         http_request.onreadystatechange = callbackXML;
     var linkUrl;
     if (typeof(para) == "undefined")
     {
         var allInputValue = getUrl();
         linkUrl = url + allInputValue;
     }
     else
     {
         linkUrl = url + para;
     }
     // 确定发送请求的方式和URL以及是否同步执行下段代码
     http_request.open("POST", linkUrl, true);
     http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
     http_request.send(null);

     /**//*
     * 返回responseText
     */
     function callbackText()
	 {
		 if (http_request.readyState == 4)
		{
			 divId.innerHTML = htmlProcess;
			 if (http_request.status == 200 || http_request.status == 0)
			{
				 divId.innerHTML = http_request.responseText;
				 setResponseText(http_request.responseText);
			 }
		 }
		 else
		{
			 divId.innerHTML = htmlProcess;
		}
     }
     /**//*
     * 返回responseXML
     */
     function callbackXML()
	{
		if (http_request.readyState == 4)
		{
			if (http_request.status == 200 || http_request.status == 0)
			{
				var mes = http_request.responseXML.getElementsByTagName(element)[0].firstChild.data;
				divId.innerHTML = mes;
			}
		}
     }
}

/**//*
* 得到表单上所有input框的值
*/
function getUrl()
{
     var str = "";
     //input框
     var tgname = "input";
     var inputNode = document.getElementsByTagName(tgname);
     for (var i = 0; i < inputNode.length; i++)
	{
         //得到input框的name字段的值
         var nodeNames = inputNode[i].getAttribute("name");
         str = str + nodeNames + "=" + inputNode[i].value + "&";
     }
     var url = "?" + str;
     return url;
}

/**//*
* XML方式得到返回到页面的值
*/
function getElement(http_request, url, element, username)
{
	 var allInputValue = getUrl();
	 linkUrl = url + allInputValue;
	 // 确定发送请求的方式和URL以及是否同步执行下段代码
	 http_request.open("POST", linkUrl, true);
	 //   http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
	 http_request.send(null);
	 http_request.onreadystatechange = callbackXML;
	 function callbackXML()
	 {
		 if (http_request.readyState == 4)
		 {
			 if (http_request.status == 200 || http_request.status == 0)
			{
				 var mes = http_request.responseXML.getElementsByTagName(element)[0].firstChild.data;
				 username.value = mes;
			 }
		  }
	 }
 }
function setResponseText(text)
{
	setresponse_text_ = text;
}
function getResponseText()
{
	return setresponse_text_;
}



/*******************************************************************
 函数名：	is_select(object_checkbox,mode)
 功能：		解决 checkbox 全选或清除
 入口参数：	object：document.form1.checkbox
 		mode: 全选 "a",清除；"c"，是否有选择的: "sel" 
 返回值：	BOOLEAN型 （true/false）,选择了返回 true
*******************************************************************/
//---------------------------------------------------------------------------
function checkbox_select(check_name,mode,alertstr,numsel)
{
	var box_objecd;
	if(typeof(check_name) == "string")box_objecd = $NO(check_name);
	else box_objecd = check_name;
	if(mode == "a")
	{
		for(var i = 0; i < box_objecd.length; i++)
		{
			box_objecd[i].checked = true;
			return false;
		}
	}
	if(mode == "c")
	{
		for(var i = 0; i < box_objecd.length; i++)
		{
			box_objecd[i].checked = false;
			return false;
		}
	}
	if(mode == "sel")
	{
		if(typeof(alertstr) == "undefined")var alertstr = "请在列表中至少选择一项信息！";
		var isreturn = true;
		var countnum = 0;
		for(var i = 0; i < box_objecd.length; i++)
		{
			if(box_objecd[i].checked == true)
			{
				isreturn = false;
				break;
			}
		}
		if(isreturn)alert(alertstr);
		return isreturn;
	}

}
//-----------------------------------------------------------------------------------------------------------
//验证非法字符,并且获得焦点
// object --》 window["控件名称"];   或  form1.name
// jiaodian --》0 是不获得    默认是获得
// msg --》 显示的消息			默认是提示 " 输入的文本不能含有非法字符 " 加上 非法的字符串
//runxu 允许的 字符，例如 "!@#$"
function is_str(object,jiaodian,msg,runxu)
{
	if(typeof(object) == "string")var str = "" + Trim($O(object).value);
	else var str = "" + Trim(object.value);
	var jdian = jiaodian;
	var show = msg;
	var key = new Array();
	key = ["(",")","~","`","!","@","#","$","%","^","&","*","-","_","+","=","{","}","[","]","|","\\",":",";","'","\"",",","<",".",">","/","?"];
	for(var i=0;i < key.length;i++)
	{

		var ren = str.indexOf(key[i]);
		if(runxu != undefined)
		{
		
			if(runxu.indexOf(key[i]) > -1)ren = -1;
		}
		if(ren > -1)
		{
			if(show == undefined)alert("输入的文本不能含有非法字符 " + key[i]);
			else if(show != "")
			{
				alert(show);
			}
			if(jdian != 0)go_object(object);
			return true;
		}
	}
	return false;
}



//判断是否为空
// field  --》 window["控件名称"];   或  form1.name
//crit --》0 是不获得    默认是获得
// msg --》 显示的消息			默认是提示 " 请输入必要信息，！！！"
function is_null(field,crit,msg)
{
	if(typeof(field) == "string")var str = "" + Trim($O(field).value);
	else var str = "" + Trim(field.value);
	var Ret = false;
	if(str == "")
	{
		Ret = true;
		if(msg == undefined)alert("请您输入必要信息！");
		else if(msg != "") alert(msg);
		if(crit != 0)
		{
			go_object(field);
		}
	}
	return(Ret);
}

function is_length(field,len,msg)
{
	var mss = "";
	if(typeof(field) == "string")var str = "" + Trim($O(field).value);
	else var str = "" + Trim(field.value); 
	if(str.length > len)
	{	
		var msgalert="";
		msgalert="最多允许输入 "+len+" 个字，请修改！";
		if(msg == undefined)alert(msgalert);
		else if(msg != "")alert(msg);
		go_object(field);
		return true;
	}else
	{
		return false;
	}
}

//某一控件获得焦点
function go_object(field)
{
	var obj = field;
	if(typeof(field) == "string")obj = $O(field);
	obj.focus();  // focus does not work on certain netscape versions
	obj.select();
}

//去前后空格
function Trim(str) 
{
	return str.replace(/(^[\s\u3000]*)|([\s\u3000]*$)/g, "");
}
function is_email( field ,jiaodian,msg)
{
	if(typeof(field) == "string")var sValue = "" + Trim($O(field).value);
	else var sValue = "" + Trim(field.value);
	if(sValue == "")return false;
	var iFirstIndex = 0;
	var iSecondIndex = sValue.indexOf( '@' );
	if( iSecondIndex == -1 )
	{
		if(msg == undefined)alert("Email 不合法，请重新输入。");
		else if(msg != "") alert(msg);
		if(jiaodian != 0)go_object(field);
		return true;
	}
	var sTemp = sValue.substring( iFirstIndex, iSecondIndex );
	/*if( isName( sTemp ) == false )
	{
		return false;
	}*/
	iSecondIndex = sValue.indexOf( '.' );
	if( iSecondIndex == -1 || sValue.substring( sValue.length-1, sValue.length ) == '.' )
	{
		if(msg == undefined)alert("Email 不合法，请重新输入。");
		else if(msg != "") alert(msg);
		if(jiaodian != 0)go_object(field);
		return true;
	}

	return false;
}

//是否大于 0
function is_int_0(field,crit,msg)
{
	if(typeof(field) == "string")var field = $O(field);
	var sValue = "" + Trim(field.value);
	if(sValue == "")return false;

	if(is_int(field, crit, msg)){
		return true;
	}
	if (field.value <= 0){
		if(msg == undefined)alert("请输入一个大于0整数！");
		else if(msg != "") alert(msg);
		if(crit != 0)go_object(field);
		return true;
	}
	return false;
}
//是否是整数,是返回 false, 
function is_int(field,crit,msg)
{
	if(typeof(field) == "string")var field = $O(field);
	var sValue = Trim(field.value);
	if(sValue == "")return false;

	var Ret = false;
	var NumStr="0123456789";
	var chr;

	for (i=0;i<field.value.length;i++)
	{
		chr=field.value.charAt(i);
		if (NumStr.indexOf(chr,0)==-1)
		{
			Ret=true;
			if(msg == undefined)alert(" 请输入一个整数!");
			else if(msg != "") alert(msg);
			if(crit != 0)go_object(field);
			return true;
		}
	}
	return(Ret);
}
//根据ID或是name反回对象
function $O(id)
{
	return document.getElementById(id);
}
function $o(id)
{
	return document.getElementById(id);
}
//根据ID或Name返回值
function $V(id)
{
	return document.getElementById(id).value;
}
function $v(id)
{
	return document.getElementById(id).value;
}
//根据Name返回第一个值
function $NV(id)
{
	return document.getElementsByName(id)[0].value;
}
function $nv(id)
{
	return document.getElementsByName(id)[0].value;
}
//根据Name返回一个对象
function $NO(id)
{
	return document.getElementsByName(id);
}
function $no(id)
{
	return document.getElementsByName(id);
}
//返回CheckBox的值
//name 关键字、
//fgf 为中间的分隔符,默认的是 ;
function $C(check_name,fgf)
{
	var box_objecd;
	if(typeof(check_name) == "string")box_objecd = $NO(check_name);
	else box_objecd = check_name;
	var fgf_str = typeof(fgf) == "undefined" ? ";" : fgf;
	var returnstr = "";
	for(var i = 0; i < box_objecd.length; i++)
	{
		if(box_objecd[i].checked == true)
		{
			returnstr += box_objecd[i].value + fgf_str;
		}
	}
	if(returnstr != "")returnstr = returnstr.substr(0,returnstr.length - fgf_str.length);
	return returnstr;
}


//---------------------------------------------------------------------------------------------------
//javascript 的类似 hashmap 
//下面调用测试方法
// Key 不可重复，Value 可以
/*
function testMap(){
   var testmap=new Map();
   testmap.put("01","michael");
   testmap.put("02","michael2");
   alert (testmap.size());
   
   var key="02"
   if (testmap.containsKey(key)){
       var element=testmap.get(key);
       alert (element.key+"|"+element.value);
   }else{
       alert ("不包含"+key);
   }
  
  testmap.remove("02");
   if (testmap.containsKey(key)){
       var element=testmap.get(key);
       alert (element.key+"|"+element.value);
   }else{
       alert ("不包含"+key);
   }
}
*/
function Map(){
   this.elements=new Array();
   this.size=function(){
                return this.elements.length;
        }
   this.put=function(_key,_value){
      this.elements.push({key:_key,value:_value});
   }
   
   this.remove=function(_key){
      var bln=false;
      try{   
    for (i=0;i<this.elements.length;i++){  
    if (this.elements[i].key==_key){
       this.elements.splice(i,1);
    return true;
    }
    }
   }catch(e){
          bln=false;    
   }
   return bln;
   }
   
   this.containsKey=function(_key){
      var bln=false;
      try{   
    for (i=0;i<this.elements.length;i++){  
    if (this.elements[i].key==_key){
      bln=true;
    }
    }
   }catch(e){
          bln=false;    
   }
   return bln;
   
   }
    
   this.get=function(_key){    
      try{   
    for (i=0;i<this.elements.length;i++){  
    if (this.elements[i].key==_key){
      return this.elements[i];
    }
    }
   }catch(e){
          return null;   
   }
   }
   
}

//------------------------------------------------------------------------------------------------------------
//javascript 类似 List 的方法
//Key 可以重复，Value 也可以重复

/*   用法  

var map = new classMap();
map.setAt("user_a", "role_a");
map.setAt("user_a", "role_b");

map.setAt("user_b", "bbb");
map.setAt("user_b", "111");

var temp = map.lookUp("user_b");
alert(temp[1]);


	var keyid = $V("list1");
	var temp = map.lookUp(keyid);
	$O("list2").length = temp.length;
	for(var cnt = 0; cnt < temp.length; cnt++)
	{
		$O("list2").options[cnt].text = temp[cnt];
		$O("list2").options[cnt].value = temp[cnt];
	}
*/
function struct(key, value){

  this.key = key;
  this.value = value;

}

function setAt(key, value){
  /*
  for (var i = 0; i < this.map.length; i++)
  {
    if ( this.map[i].key === key )
    {
      this.map[i].value = value;
      return;
    }
  }
  */
  this.map[this.map.length] = new struct(key, value);

}

function lookUp(key)
{
  var arr = new Array();
  var j = 0;
  
  for (var i = 0; i < this.map.length; i++)
  {
    if ( this.map[i].key === key )
    {
      arr[j++] = this.map[i].value;
      //return this.map[i].value;
    }
  }
  
  return arr;
}

function removeKey(key)
{
  var v;
  for (var i = 0; i < this.map.length; i++)
  {
    v = this.map.pop();
    if ( v.key === key )
      continue;
      
    this.map.unshift(v);
  }
}

function getCount(){
  return this.map.length;
}

function isEmpty(){
  return this.map.length <= 0;
}

function classMap() {

  this.map = new Array();

  this.lookUp = lookUp;
  this.setAt = setAt;
  this.removeKey = removeKey;
  this.getCount = getCount;
  this.isEmpty = isEmpty;
}
//------------------------------------------------------------------------------------------------------------
//添加 file 
/*
* <TR>
*	<TD id="myfile"><input type = "file" name = "fileNo1"/><INPUT TYPE="button" VALUE="添加" ONCLICK="addFile('myfile','fileNo')"></TD>
* </TR>
*
*
*  属性：id 指的是上面的 "myfile"
*  属性：name 指的是上面的 "fileNo"，需要注意的是 "fileNo" 没有加 "1",因为在下面就会自动加上去了，"fileNo1" 还是要写上 "1"
*  属性：size 指的是 file 控件的大小，也就是长度。
*/

var myfilenamezidongjiayi = 1;
function addFile(id,name,size)   
{   
	myfilenamezidongjiayi = myfilenamezidongjiayi + 1;
	var addnum = myfilenamezidongjiayi;
	var filename = name + addnum.toString();
	var   str   =   '<br><INPUT name = "' + filename + '" type="file" size=' + size + ' NAME="File" onkeydown="return false" oncontextmenu="return false">'   
	document.getElementById(id).insertAdjacentHTML("beforeEnd",str);
}   


//------------------------------------------------------------------------------------------------------------