var ginkgovars = function()
{
	var author = 'redrangon';
	var workgroup = 'ginkgosoft';
}

ginkgovars.prototype.doit = function(obj,callback)
{
	for(x = 0; x < obj.elements.length;x++)
	{
		var result = this.varstidy(obj.elements[x]);		
		if(!result.result)
		{
			return callback(result,obj.elements[x]);
		}
	}
	return callback({'result':true});
}

ginkgovars.prototype.varstidy = function(x)
{
	var method = eval(this[x.getAttribute('datatype')]);
	try
	{
		return method(x);
	}
	catch(e)
	{
		return this.ginkgo(x);
	}
}

ginkgovars.prototype.core = function(exp,x)
{
	var maxsize = parseInt(x.getAttribute('max'));
	var minsize = parseInt(x.getAttribute('min'));
	var needle = x.getAttribute('needle');
	if(!needle && x.value == '')return {result:true};
	if(maxsize > 0 && x.value.length > maxsize)return {result:false,msg:'您输入的字符数超过了程序允许的最大数量!'};
	if(minsize > 0 && x.value.length < minsize)return {result:false,msg:'您输入的字符数少于程序要求的最少字数!'};
	if(x.value.match(exp))return {result:true};
	else return {result:false,msg:x.getAttribute('msg')};
} 

ginkgovars.prototype.ginkgo = function(x)
{
	return ginkgovars.core(/^[\s|\S]+$/i,x);
}

ginkgovars.prototype.english = function(x)
{
	return ginkgovars.core(/^[a-z]+$/i,x);
}

ginkgovars.prototype.exp = function(x)
{
	return ginkgovars.core(eval(x.getAttribute('exp')),x);
}

ginkgovars.prototype.qq = function(x)
{
	return ginkgovars.core(/^\d{5,12}$/i,x);
}

ginkgovars.prototype.date = function(x)
{
	return ginkgovars.core(/^\d{4}-\d{1,2}-\d{1,2}$/i,x);
}

ginkgovars.prototype.telphone = function(x)
{
	return ginkgovars.core(/^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i,x);
}

ginkgovars.prototype.cellphone = function(x)
{
	return ginkgovars.core(/^((\(\d{3}\))|(\d{3}\-))?13[0-9]\d{8}?$|15[89]\d{8}?$/i,x);
}

ginkgovars.prototype.url = function(x)
{
	return ginkgovars.core(/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/i,x);
}

ginkgovars.prototype.userName = function(x)
{
	return ginkgovars.core(/^[\u0391-\uFFE5|\w]{2,40}$/i,x);
}

ginkgovars.prototype.password = function(x)
{
	return ginkgovars.core(/^[\s|\S]{6,}$/i,x);
}

ginkgovars.prototype.zip = function(x)
{
	return ginkgovars.core(/^[1-9]\d{5}$/i,x);
}

ginkgovars.prototype.email = function(x)
{
	return ginkgovars.core(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/i,x);
}

ginkgovars.prototype.randcode = function(x)
{
	return ginkgovars.core(/^\d{4}$/i,x);
}

ginkgovars.prototype.number = function(x)
{
	return ginkgovars.core(/^\d+$/i,x);
}

ginkgovars.prototype.allphone = function(x)
{
	return ginkgovars.core(/^[\d|-]{11,13}$/i,x);
}

var ginkgovars = new ginkgovars();