/*
Ajax.js

Contains functions used by the Variant Selector.


*/

function changeDropDown(stockprefix, prefix, prodID, ddOld, selectedValue, ddlToUpdate, propertyindex)
{
	if(ddlToUpdate == '')
	{
		//last drop down, populate spans
		var varProp1 = '', varProp2 = '', varProp3 = '', varProp4 = ''; 
		var dropdown;
		var upgrade;
		var upgradeID;
		if(document.getElementById(prefix + 'ddlVarProp1'))
		{
			dropdown = document.getElementById(prefix + 'ddlVarProp1');
			varProp1 = dropdown.options[dropdown.selectedIndex].value
		}
		if(document.getElementById(prefix + 'ddlVarProp2'))
		{
			dropdown = document.getElementById(prefix + 'ddlVarProp2');
			varProp2 = dropdown.options[dropdown.selectedIndex].value
		}
		if(document.getElementById(prefix + 'ddlVarProp3'))
		{
			dropdown = document.getElementById(prefix + 'ddlVarProp3');
			varProp3 = dropdown.options[dropdown.selectedIndex].value
		}
		if(document.getElementById(prefix + 'ddlVarProp4'))
		{
			dropdown = document.getElementById(prefix + 'ddlVarProp4');
			varProp4 = dropdown.options[dropdown.selectedIndex].value
		}
		
		

		VariantSelector.PopulateSpans(stockprefix, prefix, prodID, varProp1, varProp2, varProp3, varProp4, eval('isUpgradeProduct'+prodID), eval('upgradeParent' + prodID), changeSpan_CallBack);
	}
	else
	{
		var selectedItem = ddOld.options[ddOld.selectedIndex].value;
		VariantSelector.PopulateDropDown(stockprefix, prefix, prodID, selectedItem, ddlToUpdate, propertyindex, changeDropDown_CallBack);
	}
}

function changeDropDown_CallBack(response)
{
	if(response.error != null)
	{
		alert(response.error);
		return;
	}
	
	var ddlToPopulate = document.getElementById(response.value[0]);
	ddlToPopulate.options.length = 0;
	ddlToPopulate.options[0] = new Option("Please select here", "-1", false, true);
	
	for(i=1; i<response.value.length; i++)
		ddlToPopulate.options[i] = new Option(response.value[i].subString(response.value[i].indexOf("::")+2), response.value[i], false, false);

}

function changeSpan_CallBack(response)
{
	if(response.error != null)
	{
		alert(response.error);
		return;
	}
	
	
	//first thing back is the prefix id hierarchy of the control
	var arrprefix = response.value[0].split("|");
	var arrstockprefix = response.value[1].split("|");
	

	for(i=2; i<response.value.length-2; i++)
	{
		var arrbits = response.value[i].split("|");
		if(document.getElementById(arrprefix[1] + arrbits[0]) && arrbits[0] != 'prefix')
		{
			document.getElementById(arrprefix[1] + arrbits[0]).innerText = arrbits[1];
		}
	}
	
	
	var arrbits = response.value[response.value.length-1].split("|");
	document.getElementById(arrstockprefix[1].replace(/:/g, "_") + "_" + arrbits[0]).value = arrbits[1];
	arrbits = response.value[response.value.length-2].split("|");
	document.getElementById(arrstockprefix[1].replace(/:/g, "_") + "_" +  arrbits[0]).value = arrbits[1];
	
	//put the product code in the hidden textbox
	var arrbits = response.value[2].split("|");
	var txtID = document.getElementById(arrprefix[1] + 'txtVariantID')
	txtID.value = arrbits[1];


	getStock(arrstockprefix[1], 'hidProductID', 'hidVariantID');
	
	
}


function getStock(txtBox, textboxprodid,textboxvarid)
{	
	//var ctrlPrefix = txtBox.substring(0, txtBox.lastIndexOf("_")+1);
	var ctrlPrefix = txtBox.replace(/:/g, "_") + "_" ;
	var prodtxtbox = document.getElementById(ctrlPrefix + textboxprodid);
	var vartxtbox = document.getElementById(ctrlPrefix +  textboxvarid);
		
		
	StockItem.getStockItem(ctrlPrefix, prodtxtbox.value, vartxtbox.value, getStock_CallBack);
}

function getStock_CallBack(response)
{
	if(response.error != null)
	{
		alert(response.error);
		return;
	}
	
	document.getElementById(response.value[0]).value = response.value[1];
	if(response.value[1] == 0)
	{
		if (response.value[2])
		{
			document.getElementById(response.value[2] + 'stockMessage').style.display="none";
		}
		if (document.getElementById('ctrlAddToBasket'))
		{
			document.getElementById('ctrlAddToBasket').style.display='none';
		}
	}
	else
	{
		if (document.getElementById('ctrlAddToBasket'))
		{
			document.getElementById('ctrlAddToBasket').style.display="block";
		}
	}
	
}

/*
	This function should be overloaded in the page if you want to 
	validate a text box
*/
function validate(txtbox)
{
	return true;
}

	/*
		Call back function for the validate card number
		An array of elements which drive the availability of the 
		other controls
	*/
	function validateCardNumber_CallBack(response)
	{
		if(response.error != null)
		{
			alert(response.error);
			return;
		}
		
		/*response is an array
		{	
			cardtype.Trim(), 
			numberlength.ToString(), 
			issueNumber.ToString(),
			issueLength.ToString() ,
			validFrom.ToString()
		}
		*/
		if(response.value[0] != undefined)
		{
			if(document.getElementById('ucPaymentDetails:ddlCards'))
			{
				var ddlCardSelector = document.getElementById('ucPaymentDetails:ddlCards');
				for(i=0; i<ddlCardSelector.options.length; i++)
				{
					if(ddlCardSelector.options[i].value.toLowerCase() == response.value[0].toLowerCase())
					{
						ddlCardSelector.options[i].selected = true;
						break;
					}
				}
			}
		}
		if(response.value[1] != undefined)
		{
			//number length
		}
		if(response.value[2] != undefined)
		{
			//issue number
			if(document.getElementById('dtIssueNumber') && document.getElementById('ddIssueNumber'))
			{
				if(response.value[2].toLowerCase() == 'false')
				{
					document.getElementById('dtIssueNumber').style.display = 'none';
					document.getElementById('ddIssueNumber').style.display = 'none';
				}
				if(response.value[2].toLowerCase() == 'true')
				{
					document.getElementById('dtIssueNumber').style.display = "block";
					document.getElementById('ddIssueNumber').style.display = "block";
				}
			}
		}
		if(response.value[3] != undefined)
		{
			//issue length
			if(document.getElementById('ucPaymentDetails:txtIssueNumber'))
			{
				document.getElementById('ucPaymentDetails:txtIssueNumber').maxLength = response.value[3];
			}
		}
		if(response.value[4] != undefined)
		{
			//valid from
			if(document.getElementById('dtStartDate') && document.getElementById('ddStartDate'))
			{
				if(response.value[4].toLowerCase() == 'false')
				{
					document.getElementById('dtStartDate').style.display = 'none';
					document.getElementById('ddStartDate').style.display = 'none';
				}
				if(response.value[4].toLowerCase() == 'true')
				{
					document.getElementById('dtStartDate').style.display = "block";
					document.getElementById('ddStartDate').style.display = "block";
				}
			}
		}
	}
	
	
	function choosePaymentMethod(type)
	{
		if(type == 'card')
		{
			if(document.getElementById('plcCard'))
			{
				document.getElementById('plcCard').style.display = "block";
				document.getElementById('plcCheque').style.display = "none";
			}
		}
		else if (type == 'cheque')
		{
			if(document.getElementById('plcCheque'))
			{
				document.getElementById('plcCheque').style.display = "block";
				document.getElementById('plcCard').style.display = "none";
			}
		}
	}