/*************************************************************/
/********** 以下为使用 live validation 需要用到的函数 ********/
/*************************************************************/

/**
 * 通用 - 表单提交
 * @param id string		表单 id
 * @return void
 */
function generalValidationFormSubmit(id)
{
	var automaticOnSubmit = document.getElementById(id).onsubmit;
	document.getElementById(id).onsubmit = function()
	{
		if(!automaticOnSubmit())//未通过验证
			return false;
	}
}

/**
 * 通用 - 表单元素验证初始化
 * @param elements array	需要初始化的元素数组
 * @return void
 */
function generalValidationInitialize(elements)
{
	for(i=0; i<elements.length; i++)
	{
		var id = elements[i][0];//需要验证的元素 id
		var validator = elements[i][1].split(',');//需要验证的元素使用的验证器
		var validMessage = elements[i][2];//需要验证的元素验证通过后显示的信息
		var failureMessage = elements[i][3];//需要验证的元素未通过验证后显示的信息，于验证器一一对应

		var element = new LiveValidation(id, {validMessage:validMessage, wait: 500});

		for(j=0; j<validator.length; j++)
		{
			switch(validator[j])
			{
				case 'Presence'://必填
					element.add(Validate.Presence, {failureMessage:failureMessage[j]});
					break;
				case 'Email'://email
					element.add(Validate.Email, {failureMessage:failureMessage[j]});
					break;
				case 'Confirmation'://必须等同于某一个元素的值
					element.add(Validate.Confirmation, {match:elements[i]['match'],																				failureMessage:failureMessage[j]});
					break;
				case 'Length'://在某一个数字区间内
					element.add(Validate.Length, {minimum:elements[i]['minimum'],																		maximum:elements[i]['maximum'],																		tooShortMessage:failureMessage[j],
													tooLongMessage:failureMessage[j]});
					break;
				default:
					break;
			}	
		}
	}
}

/**
 * 通用 - 刷新图片
 */
function generalRefreshCode(element, url)
{
	url = url + '/' + Math.random();
	element.src = url;
}