	var cCurRegion = 'us';
	var cCurRealm = '';
	var cCurName = '';
	var cCurGender = 1;
	
	var cCurFont = '0';
	var cCurColor = '0';
	var cShadow = '0';
	
	var validClass = new Array();
		validClass[0] = new Array(1,1,1,1,1,1,1,1,1,1);
		validClass[1] = new Array(0,0,0,0,1,0,0,1,0,0);
		validClass[2] = new Array(1,1,0,0,1,1,1,1,1,0);
		validClass[3] = new Array(1,0,1,1,0,1,0,0,1,1);
		validClass[4] = new Array(1,1,0,1,0,1,0,0,0,0);
		validClass[5] = new Array(1,1,0,1,1,1,0,0,1,1);
		validClass[6] = new Array(0,1,1,1,1,1,1,0,1,1);
		validClass[7] = new Array(1,0,0,0,0,0,1,1,1,0);
		validClass[8] = new Array(0,0,1,1,0,1,1,0,0,1);
		validClass[9] = new Array(1,1,1,1,1,0,1,1,1,1);
	
	//ajax
	function getDataReturnText(url, onSuccess, onFailure) {
		var objRequest = false;
	
		if(window.XMLHttpRequest) {
			objRequest = new XMLHttpRequest();
		}else if(window.ActiveXObject) {
			objRequest = new ActiveXObject('Microsoft.XMLHTTP');
		}
	
		if(objRequest) {
			objRequest.open('GET', url);
			objRequest.onreadystatechange = handleResponse;
			objRequest.send(null);
		}
	
		function handleResponse() {
			if(objRequest.readyState == 4 && objRequest.status == 200) {
				onSuccess(objRequest.responseText);
				delete objRequest;
				objRequest = null;
			}else if(objRequest.readyState == 4) {
				onFailure(objRequest.responseText);
				delete objRequest;
				objRequest = null;
			}
		}
	}
	//get character sigs
	function getCharSigs(inputRegion,inputRealm,inputName,selectLevel,selectRace,selectClass,inputGender,inputGuild,inputSpeech) {
		function onSuccess(dataText) {
			if(parseInt(dataText) > 0) {
				//found
				showStatus(1,'');
				showSigs(dataText,inputRegion,inputRealm,inputName);
			}else if(parseInt(dataText) == 0) {
				//not found
				showStatus(-1,'Invalid Realm.');
			}else {
				//not found
				showStatus(-1,'ERROR.');
			}
		}
		function onFailure(dataText) {
			showStatus(-1,'ERROR.');
		}
		var z = inputRegion;
		var r = trim(inputRealm);
		var n = trim(inputName).slice(0,1).toUpperCase()+trim(inputName).slice(1).toLowerCase();
		var l = selectLevel;
		var race = selectRace;
		var c = selectClass;
		var gender = inputGender;
		var g = trim(inputGuild);
		var speech = inputSpeech;
		var randomNum = Math.floor(Math.random()*1000000);
		showStatus(0,n);
		getDataReturnText('includes/getCharSigs.php?z='+z+'&r='+encodeURI(r)+'&n='+encodeURI(n)+'&l='+l+'&race='+race+'&c='+c+'&gender='+gender+'&g='+encodeURI(g)+'&speech='+encodeURI(speech)+'&randomNum='+randomNum, onSuccess, onFailure);
	}
	//show status
	function showStatus(status,text) {
		function searching() {
			obj.innerHTML = '<b>...Generating signatures... '+text+' </b>';
		}
		function failure() {
			obj.innerHTML = '<b style="color:#F22">'+text+'</b>';
		}
		function success() {
			obj.innerHTML = '';
		}
		var obj = $('sigs_helper');
		if(status == 0) {
			searching();
		}else if(status == -1) {
			failure();
		}else if(status == 1) {
			success();
		}
	}
	//show sigs
	function showSigs(id,z,r,n) {
		function show() {
			var randomNum = Math.floor(Math.random()*1000000);
			r = encodeURI(r);
			n = encodeURI(n);
			for(var i = 1; i < 5; i++) {
				$('sig'+i).innerHTML = '<img src="sig-'+i+'.php?id='+id+'&s='+s+'&randomNum='+randomNum+'" />';
				$('sig'+i+'_url').value = 'http://www.arena-armory.com/sig-'+i+'.php?id='+id+'&s='+s;
				$('sig'+i+'_bbcode').value = '[url=http://www.arena-armory.com][img]http://www.arena-armory.com/sig-'+i+'.php?id='+id+'&s='+s+'[/img][/url]';
				$('sig'+i+'_html').value = '<a href="http://www.arena-armory.com"><img src="http://www.arena-armory.com/sig-'+i+'.php?id='+id+'&s='+s+'" /></a>';
				
				$('sig'+i).style.display = 'block';
				$('sig'+i+'_code').style.display = 'block';
			}
		}
		var s = '';
		if($('shadow').checked) {
			cShadow = '1';
		}else {
			cShadow = '0';
		}
		s = cCurFont+cCurColor+cShadow;
		show();
	}
	//preview sigs
	function previewSigs(inputRegion,inputRealm,inputName,selectLevel,selectRace,selectClass,inputGender,inputGuild,inputSpeech) {
		var z = inputRegion;
		var r = trim(inputRealm);
		var n = trim(inputName).slice(0,1).toUpperCase()+trim(inputName).slice(1).toLowerCase();
		var l = selectLevel;
		var race = selectRace;
		var c = selectClass;
		var gender = inputGender;
		var g = trim(inputGuild);
		var speech = inputSpeech;
		var s = '';
		var type = '';
		var randomNum = Math.floor(Math.random()*1000000);
		if($('shadow').checked) {
			cShadow = '1';
		}else {
			cShadow = '0';
		}
		s = cCurFont+cCurColor+cShadow;
		
		for(var i = 1; i < 5; i++) {
			if(i == 4) {
				type = 'small';
			}
			$('sig'+i).innerHTML = '<img src="sig-preview.php?z='+z+'&r='+encodeURI(r)+'&n='+encodeURI(n)+'&l='+l+'&race='+race+'&c='+c+'&gender='+gender+'&g='+encodeURI(g)+'&t='+i+'&speech='+encodeURI(speech)+'&s='+s+'&type='+type+'&randomNum='+randomNum+'" />';
			
			$('sig'+i).style.display = 'block';
			$('sig'+i+'_code').style.display = 'none';
		}
	}
	//e search character
	function eCheckForm(action) {
		var r = $('input_realm');
		var n = $('input_name');
		var l = $('select_level');
		var race = $('select_race');
		var c = $('select_class');
		var g = $('input_guild');
		var speech = $('input_speech');
		if(r.value == '') {
			$('sigs_helper').innerHTML = '<span style="color:#F22"><b>Please input realm.</b></span>';
		}else if(n.value == '') {
			$('sigs_helper').innerHTML = '<span style="color:#F22"><b>Please input character name.</b></span>';
		}else if(race.value == '') {
			$('sigs_helper').innerHTML = '<span style="color:#F22"><b>Please select character race.</b></span>';
		}else if(c.value == '') {
			$('sigs_helper').innerHTML = '<span style="color:#F22"><b>Please select character class.</b></span>';
		}else if(validClass[c.value][race.value] == 0) {
			$('sigs_helper').innerHTML = '<span style="color:#F22"><b>Invalid class.</b></span>';
		}else {
			if(action == 'c') {getCharSigs(cCurRegion,r.value,n.value,l.value,race.value,c.value,cCurGender,g.value,speech.value);}
			if(action == 'p') {previewSigs(cCurRegion,r.value,n.value,l.value,race.value,c.value,cCurGender,g.value,speech.value);}
		}
	}
	//e key up
	function eKeyUp(e) {
		if(!e) {var e = window.event;}
		if(e.keyCode) {
			switch(e.keyCode) {
				case 13:
					eCheckForm('p'); break;
			}
		}
	}
	
	//event
	document.onkeyup = eKeyUp;