// JS Ajax functions specific & non-specific for the PriMatras.NL website
var XMLHTTPObject = null;
var effectSpeed = 0.2;
addEvent(window, 'load', ajaxinit);

function createHTTPHandler(){
    httphandler = false;
    /*@cc_on @*/
    /*@if (@_jscript_version >= 5)
    // JScript gives us Conditional compilation, we can cope with old IE versions.
    // and security blocked creation of the objects.
    try {
      httphandler = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
       httphandler = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
          httphandler = false;
      }
    }
    @end @*/
    if (!httphandler && typeof XMLHttpRequest!='undefined') {
        httphandler = new XMLHttpRequest();
    }
    return httphandler;
}

function ajaxRequest(page, data, callbackdiv){
	jQuery('ajaxloader').show();
	
	XMLHTTPObject = new XMLHttpRequest();
	
	XMLHTTPObject.open('POST', page , true);
	//XMLHTTPObject.onreadystatechange = callback(callbackdiv);
	XMLHTTPObject.onreadystatechange=function() {
		if (XMLHTTPObject.readyState==4) {
			response = XMLHTTPObject.responseText;
			var decoded = JSON.parse(response);
			
			var flag=false;
			if(decoded){
				for ( key in decoded ) {
					//basket feature!
					if(key == "url"){
						document.location = decoded[key];
					}else if(key == "utmSetTrans"){
						__utmSetTrans(); 
					} else if(key == "#errorline") {
						//alert(key + " => " + decoded[key]);
						jQuery(key).html(decoded[key]);
						basketShow();
					} else if(key == "innerbasket"){
						jQuery('#leftView').html(decoded[key]);
						basketShow();
					} else if(key == "guestbook"){
						new Effect.Fade('guestbook_form', { duration: 0.5, afterFinish: function(){ 
							new Insertion.Top(jQuery('guestbook_items'), decoded[key]);
							new Effect.Highlight(decoded['id'], {startcolor:"#FFFFFF",endcolor:"#A9D679",restorecolor:"#A9D679",duration:0.5, afterFinish: function(){
								new Effect.Highlight(decoded['id'], {startcolor:"#A9D679",endcolor:decoded['bg'],restorecolor:decoded['bg'],duration:1.5});
							}})
						}});
						break;
					} else {
						jQuery(key).html(decoded[key]);
						flag = true;
					}
				}
				
			} else {
				jQuery(callbackdiv).html(response);
			}
			jQuery('ajaxloader').hide();
		}
	}
	XMLHTTPObject.setRequestHeader("Cache-Control", "no-cache");
   	XMLHTTPObject.setRequestHeader("X_USERAGENT", "PrimaShop");
	XMLHTTPObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
   	XMLHTTPObject.setRequestHeader('Connection', 'close');
	XMLHTTPObject.send(data);
}

//---------------------------------------------------------------
// Some normal non-ajax js functions to support the ajax features

function ajaxinit(){
	XMLHTTPObject = createHTTPHandler();
}

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


function orderform(sid){
	basketHide('/includes/php/orderform.php',sid);
}
function basketform(sid){
	basketHide('/includes/php/basket.php',sid);
}
function doorder(sid){
	basketHide('/includes/php/order.php',sid)
}
function submitorder(sid){
	basketHide('/includes/php/submitorder.php',sid);
}
var nextaction = "show";
function toggleBasket(sid){
	if(nextaction=="show"){
			basketHide('/includes/php/basket.php',sid);
			nextaction="hide";
			setDefaultTemplate();
	} else {
		//nextaction="show";
		//basketFader.fadeOut();
	}
}

var menuaction = "show";
var menubusy = false;
function toggleMenu(){
	var width = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
	    //Non-IE
	    width = window.innerWidth;
		jQuery('infomenu').style.left = ((width/2)-312)+'px';
		jQuery('infomenu').style.top = 141 + 'px';
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight)) {
	    //IE 6+ in 'standards compliant mode'
	    width = document.documentElement.clientWidth;
		jQuery('infomenu').style.left = ((width/2)-305)+'px';
		jQuery('infomenu').style.top = 139 + 'px';
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
	    //IE 4,5 compatible
	    width = document.documentElement.clientWidth;
		jQuery('infomenu').style.left = ((width/2)-305)+'px';
		jQuery('infomenu').style.top = 139 + 'px';
	}
	
	if(menuaction == "show" && menubusy == false){
		new Effect.SlideDown('infomenu', {duration: effectSpeed, beforeStart: function(){jQuery('infomenu').style.visibility="visible"; menubusy=true; }, afterFinish: function(){menubusy=false;}} );
		menuaction = "hide";
	} else if(menubusy == false) {
		new Effect.SlideUp('infomenu', {duration: effectSpeed, beforeStart: function(){menubusy=true;}, afterFinish: function(){menubusy=false;} });
		menuaction = "show";
	}
}

var prodmenuaction = "show";
var prodmenubusy = false;
function toggleProdMenu(){
	var width = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
	    //Non-IE
	    width = window.innerWidth;
		//$('prodmenu').style.top = 309 + 'px';
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight)) {
	    //IE 6+ in 'standards compliant mode'
	    width = document.documentElement.clientWidth;
		//$('prodmenu').style.top = 308 + 'px';
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
	    //IE 4,5 compatible
	    width = document.documentElement.clientWidth;
		//$('prodmenu').style.top = 307 + 'px';
	}
	
	if(prodmenuaction == "show" && prodmenubusy == false){
		new Effect.SlideDown('prodmenu', {duration: 0.5, beforeStart: function(){$('prodmenu').style.visibility="visible"; prodmenubusy=true; }, afterFinish: function(){prodmenubusy=false;}} );
		prodmenuaction = "hide";
	} else if(prodmenubusy == false) {
		new Effect.SlideUp('prodmenu', {duration: 0.5, beforeStart: function(){prodmenubusy=true;}, afterFinish: function(){prodmenubusy=false;} });
		prodmenuaction = "show";
	}
}

function basketShow(){
	new Effect.Appear('leftView', { duration: effectSpeed });
}

function basketHide(ajaxlink,sid){
	new Effect.Fade('leftView', { duration: effectSpeed, afterFinish: function(){ ajaxRequest(ajaxlink,'primId='+sid,'#leftView'); } });
}

function addItemToBasket(pid,sid){
	new Effect.Fade('leftView', { duration: effectSpeed, afterFinish: function(){ ajaxRequest('/includes/php/updatebasket.php','pid='+pid+'&primId='+sid,'#leftView'); } });
	setDefaultTemplate();
	nextaction="hide";
}

function imagePopup(popupURL,varWidth,varHeight){
	// open het popup venster
	var popup = window.open("/productimg.php?src="+popupURL,"Productfoto",'toolbar=0,location=0,directories=0,status=0,adres=0,menubar=0,scrollbars=0,resizable=0,width='+varWidth+',height='+varHeight);
}


// Detect if the browser is IE or not.
// If it is not IE, we assume that the browser is NS.
var IE = document.all?true:false

// If NS -- that is, !IE -- then set up for mouse capture
if (!IE) document.captureEvents(Event.MOUSEMOVE)

document.onmousemove = getMouseXY;

// Temporary variables to hold mouse x-y pos.s
var tempX = 0
var tempY = 0

// Main function to retrieve mouse x-y pos.s

function getMouseXY(e) {
	if (IE) { // grab the x-y pos.s if browser is IE
		tempX = event.clientX + document.body.scrollLeft
		tempY = event.clientY + document.body.scrollTop
	} else {  // grab the x-y pos.s if browser is NS
		tempX = e.pageX
		tempY = e.pageY
	}  
	// catch possible negative values in NS4
	if (tempX < 0){tempX = 0}
	if (tempY < 0){tempY = 0}  
	
	if (tempY<100 || tempY>300){
		if(menuaction=="hide")toggleMenu();
	}
	return true
}

function setDefaultTemplate(){
	ajaxRequest('/includes/php/right/default.inc.php', null ,'#rightinclude');
	changeTemplateColor('orange');
}

