/* PlugBase JavaScript framework, version 1.0.0
 * Copyright ? 2005-2008 OpenZone.com Inc. WenYunlong, All Rights Reserved
 **/
 
function initForm(name) {
	$("#" + name).xform('init');
}

function submitForm(name) {
	$("#" + name).xform('submit');
}

function ajaxSubmitForm(name) {
	$("#" + name).xform('ajax');
}


//初始化Form控件
jQuery.fn.xform = function(action) {

	var normal	= Array('normal','notice');
	var notice	= Array('notice','notice');
	var warning	= Array('warning','warning');
	var error	= Array('error','error');
	var empty	= Array('error','empty');
	var valided	= Array('normal','valided');
	
	var name = this[0].name;
	var items = $("#" + name + " :input");
	var info = eval('_'+ name + '_info');
	
	
	//初始化控件
	initialize = function() {
		for (var i=0;i<items.length;i++){
			setStatus(items[i], normal);
			$(items[i]).focus( function() { setStatus(this, notice); } );
			$(items[i]).blur( function() { setStatus(this, valid(this)); } );
			
			if(items[i].type == 'text' || items[i].type == 'password'){
				$(items[i]).width(items[i].size * 10);
			}
			
			setItemValue(items[i]);
		}
	};
	//表单付值
	setItemValue = function(item){
		
		if(item.name=='jeditor:charCount' || item.name=='jeditor:Textarea' || item.name=='ptarea')
		{
			return;
		}
		
		if(item.type == 'text' || item.type == 'hidden')
		{
			item.value = info[item.name]['value'];
			if($('view_' + item.name))
			{
				$('view_' + item.name).value = info[item.name]['value'];
			}
		}
	}
	//设置控件状态
	setStatus = function(item, stat) {
		
		if(item.type=='button') return;
		
		var obj = $('#' + item.form.name + '_' + item.name + '_status');

		if(obj != null && stat != null)
		{
			if(info[item.name] && info[item.name][stat[1]]) obj.html(info[item.name][stat[1]]);
			else if(stat[1] == 'empty') obj.html('此项需要填写！');
			else if(stat[1] == 'valided') obj.html('填写正确。');
			
			obj.removeClass();
			obj.addClass('form_item_status_' + stat[0]);
		}
	};
	
	checkUserOk = function(value) {
		 $.get("/cms/account/checkname.do?v="+value, function(msg){ 
				if(msg == "false") return valided;
				return warning;
				
		});
	};
	
	//控件验证
	valid = function(item) {
		if(info[item.name]) {
		
			// 单选按钮
			if(item.type=='radio' && info[item.name]['empty'] == false)
			{
				var radios = document.getElementsByName(item.name);
				for(var i=0;i<radios.length;i++)
				{
					if(radios[i].checked == true) return valided;
				}
				return empty;
			}
			
			//复选框
			if(item.type=='checkbox' && info[item.name]['empty'] == false)
			{
				var checkboxs = document.getElementsByName(item.name);
				for(var i=0; i < checkboxs.length; i++)
				{
					if(checkboxs[i].checked) return valided;
				}
				return empty;
			}
			
			//隐藏域
			if(item.type == 'hidden')
			{
				var value = $(item).val();
				//验证是否为空
				if(info[item.name]['empty'] == false && value == "") return empty;
			}
			
			
			
			
			//文本框
			if(item.type == 'text' || item.type == 'password' || item.type == 'textarea')
			{	
			
			
				var value = $(item).val();
				
				//验证是否为空
				if(info[item.name]['empty'] == false && value == "") return empty;
				
				//验证内容长度
				var min = info[item.name]['minlength'];
				var max = info[item.name]['maxlength'];
				if(min && max && (value.length < min || value.length > max)) return error;
				
				var reg = info[item.name]['valid'];
				if(reg && value.match(reg) == null && info[item.name]['empty'] == false) return error;
				
				//var ddd = checkUserOk(value);
				//if(value != null) return ddd;
			}
		}
		return valided;
	};
	
	//提交表单
	htmlSubmit = function() {
		var result = null;
		for (var i=0;i<items.length;i++){
			var vd = valid(items[i]);
			setStatus(items[i], vd);
			
			if(vd != valided) {
				result = items[i];
				break;
			}
		}
		
		if(!result) {
			$("#" + name).submit();
			$("#Submit").css('display','none');
			return true;
		}
		
		return false;
	};
	
	ajaxSubmit = function() {
		var result = null;
		for (var i=0;i<items.length;i++){
			var vd = valid(items[i]);
			setStatus(items[i], vd);
			
			if(vd != valided) {
				result = items[i];
				break;
			}
		}
		
		if(!result) {
			var data = $("#" + name).serialize();
			if($("#" + name).attr("methoz") == "GET")
			{
				$.get($("#" + name).attr("action"), data, ajaxResult);
			}
			else
			{
				$.post($("#" + name).attr("action"), data, ajaxResult);
			}
			
			return true;
		}

		return false;
	};
	
	ajaxResult = function(result) {
		$("#" + name).html(result);
	}
	
	if(action == 'init') initialize();
	else if(action == 'submit') htmlSubmit();
	else if(action == 'ajax') ajaxSubmit();
	
}


