function createXMLHttpRequest() {
  var ua;
  if(window.XMLHttpRequest) {
    try {
      ua = new XMLHttpRequest();
    } catch(e) {
      ua = false;
    }
  } else if(window.ActiveXObject) {
    try {
      ua = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(e) {
      ua = false;
    }
  }
  return ua;
}
var req = createXMLHttpRequest();

function isName(id,errid,minn,ajax){
	var obj = gebi(id);
	var errmessage = gebi(errid);
	var value = obj.value;
	
	if (!minn) { minn = 3 }
	if (!ajax) { ajax = 0 }

	gebi('errMsgName').className = 'none';

	if (ajax==1 && value!="") {
		var	actionurl = urlaction+"checkname"+"&user_name=" + value;
		req.open('get', actionurl);
		req.onreadystatechange = handleResponseName;
		req.send(null);
	}

	if(!value || value=='' || obj.value.length < minn) {
		errmessage.className = 'show';
		obj.className = 'attention';
		return false;
	} else {
		errmessage.className = 'hide';
		obj.className = 'blur';
		return true;
	}
	
}

function handleResponseName() {
	var obj = gebi('user_name');
	var err = gebi('errMsgName');

	if(req.readyState <= 3){
		obj.className = 'blur';
		err.className = 'check';
		err.setAttribute('title', message[0]);
	}
	
	if(req.readyState == 4){
		var response = req.responseText;
		if(response == 0) {
			obj.className = 'attention';
			err.className = 'err';
			err.setAttribute('title',message[1]);
		} else {
			obj.className = 'blur';
			err.className = 'noerr';
			err.setAttribute('title',message[2]);
		}
	}
}


function isEmail(id,errid,ajax){
	var obj = gebi(id);
	var errmessage = gebi(errid);
	var pattern = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z])+$/;
	var value = obj.value;

	if (!ajax) { ajax = 0 }
	
	if (ajax==1 && value!="") {
		var	actionurl = urlaction+"checkemail"+"&user_email=" + value;
		req.open('get', actionurl);
		req.onreadystatechange = handleResponseMail;
		req.send(null);
	}

	if (!value || value.indexOf('@') == -1 || value.indexOf('.') == -1 || value.length < 7 || value == null || !pattern.test(value) ) {
		errmessage.className = 'show';
		obj.className = 'attention';
		return false;
	} else {
		errmessage.className = 'hide';	
		obj.className = 'blur';
		return true;
	}
}

function handleResponseMail() {
	var obj = gebi('user_email');
	var err = gebi('errMsgEmail');
	err.className = 'none';
	
	if(req.readyState <= 3){
		obj.className = 'blur';
		err.className = 'check';
		err.setAttribute('title', message[0]);
	}
	
	if(req.readyState == 4){
		var response = req.responseText;
		if(response == 0) {
			obj.className = 'attention';
			err.className = 'err';
			err.setAttribute('title',message[3]);
		} else {
			obj.className = 'blur';
			err.className = 'noerr';
			err.setAttribute('title',message[4]);
		}
	}
}


function isDate(id,errid,mmin){
	var obj = gebi(id);
	var errmessage = gebi(errid);
	if (!mmin) { mmin = 2 }
	if (!obj.value || obj.value.length < mmin || obj.value == null) {
		errmessage.className = 'show';
		obj.className = 'attention';
		obj.focus();
		return false;		
	} else {
		errmessage.className = 'hide';
		obj.className = 'blur';
		return true;
	}
}

function isString(id, errid, minn, maxx){
	var obj = gebi(id);
	var errmessage = gebi(errid);
	if (!minn) { minn = 15 }
	if (!maxx) { maxx = 65535 } 
	if (!obj.value || obj.value.length < minn || obj.value.length > maxx) {
		errmessage.className = 'show';
		obj.className = 'attention';
		obj.focus();
		return false;		
	} else {
		errmessage.className = 'hide';
		obj.className = 'blur';
		return true;
	}
}

function textCounter(field,counter,maxlimit,linecounter) {
	// text width//
	var fieldWidth =  parseInt(field.style.width);
	var charcnt = field.value.length;        
	// trim the extra text
	if (charcnt > maxlimit) { 
		field.value = field.value.substring(0, maxlimit);
	} else { 
		// progress bar percentage
		var percentage = parseInt(100 - (( maxlimit - charcnt) * 100)/maxlimit) ;
		gebi(counter).style.width =  parseInt((fieldWidth*percentage)/100)+"px";
		// color correction on style from CCCFFF -> CC0000
		setcolor(gebi(counter),percentage);
	}
}

function setcolor(obj,percentage){
	obj.style.backgroundColor = "rgb(80%,"+(80-percentage)+"%,"+(80-percentage)+"%)";	
}

upp = new Array('','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
low = new Array('','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
dig = new Array('','0','1','2','3','4','5','6','7','8','9');

function rnd(x,y,z) { 
	var num;
	do {
		num = parseInt(Math.random()*z);
		if (num >= x && num <= y) break;
	} while (true);
	return(num);
}

function GetPass(fieldid,qnt) {															
	var pwd = '';
	var res, s;
	var k = 0;
	var pass = new Array();
	var w = rnd(30,80,100);
	for (var r = 0; r < w; r++) {
		res = rnd(1,26,100); pass[k] = upp[res]; k++;
		res = rnd(1,26,100); pass[k] = low[res]; k++;
		res = rnd(1,10,100); pass[k] = dig[res]; k++;
	}
	for (var i = 0; i < qnt; i++) {
		s = rnd(1,k-1,100);
		pwd+= pass[s];
	}
	gebi(fieldid).value = pwd;
}




