document.write('<scr' + 'ipt type="text/javascript" src="/common/includes/ajax.js"></scr' + 'ipt>');
document.write('<scr' + 'ipt type="text/javascript" src="/common/includes/md5.js"></scr' + 'ipt>');

document.write(
'<style type="text/css">'+
'	form#ajaxTrack { display: none; position: absolute; padding: 8px; width: 250px; text-align: left; border: 1px solid #999; background-color: white; }'+
'	form#ajaxTrack a.X { font: bold 1.1em Verdana, sans-serif; margin-top: -0.5ex; text-decoration: none; color: #600; float: right; }'+
'	form#ajaxTrack div.title { font: bold 1.3em Arial, sans-serif; color: #999; margin-bottom: 4px; }'+
'	form#ajaxTrack p { margin: 0 0 4px 0; color: #666; }'+
'	form#ajaxTrack label { display: block; margin-bottom: 2px; }'+
'	form#ajaxTrack input.text { display: block; width: 150px; margin-bottom: 4px; border: 1px solid #CCC; padding: 2px; }'+
'	form#ajaxTrack input.button { display: block; width: 100px; border: 1px solid #999; background-color: #CCC; }'+
'</style>'
);

var AjaxTrack = {

	trackForm: document.createElement("FORM"),

    /** This method inits the add/stop track process.
     *
     * @param Event    e            The click event that triggered the call
     *  (used to position the login box).
     * @param Number   saleNo
     * @param Number   lotIdNo
     * @param Function success      The function to call on success.
     * @param String   seed
     * @param String   username     Auto-fills the Username field in the login
     *  box.
     * @param Boolean  stopTracking If true, stop tracking.  Otherwise, add.
     */
	track: function(e, saleNo, lotIdNo, success, seed, username, stopTracking) {

	    /** Determine whether to add or stop tracking. */
	    var execTrack = (stopTracking === true ? AjaxTrack.stopTracking : AjaxTrack.ajaxTrack);

		var evt = e || window.event;
		AjaxTrack.saleNo = saleNo;
		AjaxTrack.lotIdNo = lotIdNo;
		AjaxTrack.success = success;
		AjaxTrack.seed = seed;
		AjaxTrack.username = username;
		createRequestObject(null);
		var x = AjaxTrack.mouse(evt).x;
		var y = AjaxTrack.mouse(evt).y;
		sendRequest("/common/ajax_trackitem.php", "action=checklogin&"+Math.random(), "GET", true, function() {
			if(http_request.readyState != 4) return;
			if(http_request.status == 200) {
				if(http_request.responseText == '1') execTrack();
				else AjaxTrack.showLogin(x, y);
			}
		});
	},

	showLogin: function(x, y) {
		if(!AjaxTrack.trackForm.appended) {
			document.body.appendChild(AjaxTrack.trackForm);
			AjaxTrack.trackForm.innerHTML =
				'<a href="javascript:void(0);" onclick="if(window.clearUpdatingMessage){clearUpdatingMessage();} AjaxTrack.trackForm.style.display=\'none\'; return false" class="X">x</a>'+
				'<div class="title">Track Item</div>'+
				'<p>You need to be logged in to track an item.</p>'+
				'<label>Username:</label><input type="text" name="email" class="text"/>'+
				'<label>Password:</label><input type="password" name="pass" class="text"/>'+
				'<input type="submit" onclick="AjaxTrack.ajaxLogin(); return false;" value="Log In" class="button"/>';
			AjaxTrack.trackForm.appended = true;
		}
		AjaxTrack.trackForm.email.value = AjaxTrack.username;
		AjaxTrack.trackForm.style.top = (y - 5) + 'px';
		AjaxTrack.trackForm.style.left = (x - 255) + 'px';
		AjaxTrack.trackForm.style.display = 'block';
		if(AjaxTrack.username) {
			AjaxTrack.trackForm.pass.focus();
		} else {
			AjaxTrack.trackForm.email.focus();
		}
	},

	ajaxLogin: function() {
		createRequestObject(null);
		sendRequest("/common/ajax_trackitem.php", "action=login&seed="+AjaxTrack.seed+"&email="+encodeURIComponent(AjaxTrack.trackForm.email.value)+'&pass='+encodeURIComponent(hex_md5(hex_md5(AjaxTrack.trackForm.pass.value.toLowerCase()) + AjaxTrack.seed)) + "&"+Math.random(), "GET", true, function() {
			if(http_request.readyState != 4) return;
			if(http_request.status == 200)
				if(http_request.responseText == '1') {
					AjaxTrack.trackForm.style.display = 'none';
					AjaxTrack.ajaxTrack();
				}
				else alert(http_request.responseText);
		});
	},

	ajaxTrack: function() {
		createRequestObject(null);
		sendRequest("/common/ajax_trackitem.php", "action=track&saleNo="+AjaxTrack.saleNo+"&lotIdNo="+AjaxTrack.lotIdNo+"&"+Math.random(), "GET", true, function() {
			if(http_request.readyState != 4) return;
			if(http_request.status == 200)
				if(http_request.responseText == '1') {
					if(typeof(AjaxTrack.success)=='function') {
						AjaxTrack.success(AjaxTrack.saleNo, AjaxTrack.lotIdNo);
					}
				}
		});
	},

	/** Send a request to stop tracking an item.
	 *
	 * @return null;
	 */
    stopTracking:
        function(  )
        {
            createRequestObject(null);
            sendRequest
            (
                '/common/ajax_trackitem.php',
                'action=stopTrack&saleNo=' + AjaxTrack.saleNo + '&lotIdNo=' + AjaxTrack.lotIdNo + '&' + Math.random(),
                'GET',
                true,
                function(  )
                {
                    if( http_request.readyState == 4 && http_request.status == 200 && http_request.responseText == '1' && typeof(AjaxTrack.success) == 'function' )
                    {
                        AjaxTrack.success(AjaxTrack.saleNo, AjaxTrack.lotIdNo);
                    }
                }
            );
        },

	mouse: function(evt) {
		var pos = { x: 0, y: 0 };
		if (evt.pageX || evt.pageY) {
			pos.x = evt.pageX;
			pos.y = evt.pageY;
		} else if (evt.clientX || evt.clientY) {
			pos.x = evt.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
			pos.y = evt.clientY + document.body.scrollTop + document.documentElement.scrollTop;
		}
		return pos;
	}



};

AjaxTrack.trackForm.id = 'ajaxTrack';
AjaxTrack.trackForm.appended = false;