function Throbber(div,active,inactive){var me=this;me.activate=function(){var aux=document.getElementById(div);aux.setAttribute("class",active);aux.setAttribute("className",active);};me.close=function(){var aux=document.getElementById(div);aux.setAttribute("class",inactive);aux.setAttribute("className",inactive);};}
function Semaphore(){var me=this;var status=true;me.using=0;me.setGreen=function(){status=true;};me.isGreen=function(){return status;};me.setRed=function(){status=false;};me.isRed=function(){return!status;};}
function minimax(url,div){var me=this;me.semaphore=false;var haveSemaphore=false;var throbber=false;var haveThrobber=false;var set_func=function(){if(me.xhr.readyState==4&&me.xhr.status==200){var text=me.xhr.responseText;if(haveSemaphore){semaphore.setGreen();}
if(haveThrobber){throbber.close();}
if(div){document.getElementById(div).innerHTML=text;}}};var func=set_func;me.xhr=false;var startXhr=function(){if(window.XMLHttpRequest){me.xhr=new XMLHttpRequest();}else{if(window.ActiveXObject){try{me.xhr=new ActiveXObject('Microsoft.XMLHTTP');}catch(e){try{me.xhr=new ActiveXObject('Msxml2.XMLHTTP');}catch(f){}}}else{return false;}}
me.xhr.onreadystatechange=func;return true;};me.setDiv=function(div_x){div=div_x;};me.setFunc=function(func_x){func=func_x;};me.resetFunc=function(){func=set_func;};me.setSemaphore=function(aux_semaphore){haveSemaphore=true;semaphore=aux_semaphore;semaphore.setGreen();semaphore.using++;};me.setThrobber=function(tdiv,on,off){throbber=new Throbber(tdiv,on,off);haveThrobber=true;};me.setTrobbler=function(tdiv,on,off){throbber=new Throbber(tdiv,on,off);haveThrobber=true;};me.closeThrobber=function(){if(haveThrobber){throbber.close();}};me.activateThrobber=function(){if(haveThrobber){throbber.activate();}};me.get=function(){if(haveThrobber){throbber.activate();}
if(!haveSemaphore||semaphore.isGreen()){if(haveSemaphore){semaphore.setRed();}
startXhr();me.xhr.open('POST',url,true);me.xhr.send(null);}else{setTimeout(function(){me.get();},300);}};me.post=function(post_x){if(haveThrobber){throbber.activate();}
if(!haveSemaphore||semaphore.isGreen()){post_x=post_x.replace(/\&amp;/g,'&');if(haveSemaphore){semaphore.setRed();}
startXhr();me.xhr.open('POST',url);me.xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');me.xhr.send(post_x);}else{setTimeout(function(){me.post(post_x);},300);}};}