String.prototype.trim = function(){
	return this.replace(/(^\s+)|(\s+$)/g,'');
};
var ff = /Firefox/.test(window.navigator.userAgent);
if (ff) {
	HTMLElement.prototype.__defineGetter__("currentStyle", function () {
		return this.ownerDocument.defaultView.getComputedStyle(this, null);
	});
	window.attachEvent = HTMLElement.prototype.attachEvent=function(type, fn){
		type = type.substring(2);
		this.addEventListener(type, fn, false);
	};
}

function addEvent(target, type, method) {
	var args = Array.prototype.slice.call(arguments, 3);
	target.attachEvent(type, function(){
		return method.apply(target, args);
	});
}
function addClass(el, className){
	el.className = el.className.replace(new RegExp('\\b'+className+'\\b|$'),' '+className+' ');
}
function removeClass(el, className){
	el.className = el.className.replace(new RegExp('\\b'+className+'\\b'),' ');
}
function id(id){
	return document.getElementById(id);
}
function tag(nm, el){
	return (el||document).getElementsByTagName(nm);
}
function get(url){
	var r;
    try{
        r = new XMLHttpRequest();
    }catch(e){
        try{
            r = new ActiveXObject("Msxml2.XMLHTTP");
        }catch(ee){
            try{r = new ActiveXObject("Microsoft.XMLHTTP");}
            catch(eee){
            	return null;
            }
        }
    }
    r.open("GET", url, false);
    r.send(null);
    var result = null;
    if(r.status==200){
    	result = r.responseText.trim();
    }
    r = null;
    return result;
}
function showtips(el, msg){
	var div = document.createElement('div');
	div.className = 'tips';
	div.style.position='absolute';
	var x = xoffset(el);
	div.style.left = x.l +'px';
	div.style.top = x.t +'px';
	div.innerHTML = msg;
	document.body.appendChild(div);
	el.div = div;
	addEvent(div, 'onmouseover', function(){this.style.display='none';} );
	addEvent(el, 'onfocus', function(){this.div.style.display='none';} );
}
function xoffset(el){
	this.t = el.offsetTop;
	this.l = el.offsetLeft;
	while(el=el.offsetParent){
		this.t += el.offsetTop;
		this.l += el.offsetLeft;
	}
	return this;
}
function interval(callback, delay, target){
    var args = Array.prototype.slice.call(arguments, 3);
    var cb = function(){
        callback.apply(target, args);
    };
    var i = setInterval(cb, delay);
    target.timer = i;
}
var Form = {
	error:null,
	input:function (el, reg, msg, rep){
		if(reg.test(el.value)){
			Form.error = null;
			removeClass(el, "err");
			return true;
		}else{
			Form.error = el;
			addClass(el, "err");
			if(confirm(msg)){
				if(rep){
					el.value = el.value.replace(rep, '');
				}
			}
			return false;
		}
		return false;
	},
	select:function (el, msg){
		if(el.value){
			Form.error = null;
			removeClass(el, "err");
			return true;
		}else{
			Form.error = el;
			addClass(el, "err");
			if(confirm(msg)){
				//
			}
			return false;
		}
		return false;
	},
	radio:function (els, msg){
		var val = false;
		if(els.length){
			for(var i=0;i<els.length;i++){
				if(els[i].checked){
					val = els[i].value;
					break;
				}
			}
		}else{
			val = els.checked;
		}
		if(val === false){
			alert(msg);
			return false;
		}
		return true;
	},
	valid:function (el, url, msg){
		var r = url+ el.value;
		r = get(r);
		if(r === '1'){
			Form.error = el;
			addClass(el,"err");
			if(confirm(msg)){
				//
			}
			return false;
		}else{
			Form.error = null;
			removeClass(el,"err");
			return true;	
		}
		return false;
	}
};

var Function = {
	name: function(){
		return Form.input(this, /^[\u4e00-\u9fa5]{1,6}$/, '请输入您的中文名。', /[^\u4e00-\u9fa5]+/g);
	},
	englishname: function(){
		return Form.input(this, /^[\w]{1,40}$/, '请输入您的英文名。',  /[^\w]+/g);
	},
	genderid:function(){
		return Form.radio(this, '请选择您的性别。');
	},
	agerangeid:function(){
		return Form.select(this, '请选择您的职业。');
	},
	email:function(){
		return Form.input(this, /^[\w\_\.]+@\w+(\.\w+)+$/, '请输入电子邮箱，此邮箱将作为Spiiker网站的登陆账号。')
		&& Form.valid(this, '/validemail.jsp?email=', '您已申请过等级测试，如需进一步了解Spiiker课程，请联系400-600-9144。');
	},
	phone2:function(){
		return Form.input(this, /^(0\d{10,11}|1\d{10})$/,'请填写正确的电话号码以便顺利接听外教来电。')
		&& Form.valid(this, '/validphone.jsp?phone2=', '您已申请过等级测试，如需进一步了解Spiiker课程，请联系400-600-9144。');
	},
	password: function(){
		return Form.input(this, /^[\w\d]{1,20}$/,'请设置您的登陆密码。');
	},
	selfevaluation:function(){
		return Form.radio(this, '请选择自我评估英语水平。');
	},
	testdate:function(){
		return Form.select(this, '请选择测试日期和时间。');
	},
	testhour:function(){
		return Form.select(this, '请选择测试时间。');
	},
	privacy:function(){
		return Form.radio(this, '请阅读并勾选《隐私保护协议》。');
	}
};

function validtime(sl){
	if(form.testdate.value && form.testhour.value){
		var r ='/validtime.jsp?sl='+sl+'&testtime='+form.testdate.value+'+'+form.testhour.value+':00';
		r = get(r);
		if(r !== '1'){
			changedate(form.testdate);
		}
	}
}

function changedate(el){
	var sp = id('testhourspan');
	sp.innerHTML=get('/testhour.jsp?date='+el.value);
	tag('select', id('testhourspan'))[0].onblur = Function.testhour;
}


function check(f){
	try{
		var els = f.elements;
		var radio = {};
		var l=els.length;
		for(var i=0;i<l;i++){
			var k = els[i].name;
			if(k && Function[k]){
				if(els[i].type === 'radio' || els[i].type==='checkbox'){
					if(radio[k] === true){
						continue;
					}
					radio[k] = true;
					if(Function[k].apply(f[k]) == false){
						return false;
					}
				}else{
					if(Function[k].apply(f[k]) == false){
						return false;
					}
				}
			}
		}
	}catch(err){
		
	}
	return true;
}
addEvent(window, 'onload', function(){
var form = id('applyform');
if(form){
	showtips(form.email, '作为Spiiker网站登陆帐号');
	showtips(form.password, '作为Spiiker网站登陆密码');
var levelradio = form.selfevaluation;
for( var i = levelradio.length; --i >= 0; ) {
	levelradio[i].parentNode.onclick = function() {
		id('levelmessage').innerHTML = this.title;
		validtime(this.firstChild.value);
	};
}
for(var i in Function){
	var a = form[i];
	if(a && a.name){
		addEvent(a,'onblur',Function[i]);
	}
}
}
});

