
/////////////////////////////////////////////////////////////////////////////////
// 通用功能  ///////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
function AddFavorite(sURL, sTitle)
{
    try
    {
        window.external.addFavorite(sURL, sTitle);
    }
    catch (e)
    {
        try
        {
            window.sidebar.addPanel(sTitle, sURL, "");
        }
        catch (e)
        {
            alert("加入收藏失败，请使用Ctrl+D进行添加");
        }
    }
}
function SetHome(obj,vrl)
{
    try
    {
    	obj.style.behavior='url(#default#homepage)';obj.setHomePage(vrl);
    }
    catch(e)
    {
        if(window.netscape) 
        {
            try 
            {
                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
            }
            catch (e) 
            {
                alert("此操作被浏览器拒绝！\n请在浏览器地址栏输入“about:config”并回车\n然后将 [signed.applets.codebase_principal_support]的值设置为'true',双击即可。");
            }
            var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
            prefs.setCharPref('browser.startup.homepage',vrl);
         }
    }
}
/*
function get_radio_value_v1.26(radio_name)
{
	//获取一组radio被选中项的值
	var ss;
	ss="var item = $('input[@name="+radio_name+"][@checked]').val()";
	//alert(ss);
	eval(ss);
	return item;
}
function select_none_v1.26()
{
	var vv="";
	$("input[@name='id_sel[]']").each(function() 
	{ 
        $(this).attr("checked",false);
    });
}

function select_all_v1.26()
{
	var vv="";
	$("input[@name='id_sel[]']").each(function() 
	{ 
        $(this).attr("checked",true);
    });
}

function countChecked() 
{
      var n = $("input:checked").length;
      $("div").text(n + (n <= 1 ? " is" : " are") + " checked!");
}
countChecked();

$(":checkbox").click(countChecked);



$("input:checked").each(function()
{
	alert(this.id);
});


for checked count another way
$("input[type=checkbox]:checked").length;

$("input[name='foo']").length - $("input[name='foo']:checked").length - count unchecked

$("#chk1").attr("checked",'');//不打勾
$("#chk2").attr("checked",true);//打勾
if($("#chk1").attr('checked')==undefined) //判断是否已经打勾
==============================================================
==============================================================
radio

$(':radio') is equivalent to $('[type=radio]'). As with other pseudo-class selectors (those that begin with a ":") it is recommended to precede it with a tag name or some other selector; otherwise, the universal selector ("*") is implied. In other words, the bare $(':radio') is equivalent to $('*:radio'), so $('input:radio') should be used instead.

To select a set of associated radio buttons, you might use: $('input[name=gender]:radio')


$('input:checkbox').each(function(){
if ($(this).attr('checked'))
...
})

取值：$(”input:radio[name='adR']:checked”).val()
赋值：$(”input:radio[name='adT']“).eq(0).attr(”checked”,true);

*/

//jquery v1.4.4
/*
function get_checkbox_list(checkbox_name)
{
	var sa="";
	$("input:checkbox[name='"+checkbox_name+"']").each(function()
	{
		if($(this).attr("checked"))
		{
			sa+=$(this).attr("value");
			sa+=",";
		}
	});
	return sa;
}

function get_checkbox_all_list(checkbox_name)
{
	var sa="";
	$("input:checkbox[name='"+checkbox_name+"']").each(function()
	{
		sa+=$(this).attr("value");
		sa+=",";
	});
	return sa;
}

function get_checkbox_value(checkbox_id)
{
	var v;
	if( $("#"+checkbox_id).attr("checked") == true)
		v=$("#"+checkbox_id).attr("value");
	else
		v="";
		
	return v;
}

function get_radio_value(radio_name)
{
	return $("input:radio[name='"+radio_name+"']:checked").val();
}

function select_all_1.44(checkbox_name)
{
	$("input:checkbox[name='"+checkbox_name+"']").attr("checked",true);
}

function select_none_1.44(checkbox_name)
{
	$("input:checkbox[name='"+checkbox_name+"']").attr("checked",false);
}

*/
//jquery-1.11.2

function get_checkbox_list(checkbox_name)
{
	var sa="";
	$("input:checkbox[name='"+checkbox_name+"']").each(function()
	{
		if($(this).prop("checked"))
		{
			sa+=$(this).prop("value");
			sa+=",";
		}
	});
	//alert(sa);
	return sa;
}

function get_checkbox_all_list(checkbox_name)
{
	var sa="";
	$("input:checkbox[name='"+checkbox_name+"']").each(function()
	{
		sa+=$(this).prop("value");
		sa+=",";
	});
	//alert(sa);
	return sa;
}

function get_checkbox_value(checkbox_id)
{
	var v;
	if( $("#"+checkbox_id).prop("checked") == true)
		v=$("#"+checkbox_id).prop("value");
	else
		v="";
		
	return v;
}

function get_radio_value(radio_name)
{
	return $("input:radio[name='"+radio_name+"']:checked").val();
}

function select_all(checkbox_name)
{
	$("input:checkbox[name='"+checkbox_name+"']").prop("checked",true);
	//$("input[type=checkbox]").prop("checked",true);
}

function select_none(checkbox_name)
{
	$("input:checkbox[name='"+checkbox_name+"']").prop("checked",false);
	//$("input[type=checkbox]").prop("checked",false);
}


function trim(str)
{  //删除左右两端的空格
	var sa;
	sa=str;
	if(sa == "" || sa == null || sa == undefined)return "";
	return str.replace(/(^\s*)|(\s*$)/g, "");
}
function ltrim(str)
{  //删除左边的空格
	return str.replace(/(^\s*)/g,"");
}
function rtrim(str)
{  //删除右边的空格
	return str.replace(/(\s*$)/g,"");
}

function get_now()
{
	var d=new Date();
	var t="";
	t=d.getFullYear()+"-"+(1+d.getMonth())+"-"+d.getDate()+" ";
	t+=d.getHours()+":"+d.getMinutes()+":"+d.getSeconds();
	return t;
}

function get_utc_time(cn_time)
{
	var tlist,sa,ut,n,i;
	sa=cn_time;
	sa=sa.replace(" ",",");
	while(sa.indexOf("-") != -1)sa=sa.replace("-",",");
	while(sa.indexOf(":") != -1)sa=sa.replace(":",",");
	tlist=sa.split(",");
	n=tlist.length;
	if(n < 6)for(i=n;i<6;i++)tlist[i]=0;
	ut=new Date(tlist[0], tlist[1] - 1, tlist[2], tlist[3], tlist[4], tlist[5]);
	return ut;
}

function get_diff_time(t1,t2,interval)
{
	var t;
	t=Math.round(get_utc_time(t2)-get_utc_time(t1));
	if(interval == "")interval="m";
	
	if(interval == "s")
		t/=1000;
	else if(interval == "m")
		t/=1000*60;
	else if(interval == "h")
		t/=1000*60*60;
	else if(interval == "d")
		t/=1000*60*60*24;
		
	return t;
}

function select_str(src_str,begin_pos,s1,s2)
{
	var sa="",pos1,pos2;
	pos1=src_str.indexOf(s1,begin_pos);
	if (pos1 == -1)return "";
	
	pos2=src_str.indexOf(s2,pos1+s1.length+1);
	if (pos2 == -1)return "";
	
	sa=src_str.substring(pos1+s1.length,pos2);
	return sa;
}

function select_str_from(src_str,begin_str,s1,s2)
{
	var pos1,ret;
	pos1=src_str.indexOf(begin_str,0);
	if (pos1 == -1)return src_str;
	ret=select_str(src_str,pos1,s1,s2);
	return ret;
}

function get_match_list(src,s1,s2)
{
	var sa,ss,sv1,i;
	pos1=src.indexOf(s1,0);
	if (pos1 == -1)return "";
	ss="";
	i=0;
	while(pos1 > 0)
	{
		sv1=select_str(src,pos1,s1,s2);
		ss+=sv1+"#";
		
		pos1=src.indexOf(s1,pos1+1);
		i++;
		if(i>999)break;
	}
	
	return ss;
}

function select_str_full(src_str,begin_pos,s1,s2)
{
	var sa="";
	sa=s1+select_str(src_str,begin_pos,s1,s2)+s2;
	return sa;
}

function strip_tags(src)
{
	var sa,ss,i;
	sa=src;
	ss=select_str(sa,0,"<",">");
	i=0;
	//alert(sa);
	while(ss != "")
	{
		sa=sa.replace("<"+ss+">","");
		ss=select_str(sa,0,"<",">");
		if(ss == "")break;
		//if(i<5)alert(i+"..."+ss);
		i++;
		if(i>999)break;
	}
	//alert(i);
	return sa;
}

function get_select_menu_value(select_id)
{
	var sa;
	sa=$("#"+select_id).val();
	return sa;
}

function get_select_menu_text(select_id)
{
	var i,sa;
	i=$("#"+select_id).get(0).selectedIndex;
	sa=$("#"+select_id).get(0).options[i].text;
	return sa;
}

function set_select_menu_value(select_id,dom_value)
{
	$("#"+select_id).get(0).value=dom_value;
}

function clear_select_box(select_id)
{
	$("#"+select_id).get(0).options.length = 0;
}

function add_select_item(select_id,text,value)
{
	$("#"+select_id).get(0).options.add(new Option(text,value));
}

function set_select_box(select_id,sss,all_text,all_value)
{
	if(select_id == "")return;
	clear_select_box(select_id);
	if(all_text == "")all_text="请选择";
	add_select_item(select_id,all_text,all_value);
	//alert(sss);
	
	var tlist,vlist,i,n,s1,s2;
	tlist=sss.split("~");
	n=tlist.length;
	for(i=0;i < n;i++)
	{
		s1=tlist[i];
		if(s1 == "")continue;
		vlist=s1.split("^");
		if(vlist.length < 2)continue;
		add_select_item(select_id,vlist[0],vlist[1]);
	}
}

function on_change_select(curr_id,next_id,dest_id,all_text,all_value)
{
	var pdata,str,v1,v2;
	v1=$("#"+curr_id).val();
	//alert(curr_id+".."+v1);

	if(dest_id != "")$("#"+dest_id).attr("value",v1);
	
	pdata="action=get_sub_type&root_code="+v1;
	str="set_select_box('"+next_id+"',msg,'"+all_text+"','"+all_value+"');";
	
	//alert(pdata);
	ajax_post(pdata,str);
}

function getElementPos(elementId) 
{
	var ua = navigator.userAgent.toLowerCase();
 	var isOpera = (ua.indexOf('opera') != -1);
 	var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof
 	var el = document.getElementById(elementId);

	try
	{ 
 		if(el.parentNode == null || el.style.display == 'none') 
 		{
  			return false;
 		}
	}
	catch(e)
	{}
     
 	var parent = null;
 	var pos = [];    
 	var box;    
 	if(el.getBoundingClientRect)    //IE
 	{         
  		box = el.getBoundingClientRect();
  		var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
  		var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
  		return {x:box.left + scrollLeft, y:box.top + scrollTop};
 	}
 	else if(document.getBoxObjectFor)    // gecko   
 	{
	  	box = document.getBoxObjectFor(el);
  		var borderLeft = (el.style.borderLeftWidth)?parseInt(el.style.borderLeftWidth):0;
	  	var borderTop = (el.style.borderTopWidth)?parseInt(el.style.borderTopWidth):0;
  		pos = [box.x - borderLeft, box.y - borderTop];
 	} 
 	else    // safari & opera   
 	{
  		pos = [el.offsetLeft, el.offsetTop]; 
  		parent = el.offsetParent;    
  		if (parent != el) 
  		{
   			while (parent) 
   			{ 
    			pos[0] += parent.offsetLeft;
    			pos[1] += parent.offsetTop;
    			parent = parent.offsetParent;
   			} 
  		}  
  		if (ua.indexOf('opera') != -1 || ( ua.indexOf('safari') != -1 && el.style.position == 'absolute' )) 
  		{
   			pos[0] -= document.body.offsetLeft;
   			pos[1] -= document.body.offsetTop;        
  		}   
 	}
 	if (el.parentNode) 
 	{
    	parent = el.parentNode;
   	} 
   	else 
   	{
    	parent = null;
   	}
 	while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML') 
 	{ // account for any scrolled ancestors
  		pos[0] -= parent.scrollLeft;
  		pos[1] -= parent.scrollTop;
  		if (parent.parentNode) 
  		{
   			parent = parent.parentNode;
  		} 
  		else 
  		{
   			parent = null;
  		}
 	}
 	return {x:pos[0], y:pos[1]};
}


///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
///表单信息检查
function check_empty(fd_name,label)
{
	//检查是否为空值
	var s1,s2;
	s1=$("#"+fd_name).val();
	if(s1 == "")
	{
		s2="<img src='images/alert.png' border=0><font color=red>"+label+"不能为空</font>";
		$("#"+fd_name+"_state").html(s2);
	}
	//else
	//	$("#"+fd_name+"_state").html("");
}

function clear_state(fd_name)
{
	$("#"+fd_name+"_state").html("");
}

function validate_form_item(fd_name,v_type)
{
	var s1,s2;
	if(v_type == "1")//检查空值
	{
		s1=$("#"+fd_name).val();
		if(s1 == "")
			$("#"+fd_name+"_state").html("不能为空");
		else
			$("#"+fd_name+"_state").html("");
	}
}

function check_base()
{
	
	return true;
}


//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////

/*
 * MAP对象，实现MAP功能
 * written by danny zhou, 2005-04-15
 *
 * 接口：
 * size()     获取MAP元素个数
 * isEmpty()    判断MAP是否为空
 * clear()     删除MAP所有元素
 * put(key, value)   向MAP中增加元素（key, value)
 * remove(key)    删除指定KEY的元素，成功返回True，失败返回False
 * get(key)    获取指定KEY的元素值VALUE，失败返回NULL
 * element(index)   获取指定索引的元素（使用 element.key，element.value获取KEY和VALUE），失败返回NULL
 * containsKey(key)  判断MAP中是否含有指定KEY的元素
 * containsValue(value) 判断MAP中是否含有指定VALUE的元素
 * values()    获取MAP中所有VALUE的数组（ARRAY）
 * keys()     获取MAP中所有KEY的数组（ARRAY）
 *
 * 例子：
 * var map = new Map();
 *
 * map.put("key", "value");
 * var val = map.get("key")
 * ……
 *
 */

function GetCookie(name)//取cookies函数        
{
	 var start = document.cookie.indexOf( name + "=" );     
	 var len = start + name.length + 1;     
	 if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) 
	 {         
	 	return null;     
	 }     
	 if ( start == -1 ) return null;     
	 var end = document.cookie.indexOf( ';', len );     
	 if ( end == -1 ) end = document.cookie.length;     
	 return unescape( document.cookie.substring( len, end ) ); 

}

function SetCookie(name,value)//两个参数，一个是cookie的名子，一个是值
{
    var Days = 999; //此 cookie 将被保存 30 天
    var exp  = new Date();    //new Date("December 31, 9998");
    exp.setTime(exp.getTime() + Days*24*60*60*1000);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}

function check_all2()
{
	var is_checked;
	if( $("#check_all").attr("checked") == true )
		is_checked=true;
	else
		is_checked=false;
		
	
	$("input:[name='message']:checkbox").each(function()
	{
		if(is_checked)
			$(this).attr("checked",true);
		else
			$(this).attr("checked",false);
	});
} 

function Map()
{
 this.elements = new Array();
 
 //获取MAP元素个数
 this.size = function() {
  return this.elements.length;
 }
 
 //判断MAP是否为空
 this.isEmpty = function() {
  return (this.elements.length < 1);
 }
 
 //删除MAP所有元素
 this.clear = function() {
  this.elements = new Array();
 }
 
 //向MAP中增加元素（key, value)
 this.put = function(_key, _value) {
  this.elements.push({key:_key, value:_value});
 }
 
 //删除指定KEY的元素，成功返回True，失败返回False
 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;
 }
 
 //获取指定KEY的元素值VALUE，失败返回NULL
 this.get = function(_key) {
  try{  
   for (i = 0; i < this.elements.length; i++) {
    if (this.elements[i].key == _key) {
     return this.elements[i].value;
    }
   }
  }catch(e) {
   return null;  
  }
 }
 
 //获取指定索引的元素（使用element.key，element.value获取KEY和VALUE），失败返回NULL
 this.element = function(_index) {
  if (_index < 0 || _index >= this.elements.length)
  {
   return null;
  }
  return this.elements[_index];
 }
 
 //判断MAP中是否含有指定KEY的元素
 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;
 }
   
 //判断 MAP中是否含有指定VALUE的元素
 this.containsValue = function(_value) {
  var bln = false;
  try {
   for (i = 0; i < this.elements.length; i++) { 
    if (this.elements[i].value == _value){
     bln = true;
    }
   }
  }catch(e) {
   bln = false;   
  }
  return bln;
 }
 
 //获取MAP中所有VALUE的数组（ARRAY）
 this.values = function() {
  var arr = new Array();
  for (i = 0; i < this.elements.length; i++) { 
   arr.push(this.elements[i].value);
  }
  return arr;
 }
 
 //获取MAP中所有KEY的数组（ARRAY）
 this.keys = function() {
  var arr = new Array();
  for (i = 0; i < this.elements.length; i++) { 
   arr.push(this.elements[i].key);
  }
  return arr;
 }
}

///////////////////////////////////////////////////////////////
//Map end
///////////////////////////////////////////////////////////////

function replace_str(src,s1,s2)
{
	var pos1,pos2,sa;
	sa=src;
	if(sa == "" || sa == null || sa == undefined)return;
	pos1=sa.indexOf(s1);
	while (pos1 != -1)
	{
		sa=sa.replace(s1,s2);
		pos1=sa.indexOf(s1);
	}
	return sa;
}

function clear_str2(src,scria)
{
	var tlist,i,n,sa,s1;
	sa=src;
	tlist=scria.split(";");
	n=tlist.length;
	for(i=0;i<n;i++)
	{
		s1=tlist[i];
		if(s1 == "")continue;
		sa=replace_str(sa,s1,"");
	}
	
	return sa;
}


function key_login(kcode)
{
	//alert(kcode);
	if(kcode == 13)login();
}

function check_blank(fdname)
{
	var v1,v2;
	v1=$("#"+fdname).val();
	if(v1 == "")
	{
		v2="<font color=red>不能为空值</font>";
		$("#form_item_state_"+fdname).html(v2);
	}
}

function check_validate(fdname)
{
	var s1,s2,v1,v2,tlist;
	s1=$("#validate_"+fdname).html();
	if(s1 == "" || s1==null || s1==undefined )return;
	//alert(s1);
	tlist=s1.split("|");
	for(i=0;i<tlist.length;i++)
	{
		v1=tlist[i];
		if(v1 == "blank")
			check_blank(fdname);
		
	}
}

function clear_state_info(fdname)
{
	$("#form_item_state_"+fdname).html("");
}


function close_box(id)
{
	$("#"+id).css("display","none");
}

function move_display_box(base_dom_id,offset_x,offset_y,dest_dom_id,content)
{
	if(offset_x == "")offset_x=0;
	if(offset_y == "")offset_y=0;
	
	var pos=getElementPos(base_dom_id);
	var s1,s2;
	pos_x=pos.x+offset_x;
	pos_y=pos.y+offset_y;
	
	//alert(pos_x);
	//alert(pos_y);
	
	$("#"+dest_dom_id).css("left",pos_x);
	$("#"+dest_dom_id).css("top",pos_y);
	$("#"+dest_dom_id).css("display","");
	
	if(content != "")$("#"+dest_dom_id).html(content);
}

var title_state="",box_state="",curr_title_id="";

function move_in_title(id)
{
	var box_id,sa,ss;
	title_state="in";
	box_id=id.replace("title_","box_");
	if(curr_title_id != id)
	{
		curr_title_id=id;	
		sa=$("#"+box_id).html();
		sa="<div class='title1'>请选择直播信号</div>"+sa;
		move_display_box(id,"","","popup_pindao",sa);
		//$("#"+box_id).html(sa);
	}
	else
	{
		$("#popup_pindao").css("display","");
	}
	
}

function move_out_title(id)
{
	title_state="out";
}

function move_in_box(id)
{
	box_state="in";
}

function move_out_box(id)
{
	box_state="out";
}


function check_close(id)
{
	//title_id,box_id
	
}

function check_display(id)
{
	
}

function update_jump_page(ith)
{
	var s1,s2,v;
	if(ith=="1")
	{
		v=$("#jump_page1").val();
		$("#jump_page2").attr("value",v);
	}
	else
	{
		v=$("#jump_page2").val();
		$("#jump_page1").attr("value",v);
	}
}

function goto_next_page_jump(ith)
{
	var ipage;
	ipage=$("#jump_page"+ith).val();
	if(ipage == "")return;
	goto_next_page(ipage);
}

function goto_next_page(ipage)
{
	var url_org,url,s1,s2,sv1,sv2,url2;
	s1="sort=";
	s2="&";
	url=window.location.href;
	url_org=url;
	
	if(parseInt(ipage) < 1)return;
	
	s1="ipage="+ipage+";";
	url2=url+";";
	if(url2.indexOf(s1) != -1)return;
	
	if(url.indexOf("ipage=") == -1)
	{
		if(url.indexOf("?")==-1)
			url+="?ipage="+ipage;
		else
			url+="&ipage="+ipage;
	}
	else
	{
		s1="ipage=";
		s2="&";
		url2=url+"&";
		sv1=select_str(url2,0,s1,s2);
		sv2=s1+ipage;
		sv1=s1+sv1;
		//sv1=sv1.replace("#","");
		//alert(sv1+"\r\n"+sv2);
		url=url.replace(sv1,sv2);
	}
	
	url=url.replace("#&","&");
	window.location.href=url;
}

function check_chinese(c)
{
	var reg = new RegExp("[\\u4E00-\\u9FFF]+","g");
	if(reg.test(c))
	{
		//是汉字
    	return true;
	}
	else
		return false;
}

/*
    concat  
    将两个或多个字符的文本组合起来，返回一个新的字符串。  
    var a = "hello";  
    var b = ",world";  
    var c = a.concat(b);  
    alert(c);  
    //c = "hello,world"  
    indexOf  
    返回字符串中一个子串第一处出现的索引（从左到右搜索）。如果没有匹配项，返回 -1 。  
    var index1 = a.indexOf("l");  
    //index1 = 2  
    var index2 = a.indexOf("l",3);  
    //index2 = 3  
    charAt  
    返回指定位置的字符。  
    var get_char = a.charAt(0);  
    //get_char = "h"  
    lastIndexOf  
    返回字符串中一个子串最后一处出现的索引（从右到左搜索），如果没有匹配项，返回 -1 。  
    var index1 = lastIndexOf('l');  
    //index1 = 3  
    var index2 = lastIndexOf('l',2)  
    //index2 = 2  
    match  
    检查一个字符串匹配一个正则表达式内容，如果么有匹配返回 null。  
    var re = new RegExp(/^\w+$/);  
    var is_alpha1 = a.match(re);  
    //is_alpha1 = "hello"  
    var is_alpha2 = b.match(re);  
    //is_alpha2 = null  
    substring  
    返回字符串的一个子串，传入参数是起始位置和结束位置。  
    var sub_string1 = a.substring(1);  
    //sub_string1 = "ello"  
    var sub_string2 = a.substring(1,4);  
    //sub_string2 = "ell"  
    substr  
    返回字符串的一个子串，传入参数是起始位置和长度  
    var sub_string1 = a.substr(1);  
    //sub_string1 = "ello"  
    var sub_string2 = a.substr(1,4);  
    //sub_string2 = "ello"  
    replace  
    用来查找匹配一个正则表达式的字符串，然后使用新字符串代替匹配的字符串。  
    var result1 = a.replace(re,"Hello");  
    //result1 = "Hello"  
    var result2 = b.replace(re,"Hello");  
    //result2 = ",world"  
    search  
    执行一个正则表达式匹配查找。如果查找成功，返回字符串中匹配的索引值。否则返回 -1 。  
    var index1 = a.search(re);  
    //index1 = 0  
    var index2 = b.search(re);  
    //index2 = -1  
    slice  
    提取字符串的一部分，并返回一个新字符串（与 substring 相同）。  
    var sub_string1 = a.slice(1);  
    //sub_string1 = "ello"  
    var sub_string2 = a.slice(1,4);  
    //sub_string2 = "ell"  
    split  
    通过将字符串划分成子串，将一个字符串做成一个字符串数组。  
    var arr1 = a.split("");  
    //arr1 = [h,e,l,l,o]  
    length  
    返回字符串的长度，所谓字符串的长度是指其包含的字符的个数。  
    var len = a.length();  
    //len = 5  
    toLowerCase  
    将整个字符串转成小写字母。  
    var lower_string = a.toLowerCase();  
    //lower_string = "hello"  
    toUpperCase  
    将整个字符串转成大写字母。  
    var upper_string = a.toUpperCase();  
    //upper_string = "HELLO"  
  */    
    /* 
    ****************************************** 
    字符串函数扩充                                 
    ****************************************** 
    */  
      
    /* 
    =========================================== 
    //去除左边的空格 
    =========================================== 
     
    */  
    String.prototype.LTrim = function()  
    {  
    return this.replace(/(^\s*)/g, "");  
    }  
      
      
    /* 
    =========================================== 
    //去除右边的空格 
    =========================================== 
    */  
    String.prototype.Rtrim = function()  
    {  
    return this.replace(/(\s*$)/g, "");  
    }  
      
    /* 
    =========================================== 
    //去除前后空格 
    =========================================== 
    */  
    String.prototype.Trim = function()  
    {  
    return this.replace(/(^\s*)|(\s*$)/g, "");  
    }  
      
    /* 
    =========================================== 
    //得到左边的字符串 
    =========================================== 
    */  
    String.prototype.Left = function(len)  
    {  
      
    if(isNaN(len)||len==null)  
    {  
    len = this.length;  
    }  
    else  
    {  
    if(parseInt(len)<0||parseInt(len)>this.length)  
    {  
    len = this.length;  
    }  
    }  
      
    return this.substr(0,len);  
    }  
      
      
    /* 
    =========================================== 
    //得到右边的字符串 
    =========================================== 
    */  
    String.prototype.Right = function(len)  
    {  
      
    if(isNaN(len)||len==null)  
    {  
    len = this.length;  
    }  
    else  
    {  
    if(parseInt(len)<0||parseInt(len)>this.length)  
    {  
    len = this.length;  
    }  
    }  
      
    return this.substring(this.length-len,this.length);  
    }  
      
      
    /* 
    =========================================== 
    //得到中间的字符串,注意从0开始 
    =========================================== 
    */  
    String.prototype.Mid = function(start,len)  
    {  
    return this.substr(start,len);  
    }  
      
      
    /* 
    =========================================== 
    //在字符串里查找另一字符串:位置从0开始 
    =========================================== 
    */  
    String.prototype.InStr = function(str)  
    {  
      
    if(str==null)  
    {  
    str = "";  
    }  
      
    return this.indexOf(str);  
    }  
      
    /* 
    =========================================== 
    //在字符串里反向查找另一字符串:位置0开始 
    =========================================== 
    */  
    String.prototype.InStrRev = function(str)  
    {  
      
    if(str==null)  
    {  
    str = "";  
    }  
      
    return this.lastIndexOf(str);  
    }  
      
    /* 
    =========================================== 
    //计算字符串打印长度 
    =========================================== 
    */  
    String.prototype.LengthW = function()  
    {  
    return this.replace(/[^\x00-\xff]/g,"**").length;  
    }  
      
    /* 
    =========================================== 
    //是否是正确的IP地址 
    =========================================== 
    */  
    String.prototype.isIP = function()  
    {  
      
    var reSpaceCheck = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;  
      
    if (reSpaceCheck.test(this))  
    {  
    this.match(reSpaceCheck);  
    if (RegExp.$1 <= 255 && RegExp.$1 >= 0  
    && RegExp.$2 <= 255 && RegExp.$2 >= 0  
    && RegExp.$3 <= 255 && RegExp.$3 >= 0  
    && RegExp.$4 <= 255 && RegExp.$4 >= 0)  
    {  
    return true;      
    }  
    else  
    {  
    return false;  
    }  
    }  
    else  
    {  
    return false;  
    }  
      
    }  
      
      
    /* 
    =========================================== 
    //是否是正确的长日期 
    =========================================== 
    */  
    String.prototype.isLongDate = function()  
    {  
    var r = this.replace(/(^\s*)|(\s*$)/g, "").match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/);  
    if(r==null)  
    {  
    return false;  
    }  
    var d = new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);  
    return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);  
      
    }  
      
    /* 
    =========================================== 
    //是否是正确的短日期 
    =========================================== 
    */  
    String.prototype.isShortDate = function()  
    {  
    var r = this.replace(/(^\s*)|(\s*$)/g, "").match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);  
    if(r==null)  
    {  
    return false;  
    }  
    var d = new Date(r[1], r[3]-1, r[4]);  
    return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);  
    }  
      
    /* 
    =========================================== 
    //是否是正确的日期 
    =========================================== 
    */  
    String.prototype.isDate = function()  
    {  
    return this.isLongDate()||this.isShortDate();  
    }  
      
    /* 
    =========================================== 
    //是否是手机 
    =========================================== 
    */  
    String.prototype.isMobile = function()  
    {  
    return /^0{0,1}13[0-9]{9}$/.test(this);  
    }  
      
    /* 
    =========================================== 
    //是否是邮件 
    =========================================== 
    */  
    String.prototype.isEmail = function()  
    {  
    return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(this);  
    }  
      
    /* 
    =========================================== 
    //是否是邮编(中国) 
    =========================================== 
    */  
      
    String.prototype.isZipCode = function()  
    {  
    return /^[\\d]{6}$/.test(this);  
    }  
      
    /* 
    =========================================== 
    //是否是有汉字 
    =========================================== 
    */  
    String.prototype.existChinese = function()  
    {  
    //[\u4E00-\u9FA5]為漢字﹐[\uFE30-\uFFA0]為全角符號  
    return /^[\x00-\xff]*$/.test(this);  
    }  
      
    /* 
    =========================================== 
    //是否是合法的文件名/目录名 
    =========================================== 
    */  
    String.prototype.isFileName = function()  
    {  
    return !/[\\\/\*\?\|:"<>]/g.test(this);  
    }  
      
    /* 
    =========================================== 
    //是否是有效链接 
    =========================================== 
    */  
    String.prototype.isUrl = function()  
    {  
    return /^http[s]?:\/\/([\w-]+\.)+[\w-]+([\w-./?%&=]*)?$/i.test(this);  
    }  
      
      
    /* 
    =========================================== 
    //是否是有效的身份证(中国) 
    =========================================== 
    */  
    String.prototype.isIDCard = function()  
    {  
    var iSum=0;  
    var info="";  
    var sId = this;  
      
     var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙 江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖 北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};  
      
    if(!/^\d{17}(\d|x)$/i.test(sId))  
    {  
    return false;  
    }  
    sId=sId.replace(/x$/i,"a");  
    //非法地区  
    if(aCity[parseInt(sId.substr(0,2))]==null)  
    {  
    return false;  
    }  
      
    var sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));  
      
    var d=new Date(sBirthday.replace(/-/g,"/"))  
      
    //非法生日  
    if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))  
    {  
    return false;  
    }  
    for(var i = 17;i>=0;i--)  
    {  
    iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11);  
    }  
      
    if(iSum%11!=1)  
    {  
    return false;  
    }  
    return true;  
      
    }  
      
    /* 
    =========================================== 
    //是否是有效的电话号码(中国) 
    =========================================== 
    */  
    String.prototype.isPhoneCall = function()  
    {  
    return /(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/.test(this);  
    }  
      
      
    /* 
    =========================================== 
    //是否是数字 
    =========================================== 
    */  
    String.prototype.isNumeric = function(flag)  
    {  
    //验证是否是数字  
    if(isNaN(this))  
    {  
      
    return false;  
    }  
      
    switch(flag)  
    {  
      
    case null:        //数字  
    case "":  
    return true;  
    case "+":        //正数  
    return                /(^\+?|^\d?)\d*\.?\d+$/.test(this);  
    case "-":        //负数  
    return                /^-\d*\.?\d+$/.test(this);  
    case "i":        //整数  
    return                /(^-?|^\+?|\d)\d+$/.test(this);  
    case "+i":        //正整数  
    return                /(^\d+$)|(^\+?\d+$)/.test(this);                         
    case "-i":        //负整数  
    return                /^[-]\d+$/.test(this);  
    case "f":        //浮点数  
    return                /(^-?|^\+?|^\d?)\d*\.\d+$/.test(this);  
    case "+f":        //正浮点数  
    return                /(^\+?|^\d?)\d*\.\d+$/.test(this);                         
    case "-f":        //负浮点数  
    return                /^[-]\d*\.\d$/.test(this);                 
    default:        //缺省  
    return true;                         
    }  
    }  
      
    /* 
    =========================================== 
    //是否是颜色(#FFFFFF形式) 
    =========================================== 
    */  
    String.prototype.IsColor = function()  
    {  
    var temp        = this;  
    if (temp=="") return true;  
    if (temp.length!=7) return false;  
    return (temp.search(/\#[a-fA-F0-9]{6}/) != -1);  
    }  
      
    /* 
    =========================================== 
    //转换成全角 
    =========================================== 
    */  
    String.prototype.toCase = function()  
    {  
    var tmp = "";  
    for(var i=0;i<this.length;i++)  
    {  
    if(this.charCodeAt(i)>0&&this.charCodeAt(i)<255)  
    {  
    tmp += String.fromCharCode(this.charCodeAt(i)+65248);  
    }  
    else  
    {  
    tmp += String.fromCharCode(this.charCodeAt(i));  
    }  
    }  
    return tmp  
    }  
      
    /* 
    =========================================== 
    //对字符串进行Html编码 
    =========================================== 
    */
    String.prototype.toHtmlEncode = function()  
    {  
    var str = this;  
      
    str=str.replace(/&/g,"&");  
    str=str.replace(/</g,"<");  
    str=str.replace(/>/g,">");  
    str=str.replace(/\'/g,"'");  
    //str=str.replace(/\"/g,""");  
    str=str.replace(/\n/g,"<br>");  
    str=str.replace(/\ /g," ");  
    str=str.replace(/\t/g,"    ");  
      
    return str;  
    }  
      
    /* 
    =========================================== 
    //转换成日期 
    =========================================== 
    */  
    String.prototype.toDate = function()  
    {  
    try  
    {  
    return new Date(this.replace(/-/g, "\/"));  
    }  
    catch(e)  
    {  
    return null;  
    }  
    }  
