var xmlrequest = function() {
	this.xmldom = "Microsoft.XMLDOM";
}
// ==========================================================================*/
// functie :create_Request_Descriptor
// Dit stuk XML komt uit deze functie 
// Haal de descriptor op ====================================================*/
/*
		<P3_XMLHTTP_Request>
			<command command_name=initpws>
				<parameter parameter_name=PWS_ToolName>
				initpws
				</parameter>
			</command>
		</P3_XMLHTTP_Request>
		
// ==========================================================================*/
xmlrequest.prototype.create_Request_Descriptor = function () {
	
	var xml = this.addNode('P3_XMLHTTP_Request')
	
	var command = this.addNode('command', xml)
	command.setAttribute('command_name', 'initpws')
	
	var parameter = this.addNode('parameter', command)
	parameter.setAttribute('parameter_name', 'PWS_ToolName')
	parameter.text	= 'initpws';
	
	return xml;
}

xmlrequest.prototype.get_BouwsteenProperties = function (id) {
	
	var xml = this.addNode('P3_XMLHTTP_Request')
	
	var command = this.addNode('command', xml)
	command.setAttribute('command_name', 'get_bouwsteenproperties')
	
	var parameter = this.addNode('data_part', xml)
	var bsid = this.addNode('bouwsteenid', parameter)
	bsid.setAttribute('key', 'bouwsteenid')
	bsid.setAttribute('value', id)
	//alert('[43]create_BouwsteenProperties\n' + xml.xml)
	return xml;
}

xmlrequest.prototype.set_BouwsteenProperties = function (arr) {	
	var xml = this.addNode('P3_XMLHTTP_Request')
	var command = this.addNode('command', xml)
	command.setAttribute('command_name', 'set_bouwsteenproperties')
	var data = this.addNode('data_part', xml)
	for (el in arr) {
		var parameter = this.addNode(el, data);
		parameter.setAttribute('key', el);
		parameter.setAttribute('value', arr[el]);
	}
	//alert('[57]save_BouwsteenProperties\n' + xml.xml)
	return xml;
}

xmlrequest.prototype.del_BouwsteenProperties = function (arr) {	
	var xml = this.addNode('P3_XMLHTTP_Request')
	var command = this.addNode('command', xml)
	command.setAttribute('command_name', 'del_bouwsteenproperties')
	var data = this.addNode('data_part', xml)
	for (el in arr) {
		var parameter = this.addNode(el, data);
		parameter.setAttribute('key', el);
		parameter.setAttribute('value', arr[el]);
	}
	//alert('[71]delete_BouwsteenProperties\n' + xml.xml)
	return xml;
}

// ==========================================================================*/
// functie :create_Wizard_Request
// Dit stuk XML komt uit deze functie 
/*
		<P3_XMLHTTP_Request>
		<commands>
			<command new_wizard_action="" current_wizard_step=""/>
		</commands>
		<parameters>
			<parameter parameter_name="co__0">1</parameter>
			<parameter parameter_name="co__1">1</parameter>
			<parameter parameter_name="co__2">2</parameter>
			<parameter parameter_name="co__3">3</parameter>
		</parameters>
	</P3_XMLHTTP_Request>
// ==========================================================================*/
xmlrequest.prototype.create_Wizard_Request = function (new_wizard_action, theWizardValues ) {
	var xml = this.addNode('P3_XMLHTTP_Request')
	var parameters = this.addNode('parameters', xml)
	var command = this.addNode('command', parameters)
	command.setAttribute('new_wizard_action', new_wizard_action);
	if( theWizardValues ) {
		for (component_data_name in theWizardValues ) {
			var parameter = this.addNode('parameter', parameters);
			parameter.setAttribute('parameter_name', component_data_name);
			parameter.text	= theWizardValues[component_data_name];
		}
	}
	return xml;
}

// =========================================================================*/	
//  core functies
// =========================================================================*/	
// functie addNode
xmlrequest.prototype.addNode = function (nodeName, parentNode) {
	var xmlObj = new ActiveXObject (this.xmldom);
	var node = xmlObj.createElement(nodeName);
	if ( !parentNode ) 
		parentNode = xmlObj;
	parentNode.appendChild(node);
	return node;
}

