//-------------------------------------------------------------
//---------------------监听输入事件---------------------------
/* <input type="text" oninput="alert();" onpropertychange="alert()" />  */
onpropertychange	IE
oninput				Other
/* 区别IE和其他浏览器
if("\v"=="v"){
	alert("IE");
}else{
	alert("NO");
}
*/
//-------------------------------------------------------------
//---------------------为元素添加事件-------------------------
/* 
attachEvent
Firefox中,对应的函数是 addEventListener

<input type="button" id="theBtn" value="点击" />

var theBtn = document.getElementById("theBtn");

theBtn.attachEvent("onclick", buttonClicked); //给按钮增加事件

function buttonClicked(e){ 
	alert("点击了一下"); 
}
*/
//-------------------------------------------------------------
//-------------------------关闭窗口----------------------------
function closeWindow(){
	window.opener = null;
	window.open('','_self');
	window.close();
}
//=============================================================
//--------------------------json-------------------------------
// json
/* 一个对象以“{”(左括号)开始,“}”(右括号)结束。
每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间运用 “,”(逗号)分隔。 
名称用引号括起来;值如果是字符串则必须用引号,数值型则不须要。
*/
var o = {"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"};


/* 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,
“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。 */
var jsonranklist=[
	{"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"},
	{"xlid":"zd","xldigitid":123456,"topscore":1500,"topplaytime":"2009-11-20"}
];

// http://www.cnblogs.com/worfdream/articles/1956449.html

//=============================================================
//------------------------验证方法-----------------------------
//是否全是汉字
function isChinese(string){
	var re = /^[\u4e00-\u9fa5]+$/;
	return re.test(string);
}
alert(isChinese('汉字'));

//是否全是字母数字和下划线
function num_letter(string){
	reg = /^[a-zA-Z_0-9]+$/;
	return reg.test(string);
}

//是否全部为数字
function only_num(string){
	reg = /^[0-9]+$/;
	return reg.test(string);
}

//对电子邮件的验证
function email(string){
	var reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
	return reg.test(string);
}
//=============================================================
//-------------------------ajax--------------------------------
function getData(url,func){
	var ajax;
	if(window.XMLHttpRequest){
		ajax = new XMLHttpRequest();
	}else{
		ajax = new ActiveXObject('Microsoft.XMLHTTP');
	}
	ajax.open('GET',url,true);
	ajax.onreadystatechange = function (){
		if(ajax.readyState == 4 && ajax.status == 200){
			//在回调函数中传入实参
			func(ajax.responseText);
		}
	}
	ajax.send();
}
//=============================================================
//---------------------事件阻止--------------------------------
event.preventDefault()		//阻止默认事件如超链接的跳转

event.stopPropagation()		//不触发前辈元素的事件

//=============================================================
//------------------------表单对象-----------------------------
// 表单对象只有一个方法
document.mytest.submit();

// 表单对象中的属性主要包括以下:
elements name action target encoding method

// 表单对象
document.forms[0]

// 而elements常常是多个表单元素值的数组,例:
document.forms[0].elements[1] //表单里面的元素<input type="text" name="username">
// 如:
document.forms[1].elements[0].name //表单名称 username

//-------------------------------------------------------------
//-------------------------------------------------------------
// obj 不可为this,this为特定词
function xxx(obj){}
//-------------------------------------------------------------
// 离开页面执行
window.onbeforeunload = fun();//刷新或离开页面执行
window.onunload = fun();		//读取服务器数据后执行
function fun(){
	//最好不要直接调用匿名函数
}
//-------------------------------------------------------------
window.onresize = fun();
//-------------------------------------------------------------
//---------------------字符串数组互转-------------------------
str.split(',');
arr.join(',');
//-------------------------------------------------------------
//--------------------数组高效去重----------------------------
function unique(arr) {
    var result = [], hash = {};
    for (var i = 0, elem; (elem = arr[i]) != null; i++) {
        if (!hash[elem]) {
            result.push(elem);
            hash[elem] = true;
        }
    }
    return result;
}
//-------------------------------------------------------------
//---------------------字符串转JSON----------------------------
// 方法一
var c = '{"name":"Mike","sex":"女","age":"29"}';
var cToObj = eval("("+c+")");
alert(typeof(cToObj));

// 方法二 低版本浏览器不支持
var a = {"name":"tom","sex":"男","age":"24"};
var b = '{"name":"Mike","sex":"女","age":"29"}';
var aToStr = JSON.stringify(a);
var bToObj = JSON.parse(b);
alert(typeof(aToStr));	//string
alert(typeof(bToObj));	//object
//=============================================================
//--------------------------js对象-----------------------------
var Obj = {
	name:'小明',
	run:function(){
		alert('我在跑');
	}
};
//删除变量或方法
delete Obj.run;
delete Obj.name;
//========================弹窗=================================
//-------------------------------------------------------------
// 无返回值

//参数详见DOM手册
windows.open(sURL , sName , sFeatures , bReplace)
// url 窗口地址
// sName 如 _blank
// sFeatures 窗口大小样式,写这个参数才是弹窗
window.open('__MODULE__/content/show_add','newwindow','height=99999,width=99999,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')
//-------------------------------------------------------------
//-------------------------------------------------------------
// 带返回值的
// 兼容有问题

window.showModalDialog()
/* 方法用来创建一个显示HTML内容的模态对话框。
(就是打开后不能操作父窗口,只能等模式窗口关闭时才能操作)*/

// 例:

// 父级页面中

var sURL = "hehe.html";		//要打开的页面
var vArguments = window;	// 将父窗口对象传给子窗口
var sFeatures = "dialogHeight:200px;dialogWidth:450px";	// 打开页面的样式布局信息
var val = window.showModalDialog(sURL,vArguments,sFeatures);
alert(val);	// 弹出子页面的值

// 子页面中

//子页面返回的值,可以是字符、对象等js支持的任意数据类型 
window.returnValue = "刷新";

// 定义模式窗口时,设定 window 为对话框参数,则在该窗口中,可通过window.dialogArguments来控制父窗口的一切元素。
window.showModelessDialog()
/* 方法用来创建一个显示HTML内容的非模态对话框。
(就是打开后仍然可以进行其他的操作) */

// 参考资料 http://xyztony1985.blog.163.com/blog/static/361178200910523910805/

//-------------------------------------------------------------
//=============================================================