// JavaScript Document
function handleResponse(ret){
	//alert(unescape(ret));
	ret = unescape(ret);
	var res = ret.split('||');
	var status = (res[0] == undefined ? null : res[0]);
	var param = (res[1] == undefined ? null : res[1]);
	var form = (res[2] == undefined ? null : res[2]);
	var msg = (res[3] == undefined ? null : res[3]);
	var extra = (res[4] == undefined ? null : res[4]);
	var msg_obj = $(form + '_msg');
	if (msg_obj){
		msg_obj.className = '';
		msg_obj.innerHTML = '';
	}
	if (status == '!error'){
		if (typeof(param) == 'string'){
			var param_array = param.split(',');
			for (var i=0; i<param_array.length; i++){
				switch (param_array[i]){
					case '!validation':
						if (msg != null){
							var errors = msg.split('|');
							errors.each(function(item){
								var error = item.split('?');
								if (error.length == 1){
									alert(item);
								} else{
									var field = form + '_' + error[0];
									$(form).getElementById(field).getParent().getElements('div.error_desc').each(function(item,index){
										item.set('html', error[1]);
										item.setStyle('display','block');
									});
									$(form).getElementById(field).getParent().addClass('error');;
								}
							});
						}
						break;
					
					case '!refresh':
						if (extra != null){
							var obj = $(extra);
							if (obj){
								obj.innerHTML = (res[5] == undefined ? '' : res[5]);
							}
						}
						break;
						
					case '!send':
					case '!token':
						if (msg != null){
							var msg_obj = $(form + '_msg');
							if (msg_obj){
								msg_obj.className = 'msgError';
								msg_obj.innerHTML = msg;
							} else{
								alert(msg);
							}
						}
						break;
					
					case "!location":
						var url = msg;
						if (url == null || typeof(url) == 'undefined'){
							url = form;
						}
						if (url != null){
							window.location = url;
						}
						break;
						
					case '!login':
						showLoginareaMsgBlock(true, msg);
						break;
					
					case "!alert":
						if (msg != null){
							var msg_obj = $(form + '_msg');
							if (msg_obj){
								msg_obj.className = 'msgOK';
								msg_obj.innerHTML = msg;
							} else{
								alert(msg);
							}
						}
						break;
					
					default:
						break;
				}
			}
		}
	} else if (status == '!ok'){
		if (typeof(param) == 'string'){
			var param_array = param.split(',');
			for (var i=0; i<param_array.length; i++){
				switch (param_array[i]){
					case "!alert":
						if (msg != null){
							var msg_obj = $(form + '_msg');
							if (msg_obj){
								msg_obj.className = 'msgOK';
								msg_obj.innerHTML = msg;
							} else{
								alert(msg);
							}
						}
						break;
					
					case '!refresh':
						if (extra != null){
							var obj = $(extra);
							if (obj){
								obj.innerHTML = (res[5] == undefined ? '' : res[5]);
							}
						}
						break;
						
					case "!reset":
						if (form != null){
							$(form).reset();
						}
						break;
	
					case "!handle":
						try{
							//alert('handle_' + form + 'Response');
							var handleFunction = eval('handle_' + form + 'Response');
							var param = '';
							switch (typeof(msg)){
								case 'undefined':
								default:
									break;
									
								case 'string':
									param = msg;
									break;
							}
							var info = 'form=' + form;
							switch (typeof(extra)){
								case 'undefined':
								default:
									break;
									
								case 'string':
									var extra_array = extra.split('?');
									var extra_info_index = extra_array.indexOf(param_array[i]) + 1;
									if (extra_info_index > 0){
										info += '&' + extra_array[extra_info_index];
									}
									break;
							}
							handleFunction(info, param);
						}catch(e){
						}
						break;
						
					case "!function":
						try{
							var param = (res[5] == undefined ? null : res[5]);
							var param_array = param.split(',');
							var theFunction = extra + '(';
							for(var i=0; i<param_array.length; i++) {
								theFunction += (i == 0 ? '' : ',') + "'" + param_array[i] + "'";
							}
							theFunction += ')';
							eval(theFunction);
						}catch(e){
						}
						break;
						
					case "!location":
						if (msg != null){
							window.location = msg;
						}
						break;
						
					case '!login':
						var aux = (res[5] == undefined ? null : res[5]);
						showLoginareaMsgBlock(true, aux);
						break;
				
				}
			}
		}
	} else{
		alert(ret);
	}
}

function startAIM() {
	// make something useful before submit (onStart)
	return false;
}

function completeAIM(response) {
	// make something useful after (onComplete)
	//alert(response);
	handleResponse(response);
}

function clearError(obj, domain){
	if (domain == undefined || domain == 'field'){
		try {
			$(obj).getParent().removeClass('error');
			$(obj).getParent().getElements('div.error_desc').each(function(item,index){
				item.set('html', '');
				item.setStyle('display','none');
			});
		} catch(e) {
		}
	} else if (domain == 'all'){
		try {
			$(obj).getElements('div.error_desc').each(function(item,index){
				//alert('div.error_desc');
				item.set('html', '');
				item.setStyle('display','none');
			});
			$(obj).getElements('div.field').each(function(item,index){
				item.removeClass('error');
			});
		} catch(e) {
		}
	}
	return false;
}

function limitText(limitField, limitNum) {
	if (limitField.value.length > limitNum) {
		limitField.value = limitField.value.substring(0, limitNum);
	}
}

