

/**********************************************************

			    Copyright 2006 Andreas Creten


			Filename: HTTP.js
			Discription: HTTPObjectRequest script
***********************************************************/
http = new Object();

http._xmlobjects = [
	function() { return new XMLHttpRequest(); },
	function() { return new ActiveXObject("Msxml2.XMLHTTP"); },
	function() { return new ActiveXObject("Microsoft.XMLHTTP"); }
];

http._xmlobject = null;

http.newRequest = function() {
	if(http._xmlobject != null) return http._xmlobject();
	
	for(var i = 0; i < http._xmlobjects.length; i++) {
		try {
			var xmlobject = http._xmlobjects[i];
			var request = xmlobject();
			if (request != null) {
				http._xmlobject = xmlobject;
				return request;
			}
		}
		catch(e) {
			continue;
		}
	}
	
	http._xmlobject = function() {
		throw new Error("XMLHttpRequest not supported");
	}
	
	http._xmlobject();
}

http.handleReadyState = function(readyState) {
		switch(readyState)
		{
			case 0:
				// nog niet geïnitialiseerd en verbonden
				http.readyState0();
				break;
				
			case 1:
				// Bezig met laden
				http.readyState1();
				break;
				
			case 2:
				// Geladen
				http.readyState2();
				break;
				
			case 3:
				// Interactief
				http.readyState3();
				break;
		
			case 4:
				// Volledig geladen
				http.readyState4();
				break;
		}
}

http.handleHTTPStatus = function(status) {
		switch(status) {
			case 200:
				// OK
				http.status200();
				break;
				
			case 400:
				// Bad Request
				http.status400();
				break;
				
			case 401:
				// Unauthorized
				http.status401();
				break;
				
			case 403:
				// Forbidden
				http.status403();
				break;
		
			case 404:
				// Not Found
				http.status404();
				break;
			
			case 500:
				// Internal Server Error
				http.status500();
				break;
		}
}

http.get = function(url, handleResponse) {

	var request = null;
	var request = http.newRequest();

	request.onreadystatechange = function() {
/*		http.handleReadyState(request.readyState);
		http.handleHTTPStatus(request.status);
		*/
		if(request.readyState == 4) {
				if(handleResponse)
					handleResponse(request);
				else http.handleResponse(request);
			
		}
	}

	request.open("GET", url);
	request.send(null);
	
	return request;
}

http.post = function(url, handleResponse, t_parameters){

	var parameters = "";
	var parameter_count = null;
	var request = null;
	var request = http.newRequest();

	request.onreadystatechange = function() {
		http.handleReadyState(request.readyState);
		http.handleHTTPStatus(request.status);

		if(request.readyState == 4) {
			if(request.status == 200) {
				if(handleResponse)
					handleResponse(request);
				else http.handleResponse(request);
			}
		}
	}
	
	for(parameter in t_parameters) {
		parameter_count++;
		if(parameter_count != 1) parameters += "&";
		parameters += parameter+"="+t_parameters[parameter];
	}

	request.open("POST", url, true);
	
	request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	request.setRequestHeader("Content-length", parameters.length);
	request.setRequestHeader("Connection", "close");

	request.send(parameters);
	
	return request;
}

// functies die aangemaakt kunnen worden voor een preloader ofzo
http.readyState0 = function(){};
http.readyState1 = function(){};
http.readyState2 = function(){};
http.readyState3 = function(){};
http.readyState4 = function(){};

//
http.status200 = function(){}; // OK
http.status400 = function(){}; // Bad Request
http.status401 = function(){}; // Unauthorized
http.status403 = function(){}; // Forbidden
http.status404 = function(){}; // Not Found
http.status500 = function(){}; // Internal Server Error
//
// krijgt als invoer het request object
http.handleResponse = function(request){ error.set('handleResponse function not set!'); };

var offsetfrommouse=[15,15]; //image x,y offsets from cursor position in pixels. Enter 0,0 for no offset

var displayduration=1; //duration in seconds image should remain visible. 0 for always.

var currentimageheight = 450;	// maximum image size.

var t_id = 0;

var currentimagewidth = 430;	// maximum image size.

var timer;



var pos=0;

var dir=2;

var len=0;



function getSize() {

	var myWidth = 0, myHeight = 0;

	if( typeof( window.innerWidth ) == 'number' ) {

		myWidth = window.innerWidth; myHeight = window.innerHeight;

	} else if( document.documentElement && ( document.documentElement.clientWidth ||document.documentElement.clientHeight ) ) {

		myWidth = document.documentElement.clientWidth; myHeight = document.documentElement.clientHeight;

	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {

		myWidth = document.body.clientWidth; myHeight = document.body.clientHeight;

	}

	return [myWidth,myHeight];

}

function getScrollXY() {

	var scrOfX = 0, scrOfY = 0;

	if( typeof( window.pageYOffset ) == 'number' ) {

		scrOfY = window.pageYOffset; scrOfX = window.pageXOffset;

	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {

		scrOfY = document.body.scrollTop; scrOfX = document.body.scrollLeft;

	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {

		scrOfY = document.documentElement.scrollTop; scrOfX = document.documentElement.scrollLeft;

	}

	return[scrOfX,scrOfY];

}



function gettrailobj(){

if (document.getElementById)

return document.getElementById("preview_div").style

else if (document.all)

return document.all.trailimagid.style

}



function gettrailobjnostyle(){

if (document.getElementById)

return document.getElementById("preview_div")

else if (document.all)

return document.all.trailimagid

}





function truebody(){

return (!window.opera && document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body

}





function hidetrail(){	

	gettrailobj().display= "none";

	document.onmousemove=""

	gettrailobj().left="-500px"

	clearTimeout(timer);

}



function showtrail(imagename,title,showthumb){

	i = imagename

	t = title

	s = showthumb

	timer = setTimeout("show('"+i+"',t,s);",200);

}

function show(imagename,title,showthumb){

	

	document.onmousemove=followmouse;

	t_id = setInterval(animate,20);

	

	newHTML = '<div class="border_preview"><div id="loader_container"><img src="http://www.zign.nl/images/ajax-loader.gif" width="32" height="32" border="0" alt=""></div>';

	if (showthumb > 0){

    newHTML = newHTML + '<div align="center" style="padding: 10px;"><img onload="javascript:remove_loading();" src="' + imagename + '" border="0"></div>';



	newHTML = newHTML + '</div>';

	framewidth = currentimagewidth+20;

	//if ((navigator.userAgent.indexOf("Firefox")==-1) && (navigator.userAgent.indexOf("Opera")==-1) ) {	newHTML = newHTML+'<iframe src="about:blank" scrolling="no" frameborder="0" width="'+framewidth+'" height="'+currentimageheight+'"></iframe>';}

	if ((navigator.userAgent.indexOf("Firefox")==-1) && (navigator.userAgent.indexOf("Opera")==-1) ) {	newHTML = newHTML+'<iframe src="about:blank" scrolling="no" frameborder="0" width="'+framewidth+'" height="300"></iframe>';}



	var obj_id = gettrailobjnostyle()

	obj_id.innerHTML = newHTML;



	gettrailobj().display="block";



}



function followmouse(e){



	var xcoord=offsetfrommouse[0]

	var ycoord=offsetfrommouse[1]



	var windowWidth = getSize()[0];

	var windowHeight = getSize()[1];

	var windowScrollX = getScrollXY()[0];

	var windowScrollY = getScrollXY()[1];

	

	var browserSpecOffset = 0;

	

	ycoord = windowScrollY+(windowHeight-currentimageheight) / 2;

	

	if ((typeof e != "undefined") && (navigator.userAgent.indexOf("Opera")==-1)) {

		xcoord += e.pageX;

		browserSpecOffset = 50;

	}

	

	if ((typeof window.event != "undefined") && (navigator.userAgent.indexOf("Opera")==-1)){

		xcoord += event.clientX;

		browserSpecOffset = 30;

	}

	

	if (navigator.userAgent.indexOf("Opera")!=-1) {

		xcoord += window.event.clientX;

		browserSpecOffset = 50;

	}

	

	if (xcoord+currentimagewidth+browserSpecOffset>windowWidth) {

		e = e || window.event;

		if (e.pageX || e.pageY) {

			xcoord = e.pageX-currentimagewidth-30;

    		} else {

			xcoord = e.clientX-currentimagewidth-30;

		}

	}

	if (xcoord<0) {

		xcoord += browserSpecOffset+offsetfrommouse[0];

	}



	gettrailobj().left = xcoord+"px";

	gettrailobj().top = ycoord+"px";

}

}



function animate()

{

	var elem = document.getElementById('progress');

	if(elem != null) {

		if (pos==0) len += dir;

		if (len>32 || pos>79) pos += dir;

		if (pos>79) len -= dir;

		if (pos>79 && len==0) pos=0;

		elem.style.left = pos;

		elem.style.width = len;

	}

	

}



function remove_loading() {

	this.clearInterval(t_id);

	var targelem = document.getElementById('loader_container');

	targelem.style.display='none';

	targelem.style.visibility='hidden';

	//var t_id = setInterval(animate,60);

}





	    