	  
	/* Get the request object */
	function getHttpRequest() {
        var httpRequest;

	    // Get the httpRequest object for firefox
	    if (window.XMLHttpRequest) { 
		    httpRequest = new XMLHttpRequest();
		    if (httpRequest.overrideMimeType) {
			    httpRequest.overrideMimeType('text/xml');
		    }
	    } 
        
	    // Get the httpRequest object for IE
	    else if (window.ActiveXObject) { 
		    try {
			    httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
			    } 
		    catch (e) {
			    try {
				    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			    } 
			    catch (e) {
			    }
		    }
	    }
	    return httpRequest;
	}
	
	/*Get the next(isNext=true) or previous(isNext=false) rvis*/
	function checktimer() {
        try {

 //           if (!isBrowserSupported()) {
 //               throw "browser not supported"; // browser not supported navigate to non-ajax version
 //           }
             
            var httpRequest = getHttpRequest();
		    // Cannot create the httprequest object - return from function
		    if (!httpRequest) {
		        // error - so go to the link location instead
			    return true;
		    }
    		
		    var resourceToRequest = "index.php?method=checkbaskettimer";
    		
		    httpRequest.onreadystatechange = function() { 
		    	processGetBasketTimerResponse(httpRequest);		    
		    };
		    
		    httpRequest.open("GET", resourceToRequest, true);
		    httpRequest.send(null);
		    return false;
        } catch (exception) {
            return true;
        }
	}
	


	/* Processes the response from the http request */
	function processGetBasketTimerResponse(httpRequest) {
	    try {

	        // The response has been received correctly
		    if (httpRequest.readyState==4 || httpRequest.readyState=="complete") {
		        if (httpRequest.status == 200) {
		            // restart the loading animations if IE
                    //if (navigator.appName.indexOf("Internet Explorer") != -1) {
                     //   setLoadingIndicatorsForIE(clientIdOfControl);
                    //}               	
                  	
                  	var response = httpRequest.responseText.replace(/\r|\n|/g,'').split("#");
                  	 
					if(response == '' && refresh){
						//alert("Silly, you are tooooooooo slow")
						sexyBOX('&nbsp;','352');
						//window.location.reload();
						refresh=false;
						return;
					}
					
					if(response != '')refresh = true;
					
                    //if(httpRequest typeof 'text/plain') 
            

					var i;
					for(i in response){

						if(document.getElementById && document.getElementById("item_"+response[i]) != null){

							var itemObj = document.getElementById("item_"+response[i]);
							
							itemObj.style.backgroundImage = "url('images/titles/warning.gif')";
							itemObj.style.backgroundRepeat = "repeat-x";
							itemObj.style.zIndex=4;
							showSingleLevelTable_withtimeout('basketSummaryMenu','shBsketImage',0,0,-83,0);
							
							

							 //addEvent(itemObj, 'mouseover', function(){alert(response[i])}, false);
            				//addEvent(itemObj, 'mouseout', rollout, false);

							itemObj.onmouseover=function(){

								roll(this);
						
							};
							
							itemObj.onmouseout=function(){
							
							
								rollout(this);
						
							};
							
							itemObj.onclick=function(){
								clicklink(this);
							};


							
						}

					}
       				
			    } else {
			        throw "Bad response";
			    }
		    } 
        } catch(exception ) {
              
        }
	}
function ltrim(str) { 
	for(var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);
	return str.substring(k, str.length);
}
function rtrim(str) {
	for(var j=str.length-1; j>=0 && isWhitespace(str.charAt(j)) ; j--) ;
	return str.substring(0,j+1);
}
function trim(str) {
	return ltrim(rtrim(str));
}
function isWhitespace(charToCheck) {
	var whitespaceChars = " \t\n\r\f";
	return (whitespaceChars.indexOf(charToCheck) != -1);
}

function init(httpRequest){

	  var response = trim(httpRequest.responseText).split("#");

	  var i;

	  for(i in response){
		
	 	if(document.getElementById && document.getElementById("item_"+response[i]) != null && response[i] !=''){

	 		var itemObj = document.getElementById("item_"+response[i]);
	  	 	addEventSelf(itemObj,'mouseover', function(){roll(itemObj)}, false);
	 	}
	  	 
	  }
}


function roll(obj){

	// create a DIV element, using the variable eDIV as a reference to it
	var eDIV = document.createElement("div");
	//use the setAttribute method to assign it an id
	eDIV.setAttribute("id","warningmessage");
	
	var eSPAN = document.createElement("span");

	eSPAN.appendChild(document.createTextNode("If you still want to reserve this item, please click this item"));
	eDIV.appendChild(eSPAN);
	// add the text "hello world" to the div with createTextNode
	//eDIV.appendChild(document.createTextNode("#If you still want to reserve this item, please click this item"));
	// append your newly created DIV element to an already existing element.
	obj.appendChild(eDIV);
	
	
	//obj.innerHTML="If you still want to reserve this item, please click here";
	
}

function rollout(obj){

	var warningObj = document.getElementById("warningmessage");
	
	if(warningObj != null){
	
		obj.removeChild(warningObj);
	}
	
	

	//obj.innerHTML=oldHTML;
}

function clicklink(obj){

	updateItemInBasket(obj);
}

 
function addEventSelf(elm, evType, fn, useCapture){  //cross-browser event handling for IE5+, NS6+, and Mozilla/Gecko By Scott Andrew

	if(elm.addEventListener){
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}else if(elm.attachEvent){
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}else{
		elm['on' + evType] = fn;
	}
}

//update the item in basket
function updateItemInBasket(obj) {
       try {

//           if (!isBrowserSupported()) {
//               throw "browser not supported"; // browser not supported navigate to non-ajax version
//           }

        var httpRequest = getHttpRequest();
	    // Cannot create the httprequest object - return from function
	    if (!httpRequest) {
	        // error - so go to the link location instead
		    return true;
	    }
   		
   		var id = obj.id;
   		
   		var index = id.indexOf("_");

   		var stockid = id.substr(index+1,id.length);

	    var resourceToRequest = "index.php?method=updateItemTimeOut&STOCKID=" + stockid;
   		
	    httpRequest.onreadystatechange = function() { 
	    	//processGetBasketTimerResponse(httpRequest);
	    	//sometimes the page reloading takes longer than the updating data
	    	setTimeout(window.location.reload(),2000);
	    	
	    };
	    
	    httpRequest.open("GET", resourceToRequest, true);
	    httpRequest.send(null);
	    return false;
       } catch (exception) {
           return true;
       }
}
	
	
	function unserialize(data) {
    // http://kevin.vanzonneveld.net
    // +     original by: Arpad Ray (mailto:arpad@php.net)
    // +     improved by: Pedro Tainha (http://www.pedrotainha.com)
    // +     bugfixed by: dptr1988
    // +      revised by: d3x
    // +     improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +        input by: Brett Zamir (http://brett-zamir.me)
    // +     improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     improved by: Chris
    // +     improved by: James
    // %            note: We feel the main purpose of this function should be to ease the transport of data between php & js
    // %            note: Aiming for PHP-compatibility, we have to translate objects to arrays
    // *       example 1: unserialize('a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}');
    // *       returns 1: ['Kevin', 'van', 'Zonneveld']
    // *       example 2: unserialize('a:3:{s:9:"firstName";s:5:"Kevin";s:7:"midName";s:3:"van";s:7:"surName";s:9:"Zonneveld";}');
    // *       returns 2: {firstName: 'Kevin', midName: 'van', surName: 'Zonneveld'}
 
    var error = function (type, msg, filename, line){throw new this.window[type](msg, filename, line);};
    var read_until = function (data, offset, stopchr){
        var buf = [];
        var chr = data.slice(offset, offset + 1);
        var i = 2;
        while (chr != stopchr) {
            if ((i+offset) > data.length) {
                error('Error', 'Invalid');
            }
            buf.push(chr);
            chr = data.slice(offset + (i - 1),offset + i);
            i += 1;
        }
        return [buf.length, buf.join('')];
    };
    var read_chrs = function (data, offset, length){
        var buf;
 
        buf = [];
        for (var i = 0;i < length;i++){
            var chr = data.slice(offset + (i - 1),offset + i);
            buf.push(chr);
        }
        return [buf.length, buf.join('')];
    };
    var _unserialize = function (data, offset){
        var readdata;
        var readData;
        var chrs = 0;
        var ccount;
        var stringlength;
        var keyandchrs;
        var keys;
 
        if (!offset) {offset = 0;}
        var dtype = (data.slice(offset, offset + 1)).toLowerCase();
 
        var dataoffset = offset + 2;
        var typeconvert = new Function('x', 'return x');
 
        switch (dtype){
            case 'i':
                typeconvert = function (x) {return parseInt(x, 10);};
                readData = read_until(data, dataoffset, ';');
                chrs = readData[0];
                readdata = readData[1];
                dataoffset += chrs + 1;
            break;
            case 'b':
                typeconvert = function (x) {return parseInt(x, 10) !== 0;};
                readData = read_until(data, dataoffset, ';');
                chrs = readData[0];
                readdata = readData[1];
                dataoffset += chrs + 1;
            break;
            case 'd':
                typeconvert = function (x) {return parseFloat(x);};
                readData = read_until(data, dataoffset, ';');
                chrs = readData[0];
                readdata = readData[1];
                dataoffset += chrs + 1;
            break;
            case 'n':
                readdata = null;
            break;
            case 's':
                ccount = read_until(data, dataoffset, ':');
                chrs = ccount[0];
                stringlength = ccount[1];
                dataoffset += chrs + 2;
 
                readData = read_chrs(data, dataoffset+1, parseInt(stringlength, 10));
                chrs = readData[0];
                readdata = readData[1];
                dataoffset += chrs + 2;
                if (chrs != parseInt(stringlength, 10) && chrs != readdata.length){
                    error('SyntaxError', 'String length mismatch');
                }
            break;
            case 'a':
                readdata = {};
 
                keyandchrs = read_until(data, dataoffset, ':');
                chrs = keyandchrs[0];
                keys = keyandchrs[1];
                dataoffset += chrs + 2;
 
                for (var i = 0; i < parseInt(keys, 10); i++){
                    var kprops = _unserialize(data, dataoffset);
                    var kchrs = kprops[1];
                    var key = kprops[2];
                    dataoffset += kchrs;
 
                    var vprops = _unserialize(data, dataoffset);
                    var vchrs = vprops[1];
                    var value = vprops[2];
                    dataoffset += vchrs;
 
                    readdata[key] = value;
                }
 
                dataoffset += 1;
            break;
            default:
                error('SyntaxError', 'Unknown / Unhandled data type(s): ' + dtype);
            break;
        }
        return [dtype, dataoffset - offset, typeconvert(readdata)];
    };
    
    return _unserialize((data+''), 0)[2];
}

	/*read cookies*/
	function getCookie(name)
	{
	
		var cookies = document.cookie;
	
		if (cookies.indexOf(name) != -1)
	
		{
	
			var startpos = cookies.indexOf(name)+name.length+1;
	
			var endpos = cookies.indexOf(";",startpos)-1;
	
			if (endpos == -2) endpos = cookies.length;
	
			return unescape(cookies.substring(startpos,endpos));
	
		}
	
		else
	
		{
	
			return false; // the cookie couldn't be found! it was never set before, or it expired.
	
		}

}
	

