/********* CROSS compatibility ***********/

function allEve(e)
{	
	var theKey = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
  	return theKey;
}


/********* AJAX functions **********/

function getHTTPObject()
{
	if (window.XMLHttpRequest)return new XMLHttpRequest();
	else
	{
		alert("Sorry, your browser does not support AJAX.");
		return null;
	}
}

/* NEW VERSION */

function getHTTPObject_TEST()
{
	var xmlhttp;
        try {
        // Firefox, Opera 8.0+, Safari
        xmlhttp=new XMLHttpRequest();
        xmlhttp.onreadystatechange=stateChanged();
        xmlhttp.onload=stateChanged();
        xmlhttp.onerror=stateChanged();
    } catch (e) {
        // Internet Explorer
        try {
            xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
            xmlhttp.onreadystatechange=stateChanged();
        } catch (e) {
            try {
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                xmlhttp.onreadystatechange=stateChanged();
            } catch (e) {
                alert("Your browser does not support AJAX!");
                return false;
            }
        }
    }
    return xmlhttp;
}


/*********************************/
/* /fr/admin_stock_receiving.php */
/*********************************/

function AJAXreceiveProduct(transferId, userId, labelFlag)
{
	vTransferId = transferId;
	oReq = getHTTPObject();
	if (oReq != null)
	{
		oReq.open("GET", "../process/process_receive_stock.php?tid="+transferId+"&uid="+userId+"&lbl="+labelFlag, true);
		oReq.send(null);
		oReq.onreadystatechange = AJAXdoTransfer;
	}
}

function AJAXquickReceiveProduct(productCode, whId, userId)
{
	oReq = getHTTPObject();
	if (oReq != null)
	{
		oReq.open("GET", "../process/process_quick_receive_stock.php?pcode="+productCode+"&whid="+whId+"&uid="+userId, true);
		oReq.send(null);
		oReq.onreadystatechange = AJAXdoQuickTransfer;
	}	
}

function AJAXdoTransfer()
{
	if(oReq.readyState <= 3)
	{
		document.getElementById('btn_without_lbl_'+vTransferId).style.display = 'none';
		document.getElementById('btn_with_lbl_'+vTransferId).className = 'sGrey';
		document.getElementById('btn_with_lbl_'+vTransferId).innerHTML = 'en cours...';	
	}
	else if(oReq.readyState == 4)
	{
		if (oReq.responseText != 'error')
		{
			document.getElementById('btn_without_lbl_'+vTransferId).style.display = 'none';
			document.getElementById('btn_with_lbl_'+vTransferId).className = 'transfer_success';
			document.getElementById('btn_with_lbl_'+vTransferId).innerHTML = 'effectu&#0233;';
			doScannerOn();
		}
		else
		{
			document.getElementById('btn_without_lbl_'+vTransferId).style.display = 'none';
			document.getElementById('btn_with_lbl_'+vTransferId).className = 'transfer_error';
			document.getElementById('btn_with_lbl_'+vTransferId).innerHTML = 'erreur';
			doScannerOn();
		}
	}
}

function AJAXdoQuickTransfer()
{
	if(oReq.readyState == 4)
	{
		var data = oReq.responseText;
		var transfer_array = data.split("|");
		var transfer_id = transfer_array[0];
		var transfer_qty = transfer_array[1];
		var transfer_user_id = transfer_array[2];
				
		if (transfer_id != 'error' && transfer_qty != 'error' && transfer_user_id != 'error')
		{
			var confirmQty = confirm('Avez-vous une quantit\xe9 de '+transfer_qty+' pour le transfer No '+transfer_id+ ' ?');
			if (confirmQty){AJAXreceiveProduct(transfer_id, transfer_user_id, 0);}
			else{doScannerOn();}
		}
		else{alert('Code produit non valide');doScannerOn();}
	}
}


/*********************************/
/* /fr/admin_stock_purchase.php */
/*********************************/

function AJAXpurchaseProduct(userId, wh_id)
{
	oReq = getHTTPObject();
	if (oReq != null)
	{
		var purchaseProductCode = document.getElementById('purchase_product_code').value;
		var purchaseProductQty = document.getElementById('purchase_product_qty').value;
		var purchaseSupplierId = document.getElementById('purchase_supplier_id').value;
		var purchaseCmt = document.getElementById('purchase_product_cmt').value;
		//encoding to get the french characters across the GET form
		purchaseCmt = encodeURIComponent(purchaseCmt);
		
		if(purchaseProductCode != '')
		{
			oReq.open("GET", "../process/process_admin_purchase.php?actionID=1&productCode="+purchaseProductCode+"&productQty="+purchaseProductQty+"&purchaseWhTo="+wh_id+"&purchaseSupplierId="+purchaseSupplierId+"&purchaseUserId="+userId+"&purchaseCmt="+purchaseCmt, true);
			oReq.send(null);
			oReq.onreadystatechange = AJAXdoManualPurchase;
		}
		else{alert('Merci d\'entrer le Code du produit');}
	}
}

function AJAXdoManualPurchase()
{
	if(oReq.readyState == 4)
	{
		if (oReq.responseText != 'error')
		{
			document.getElementById('purchaseResultSpan').style.display = '';
			document.getElementById('purchaseResultSpan').className = 'transfer_success';
			document.getElementById('purchaseResultSpan').innerHTML = 'effectu&#0233;';
			document.getElementById('purchase_product_code').value = '';
			document.getElementById('purchase_product_qty').value = '';
			document.getElementById('purchase_product_cmt').value = '';
		}
		else
		{
			document.getElementById('purchaseResultSpan').style.display = '';
			document.getElementById('purchaseResultSpan').className = 'transfer_error';
			document.getElementById('purchaseResultSpan').innerHTML = 'erreur';
		}
		
	}
}


/*********************************/
/* /fr/admin_stock_purchase_images.php */
/*********************************/

function AJAXpurchaseProductFromImg(userId, wh_id, code, product_id)
{
	vProductId = product_id;
	oReq = getHTTPObject();
	if (oReq != null)
	{
		var purchaseSupplierId = parent.document.getElementById('purchase_supplier_id_img').value;
		var purchaseProductQty = document.getElementById('purchase_product_qty_'+product_id).value;
		var purchaseCmt = document.getElementById('purchase_product_cmt_'+product_id).value;
		//encoding to get the french characters across the GET form
		purchaseCmt = encodeURIComponent(purchaseCmt);
		if (purchaseCmt == "Commentaires"){purchaseCmt = '';}
		
		if(code != '')
		{
			oReq.open("GET", "../process/process_admin_purchase.php?actionID=1&productCode="+code+"&productQty="+purchaseProductQty+"&purchaseWhTo="+wh_id+"&purchaseSupplierId="+purchaseSupplierId+"&purchaseUserId="+userId+"&purchaseCmt="+purchaseCmt, true);
			oReq.send(null);
			oReq.onreadystatechange = AJAXdoManualPurchaseImg;
		}
		else{alert('Merci d\'entrer le Code du produit');}
	}
}

function AJAXdoManualPurchaseImg()
{
	if(oReq.readyState == 4)
	{
		if (oReq.responseText != 'error')
		{
			document.getElementById('purchaseBtnSpan_'+vProductId).style.display = 'none';
			document.getElementById('purchaseResultSpan_'+vProductId).style.display = '';
			document.getElementById('purchaseResultSpan_'+vProductId).className = 'transfer_success';
			document.getElementById('purchaseResultSpan_'+vProductId).innerHTML = 'effectu&#0233;';
		}
		else
		{
			document.getElementById('purchaseResultSpan_'+vProductId).style.display = '';
			document.getElementById('purchaseResultSpan_'+vProductId).className = 'transfer_error';
			document.getElementById('purchaseResultSpan_'+vProductId).innerHTML = 'erreur';
		}
		
	}
}


/*********************************/
/* /fr/admin_stock_adjustment.php */
/*********************************/

function AJAXadjustStock(userId, wh_id, p_action)
{
	oReq = getHTTPObject();
	adjProductCode = '';
	if (oReq != null)
	{
		document.getElementById('adjSpan').style.display = 'none';
		adjProductCode = parent.document.getElementById('adj_product_code').value;
		var adjProductQty = document.getElementById('adj_product_qty').value;
		var adjProductReason = document.getElementById('adj_product_reason').value;
		//encoding to get the french characters across the GET form
		adjProductReason = encodeURIComponent(adjProductReason);
		
		if(adjProductCode != '')
		{
			oReq.open("GET", "../process/process_admin_adjustment.php?actionID="+p_action+"&adjCode="+adjProductCode+"&adjQty="+adjProductQty+"&adjWh="+wh_id+"&adjUserId="+userId+"&adjCmt="+adjProductReason, true);
			oReq.send(null);
			oReq.onreadystatechange = AJAXdoStockAdj;
		}
		else{alert('Merci d\'entrer le Code du produit');}
	}
}

function AJAXdoStockAdj()
{
	if(oReq.readyState == 4)
	{
		if (oReq.responseText != 'error')
		{
			document.getElementById('adjSpan').style.display = '';
			document.getElementById('adjSpan').className = 'adjustment_success';
			document.getElementById('adjSpan').innerHTML = 'Rectification effectu&#0233;e. Le niveau du stock de \"'+adjProductCode+'\" est : '+oReq.responseText;
		}
		else
		{
			document.getElementById('adjSpan').style.display = '';
			document.getElementById('adjSpan').className = 'transfer_error';
			document.getElementById('adjSpan').innerHTML = 'Erreur, rectification non effectu&#0233;e';
		}
		
	}
}


/*********************************/
/* /fr/admin_orderlist_update.php */
/*********************************/

function AJAXquickPackProduct(orderId, productCode, productQty)
{
	oReq = getHTTPObject();
	vOrderId = orderId;
	productQty = parseInt(""+productQty+"");
	
	if (productQty == 0){alert("Quantit\xe9 non valide.");document.getElementById('QuickPackQty').value='1';return;}
	if (oReq != null)
	{
		oReq.open("GET", "../process/process_quick_pack.php?orderId="+orderId+"&productCode="+productCode+"&productQty="+productQty, true);
		oReq.send(null);
		oReq.onreadystatechange = AJAXdoQuickPack;
	}
}

function AJAXdoQuickPack()
{
	if(oReq.readyState == 4)
	{
		var data = oReq.responseText;
		if (data == 'over'){alert('Erreur, la quantit\xe9 d\'articles emball\xe9s est superieure \xe0 la quantite d\'articles \xe0 emballer.');doScannerPackingOn();}
		else if (data == 'error'){alert('Code produit non valide.');doScannerPackingOn();}
		else
		{
			var updated_array = data.split("|");
			for ( var orderlist in updated_array )
			{
				var orderlist_array = updated_array[orderlist];
				orderlist_array = orderlist_array.split(",");
				var the_orderlistid = orderlist_array[0];
				var the_totalqty = orderlist_array[1];
				var the_packedqty = orderlist_array[2];
				
				if (the_totalqty == the_packedqty)
				{
					document.getElementById('span_packed_qty_'+the_orderlistid).className = 'packing_full';
					document.getElementById('span_packed_qty_'+the_orderlistid).innerHTML = '<img src=\'../images/tick.gif\'>';
					document.getElementById('iframe_logs').src = 'admin_order_logs.php?orderid='+vOrderId;
					document.getElementById('adj_product_code').value = '';
				}
				else
				{
					document.getElementById('span_packed_qty_'+the_orderlistid).className = 'packing_not_full';
					document.getElementById('span_packed_qty_'+the_orderlistid).innerHTML = ''+the_packedqty+'';
					document.getElementById('iframe_logs').src = 'admin_order_logs.php?orderid='+vOrderId;
				}
			}
			document.getElementById('QuickPackQty').value = 1;
			doScannerPackingOn();
		}
	}
}


function AJAXpaymentMethodUpdate(orderId)
{
	oReq = getHTTPObject();
	vOrderId = orderId;
		
	if (oReq != null)
	{
		PaymentMethodID = document.getElementById('PaymentMethodID').value;
		ShopperID = document.getElementById('ShopperID').value;
		PaymentAmount = document.getElementById('PaymentAmount').value;
		PaymentRef = document.getElementById('PaymentRef').value;
		//encoding to get the french characters across the GET form
		PaymentRef = encodeURIComponent(PaymentRef);
		
		oReq.open("GET", "../process/process_admin_update_payment.php?actionID=1&orderID="+orderId+"&PaymentMethodID="+PaymentMethodID+"&PaymentRef="+PaymentRef+"&PaymentAmount=&ShopperID="+ShopperID, true);
		oReq.send(null);
		oReq.onreadystatechange = AJAXdoPaymentMethodUpdate;
	}	
}

function AJAXdoPaymentMethodUpdate()
{
	if(oReq.readyState == 4)
	{
		// var oSpanPaymentAmount = document.getElementById('spanPaymentAmount');
		// var oSpanPaymentRef = document.getElementById('spanPaymentRef');
		var vOrderID = document.getElementById('OrderID');
				
		/*
		FIREFOX HAS AN ISSUE UPDATING THE DOM for the innerHTML - the fields will be static
		if (PaymentMethodID == 0)
		{
			oSpanPaymentAmount.innerHTML = " - <input type='hidden' name='PaymentRef' id='PaymentRef' value=''>";
			oSpanPaymentRef.innerHTML = " - <input type='hidden' name='PaymentAmount' id='PaymentAmount' value=''>";
		}
		else
		{
			oSpanPaymentAmount.innerHTML = "<input tabindex=\"10\" class=\"Grey\" type=\"text\" onBlur=\"updateDOM(this);\" name=\"PaymentAmount\" id=\"PaymentAmount\" maxlength=\"20\" size=\"11\" value=\"\">";
			oSpanPaymentRef.innerHTML = "<input tabindex=\"11\" class=\"Grey\" type=\"text\" onBlur=\"updateDOM(this);\" name=\"PaymentRef\" id=\"PaymentRef\" maxlength=\"20\" size=\"11\" value=\"\" onkeydown=\"var c=allEve(event);if(c == 13){AJAXpaymentUpdate('"+vOrderId+"'); return false;}\">";
			oSpanPaymentAmount.focus();
		}
		*/
		// document.getElementById('iframe_logs').src = 'admin_order_logs.php?orderid='+vOrderId;
		document.location = 'admin_orderlist_update.php?orderID='+vOrderId
	}
}

function updateDOM(inputField)
{
	// if the inputField ID string has been passed in, get the inputField object
	
	if (typeof inputField == "string"){inputField = document.getElementById(inputField);}
	if (inputField.type == "select-one")
	{
		for (var i=0; i<inputField.options.length; i++)
		{
			if (i == inputField.selectedIndex){inputField.options[inputField.selectedIndex].setAttribute("selected","selected");}
		}
	}
	else if (inputField.type == "text"){inputField.setAttribute("value",inputField.value);}
	else if (inputField.type == "textarea"){inputField.setAttribute("value",inputField.value);}
	else if ((inputField.type == "checkbox") || (inputField.type == "radio"))
	{
		if (inputField.checked){inputField.setAttribute("checked","checked");}
		else{inputField.removeAttribute("checked");}
	}
}

function AJAXpaymentUpdate(orderId)
{
	oReq = getHTTPObject();
	vOrderId = orderId;
		
	if (oReq != null)
	{
		var oStatusID = document.getElementById('StatusID');
		CurrentStatusID = document.getElementById('CurrentStatusID').value;
		PaymentMethodID = document.getElementById('PaymentMethodID').value;
		PaymentAmount = document.getElementById('PaymentAmount').value;
		PaymentRef = document.getElementById('PaymentRef').value;
		//encoding to get the french characters across the GET form
		PaymentRef = encodeURIComponent(PaymentRef);
		ShopperID = document.getElementById('ShopperID').value;
		OrderTotalValue = document.getElementById('OrderTotalValue').value;
		OrderTotalValue = parseFloat(OrderTotalValue);
		PaymentAmount = PaymentAmount.replace(",",".");
		PaymentAmount = parseFloat(PaymentAmount);
		PaymentAmount = Number(PaymentAmount);
		
		if(PaymentRef == '')
		{
			var conf = confirm ('ATTENTION : La r\xe9f\xe9rence n\'est pas valide. Etes-vous certain de vouloir continer ?');if (!conf){oStatusID.value = CurrentStatusID;return;}
		}
			
		if(isNaN(PaymentAmount) && OrderTotalValue != 0){alert('Le montant re\xe7u n\'est pas valide');oStatusID.value = CurrentStatusID;return;}
		else if (PaymentAmount > 0)
		{
			if (PaymentAmount - OrderTotalValue < 0){alert('IMPOSSIBLE de compl\xe9ter la commande, le paiement n\'est pas suffisant.');oStatusID.value = CurrentStatusID;return;}
			else if (PaymentAmount - OrderTotalValue > 0){var conf = confirm ('ATTENTION : le montant est sup\xe9rieur \xe0 celui de la commande ! Un avoir de '+ (PaymentAmount - OrderTotalValue) +' euros va \xeAtre enregistr\xe9 sur le compte client. Etez-vous certain de vouloir continuer ?');if (!conf){oStatusID.value = CurrentStatusID;return;}}
			else{var conf = confirm ('Une fois le paiement compl\xe8t\xe9, vous ne pourrez plus le modifier. Continuer avec le paiement de '+PaymentAmount+' euros ?');if (!conf){oStatusID.value = CurrentStatusID;return;}}
		}
		//alert('sending update request with '+PaymentMethodID);
		oReq.open("GET", "../process/process_admin_update_payment.php?actionID=2&orderID="+orderId+"&PaymentMethodID="+PaymentMethodID+"&PaymentRef="+PaymentRef+"&PaymentAmount="+PaymentAmount+"&ShopperID="+ShopperID, true);
		oReq.send(null);
		oReq.onreadystatechange = AJAXdoPaymentUpdate;
	}	
}

function AJAXdoPaymentUpdate()
{
	//value returned is updated "PaymentDTS|new_order_total_value"
	if(oReq.readyState == 4)
	{
		var returned_table = oReq.responseText.split("|");
		var returned_DTS = returned_table[0];
		var returned_OTV = returned_table[1];
		
		if (returned_DTS != '0000-00-00 00:00:00' && returned_DTS != '')
		{
			var oPaymentDTS = document.getElementById('paymentDTS');
			oPaymentDTS.value = oReq.responseText;
			
			//payment has been successfully made => total value of order is updated to aknowledge the possible credits
			var oOrderTotalValue = document.getElementById('OrderTotalValue');
			oOrderTotalValue.value = returned_OTV;
			
			//automatically change the order status to 'payment received' #3
			sendCommandUpdateOrderStatus(2,3);
		}
		else{alert('Erreur, paiement non enregistr\xe9.');}
	}
}


function AJAXaddOrderComment(orderId)
{
	vOrderId = orderId;
	oReq = getHTTPObject();
	if (oReq != null)
	{
		var logComment = document.getElementById('orderComments').value;
		//encoding to get the french characters across the GET form
		logComment = encodeURIComponent(logComment);
		if(logComment != '')
		{
			oReq.open("GET", "../process/process_admin_log.php?actionID=1&orderID="+orderId+"&logText="+logComment, true);
			oReq.send(null);
			oReq.onreadystatechange = AJAXdorefreshOrderLog;
		}
		else{alert('Commentaire non valide.');}
	}
}

function AJAXdorefreshOrderLog()
{
	if(oReq.readyState == 4)
	{
		if (oReq.responseText != 'error')
		{
			document.getElementById('iframe_logs').src = 'admin_order_logs.php?orderid='+vOrderId;
			document.getElementById('orderComments').value = '';
		}
	}
}

function AJAXreadyForDespatch(orderId)
{
	vOrderId = orderId;
	oReq = getHTTPObject();
	if (oReq != null)
	{
		oReq.open("GET", "../process/process_admin_check_packing.php?orderID="+orderId, true);
		oReq.send(null);
		oReq.onreadystatechange = AJAXdoReadyForDespatch;
	}
}

function AJAXdoReadyForDespatch()
{
	if(oReq.readyState == 4)
	{
		if (oReq.responseText == 0)
		{
			var conf = confirm ('A partir de l\'\xe9tape suivante, vous ne pourrez plus supprimer la commande. Continuer ?');
			if (conf){document.getElementById('form_update_order').submit();}else{document.getElementById('StatusID').value = 4;return;}
		}
		else{alert('Action non autoris\xe9e. Tous les articles ne sont pas emball\xe9s.');document.getElementById('StatusID').value = 4;return;}
	}
}

function AJAXupdateColipost(orderId)
{
	vOrderId = orderId;
	oReq = getHTTPObject();
	colipostNB = document.getElementById('TrackingCode').value;
	//encoding to get the french characters across the GET form
	colipostNB = encodeURIComponent(colipostNB);
	
	if (oReq != null && colipostNB != '')
	{
		oReq.open("GET", "../process/process_admin_update_order_shipping.php?orderID="+orderId+"&colipostNB="+colipostNB, true);
		oReq.send(null);
		oReq.onreadystatechange = AJAXdoUpdateColipost;
	}
	else{alert('Le num\xe9ro Colipost n\'est pas valide.');document.getElementById('StatusID').value = 7;return;}
}

function AJAXdoUpdateColipost()
{
	if(oReq.readyState == 4)
	{
		if (oReq.responseText == 0)
		{
			document.getElementById('StatusID').value = 1;
			document.getElementById('form_update_order').submit();
		}
		else{alert('Erreur. Le num\xe9ro Colipost n\'a pas \xe9t\xe9 enregistr\xe9.');document.getElementById('StatusID').value = 7;return;}
	}
}


/*********************************/
/* /fr/shop_join.php */
/*********************************/

function AJAXcreateCustomerAccount(p_email)
{
	oReq = getHTTPObject();
	vEml = p_email;
	if (oReq != null)
	{
		oReq.open("GET", "../process/process_validate_new_customer_email.php?eml="+p_email, true);
		oReq.send(null);
		oReq.onreadystatechange = AJAXdoCreateCustomerAccount;
	}
}

function AJAXdoCreateCustomerAccount()
{
	if(oReq.readyState == 4)
	{
		var data = oReq.responseText;
		var oErrField = document.getElementById('span_err_message');
		//0 = unknow error
		//1 = email not valid
		//2 = account already exist
		//3 = available account
		
		if (data == 0){oErrField.innerHTML = "Erreur non document&#233;e. Merci de contacter l'&#233;quipe La Boutique Jeparraine.com";oErrField.style.display='';return;}
		else if(data == 1){oErrField.innerHTML = "L'email ' <u>"+vEml+"</u> ' n'est pas valide. Merci d'utiliser une autre adresse email.";oErrField.style.display='';return;}
		else if(data == 2){oErrField.innerHTML = "Un compte client existe d&#233;j&#224; avec l'adresse email ' <u>"+vEml+"</u> '. <p/>Si cette adresse email vous appartient, <a href=\"shop_pswd_recovery.php?useremail="+vEml+"\">cliquez ici</a> pour r&#233;cup&#233;rer votre mot de passe.<br/>";oErrField.style.display='';return;}
		else if(data == 3){document.getElementById('sendJoinForm').submit();}
		else{oErrField.innerHTML = "Erreur non document&#233;e. Merci de contacter l'&#233;quipe La Boutique Jeparraine.com";oErrField.style.display='';return;}
	}
}


/*********************************/
/*            global             */
/*********************************/

/* OBSOLETE

function updateSession(sessionItemName, sessionItemValue)
{
	vSessionItemName = sessionItemName;
	vSessionItemValue = sessionItemValue;
	oReq = getHTTPObject();
	if (oReq != null)
	{
		oReq.open("GET", "../process/process_update_session.php?sin="+sessionItemName+"&siv="+sessionItemValue, true);
		oReq.send(null);
		oReq.onreadystatechange = doUpdateSession;
	}	
}

function doUpdateSession()
{
	if(oReq.readyState == 4)
	{
		var data = oReq.responseText;
		//if the shipping address session is updated to "1" (pick-up), then hide the shipping option SPAN=span_delivery_method and show SPAN=span_pickup_method
		var oSpanDelivery = document.getElementById('span_delivery_method');
		var oSpanPickup = document.getElementById('span_pickup_method');
		
		if(oUpdate = document.getElementById('obj_'+data)){if(oUpdate.checked == false){oUpdate.checked = true;}else{oUpdate.checked = false;}}
		
		if (vSessionItemName == 'shop_shipAddressID')
		{
			if(vSessionItemValue == '1'){oSpanDelivery.style.display='none';oSpanPickup.style.display='';}
			else{oSpanDelivery.style.display='';oSpanPickup.style.display='none';}
		}
		
		if (data == 'error'){alert('Une erreur s\'est produite. Merci d\'essayer ult\xe8rieurement');return false;}
	}
}
*/

/* ********* */

function ObjectDisable(id)
{
	var elem = document.getElementById(id);
	elem.disabled=true;
}

function ObjectEnable(id)
{
	var elem = document.getElementById(id);
	elem.disabled = false;
}

function DivDisplay(id)
{
	var elem = document.getElementById(id);
	elem.style.display='';
}

function DivHide(id)
{
	var elem = document.getElementById(id);
	elem.style.display='none';
}

function checkForOtherName(check, theDiv, theValue)
{
	if (theValue == check){DivDisplay(theDiv);}
	else{DivHide(theDiv);}
}

function doScannerOn()
{
	document.getElementById('QuickReceiveCode').focus();
	document.getElementById('QuickReceiveCode').value='';
	document.getElementById('scanner_msg').innerText='Scanner ON';
	document.getElementById('scanner_msg').className='scanner_on';
}

function doScannerPackingOn()
{
	document.getElementById('QuickPackCode').focus();
	document.getElementById('QuickPackCode').value='';
	document.getElementById('scanner_msg').innerText='Scanner ON';
	document.getElementById('scanner_msg').className='scanner_on';
}

function doScannerOff()
{
	document.getElementById('scanner_msg').innerText='Scanner OFF';
	document.getElementById('scanner_msg').className='scanner_off';
}

function showProject(id_btn_show, id_btn_hide, id_div)
{
	var elem_div = document.getElementById(id_div);
	var elem_btn_show = document.getElementById(id_btn_show);
	var elem_btn_hide = document.getElementById(id_btn_hide);
	elem_div.style.display='';
	elem_btn_show.style.display='none';
	elem_btn_hide.style.display='';
}

function showRequest(id_btn_show, id_btn_hide, id_div)
{
	var elem_div = document.getElementById(id_div);
	var elem_btn_show = document.getElementById(id_btn_show);
	var elem_btn_hide = document.getElementById(id_btn_hide);
	elem_div.style.display='';
	elem_btn_show.style.display='none';
	elem_btn_hide.style.display='';
}

function showStoryOnIndex(id_btn_show, id_btn_hide, id_div, id_short_div)
{
	var elem_div = document.getElementById(id_div);
	var elem_short_div = document.getElementById(id_short_div);
	var elem_btn_show = document.getElementById(id_btn_show);
	var elem_btn_hide = document.getElementById(id_btn_hide);
	elem_short_div.style.display='none';
	elem_div.style.display='';
	elem_btn_show.style.display='none';
	elem_btn_hide.style.display='';
}

function hideProject(id_btn_show, id_btn_hide, id_div)
{
	var elem_div = document.getElementById(id_div);
	var elem_btn_show = document.getElementById(id_btn_show);
	var elem_btn_hide = document.getElementById(id_btn_hide);
	elem_div.style.display='none';
	elem_btn_hide.style.display='none';
	elem_btn_show.style.display='';
}

function hideStoryOnIndex(id_btn_show, id_btn_hide, id_div, id_short_div)
{
	var elem_div = document.getElementById(id_div);
	var elem_short_div = document.getElementById(id_short_div);
	var elem_btn_show = document.getElementById(id_btn_show);
	var elem_btn_hide = document.getElementById(id_btn_hide);
	elem_div.style.display='none';
	elem_short_div.style.display='';
	elem_btn_hide.style.display='none';
	elem_btn_show.style.display='';
}

function hideRequest(id_btn_show, id_btn_hide, id_div)
{
	var elem_div = document.getElementById(id_div);
	var elem_btn_show = document.getElementById(id_btn_show);
	var elem_btn_hide = document.getElementById(id_btn_hide);
	elem_div.style.display='none';
	elem_btn_hide.style.display='none';
	elem_btn_show.style.display='';
}

function showImgPreview(oPrv, oLink)
{
	var oPreviewSpan = document.getElementById(oPrv);
		
	// Create new image
	var newImg=document.createElement('img');
	newImg.src=oLink;
	newImg.className= 'previewimage';
	oPreviewSpan.appendChild(newImg);
	
	//add item name
	//var newImgText=document.createElement('font');
	//newImgText.className= 'previewimagetext';
	//newImgText.innerHTML = '<br/>&nbsp; na mehe asdasasdas asd asdasd asd ssas das das &nbsp;';
	//oPreviewSpan.appendChild(newImgText);
	
	newImg.onmouseover=function(){this.style.cursor='pointer';}
	newImg.onclick=function(){oPreviewSpan.removeChild(newImg);}
		
	return false;
}

function chkSponsorForm()
{
	
	var tFields = new Array('sponsor_surname','sponsor_name','sponsor_address','sponsor_postcode','sponsor_city','sponsor_country');
	var faults = 0;
	
	document.getElementById('err_message').style.display = 'none';
	
	for(i=0;i<6;i++)
	{
		document.getElementById('err_'+tFields[i]+'').style.display = 'none';
		if(document.getElementById(tFields[i]).value == '')
		{document.getElementById('err_'+tFields[i]+'').style.display = '';faults++;}
	}
	
	if (faults > 0)
	{
		document.getElementById('err_message').style.display = '';
		return false;
	}
	else {return true;}
}

function chkAorEmailForm()
{
	
	var tFields = new Array('aor_email_address_to','aor_email_address_from','aor_email_object');
	var faults = 0;
	
	document.getElementById('err_message').style.display = 'none';
	
	for(i=0;i<3;i++)
	{
		document.getElementById('err_'+tFields[i]+'').style.display = 'none';
		if(document.getElementById(tFields[i]).value == '')
		{document.getElementById('err_'+tFields[i]+'').style.display = '';faults++;}
	}
	
	if (faults > 0)
	{
		document.getElementById('err_message').style.display = '';
		return false;
	}
	else {document.getElementById('form_send_email_aor').submit();}
}

function chkSendMessageForm()
{
	
	var tFields = new Array('message_surname','message_name','message_contact','message_subject');
	var faults = 0;
	
	document.getElementById('err_message').style.display = 'none';
	
	for(i=0;i<4;i++)
	{
		document.getElementById('err_'+tFields[i]+'').style.display = 'none';
		if(document.getElementById(tFields[i]).value == '')
		{document.getElementById('err_'+tFields[i]+'').style.display = '';faults++;}
	}
	
	if (faults > 0)
	{	
		document.getElementById('err_message').style.display = '';
		return false;
	}
	else {return true;}
}

function chkCreateAccountForm()
{
	
	var tFields = new Array('Surname','Firstname','Address1','Postcode','City','ShopperEmail','ShopperUsername','ShopperPhone');
	var faults = 0;
	
	document.getElementById('span_err_message').style.display = 'none';
	
	for(i=0;i<8;i++)
	{
		document.getElementById('err_'+tFields[i]+'').style.display = 'none';
		if(document.getElementById(tFields[i]).value == '')
		{document.getElementById('err_'+tFields[i]+'').style.display = '';faults++;}
	}
	
	if (document.getElementById('ShopperEmail').value != document.getElementById('ShopperUsername').value)
	{alert ("Les deux emails ne correspondent pas, merci de les corriger."); return false;}
	
	if (faults > 0)
	{	
		
		document.getElementById('span_err_message').style.display = '';
		return false;
	}
	else
	{
		AJAXcreateCustomerAccount(document.getElementById('ShopperEmail').value);
		return false;
	}
}

function chkSubForm()
{
	document.getElementById('err_message_blank').style.display = 'none';
	document.getElementById('err_message').style.display = 'none';
	
	var the_name = document.getElementById('name').value;
	var the_email = document.getElementById('email').value;
	
	if (the_name == '' || the_email == '')
	{
		document.getElementById('err_message_blank').style.display = '';
		return false;	
	}
	else {return true;}
}

function validateFilePdf(filename)
{
	if (!/\.pdf$/i.test(filename))
	{
		document.getElementById('err_message_non_pdf').style.display = 'none';
		return false;
	}
	else{return true}
}


function chkPdfUpload()
{
	document.getElementById('err_message_blank').style.display = 'none';
	document.getElementById('err_message_non_pdf').style.display = 'none';
	
	var the_file_name = document.getElementById('upload').value;
	var the_subject = document.getElementById('subject').value;
	var pdf_test = validateFilePdf(the_file_name);
	
	if (the_file_name == '' || pdf_test == false)
	{
		document.getElementById('err_message_non_pdf').style.display = '';
		return false;	
	}
	else if (the_subject == '')
	{
		document.getElementById('err_message_blank').style.display = '';
		return false;
	}
	else {return true;}
}

function chkPdfDownlaodUpload()
{
	document.getElementById('err_message_non_pdf').style.display = 'none';
	
	var the_file_name = document.getElementById('upload').value;
	var pdf_test = validateFilePdf(the_file_name);
	
	if (the_file_name == '' || pdf_test == false)
	{
		document.getElementById('err_message_non_pdf').style.display = '';
		return false;	
	}
	else {return true;}
}

function chkSponsorReqForm()
{
	document.getElementById('err_message_blank_sponsor').style.display = 'none';
	document.getElementById('err_message_sponsor').style.display = 'none';
	
	var to_email = document.getElementById('to_email_sponsor_request').value;
	
	if (to_email == '')
	{
		document.getElementById('err_message_blank_sponsor').style.display = '';
		return false;	
	}
	else {return true;}
}

function chkDonationReqForm()
{
	document.getElementById('err_message_blank_donation').style.display = 'none';
	document.getElementById('err_message_donation').style.display = 'none';
	
	var to_email = document.getElementById('to_email_donation_request').value;
	
	if (to_email == '')
	{
		document.getElementById('err_message_blank_donation').style.display = '';
		return false;	
	}
	else {return true;}
}

function chkDonationForm()
{
	
	var tFields = new Array('donation_surname','donation_name','donation_address','donation_postcode','donation_city','donation_country');
	var faults = 0;
	
	document.getElementById('err_message').style.display = 'none';
	
	for(i=0;i<6;i++)
	{
		document.getElementById('err_'+tFields[i]+'').style.display = 'none';
		if(document.getElementById(tFields[i]).value == '')
		{document.getElementById('err_'+tFields[i]+'').style.display = '';faults++;}
	}
	
	if (faults > 0)
	{
		document.getElementById('err_message').style.display = '';
		return false;
	}
	else {return true;}
}

function chkPswdForm()
{
	document.getElementById('err_message_blank').style.display = 'none';
	document.getElementById('err_message_different').style.display = 'none';
	
	var pswd1 = document.getElementById('password1').value;
	var pswd2 = document.getElementById('password2').value;
	
	if (pswd1 == '' || pswd2 == '')
	{
		document.getElementById('err_message_blank').style.display = '';
		return false;	
	}
	else if(pswd1 != pswd2)
	{
		document.getElementById('err_message_different').style.display = '';
		return false;
	}
	else {return true;}
}


function chkNewUserForm()
{
	
	document.getElementById('err_message_user_not_added').style.display = 'none';
	document.getElementById('err_message').style.display = 'none';
	
	var username = document.getElementById('addusername').value;
	var realname = document.getElementById('addrealname').value;
	
	if (username == '' || realname == '')
	{
		document.getElementById('err_message_user_not_added').style.display = '';
		return false;	
	}
	else {return true;}
}


function chkAddNewsForm()
{
	
	document.getElementById('err_message').style.display = 'none';
	
	var newstitle = document.getElementById('newstitle').value;
	var newstext = document.getElementById('newstext').value;

	if (newstitle == '' || newstext == '')
	{
		document.getElementById('err_message').style.display = '';
		return false;	
	}
	else {return true;}
}

function chkAddLinkForm()
{
	
	document.getElementById('err_message').style.display = 'none';
	
	var linktitle = document.getElementById('linktitle').value;
	var linkurl = document.getElementById('linkurl').value;

	if (linktitle == '' || linkurl == '')
	{
		document.getElementById('err_message').style.display = '';
		return false;	
	}
	else {return true;}
}

function chkAddMessageForm()
{
	
	document.getElementById('err_message').style.display = 'none';
	
	var messagetitle = document.getElementById('messagetitle').value;
	var messagetext = document.getElementById('messagetext').value;
	
	if (messagetitle == '' || messagetext == '')
	{
		document.getElementById('err_message').style.display = '';
		return false;	
	}
	else {return true;}
}

function chkAddProductForm()
{
	
	var tFields = new Array('productName','sellPriceEx','sellTaxAmount','sellPriceInc');
	var faults = 0;
	
	document.getElementById('err_message').style.display = 'none';
	
	for(i=0;i<4;i++)
	{
		document.getElementById('err_'+tFields[i]+'').style.display = 'none';
		if(document.getElementById(tFields[i]).value == '')
		{document.getElementById('err_'+tFields[i]+'').style.display = '';faults++;}
	}
	
	if (faults > 0)
	{
		document.getElementById('err_message').style.display = '';
		return false;
	}
	else
	{
		//enable the inputs so that they are sent through the form
		document.getElementById('use_auto_tax_flag_sell').disabled = false;
		document.getElementById('costPriceEx').disabled = false;
		document.getElementById('costTaxAmount').disabled = false;
		document.getElementById('costPriceInc').disabled = false;
		document.getElementById('sellPriceEx').disabled = false;
		document.getElementById('sellTaxAmount').disabled = false;
		document.getElementById('sellPriceInc').disabled = false;
		
		return true;
	}

}

function chkAddCustomerForm()
{
	
	var tFields = new Array('surname','firstname','address1','postcode','city','shopperUsername');
	var faults = 0;
	
	document.getElementById('err_message').style.display = 'none';
	
	for(i=0;i<6;i++)
	{
		document.getElementById('err_'+tFields[i]+'').style.display = 'none';
		if(document.getElementById(tFields[i]).value == '' || document.getElementById(tFields[i]).value == 0)
		{document.getElementById('err_'+tFields[i]+'').style.display = '';faults++;}
	}
	
	if (faults > 0)
	{
		document.getElementById('err_message').style.display = '';
		return false;
	}
	else {document.getElementById('shopperUsername').disabled = false; return true;}

}


function chkAddsupplierForm()
{
	
	var tFields = new Array('surname','firstname','supplierEntityName');
	var faults = 0;
	
	document.getElementById('err_message').style.display = 'none';
	
	for(i=0;i<3;i++)
	{
		document.getElementById('err_'+tFields[i]+'').style.display = 'none';
		if(document.getElementById(tFields[i]).value == '' || document.getElementById(tFields[i]).value == 0)
		{document.getElementById('err_'+tFields[i]+'').style.display = '';faults++;}
	}

	if (faults > 0)
	{
		document.getElementById('err_message').style.display = '';
		return false;
	}
	else {return true;}

}

function showDeliveryAddress()
{
	document.getElementById('btnShowDelAddress').style.display = 'none';
	document.getElementById('addDeliveryAddressSpan').style.display = '';
}

function hideDeliveryAddress()
{
	document.getElementById('addDeliveryAddressSpan').style.display = 'none';
	document.getElementById('btnShowDelAddress').style.display = '';
}

function showSpan(span_name)
{
	document.getElementById(''+span_name+'').style.display = '';
}

function hideSpan(span_name)
{
	document.getElementById(''+span_name+'').style.display = 'none';
}

function makePopup(theUrl,w,h)
{	
	sH = screen.height;
	sW = screen.width;
	w = w+20;
	h = h+25;

	pos_x = (sW/2) - (w/2);
	pos_y = (sH/2) - (h/2);
	
	parametres="directories=no, location=no, menubar=no, resizable=yes, scrollbars=no, status=no, titlebar=no, toolbar=no, width="+w+", height="+h+", top="+pos_y+", left="+pos_x;
	window.open(""+theUrl+"","",""+parametres+"");
}

function makePopupBanner(theUrl,bid,w,h)
{	
	sH = screen.height;
	sW = screen.width;
	w = w+120;
	h = h+125;

	pos_x = (sW/2) - (w/2);
	pos_y = (sH/2) - (h/2);
	
	theUrl = theUrl+""+bid+"";
	
	parametres="directories=no, location=no, menubar=no, resizable=yes, scrollbars=no, status=no, titlebar=no, toolbar=no, width="+w+", height="+h+", top="+pos_y+", left="+pos_x;
	window.open(""+theUrl+"","Banner",""+parametres+"");
}

function doResetPW(p_id, p_name)
{
	var oForm = document.getElementById('userAdminForm');
	document.getElementById('userid').value = p_id;
	document.getElementById('username').value = p_name;
	oForm.action = '../process/process_reset_pw.php';
	return true;		
}
	
function doDeleteUser(p_id)
{
	var oForm = document.getElementById('userAdminForm');
	document.getElementById('userid').value = p_id;
	document.getElementById('username').value = '';
	oForm.action = '../process/process_delete_user.php';
	return confirm("are you sure you want to delete this user?");
}

function textareaMaxCharactersControl(p_textarea_id, p_max, p_counter)
{
	var oText = document.getElementById(p_textarea_id);
	var oCounter = document.getElementById(p_counter);
	var remainingChars = p_max-(oText.value.length);

	oCounter.innerText = remainingChars;
	if (oText.innerText.length > p_max){oText.value = oText.value.slice(0, p_max);}
}

function generateCode(p_bannerId, p_codeName, p_basedir, p_viewbutton)
{
	var oCode = document.getElementById(p_codeName);
	var oViewButton = document.getElementById(p_viewbutton);
		
	if (p_bannerId == -1){oCode.value = "";oViewButton.style.display = 'none';}
	else
	{
		oCode.value = "<script language=\'JavaScript\' src=\'"+p_basedir+"js/banners.js\'></script>";
		oCode.value += "<script language=\'JavaScript\'>jpcomBannerGenerator(\'"+p_bannerId+"\',\'"+p_basedir+"\');</script>";
		oCode.value += "<noscript><a href=\'http://www.jeparraine.com?bid="+p_bannerId+"\' target=\'_blank\'><img src=\'"+p_basedir+"images/adv/"+p_bannerId+".gif\' width=\'100%\' border=\'0\'></a></noscript>";
		oViewButton.style.display = '';
	}
}

function getWidthFromBannerId(p_bannerId)
{
	var theWidth = 0;
	theWidth = parseInt(p_bannerId.substr(0,3),10);
	return theWidth;
}

function getHeightFromBannerId(p_bannerId)
{
	var theHeight = 0;
	theHeight = parseInt(p_bannerId.substr(3,3),10);
	return theHeight;
}

function sendCommandToCart(p_action_id, p_product_id, p_qty)
{
	
	var oForm = document.getElementById('form_shop_cart_action');
	document.getElementById('actionID').value = p_action_id;
	document.getElementById('productID').value = p_product_id;
	p_qty = parseFloat(p_qty);
	document.getElementById('qty').value = p_qty;

	if (uIsInteger(p_qty) == false || p_qty < 0){alert('La quantit\xe9 choisie n\'est pas valide.'); return;}
	oForm.submit();
	return true;
}

function uIsInteger(vTest)
{
	var testResult = /^-?\d+$/.test(vTest);
	return testResult;
	
}

function submitRefund()
{
	var oForm = document.getElementById('form_refund');
	var refundValue = document.getElementById('total_refund_value').innerText;
	refundValue = parseFloat(refundValue);
	var refundMethodId = document.getElementById('refund_method_id').value;
	var orderValue = document.getElementById('order_total_value').value;
	
	if (refundValue == 0){alert("Le montant du remboursement ne peut \xeAtre nul.");return;}
	else if (refundMethodId == 0){alert("La m\xe9thode de remboursement n'est pas valide.");return;}
	else if (refundValue > orderValue)
	{
		var conf = confirm ('Etes-vous s\xfbr de faire un remboursement plus important que le montant initial de la commande ?');
		if (conf){oForm.submit();}else{return;}
	}
	else
	{
		var conf = confirm ('Etes-vous s\xfbr de faire un remboursement de '+refundValue+' euros ?');
		if (conf){oForm.submit();}else{return;}
	}
	return true;	
}

function updateRefundTotal()
{
	var oText = document.getElementById('total_refund_value');
	var orderTotalValue = document.getElementById('order_total_value').value;
	var itemList = document.getElementById('item_list').value;
	itemlist_array = itemList.split("|");
	var totalRefund = 0;
	
	for (var itemID in itemlist_array)
	{
		itemID_value = itemlist_array[itemID];
		item_value = document.getElementById('REFUND_VALUE_'+itemID_value).value;
		item_qty = document.getElementById('REFUND_QTY_'+itemID_value).value;
		item_value = parseFloat(item_value);
		item_value = Number(item_value);
		totalRefund = totalRefund+(item_value*item_qty);
	}
	
	if (orderTotalValue < totalRefund){oText.style.color='#822800';}else{oText.style.color='#888888';}
	oText.innerText = totalRefund;
}

function sendCommandExportProductSheet(p_export_type, p_product_id)
{
	var oForm = document.getElementById('form_export_product_sheet');
	document.getElementById('productID').value = p_product_id;
	document.getElementById('export_type').value = p_export_type;
	
	if (p_export_type == 'pdf'){oForm.action = '../process/process_pdf_product_sheet.php';oForm.target='_blank';}
	else if (p_export_type == 'csv' || p_export_type == 'sql'){oForm.action = '../process/process_export_product_sheet.php';oForm.target='iframe_process';}
	
	oForm.submit();
	return true;
}

function sendCommandExportProductList(p_export_type, p_category_id)
{
	var oForm = document.getElementById('form_export_product_list');
	document.getElementById('categoryID').value = p_category_id;
	document.getElementById('export_type').value = p_export_type;
	document.getElementById('include_disc').value = document.getElementById('incDisc').checked;
	
	if (p_export_type == 'pdf'){oForm.action = '../process/process_pdf_product_list.php';oForm.target='_blank';}
	else if (p_export_type == 'pdf_images'){oForm.action = '../process/process_pdf_product_list_images.php';oForm.target='_blank';}
	else if (p_export_type == 'csv' || p_export_type == 'sql'){oForm.action = '../process/process_export_product_list.php';oForm.target='iframe_process';}
	
	oForm.submit();
	return true;
}

function sendCommandExportProductStock(p_export_type, p_category_id)
{
	var oForm = document.getElementById('form_export_product_stock');
	document.getElementById('categoryID').value = p_category_id;
	document.getElementById('export_type').value = p_export_type;
	document.getElementById('include_disc').value = document.getElementById('incDisc').checked;
	
	if (p_export_type == 'pdf'){oForm.action = '../process/process_pdf_product_stock.php';oForm.target='_blank';}
	else if (p_export_type == 'csv' || p_export_type == 'sql'){oForm.action = '../process/process_export_product_stock.php';oForm.target='iframe_process';}
	
	oForm.submit();
	return true;
}

function sendCommandOurPick(p_our_pick_id, p_product_code, p_action)
{
	var oForm = document.getElementById('form_our_pick');
	document.getElementById('productCode').value = p_product_code;
	document.getElementById('ourpickID').value = p_our_pick_id;
	document.getElementById('actionID').value = p_action;

	oForm.submit();
	return true;
}

function sendCommandUseCreditAdmin(p_credit_id)
{
	var oForm = document.getElementById('form_use_credit');
	document.getElementById('CID').value = p_credit_id;
	oForm.submit();
	return true;
}

function sendCommandCartProduct(p_action)
{
	
	var oTarget = document.getElementById('iframe_process');
	var newProductCode = document.getElementById('newProductCode').value;
	var newQTY = document.getElementById('newQTY').value;
	var orderID = document.getElementById('newOrderID').value;
	
	if(newQTY <= 0){alert('Impossible d\'entrer une valeur n\xe9gative ou nulle.');return;}
	else if(newProductCode != ''){oTarget.src = '../process/process_admin_cart.php?newOrderID='+orderID+'&actionID='+p_action+'&newProductCode='+newProductCode+'&newQTY='+newQTY+'';}
	else{alert('Merci d\'entrer le Code du produit');return;}
}


function add2ProductQ(p_output)
{
	var oTarget = document.getElementById('iframe_process');
	var newProductCode = document.getElementById('add2QCode').value;
	var newQTY = document.getElementById('add2QQTY').value;
	
	if(newProductCode != ''){oTarget.src = '../process/process_admin_productQ.php?actionID=1&productCode='+newProductCode+'&QTY='+newQTY+'&output='+p_output;}
	else{alert('Merci d\'entrer le Code du produit');return;}
}

function add2TransferQ(p_output, p_user_id_from)
{
	var oTarget = document.getElementById('iframe_process');
	var transferProductCode = document.getElementById('transfer_product_code').value;
	var transferProductQty = document.getElementById('transfer_product_qty').value;
	var transferWhFrom = document.getElementById('transfer_wh_from').value;
	var transferWhTo = document.getElementById('transfer_wh_to').value;
	var transferProductCmt = document.getElementById('transfer_product_cmt').value;
	var userIdFrom = p_user_id_from;
	
	if(transferProductCode != ''){oTarget.src = '../process/process_admin_transferQ.php?actionID=1&productCode='+transferProductCode+'&productQty='+transferProductQty+'&transferWhFrom='+transferWhFrom+'&transferWhTo='+transferWhTo+'&userIdFrom='+userIdFrom+'&transfer_product_cmt='+transferProductCmt+'&output='+p_output;}
	else{alert('Merci d\'entrer le Code du produit');return;}
}

function sendCommandUpdateOrderStatus(current_status_id, new_status_id)
{
	//rules
	//2 -> 1, 2 -> 3, 3 -> 1, 3 -> 4, 3 -> 5, 4 -> 3, 4 -> 5, 5 -> 1, 5 -> 6, 6 -> 7, 7 -> 1
	
	//set the action to 2, which is the change of Status
	document.getElementById('actionID').value='2';
	var oOrderID = document.getElementById('OrderID');
	var oStatusID = document.getElementById('StatusID');
	var oTrackingCode = document.getElementById('TrackingCode');
	var oPaymentMethodID = document.getElementById('paymentMethodID');
	var oPaymentAmount = document.getElementById('PaymentAmount');
	var oPaymentRef = document.getElementById('PaymentRef');
	var oPaymentDTS = document.getElementById('PaymentDTS');
	var oOrderTotalValue = document.getElementById('OrderTotalValue');
	var oForm = document.getElementById('form_update_order');
	
	var orderBalance = oPaymentAmount.value - oOrderTotalValue.value;
		
	// 1 - CANCELLED ORDER
	if(new_status_id == 6)
	{
		//order can be cancelled only if it was on step 2,3, 4 or 5 (ID 2,3,5 or 4)
		if (current_status_id == 2 || current_status_id == 3 || current_status_id == 5 || current_status_id == 4)
		{
			var conf = confirm ('ATTENTION : Cette op\xe9ration est irr\xe9versible. Continuer ?');
			if (conf){document.getElementById('form_update_order').submit();}
			else{oStatusID.value = current_status_id;return;}
		}
		else{alert('Action non autoris\xe9e.');oStatusID.value = current_status_id; return;}
	}
	
	// 2 - WAITING FOR PAYMENT
	else if (new_status_id == 2)
	{
		alert('Action non autoris\xe9e. Le paiement a d\xe9j\xe0 \xe9t\xe9 enregistr\xe9.');oStatusID.value = current_status_id; return;
	}
	
	// 3 - PAYMENT RECEIVED 
	else if (new_status_id == 3)
	{
		// has to be in step 2 or 4 first (ID 2,5)
		if(current_status_id == 2 || current_status_id == 5)
		{
			//alert('DTS='+oPaymentDTS.value+' method='+oPaymentMethodID.value+' ref='+oPaymentRef.value+' payment='+oPaymentAmount.value+' total='+oOrderTotalValue.value+' balance='+orderBalance);
			
			//If payment has been taken (if DTS is != 0000-00-00 00:00:00
			if(oPaymentDTS.value != '' && oPaymentDTS.value != '0000-00-00 00:00:00')
			{
				//alert('payment taken');
				//if payment is not sufficient, DO NOT ACTION
				if (orderBalance != 0){alert('Action non autoris\xe9e. Le montant du paiement n\'est pas valide.');oStatusID.value = current_status_id; return;}
				//if order is balanced, then proceed (whether it is a refund or not)
				else{oStatusID.value = new_status_id; oForm.submit();}
			}
			
			//If payment has not been taken
			else
			{
				//alert('payment NOT taken');
				//If payment method has been entered
				if(oPaymentMethodID.value != 0)
				{
					//If order balance >= 0 (balanced or overpaid) apply payment with the amount and reference
					//the order status will then be automatically changed to 3 if payment is sucessfull
					if(orderBalance >= 0)
					{
						//alert('order balanced, paiement processing...'+oPaymentMethodID.value);
						AJAXpaymentUpdate(oOrderID.value);
					}
					else{alert('Action non autoris\xe9e. Le montant du paiement n\'est pas valide.');oStatusID.value = current_status_id;return;}
				}
				else{alert('Une m\xe9thode de paiement est obligatoire.');oStatusID.value = current_status_id;return;}
			}
		}
		else{alert('Action non autoris\xe9e.');oStatusID.value = current_status_id;return;}
	}
	
	// 4 - WAITING FOR STOCK
	else if (new_status_id == 5)
	{	
		// has to be in step 3 and total_order_value = payment_amount (balance == 0)
		if(current_status_id == 3)
		{
			//does not let any order with negative balance. Any positive balance will be issued with a credit.
			if(orderBalance < 0){alert('Action non autoris\xe9e. Le solde est n\xe9gatif.');oStatusID.value = current_status_id;return;}
			else
			{
				if (orderBalance > 0){var conf = confirm ('ATTENTION : le solde est positif. Un avoir de '+ orderBalance +' euros va \xeAtre enregistr\xe9 sur le compte client. Etez-vous certain de vouloir continuer ?');if (!conf){oStatusID.value = current_status_id;return;}}
				oStatusID.value = new_status_id; oForm.submit();
			}
		}
		else{alert('Action non autoris\xe9e.');oStatusID.value = current_status_id;return;}
	}
	
	// 5 - BEING PREPARED
	else if (new_status_id == 4)
	{	
		// has to be in step 3 or 4 first
		if(current_status_id == 3 || current_status_id == 5)
		{
			//does not let any order with negative balance. Any positive balance will be issued with a credit.
			if(orderBalance < 0){alert('Action non autoris\xe9e. Le solde est n\xe9gatif.');oStatusID.value = current_status_id;return;}
			else
			{
				if (orderBalance > 0){var conf = confirm ('ATTENTION : le solde est positif. Un avoir de '+ orderBalance +' euros va \xeAtre enregistr\xe9 sur le compte client. Etez-vous certain de vouloir continuer ?');if (!conf){oStatusID.value = current_status_id;return;}}
				oStatusID.value = new_status_id; oForm.submit();
			}
		}
		else{alert('Action non autoris\xe9e.');oStatusID.value = current_status_id;return;}
	}
	
	// 6 - READY FOR DESPATCH
	else if (new_status_id == 7)
	{	
		// has to be in step 5 first
		if(current_status_id == 4)
		{
			// check if all items have been packed or not
			AJAXreadyForDespatch(oOrderID.value);
		}
		else{alert('Action non autoris\xe9e. L\'\xe9tape 5 est obligatoire.');oStatusID.value = current_status_id;return;}
	}
	
	// 7 - COMPLETED ORDER
	else if(new_status_id == 1) 
	{
		// has to be in step 6 first
		if(current_status_id == 7)
		{
			if (oTrackingCode.value == '')
			{
				alert('Action non autoris\xe9e. Aucun num\xe9ro Colipost n\'a \xe9t\xe9 enregistr\xe9.');
				oStatusID.value = current_status_id; return;
			}
			else{AJAXupdateColipost(oOrderID.value);}
		}
		else{alert('Action non autoris\xe9e. L\'\xe9tape 6 est obligatoire.');oStatusID.value = current_status_id;return;}
	}
	
	//ELSE
	else{alert('Action non authoris\xe9e.');return;}
}

function sendCommandUpdateOrderShippingAddress(p_new_shipping_id)
{
	
	document.getElementById('actionID').value='7';
	document.getElementById('ShippingAddressID').value = p_new_shipping_id;
	document.getElementById('form_update_order').submit();
}

function changeGroupId(p_menuId,p_groupId)
{
	var oForm = document.getElementById('form_update_group_id');
	document.getElementById('menu_id').value = p_menuId;
	document.getElementById('group_id').value = p_groupId;
	oForm.submit();
	return true;
}

function usernameAutofill(p_email)
{
	var oUsername = document.getElementById('shopperUsername');
	var oCopyEmailFlag = document.getElementById('copy_email');

	if (oCopyEmailFlag.status == true){oUsername.value = p_email};
}

function manageCopyFlag(p_flag_value)
{
	var oUsername = document.getElementById('shopperUsername');
	var oUserEmail = document.getElementById('shopperEmail');

	if (p_flag_value == false){oUsername.disabled = false;}
	else
	{
		oUsername.disabled = true;
		oUsername.value = oUserEmail.value;
	}
}


function changeLocation(p_new_location, p_current_url, p_original_location_value)
{
	var oForm = document.getElementById('form_change_location');
	var oOriginalLocation = document.getElementById('userWarehouseICCODE');
	var new_location_array = p_new_location.split("|");
	var new_location_id = new_location_array[0];
	var new_location_code = new_location_array[1];
	
	var p_current_url = String(p_current_url);
	var target_url_array = p_current_url.split("?");
	var target_url = target_url_array[0];
	
	if(target_url.match("admin_dashboard.php"))
	{
		document.getElementById('loc_id').value = new_location_id;
		document.getElementById('loc_code').value = new_location_code;
		oForm.action = target_url;
		oForm.submit();
		return true;
	}
	else
	{
		alert('Le changement n\'est possible qu\'a partir de la console d\'administration');
		oOriginalLocation.value=p_original_location_value;
		return false;
	}
}

function calcTaxFromIncTax(obj)
{
	oTAXRate = document.getElementById(obj+'TaxRate');
	oEX = document.getElementById(obj+'PriceEx');
	oTAX = document.getElementById(obj+'TaxAmount');
	oINC = document.getElementById(obj+'PriceInc');
	oTAXRateFlag = document.getElementById('use_auto_tax_flag_'+obj);
	oTAX.disabled = true;
	oINC.value = oINC.value.replace(",",".");
	vTest = oINC.value;
	if (vTest.indexOf(".") == vTest.length-1){vTest = vTest.slice(0,vTest.length-1);}
	if (uIs2Decimal(vTest))
	{
		vEX = oINC.value / (1 + Number(oTAXRate.value)/100);
		oEX.value = vEX.toFixed(2);
		vTAX = Number(oINC.value)-vEX;
		oTAX.value = vTAX.toFixed(2);
		updateMargin();
	}
	else{oEX.value = 'invalid'; oTAX.value = 'invalid';}
}

function calcTaxFromExTax(obj)
{
	oTAXRate = document.getElementById(obj+'TaxRate');
	oEX = document.getElementById(obj+'PriceEx');
	oTAX = document.getElementById(obj+'TaxAmount');
	oINC = document.getElementById(obj+'PriceInc');
	oTAXRateFlag = document.getElementById('use_auto_tax_flag_'+obj);
	oTAX.disabled = true;
	oEX.value = oEX.value.replace(",",".");
	vTest = oEX.value;
	if (vTest.indexOf(".") == vTest.length-1){vTest = vTest.slice(0,vTest.length-1);}
	
	if (uIs2Decimal(vTest))
	{
		vTAX = Number(oEX.value * oTAXRate.value/100);
		oTAX.value = vTAX.toFixed(2);
		vINC = Number(oEX.value) + vTAX;
		oINC.value = vINC.toFixed(2);
		updateMargin();
	}
	else{oINC.value = 'invalid'; oTAX.value = 'invalid';}
}

function calcIncFromExAndTax(obj, field)
{
	oTAXRate = document.getElementById(obj+'TaxRate');
	oEX = document.getElementById(obj+'PriceEx');
	oTAX = document.getElementById(obj+'TaxAmount');
	oINC = document.getElementById(obj+'PriceInc');
	oINC.disabled = true;
	
	if(field == 'PriceEx')
	{
		oEX.value = oEX.value.replace(",",".");
		oTAX.value = oTAX.value.replace(",",".");
		vTestEx = oEX.value;
		vTestTax = oTAX.value;
		
		if (vTestEx.indexOf(".") == vTestEx.length-1){vTestEx = vTestEx.slice(0,vTestEx.length-1);}
		if (vTestTax.indexOf(".") == vTestTax.length-1){vTestTax = vTestTax.slice(0,vTestTax.length-1);}
		
		if (uIs2Decimal(vTestEx) && uIs2Decimal(vTestTax))
		{
			vINC = Number(oEX.value) + Number(oTAX.value);
			oINC.value = vINC.toFixed(2);
			vTAXRate = Number(oTAX.value) / Number(oEX.value) * 100;
			oTAXRate.value = vTAXRate.toFixed(2);
		}
		else{oINC.value = 'invalid';}
	}
	else if(field == 'TaxAmount')
	{
		oEX.value = oEX.value.replace(",",".");
		oTAX.value = oTAX.value.replace(",",".");
		vTestEx = oEX.value;
		vTestTax = oTAX.value;
		
		if (vTestEx.indexOf(".") == vTestEx.length-1){vTestEx = vTestEx.slice(0,vTestEx.length-1);}
		if (vTestTax.indexOf(".") == vTestTax.length-1){vTestTax = vTestTax.slice(0,vTestTax.length-1);}
		
		if (uIs2Decimal(vTestEx) && uIs2Decimal(vTestTax))
		{
			vINC = Number(oEX.value) + Number(oTAX.value);
			oINC.value = vINC.toFixed(2);
			vTAXRate = Number(oTAX.value) / Number(oEX.value) * 100;
			oTAXRate.value = vTAXRate.toFixed(2);
		}
		else{oTAXRate.value = 'invalid'; oINC.value = 'invalid';}	
	}
	
}

function handlerExTax(obj)
{
	oTAXRateFlag = document.getElementById('use_auto_tax_flag_'+obj);
	if(oTAXRateFlag.checked == true){calcTaxFromExTax(obj);updateMargin();}
	else{calcIncFromExAndTax(obj,'PriceEx');updateMargin();}
}

function handlerIncTax(obj)
{
	oTAXRateFlag = document.getElementById('use_auto_tax_flag_'+obj);
	if(oTAXRateFlag.checked == true){calcTaxFromIncTax(obj);updateMargin();}
}

function handlerTax(obj)
{
	oTAXRateFlag = document.getElementById('use_auto_tax_flag_'+obj);
	if(oTAXRateFlag.checked == false){calcIncFromExAndTax(obj,'TaxAmount');updateMargin();}
}

function autoManualSwitch(obj, state)
{
	if(state == true)
	{
		oTAX = document.getElementById(obj+'TaxAmount');
		oINC = document.getElementById(obj+'PriceInc');
		oEX = document.getElementById(obj+'PriceEx');
		oINC.disabled = false;
		oTAX.disabled = true;
		
		oTAXRate = document.getElementById(obj+'TaxRate');
		oDefaultTAXRate = document.getElementById('default_tax_rate');
		vTAXRate = Number(oDefaultTAXRate.innerHTML)*100;
		oTAXRate.value = vTAXRate.toFixed(2);
		oTAX.value = oEX.value * vTAXRate/100;
		vINC = Number(oEX.value) + Number(oTAX.value);
		oINC.value = vINC.toFixed(2);
		updateMargin();
	}
	else
	{
		oTAX = document.getElementById(obj+'TaxAmount');
		oINC = document.getElementById(obj+'PriceInc');
		oTAX.disabled = false;	
		oINC.disabled = true;
	}
}

function updateMargin()
{
	oMarginValue = document.getElementById('margin_value');
	oMarginPercent = document.getElementById('margin_percent');
	oCostInc = document.getElementById('costPriceInc');
	oSellEx = document.getElementById('sellPriceEx');
	vMarginVal = Number(oSellEx.value)-Number(oCostInc.value);
	oMarginValue.innerHTML = vMarginVal.toFixed(2);
	vMarginPercent = (vMarginVal/Number(oSellEx.value))*100;
	oMarginPercent.innerHTML = vMarginPercent.toFixed(2);
}

function calSellPriceWithMargin()
{
	oManualMargin = document.getElementById('manualSellMargin');
	oCostInc = document.getElementById('costPriceInc');
	oSellEx = document.getElementById('sellPriceEx');
	oSellInc = document.getElementById('sellPriceInc');
	oSellTaxAmount = document.getElementById('sellTaxAmount');
	oTAXRate = document.getElementById('sellTaxRate');
	
	vSellPriceEx = Number(oCostInc.value)/(1-Number(oManualMargin.value/100));
	oSellEx.value = vSellPriceEx.toFixed(2);
	
	if(oSellEx.value != 0)
	{
		calcTaxFromExTax('sell');
		oSellTaxAmount.disabled=false;
	}
	else{oSellEx.value=0;oSellTaxAmount.value=0;updateMargin();}
}

function uIs2Decimal(vTest)
{
	var testResult = /^\d*(\.\d{1,2})?$/.test(vTest);
	return testResult;
}

function uIsAlphaNumericDashUnderscore(vTest)
{
	var regex=/^[0-9A-Za-z\-\_]+$/;
	var testResult = regex.test(vTest);
	return testResult;
}