function show_div(form, id, divclass) {
	//alert('Form: '+form+' id: '+id+' divclass: '+divclass);
	($(form).getElementsByClassName(divclass)).invoke('hide');
	//new Effect.SlideDown(id);
	$(id).show();
}

function submitValues(form,url,msg) {
	var valid = new Validation(form, {immediate: true, useTitles: true, onSubmit: false});
	Validation.addAllThese([
		['validate-password', '',
			{
			minLength: 8,
			maxLength: 12,
			include: ['validate-alphanum'],
			notOneOf : ['password','PASSWORD','1234567','0123456']
		}],
		['validate-password-confirm', '', {
			equalToField : 'pwd1'
		}]
	]);
	var result = valid.validate();
	if (result) {
		$('stat').update('&nbsp;');
		new Ajax.Request(
			url, {
				method: 'post',
				parameters: $(form).serialize(true),
				onLoading: loadingAction(msg),
				onComplete: completeAction,
				onSuccess: processResponse,
				onFailure: processFailure
			}
		);
	}
}

function loadingAction(msg) {
	Dialog.info(msg, {width: 200, height: 50, showProgress: true});
}

function completeAction() {
	Dialog.closeInfo();
}

function processResponse(xhrObject) {
	response = String(xhrObject.responseText);
	//alert('Respuesta:\n'+xhrObject.responseText); // debugger alert
	args = response.split('&');
	if (args.length > 0 && args.length < 4) {
		if (args[0] != "") {
			msg = args[0].split('=');
			if (msg.length == 2 && msg[0] == 'msg' && !isNaN(Number(msg[1]))) {
				txt = args[1].split('=');
				if (txt[1] != "") {
					rmsg = txt[1];
				}
				switch(Number(msg[1])) {
					case 1:		// exito
						if (rmsg == '') { rmsg = 'Transaccion exitosa.';}
						var stat_class = 'exito';
						break;
					case 2:		// error
						if (rmsg == '') { rmsg = 'Error indeterminado. Es posible que la operacion no se haya completado satisfactoriamente.';}
						var stat_class = 'error';
						break;
				}
				Element.show('stat');
				$('stat').update(rmsg);
				document.getElementById('stat').className=stat_class;
				new Effect.Highlight('stat', {duration: 5.0});
				//$('stat').toggleClassName(stat_class);
				if (args[2] != "") {
					complementar(args[2]);
				}
			} else {
				alert('1) La respuesta del servidor no es adecuada.\nNo se puede determinar el estatus de la operacion.');
			}
		} else {
			alert('2) La respuesta del servidor no es adecuada.\nNo se puede determinar el estatus de la operacion.');
		}
	} else {
		alert('3) La respuesta del servidor no es adecuada.\nNo se puede determinar el estatus de la operacion.');
	}
}

function processFailure(xhrObject) {
	Element.show('stat');
	$('stat').update('Error: la operacion no se realizo.');
	document.getElementById('stat').className='error';
	new Effect.Highlight('stat', {duration: 5.0});
	alert('Error: la operacion no se realizo.\n'+xhrObject.responseText);
}

function complementar(args,row) {
	var args = args.split('=');
	var tipo = args[0];
	var serv = args[1];
	if (tipo == 'hide' && serv != '') {
		new Effect.SwitchOff(serv);
	}
}
