/******************************************************************************
* gshpJsBasket.js
*******************************************************************************
Fonctions js du processus de commande
*******************************************************************************
*                                                                             *
* Copyright 2006									                          *
*                                                                             *
******************************************************************************/

//	-------------------------------------------------------------------------
//	gshpChangeQuantity
//	Update of quantity
//	-------------------------------------------------------------------------
function gshpChangeQuantity(position)
{
	var form = document.getElementById("form_quantityForm_" + position);
	var input = document.getElementById("ctrl_quantity_" + position);
	if ((form == null) || (input == null)) {
		return false;
	}
	var quantity = parseInt(input.value, 10);
	if (isNaN(quantity)) {
		alert(objThesaurus.translate("gshpInvalidNewQuantity"));
		return false;
	}
	form.submit();
	return false;
}

//	-------------------------------------------------------------------------
//	gshpSetCarrierPrice
//	Display of shipping price
//	- radio is html element or radio id
//	-------------------------------------------------------------------------
function gshpSetCarrierPrice(radio, cost, vatCost, costDescr, zone, label)
{
	var shippingCost = document.getElementById("shippingCost");
	if (shippingCost != null)
		shippingCost.value = cost;
	var shippingVatCost = document.getElementById("shippingVatCost");
	if (shippingVatCost != null)
		shippingVatCost.value = vatCost;
	var shippingCostDescr = document.getElementById("shippingCostDescr");
	if (shippingCostDescr != null)
		shippingCostDescr.value = costDescr;
	var shippingZone = document.getElementById("shippingZone");
	if (shippingZone != null)
		shippingZone.value = zone;
	var shippingLabel = document.getElementById("shippingLabel");
	if (shippingLabel != null)
		shippingLabel.value = label;
	var fatherSpan = document.getElementById("fullShippingPrice");
	if (fatherSpan == null) return;
	fatherSpan.style.display = "inline";
	var span = document.getElementById("shippingPrice");
	if (span != null)
		span.innerHTML = formatCurrency(cost);
	var span = document.getElementById("shippingVatPrice");
	if (span != null)
		span.innerHTML = formatCurrency(vatCost);

}

//	-------------------------------------------------------------------------
//	gshpCheckShippingForm
//	Checking of shipping form
//	-------------------------------------------------------------------------
function gshpCheckShippingForm(inputName)
{
	var carriers = document.forms.shipping.elements[inputName];
	if (carriers == null) return false;
	if (typeof(carriers.length) == "number") {
		for (var i=0; i<carriers.length; i++) {
			if (carriers[i].checked) return true;
		}
	} else {
		if (carriers.checked) return true;
	}
	alert(objThesaurus.translate("gshpChooseCarrier"));
	return false;
}

//	-------------------------------------------------------------------------
//	gshpCheckPaymentForm
//	Checking of payment form
//	-------------------------------------------------------------------------
function gshpCheckPaymentForm()
{
	var payments = document.forms.payment.elements.payment;
	if (payments == null) return false;
	if (typeof(payments.length) == "number") {
		for (var i=0; i<payments.length; i++) {
			if(payments[i].checked) return true;
		}
	} else {
		if (payments.checked) return true;
	}
	alert(objThesaurus.translate("gshpChoosePayment"));
	return false;
}

//	-------------------------------------------------------------------------
//	Address manager
//	Selection of addresses
//	-------------------------------------------------------------------------
function GshpAddressManager(addressEditorUrl, clientEditorUrl, addressList)
{
	this._addressEditorUrl = addressEditorUrl;
	this._clientEditorUrl = clientEditorUrl;
	this._addressMap = {};
	for(var i=0;i<addressList.length;i++) {
		var record = addressList[i].split("|");
		this._addressMap[record[0]] = record;
	}
	this._states = {"invoiceAddress":"","shippingAddress":""}

}
GshpAddressManager.prototype.protectCData = function(str)
{
	if(str == null) return "";
	str = str + "";
	str = str.replace(/&/g, "&amp;");
	str = str.replace(/</g, "&lt;");
	str = str.replace(/>/g, "&gt;");
	return str;
}
GshpAddressManager.prototype.onchange = function(select)
{
	var name = select.name;
	var value = select.value;
	this.change(name, value);
	this.submit();
}
GshpAddressManager.prototype.change = function(name, value)
{
	if(value == "new") {
		showModalWindow(this._addressEditorUrl, "addressEditor", "400", "400");
		return;
	}
	var addressLink = document.getElementById(name + "Link");
	if(addressLink != null) {
		var display = ((value == "") || (value == "0")) ? "none" : "block";
		addressLink.parentNode.style.display = display;
	}
	var record = this._addressMap[value];
	if(record == null) return;
	var recordTitle = this.protectCData(record[1]);
	var recordSubTitle = this.protectCData(record[2]);
	if ((recordTitle == "") || (recordSubTitle == "")) {
		recordTitle = recordTitle || recordSubTitle;
		recordSubTitle = "";
	}
	var addressTitle = document.getElementById(name + "Title");
	if(addressTitle != null) addressTitle.innerHTML = recordTitle;
	var addressSubTitle = document.getElementById(name + "SubTitle");
	if(addressSubTitle != null) {
		addressSubTitle.innerHTML = recordSubTitle;
		addressSubTitle.style.display = (recordSubTitle != "") ? "block" : "none";
	}
	var addressLines = document.getElementById(name + "Lines");
	if(addressLines != null) addressLines.innerHTML = this.protectCData(record[3].replace(/\n+$/,"")).replace(/\n/g, "<br/>");
	var addressCity = document.getElementById(name + "City");
	if(addressCity != null) addressCity.innerHTML = this.protectCData(record[4]);
	var addressCountry = document.getElementById(name + "Country");
	if(addressCountry != null) addressCountry.innerHTML = this.protectCData(record[5]);
	this._states[name] = value;
	this._lastAddress = name;
}

GshpAddressManager.prototype.editAddress = function(a)
{
	var id = a.id;
	var lastAddress = this._lastAddress = (id.indexOf("shipping") >= 0) ? "shippingAddress" : "invoiceAddress";
	var state = this._states[lastAddress];
	showModalWindow(this._addressEditorUrl + "?address=" + state, "addressEditor", "400", "400");
	return false;
}
GshpAddressManager.prototype.editClient = function(client)
{
	showModalWindow(this._clientEditorUrl + "?client=" + client, "addressEditor", "800", "400");
	return false;
}


GshpAddressManager.prototype.submit = function()
{
	document.forms.addressesForm.submitButton.click();
}

GshpAddressManager.prototype.update = function()
{
	this.submit();
}

GshpAddressManager.prototype.create = function(oid)
{
	var select = document.getElementById(this._lastAddress + "Select");
	var option = document.createElement("option");
	option.value = oid;
	select.options.add(option);
	select.selectedIndex = select.options.length - 1;
	this.submit();
}

GshpAddressManager.prototype.remove = function(oid)
{
	var select = document.getElementById(this._lastAddress + "Select");
	select.selectedIndex = 0;
	this.submit();
}

