/**
 * wrapper function for contructing a request object
 * Parameters:
	@reqType:		The HTTP request type: GET/POST
	@url:			The URL of the server app
	@asynch:		Whether to send the request asynchronously or not
	@respHandle:	The name of the function that will handle the response
 * Any 5th params, represented as arguments[4], 
 * are the data a POST request is designed to send
 */
var request = null; // global
function httpRequest(reqType, url, asynch, respHandle)
{
	// Mozilla-based
	if (window.XMLHttpRequest)
	{
		request = new XMLHttpRequest();
	} 
	else if (window.ActiveXObject)
	{
		request = new ACtiveXObject('Msxml2.XMLHTTP');
		if (!request)
			request = new ActiveXObject('Microsoft.XMLHTTP');
	}

	// request could still be null if neither ActiveXObject
	// initialization succeeded
	if (request)
	{
		// if the reqType param is POST, the the
		// 5th argument to the function is the POSTed data
		if (reqType.toLowerCase() != "post")
		{
			initReq(reqType, url, asynch, respHandle);
		}else{
			// the POSTed data
			var args = arguments[4];
			if (args != null && args.length > 0)
			{
				initReq(reqType, url, asynch, respHandle, args);
			}
		}
	}else{
		alert("Your browser does not permit the use of all of this application's features.");
	}
}
/**
 * initialize a request object that is already constructed
 */
function initReq(reqType, url, bool, respHandle)
{
	try {
		// specify the function that will handle the HTTP response
		request.onreadystatechange = respHandle;
		request.open(reqType, url, bool);
		// if the reqType param is POST, then the
		// 5th argument to the function is the POSTed data
		if (reqType.toLowerCase() == "post")
		{
			request.setRequestHeader("Content-Type", "application/x-www-urlencoded; charset=UTF-8");
			request.send(arguments[4]);
		}else{
			request.send(null);
		}
	}catch(e){
		alert("The application cannot contact the server at the moment.\nPlease try again in a few seconds.\nError: "+e.message);
	}
}
// get protips
function getProtip(_ID)
{
	url = 'getProtip.php?productID='+_ID;
	httpRequest('GET', url, true, protipReturnFunc);
}

// get protip return function
function protipReturnFunc()
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			var protip = '';
			var productID;
			var myString;
			var idx;
			var id;
			var _a = [];
			var close;
			if (request.responseText)
			{
			    retval	= request.responseText.split('=');
			    myString	= retval[1];
			    _a		= myString.split('&');
			}
			for (var i=0;i<_a.length;i++)
			{
			    idx	    = _a[i].split(':');
			    protip += '* '+idx[1]+'<br />';
			    //id    = 'protip_'+idx[0];
			}
			close   = '<div align="right"><a href="javascript:void(0);" onclick="document.getElementById(\'protip\').style.display=\'none\';">close this tip</a></div>';
			document.getElementById('protip').style.display='';
			document.getElementById('protip').innerHTML=protip+close;
		}
	}
}	

// addToCart();
function addToCart(productID, productName, prodType, swatchID, swatchName, priceID, price, qty)
{
    var swatchName;
    var cb = document.getElementsByTagName('input');
    for (var i=0;i<cb.length;i++)
    {
	if (cb[i].type == 'checkbox' && cb[i].checked)
	{
	    var getSwatch = cb[i].value.split(':');
	    swatchName += getSwatch[1]+':'; 
	}
    }
    document.getElementById('basketMessage').innerHTML='adding to basket...';
    url = 'addToCart.php?productID='+productID+'&productName='+productName+'&prodType='+prodType+'&swatchID='+swatchID+'&swatchName='+swatchName+'&priceID='+priceID+'&price='+price+'&qty='+qty;
    httpRequest('GET', url, true, updateCartFunc);
}

// deleteFromCart();
function deleteFromCart(cartID)
{
    url = 'deleteFromCart.php?cartID='+cartID;
    httpRequest('GET', url, true, updateCartFunc);
}

// updateCartFunc()
function updateCartFunc()
{
    if (request.readyState == 4)
    {
        if (request.status == 200)
	{
		if (request.responseText)
		{
		    if (request.responseText == 'emptyCart')
		    {
			//document.getElementById('cart').innerHTML='';
			document.getElementById('numItems').innerHTML='';
			document.getElementById('itemsInBasket').innerHTML=0;
		    }
		    else
		    {
			//document.getElementById('cart').innerHTML='';
			var ret     = request.responseText.split('^');
		        var readout = '';
			var numItems = ret.length;
/*
			for (var i=0;i<ret.length;i++)
			{
			    var _ar = ret[i].split(':');
			    var cartID = _ar[0];
			    readout+=ret[i];
		    	    readout+='<a href="javascript:deleteFromCart('+cartID+');">[x]</a><br />';
			}
			readout+='<br />';
			//document.getElementById('cart').innerHTML=readout;//+=ret[i]+'<br />';
			//document.getElementById('cart').style.display='';
		    }
*/
		    setTimeout("document.getElementById('basketMessage').innerHTML='&nbsp;'", 1000);
		    //document.getElementById('numItems').innerHTML=numItems;
		    document.getElementById('itemsInBasket').innerHTML=numItems;
		}
	    }
	}
    }
}

// insertTestimonial();
function insertTestimonial()
{
    var firstname = document.getElementById('firstname').value;
    var middlename = document.getElementById('middlename').value;
    var lastname = document.getElementById('lastname').value;
    var title = document.getElementById('title').value;
    var text = document.getElementById('testimonial').value;
    document.getElementById('testimonialMessage').innerHTML='adding testimonial...';
    url = 'ajaxTesimonialInsert.php?firstname='+firstname+'&middlename='+middlename+'&lastname='+lastname+'&title='+title+'&text='+text;
    httpRequest('GET', url, true);
}

// get product image
function getProductImage(_ID)
{
	url = 'ajaxGetProductImage.php?productID='+_ID;
	httpRequest('GET', url, true, productImageReturnFunc);
}

// get product image return function
function productImageReturnFunc()
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			var productID = '';
			var image = '';
			var myString;
			var _a = [];
			if (request.responseText)
			{
			    //alert(request.responseText);
			    retval	= request.responseText.split('=');
			    myString	= retval[1];
			    _a		= myString.split(':');
			    document.getElementById('productImageEdit').style.display='';
			    document.getElementById('productImageEditForm').style.display='';

			    productID   = _a[0];
			    image	= _a[1];
			    // --
			    document.getElementById('productID').value=productID;
			    document.getElementById('image').src='images/'+image;
			}
		}
	}
}	
// get products
function getProduct(_ID)
{
	url = 'ajaxGetProduct.php?producdtID='+_ID;
	httpRequest('GET', url, true, productReturnFunc);
}

// get product return function
function productReturnFunc()
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			var product = '';
			var myString;
			var idx;
			var _a = [];
			if (request.responseText)
			{
			    retval	= request.responseText.split('=');
			    myString	= retval[1];
			    _a		= myString.split('&');
			}
			for (var i=0;i<_a.length;i++)
			{
			    idx	    = _a[i].split(':');
			    //product += '* <a href="javascript:void(0);" onclick="document.getElementById(\'productEditForm\').style.display=\'\';">'+idx[1]+'</a><br />';
			    product += '* <a href="javascript:void(0);" onclick="return getProductDetails('+idx[0]+')">'+idx[1]+'</a><br />';
			    //id    = 'protip_'+idx[0];
			}
			document.getElementById('productEdit').style.display='';
			document.getElementById('productEdit').innerHTML=product;

			var productID	    = _a[0];
			var name	    = _a[1];
			var desc	    = _a[2];
			var image	    = _a[3];
			var subcategoryID   = _a[4];
			var priceID	    = _a[5];
			var isPro	    = _a[6];
			var isActive	    = _a[7];
			// --
			document.getElementById('name').value=name;
			document.getElementById('desc').innerHTML=desc;
			//document.getElementById('image').src=image;
			//document.getElementById('subcategoryID').selectedIndex=subcategoryID;
			//document.getElementById('priceID').value=priceID;
			document.getElementById('isPro').value=isPro;
		}
	}
}	

// get productDetails
function getProductDetails(_ID)
{
	url = 'ajaxGetProductDetails.php?productID='+_ID;
	httpRequest('GET', url, true, productDetailsReturnFunc);
}

// get product details return function
function productDetailsReturnFunc()
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			var myString;
			var idx;
			var _a = [];
			var _b = [];
			if (request.responseText)
			{
			    retval	= request.responseText.split('=');
			    myString	= retval[1];
			    _a		= myString.split('&');
			}

			//_b = _a[0].split(':');
			var productID	    = _a[0];
			var name	    = _a[1];
			var desc	    = _a[2];
			var image	    = _a[3];
			var subcategoryID   = _a[4];
			var priceID	    = _a[5];
			var isPro	    = _a[6];
			var isActive	    = _a[7];
			// --
			document.getElementById('name').value=name;
			document.getElementById('desc').innerHTML=desc;
			document.getElementById('image').src='images/'+image;
			document.getElementById('subcategoryID').value=subcategoryID;
			document.getElementById('priceID').value=priceID;
			if (isPro == 1)
			    document.getElementById('isProYes').checked = 1;
			else
			    document.getElementById('isProNo').checked = 1;

			if (isActive == 1)
			    document.getElementById('isActiveYes').checked = 1;
			else
			    document.getElementById('isActiveNo').checked = 1;

			document.getElementById('productEditForm').style.display='';
		}
	}
}	
// get swatch image
function getSwatchImage(_ID)
{
	url = 'ajaxGetProductSwatches.php?productID='+_ID;
	httpRequest('GET', url, true, swatchImageReturnFunc);
}

// get swatch image return function
function swatchImageReturnFunc()
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			var swatchID = '';
			var image = '';
			var myString;
			var _a = [];
			var tmp;
			var html;
			if (request.responseText)
			{
			    document.getElementById('swatchImageEdit').style.display='';
			    //alert(request.responseText);
			    retval	= request.responseText.split('=');
			    myString 	= retval[1].split('&');
			    for (var i=0;i<myString.length;i++)
			    {
				var _a		= myString[i].split(':');
				var swatchID	= _a[0];
				var image	= _a[1];
				var productID	= _a[2];
				html		= '<div style="border: 1px dotted #ccc; padding: 4px;"><img src="swatches/'+image+'" align="middle">&nbsp;&nbsp;&nbsp;&nbsp;';
				html		+= '<a href="javascript:void(0);" onclick="document.getElementById(\'editor_'+swatchID+'\').style.display=\'\';">edit</a> | ';
				html		+= '<a href="javascript:void(0);" onclick="confirmDelete('+swatchID+').style.display=\'\';">delete</a>';
				html		+= "\n\n";
				html		+= '<div id="editor_'+swatchID+'" style="display: none;">';
				html		+= "\n\n";
				html		+= '<form enctype="multipart/form-data" method="post" action="product-swatch-update.php">';
				html		+= '<input type="hidden" id="swatchID" name="swatchID" value="'+swatchID+'">';
				html		+= '<input type="hidden" id="productID" name="productID" value="'+productID+'">';
				html		+= '<li><a href="javascript:void(0);" onclick="document.getElementById(\'editor_'+swatchID+'\').style.display=\'none\';">close editor</a></li>';
				html		+= '<li><input type="file" name="userfile[]" id="imageFile"></li>';
				html		+= '<li><input type="text" name="name" id="name" value=""></li>';
				html		+= '<li><input type="submit" value="Submit"></li>';
				html		+= '</form>';
				html		+= '</div></div><p>&nbsp;</p>';
				// --
				document.getElementById('swatchImageEdit').innerHTML+=html;
			    }
			}
		}
	}
}	
