/*

Version 1.0.1

Funcion que sirve para hacer llamados a archivos mediante Ajax.

Se deben incluir los archivos js de JQuery y este (ashacs.js)

La funcion que se debe utilizar es : AjaxRequire

	function AjaxRequire( datta, fileUrl, reqType, tagIdImgLoading, tagIdToWriteResponse, mustWrite, doMore )

	recomiendo que se pongan los archivos a llamar en webroot/files/lalala si se usa en cake, y por ejempo, se llame asi:
	AjaxRequest( idPais, '<?php echo $html->url('/files/anuncio/getCurrency.php')?>', 'GET', '', '', 0, 'getCurrency' );

	datta: parametros que se pasan por GET o POST al archivo requerido
		'', o, false -> no se pasan parametros
		'lalala', 4124 -> se pasa el parametro 'lalala' o 4124 con clave
		array comun o asociativo -> se pasan los parametros asi: arreglo[0]=valor1 o arreglo['clave1']=valor1

	fileUrl: (string) url del archivo que se va a procesar

	reqType: (string) metodo del paso de paramtros: GET o POST (si se pasa vacio o != GET se toma como POST)

	tagIdImgLoading: id del contenedor html (deberia estar oculto) que contiene un tag img con src de la imagen del loading
		'', 0 , false -> no se muestra loading
		'lalala' -> se muestra inserta el contenido html del tag con id lalala en el tag con id tagIdToWriteResponse, donde
					el tag lalala deberia ser algo asi como: <div id="lalala" style="display:none"><img src="img/loaging.gif" /></div>

	tagIdToWriteResponse: id del tag html donde se van a mostrar el loading (en caso de que se quiera) y se inserta lo que
							retorna el llamado a fileUrl si mustRewrite != '' || mustRewrite != 0 || mustRewrite != false.
			'', 0, false -> no se muestra loading ni se coloca lo que devuelve fileUrl
			'sarasa' -> se coloca el loading en el tag con este id y si mustRewrite entonces se coloca lo que devuelve fileUrl

	mustWrite: sirve para lo anterior; y para cuando doMore vale 1, o true, o '', etc... se utiliza en una funcion que se llama
				al terminar el request que se denomina doMoreAfterAjax.

	Utilidad de la funcion doMoreAfterAjax:
		Una vez que se realiza el request y se inserta o no la respuesta en un tag html al tener doMore seteado se llama a esta funcion,
		que recibe como parametros doMore y response (que es lo que devuelve el llamado por Ajax a fileUrl).
		La idea es que en esta funcion, segun el valor de doMore se ralicen distintas instrucciones.

	Ejemplo de uso:

	// el llamado a la funcion
		params = new Array();
		params["idCateg"] = idCateg; // donde iCateg y lang son varibles ya seteadas
		params["lang"] = lang;
		AjaxRequire(
			params,
			"http://www.anunfis.int/app/files/anuncio/subcategs.php",
			"POST",
			"div_img_loading",
			'div_subcategs',
			1,
			'subcategs'
		);

	// otro posible llamado
		res = AjaxRequire(
			2,
			"http://www.anunfis.int/app/files/anuncio/getProvs.php",
			"get",
			"",
			'div_provincias',
			0,
			'provincias'
		);

	// en el primer caso recibimos
		<?php
			$idCateg = $_POST['idCateg'];
			$lang = $_POST['lang'];
		?>

	// en el 2� caso
		<?
			$param = $_GET['value'];
		?>

	// la funcion doMoreAfterAjax se debe definir asi:

	function doMoreAfterAjax( doMore, response ) {
		switch( doMore ) {
			case 'showMe' :
				alert( response );
			break;
			case '' :
				...
			break;
			default :
				...
			break;
		}
	}

	// ejemplo

	function doMoreAfterAjax( doMore, response ) {
		switch( doMore ) {
			case 'alertMe' :
				alert( response );
			break;
			case 1 :
				callAnotherFuntion( response );
			break;
			case 'getCurrency' :
				var currencyData = splitResponseData( response );
			break;
		}
		renewValidator();
	}

*/

function reempChars( v ) {
	var s = new String( v );
	s = s.replace( /&/, "-_-ampand-_-" );
	s = s.replace( /;/, "-_-puncom-_-" );
	return s;
}

function estaEsParaVos( response, mustWrite, tagToWrite, doMore ) {
	if ( mustWrite && tagToWrite) {
		tagToWrite.innerHTML = response;
	}

	if ( doMore ) {
		doMoreAfterAjax( doMore, response );
	} else {
		return response;
	}

}

function AjaxRequest( datta, fileUrl, reqType, tagIdImgLoading, tagIdToWriteResponse, mustWrite, doMore ) {
	var tagToRead = document.getElementById(tagIdImgLoading);
	var tagToWrite = document.getElementById(tagIdToWriteResponse);
	if ( tagIdImgLoading != '' ) {
		if (!tagToRead) {
			alert("No se encuentra el tag HTML con id = '" + tagIdImgLoading + "' para cargar la imagen");
			return false;
		}
		else {
			if ( tagIdToWriteResponse != '' ) {
				if ( ! tagToWrite ) {
					alert("No se encuentra el tag HTML con id = '" + tagIdToWriteResponse + "' para insertar la imagen");
					return false;
				}
				else {
					tagToWrite.innerHTML = tagToRead.innerHTML;
				}
			}
		}
	}

	var params = '';
	if ( datta instanceof Array ) {
		for ( key in datta ) {
			params += key + '=' + reempChars( datta[key] ) + '&';
		}
		params = params.substr( 0, params.length - 1 );
	} else {
		if ( datta != '' ) {
			params = 'value=';
		}
		params += datta;
	}

	if ( fileUrl == '' ) {
		alert("La URL del archivo a procesar esta vacia");
		return false;
	}

	if ( reqType.toUpperCase() == 'GET' ) {
		$.get( fileUrl, params, function(response){ estaEsParaVos(response, mustWrite, tagToWrite, doMore); } );
	} else {
		$.post( fileUrl, params, function(response){ estaEsParaVos(response, mustWrite, tagToWrite, doMore); } );
	}
}