// Ajax routines by Artemio Aguilar. TM Networks.

// HTML routines
var xmlHttp;
var ajaxDebug=false;

function debugActivate() {
	ajaxDebug=true;
	alert('Modo depuracion activado. Se desactivara al cambiar de pagina.');
}

function GetXmlHttpObject() { 
	var objXMLHttp=null;
	
	if (window.XMLHttpRequest) { objXMLHttp=new XMLHttpRequest() }
	else if (window.ActiveXObject) { objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP") }
	
	return objXMLHttp;
}

function ajaxGet(url,returnObjID,returnFuction) {
	if (ajaxDebug) {alert('ajaxGet Depuracion:\n\nObtener: '+url+'\nDestino: '+returnObjID);}
	if (url=='') { return }

	xmlHttp=GetXmlHttpObject();
	var objReturn = gel(returnObjID);
	
	if (xmlHttp==null) { 
		alert ("Browser does not support HTTP Request");
		return
	}
	xmlHttp.onreadystatechange=function () { 
		if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
			if (xmlHttp.status==200) {
				if (ajaxDebug) {alert('ajaxGet Depuracion:\n\nRegreso:\n'+xmlHttp.responseText);}
				objReturn.innerHTML=xmlHttp.responseText;
				if (returnFuction) {
					if (ajaxDebug) {alert('ajaxGet Depuracion:\n\Ejecutar:\n'+returnFuction);}
					eval(returnFuction);
				}
			} else { 
				if (ajaxDebug) {objReturn.innerHTML='Ocurrio un error al procesar su solicitud. <a href="Javascript:;" onclick="gel(\'errordetails\').className=\'showMe\';">Ver detalles</a><div id="errordetails" class="hideMe">'+xmlHttp.responseText+'</div>'; }
			}
		} 
	}
	url+=(url.indexOf('?')+1)?'&':'?';
	url+='returnObjID='+escape(returnObjID)+'&nowid='+new Date().getTime();
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function ajaxParse(url,parseFunction) {
	if ( !url || !parseFunction ) { return }

	xmlHttp=GetXmlHttpObject();
	
	if (xmlHttp==null) { 
		alert ("Browser does not support HTTP Request");
		return
	}
	xmlHttp.onreadystatechange=function () { 
		if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
			if (xmlHttp.status==200) {
				parseFunction(xmlHttp.responseXML);
			}
		} 
	}
	url+=(url.indexOf('?')+1)?'&':'?';
	url+='nowid='+new Date().getTime();
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function ajaxPost(url,values,returnFuction) {
	if (url=='') { return }

	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null) { 
		alert ("Browser does not support HTTP Request");
		return
	}
	xmlHttp.onreadystatechange=function ()
		{ 
			if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
				try { eval(xmlHttp.responseText);if (ajaxDebug) {alert('Regreso:\n'+xmlHttp.responseText);} } 
				catch (err) { if (ajaxDebug) {alert('Error: '+err.description+'\n\n'+xmlHttp.responseText);} }
				if (returnFuction) {eval(returnFuction);} 
			} 
		};
	if (ajaxDebug) { alert('postForm: Debug Mode\n\nDestino:\n'+url+'\nValores:\n'+values) }
	xmlHttp.open("POST",url,true);
	xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
	xmlHttp.send(values);
}

function getContentByHash(targetUrl,targetDiv) {
	var u=document.location.href;
	var h=u.substring(u.indexOf('#')+1);
	targetUrl+=(targetUrl.indexOf('?')+1)?'&':'?';
	ajaxGet(targetUrl+'hash='+h,targetDiv);
}

function loadScript(scriptURL) {
    var newScript = document.createElement("script");
    newScript.src = scriptURL;
    document.body.appendChild(newScript);
}

function disableSubmit(formID) {
	form = document.getElementById(formID);
	addEvent(form, "submit", diableSubmitHandler);
}

function diableSubmitHandler(e) {
	if (e && e.preventDefault)
		e.preventDefault();
	return false;
}

function addEvent(obj, evType, fn) {
	if (obj.addEventListener) {
   		obj.addEventListener(evType, fn, false);
   		return true;
	}
	else if (obj.attachEvent) {
   		var r = obj.attachEvent("on"+evType, fn);
   		return r;
 	}
 	else {
   		return false;
 	}
}

function gel(objid){ return document.getElementById(objid); }

// Animation routines
function aniWidth(objectId,targetWidth,stepWidth) {
	object=gel(objectId);
	if (object) {
		if (object.width<targetWidth) {
			if ((object.width+stepWidth)>targetWidth) {
				object.width=targetWidth;
			} else {
				object.width+=stepWidth;
				setTimeout('aniWidth(\''+objectId+'\','+targetWidth+','+stepWidth*1.2+');',10);
			}
		}
		if (object.width>targetWidth) {
			if ((object.width-stepWidth)<targetWidth) {
				object.width=targetWidth;
			} else {
				object.width-=stepWidth;
				setTimeout('aniWidth(\''+objectId+'\','+targetWidth+','+stepWidth*1.2+');',10);
			}
		}
	}
}
