var wsCallID;
var key = "CustomerID";
var instanceCommandType = "";

function Init() {
	var webServicePath =  "WebServices/CustomersWS.asmx?WSDL"; 
	webService.useService(webServicePath,"wsSend");
}

function GetCustomerData(customerID) {
	ChangeCursor("wait");
    wsCallID = webService.wsSend.callService(onWSGetCustomerData,
               "GetCustomerData", customerID);
}

function onWSGetCustomerData(result) {
	if (result.error) {
		// Pull the error information from the result.errorDetail properties
		var xfaultcode   = result.errorDetail.code;
		var xfaultstring = result.errorDetail.string;
		var xfaultsoap   = result.errorDetail.raw;
		alert("Error returned from Web Service: " + xfaultcode + " " + xfaultstring);
	} else if(!result.error) {  
		var returnData	= new ActiveXObject("MSXML2.DOMDocument"); 
		returnData.async = false;
		returnData.documentElement = result.value;
		BindCustomerData(returnData);
        returnData = null;
    }
	ChangeCursor("default");
}

function BindCustomerData(xmlData) {
	document.all.spanMessage.innerText = "";
	document.all.tblCustomerData.style.display = "block";
	document.all.btnSubmitInsert.disabled = true;
	document.all.btnSubmitUpdate.disabled = false;
	document.all.btnSubmitDelete.disabled = false;
	var customers = xmlData.selectSingleNode("//CustomersWS");
	if (customers != null) {
		for (var i=0;i<customers.childNodes.length;i++) {
		    var childNode = customers.childNodes(i);
		    if (document.all("dc" + childNode.nodeName)) {
				document.all("dc" + childNode.nodeName).value = childNode.text;
			}
		}
	}
}

function GenerateCustomerData(commandType) {
    instanceCommandType = commandType;
	var inputs = document.all.tags("INPUT");
	var xmlDoc = new ActiveXObject("MSXML2.DOMDocument"); 
	var customersNode = xmlDoc.createElement("CustomersWS");
	customersNode.setAttribute("commandType",commandType);
	xmlDoc.appendChild(customersNode);
	var name,val,textbox,elemNode,textNode;
	for (var i=0;i<inputs.length;i++) {
		textBox = inputs.item(i);
		if (textBox.id != null && textBox.id != "" && textBox.id.indexOf("dc") == 0) {
			name = textBox.id.substring(2,textBox.id.length);
			val = textBox.value;
			elemNode = xmlDoc.createElement(name);
			//Identify the key
			if (name == key) {
				elemNode.setAttribute("key","true");
				elemNode.setAttribute("keyType","string");
			}
			
			textNode = xmlDoc.createTextNode(val);
			elemNode.appendChild(textNode);
			customersNode.appendChild(elemNode);
		}
	}	
	if (commandType == "delete") {
		var lastChance = confirm("Are you sure you want to delete this record?");
		if (!lastChance) return false;
	}
	//Take this out for your application
	if (commandType != "delete") {
		UpdateCustomerData(xmlDoc);
	} else {
		alert("Delete functionality has been disabled.");
	}

}

function ClearCustomerData() {
	//Clear out textboxes
	var inputs = document.all.tags("INPUT");
	for (var i=0;i<inputs.length;i++) {
		textBox = inputs.item(i);
		if (textBox.id.indexOf("dc") == 0) {
			textBox.value = "";
		}
	}
	document.all.spanMessage.style.display = "none";
	document.all.tblCustomerData.style.display = "block";
	document.all.btnSubmitInsert.disabled = false;
	document.all.btnSubmitUpdate.disabled = true;
	document.all.btnSubmitDelete.disabled = true;
}

function UpdateCustomerData(xmlDocument) {
	ChangeCursor("wait");
    wsCallID = webService.wsSend.callService(onWSUpdateCustomerData,
               "UpdateCustomerData", xmlDocument);
}

function onWSUpdateCustomerData(result) {
    var status = false;
	if (result.error) {
		// Pull the error information from the result.errorDetail properties
		var xfaultcode   = result.errorDetail.code;
		var xfaultstring = result.errorDetail.string;
		var xfaultsoap   = result.errorDetail.raw;
		alert("Error returned from Web Service: " + xfaultcode + " " + xfaultstring);
	} else if(!result.error) {  
		status = result.value;
    }
    document.all.spanMessage.style.display = "block";
    if (status) {
		document.all.spanMessage.innerText = "Data was successfully updated!";
		if (instanceCommandType == "delete" || instanceCommandType == "insert") 
		     location.href="Customers.aspx";
	} else {
		document.all.spanMessage.innerText = "Data was NOT successfully updated!";
	}
    document.all.tblCustomerData.style.display = "none";
	ChangeCursor("default");
}

function ChangeCursor(style) {
	document.body.style.cursor = style; 	
}
