//==============================================================================
// AJAX
//==============================================================================
function abc_checkAjax(){
    var xmlHttp = false;
    try{            // Firefox, Opera 8.0+, Safari        
        xmlHttp = new XMLHttpRequest();
        if (xmlHttp.overrideMimeType) {
            xmlHttp.overrideMimeType('text/xml');
        }
        if (!xmlHttp) {
            alert("Your browser does not support AJAX!");
            return false;
        }
    }catch (e){     // Internet Explorer        
        try{
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }catch (e){
            try{
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }catch (e){
                alert("Your browser does not support AJAX!");
                return false;
            }
        }
    }
    return xmlHttp;  
}
//------------------------------------------------------------------------------
    function abc_runAjaxRand(filename, abc_params){
	
    var obj = abc_checkAjax();    
    if(!obj) return false;
    var randomnumber=Math.floor(Math.random()*3);
    var abc_url = '/get_current_bids'+randomnumber+"/"+filename;
    
    // simple request by method POST
    
    obj.onreadystatechange = function(){
	if(obj.readyState == 4){
	    if(obj.status == 200){
		if (typeof processResponse== 'function' ) {processResponse(obj.responseText);}        
            }else{
    
                //alert('There was a problem with the request! Please, try again later.');
            }
        }
};

    obj.open("POST", abc_url, true);
    obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    obj.setRequestHeader("Content-length", abc_params.length);
    obj.send(abc_params);   
    return false;         
}
function abc_runAjax(filename, abc_params){
    var obj = abc_checkAjax();
    
    if(!obj) return false;
    
    var abc_url = filename;
    
    // simple request by method POST
    
    obj.onreadystatechange = function(){
	if(obj.readyState == 4){
	    if(obj.status == 200){
		if (typeof processResponse== 'function' ) {processResponse(obj.responseText);}        
            }else{
    
                //alert('There was a problem with the request! Please, try again later.');
            }
        }
};

    obj.open("POST", abc_url, true);
    obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    obj.setRequestHeader("Content-length", abc_params.length);
    obj.send(abc_params);   
    return false;         
}
//==============================================================================

function abc_runAjax_bid(filename, abc_params){
	var obj = abc_checkAjax();
    if(!obj) return false;
    var abc_url = filename;       
    // simple request by method POST
    obj.onreadystatechange = function(){
        if(obj.readyState == 4){
            if(obj.status == 200){
                //processResponse1(obj.responseText);
            }else{
                //alert('There was a problem with the request! Please, try again later.');
            }
        }
};
    obj.open("POST", abc_url, true);
    obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    obj.setRequestHeader("Content-length", abc_params.length);
    obj.send(abc_params);   
    return false;         
}
//------------------------------------------------------------------------------
/**
Ho scritto la funzione abc_runAjaxAndBack basandomi su abc_runAjax, che era gi� presente in questo file.
Quando questa funzione viene eseguita richiama un file php trasmettendogli una serie di parametri.
Quando lo script php restituisce un risultato, solitamente un echo, la funzione inserisce la risposta
nell'elemento html specificato.

Roberto

@param filename string Nome del file php che verr� richiamato dalla funzione
@param abc_params string Elenco dei parametri che verranno trasmessi tramite POST alla pagina php. I parametri vanno scritti nel formato "nomeParametro1=valore1&nomeParametro2=valore2"
@param displayResp string Id dell'elemento della pagina html in cui la risposta verr� visualizzata

*/
function abc_runAjaxAndBack(filename, abc_params, displayResp){
	var obj = abc_checkAjax();
    if(!obj) return false;
    var abc_url = filename;
    // simple request by method POST
    obj.onreadystatechange = function(){
        if(this.readyState == 4){
            if(this.status == 200){
		if(document.getElementById(displayResp) != null){
		    document.getElementById(displayResp).innerHTML = this.responseText;    
		}
		
            }else{
                //alert('There was a problem with the request! Please, try again later.');
            }
        }

};
    obj.open("POST", abc_url, true);
    obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    obj.setRequestHeader("Content-length", abc_params.length);
    obj.send(abc_params);   
    return false;         
}

function abc_runAjaxAndBack3(filename, abc_params, displayResp, toChange){
	var obj = abc_checkAjax();
    if(!obj) return false;
    var abc_url = filename;
    // simple request by method POST
    obj.onreadystatechange = function(){
        if(this.readyState == 4){
            if(this.status == 200){
		if(document.getElementById(displayResp) != null){
		    document.getElementById(displayResp).innerHTML = this.responseText;
//                    $(toChange).change();
                        $('#check').change();
            
		}

            }else{
                //alert('There was a problem with the request! Please, try again later.');
            }
        }

};
    obj.open("POST", abc_url, true);
    obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    obj.setRequestHeader("Content-length", abc_params.length);
    obj.send(abc_params);
    return false;
}


function abc_runAjaxAndBack2(filename, abc_params, displayResp){
	var obj = abc_checkAjax();
    if(!obj) return false;
    var abc_url = filename;
    // simple request by method POST
    obj.onreadystatechange = function(){
        
        if(this.readyState == 4){

            if(this.status == 200){
            
		if(document.getElementById(displayResp) != null){
		    document.getElementById(displayResp).innerHTML = this.responseText;
                    var resp = this.responseText;
                    if(resp){
                        $('#maxWins').attr('class', 'white_content');
                        $('#overlay').attr('class', 'black_overlay');
                        $('#overlay').css('display', 'block');
                        $('#maxWins').css('display', 'block');
                    }
                    
                    
//document.getElementById('maxWins').change();
                    
                    //
                        //$('#maxWins').attr('class', 'example8 cboxElement');
                        //$(".example8")       
		}

            }else{
                
            }
        }

};
    obj.open("POST", abc_url, true);
    obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    obj.setRequestHeader("Content-length", abc_params.length);
    obj.send(abc_params);
    return false;
}


//Drop Down/ Overlapping Content: http://www.dynamicdrive.com
//**Updated: Dec 19th, 07': Added ability to dynamically populate a Drop Down content using an external file (Ajax feature)
//**Updated: Feb 29th, 08':
				//1) Added ability to reveal drop down content via "click" of anchor link (instead of default "mouseover")
				//2) Added ability to disable drop down content from auto hiding when mouse rolls out of it
				//3) Added hidediv(id) public function to directly hide drop down div dynamically

var dropdowncontent={
	disableanchorlink: true, //when user clicks on anchor link, should link itself be disabled (always true if "revealbehavior" above set to "click")
    hidedivmouseout: [true, 200], //Set hiding behavior within Drop Down DIV itself: [hide_div_onmouseover?, miliseconds_before_hiding]
	ajaxloadingmsg: "Loading content. Please wait...", //HTML to show while ajax page is being feched, if applicable
	ajaxbustcache: true, //Bust cache when fetching Ajax pages?

	getposOffset:function(what, offsettype){
		return (what.offsetParent)? what[offsettype]+this.getposOffset(what.offsetParent, offsettype) : what[offsettype]
	},

	isContained:function(m, e){
		var e=window.event || e
		var c=e.relatedTarget || ((e.type=="mouseover")? e.fromElement : e.toElement)
		while (c && c!=m)try {c=c.parentNode} catch(e){c=m}
		if (c==m)
			return true
		else
			return false
	},

	show:function(anchorobj, subobj, e){
		
		if (!this.isContained(anchorobj, e)){
			var e=window.event || e
			if (e.type=="click" && subobj.style.visibility=="visible"){
				subobj.style.visibility="hidden";
				return
			}
            // hide all previous opened tooltips
			for(i = 0; i < instructions_tooltips_count; i++){
				document.getElementById("subcontent"+i).style.visibility="hidden";
				// kill titles
				document.getElementById('instructions_link'+ i).title='';
			}
			
			var horizontaloffset=(subobj.dropposition[0]=="left")? -(subobj.offsetWidth-anchorobj.offsetWidth) : 0 //calculate user added horizontal offset
			var verticaloffset=(subobj.dropposition[1]=="top")? -subobj.offsetHeight : anchorobj.offsetHeight //calculate user added vertical offset
			if(document.all){
				subobj.style.left= this.getposOffset(anchorobj, "offsetLeft") + horizontaloffset + 28 + "px"			
				
				subobj.style.top  = this.getposOffset(anchorobj, "offsetTop") + (verticaloffset) + "px";			
			}else{
				subobj.style.left = this.getposOffset(anchorobj, "offsetLeft") + (horizontaloffset) + 30 + "px"				
				subobj.style.top  = "365px";							
			}
			
			subobj.style.clip = (subobj.dropposition[1]=="top")? "rect(auto auto auto 0)" : "rect(0 auto 0 0)" //hide drop down box initially via clipping
			subobj.style.visibility="visible"
			subobj.startTime=new Date().getTime()
			subobj.contentheight=parseInt(subobj.offsetHeight);
			subobj.contentwidth=parseInt(subobj.offsetWidth);
			if (typeof window["hidetimer_"+subobj.id]!="undefined") //clear timer that hides drop down box?
				clearTimeout(window["hidetimer_"+subobj.id])
			this.slideengine(subobj, (subobj.dropposition[1]=="top")? "up" : "down")
		}
	},

	curveincrement:function(percent){
		return (1-Math.cos(percent*Math.PI)) / 2 //return cos curve based value from a percentage input
	},

	slideengine:function(obj, direction){
		var elapsed=new Date().getTime()-obj.startTime //get time animation has run
		if (elapsed<obj.glidetime){ //if time run is less than specified length
			//obj.style.clip =(direction=="down")? "rect(0 auto "+currentclip+" 0)" : "rect("+currentclip+" auto auto 0)"
			var distancepercent=(direction=="down")? this.curveincrement(elapsed/obj.glidetime) : 1-this.curveincrement(elapsed/obj.glidetime)
			var currentclip=(distancepercent*obj.contentwidth)+"px"				
			obj.style.clip = "rect(0 "+currentclip+" "+currentclip+" 0)";
			window["glidetimer_"+obj.id]=setTimeout(function(){dropdowncontent.slideengine(obj, direction)}, 10)
		}else{ //if animation finished
			obj.style.clip="rect(0 auto auto 0)"
		}
	},

	hide:function(activeobj, subobj, e){
		if (!dropdowncontent.isContained(activeobj, e)){
			window["hidetimer_"+subobj.id]=setTimeout(function(){
				subobj.style.visibility="hidden"
				subobj.style.left=subobj.style.top=0
				clearTimeout(window["glidetimer_"+subobj.id])
			}, dropdowncontent.hidedivmouseout[1])
		}
	},

	hidediv:function(subobjid){
		document.getElementById(subobjid).style.visibility="hidden"
	},

	ajaxconnect:function(pageurl, divId){
		var page_request = false
		var bustcacheparameter=""
		if (window.XMLHttpRequest) // if Mozilla, IE7, Safari etc
			page_request = new XMLHttpRequest()
		else if (window.ActiveXObject){ // if IE6 or below
			try {
			page_request = new ActiveXObject("Msxml2.XMLHTTP")
			} 
			catch (e){
				try{
				page_request = new ActiveXObject("Microsoft.XMLHTTP")
				}
				catch (e){}
			}
		}
		else
			return false
		document.getElementById(divId).innerHTML=this.ajaxloadingmsg //Display "fetching page message"
		page_request.onreadystatechange=function(){dropdowncontent.loadpage(page_request, divId)}
		if (this.ajaxbustcache) //if bust caching of external page
			bustcacheparameter=(pageurl.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
		page_request.open('GET', pageurl+bustcacheparameter, true)
		page_request.send(null)
	},

	loadpage:function(page_request, divId){
		if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
			document.getElementById(divId).innerHTML=page_request.responseText
		}
	},

 init:function(anchorid, pos, glidetime, revealbehavior){
		var anchorobj=document.getElementById(anchorid)
		if (anchorobj!=null) {
			var subobj=document.getElementById(anchorobj.getAttribute("rel"))
			var subobjsource=anchorobj.getAttribute("rev")
		
			if (subobjsource!=null && subobjsource!="")
				this.ajaxconnect(subobjsource, anchorobj.getAttribute("rel"))
			subobj.dropposition=pos.split("-")
			subobj.glidetime=glidetime || 1000
			subobj.style.left=subobj.style.top=0
			if (typeof revealbehavior=="undefined" || revealbehavior=="mouseover"){
				anchorobj.onmouseover=function(e){dropdowncontent.show(this, subobj, e)};
				anchorobj.onmouseout=function(e){ }; ///dropdowncontent.hide(subobj, subobj, e)
				if (this.disableanchorlink) anchorobj.onclick=function(){return false};
			}
			else
				anchorobj.onclick=function(e){dropdowncontent.show(this, subobj, e);return false}
			if (this.hidedivmouseout[0]==true) //hide drop down DIV when mouse rolls out of it?
				subobj.onmouseout=function(e){}; /// dropdowncontent.hide(this, subobj, e)
		}
	}
}
