var ajax_user = '';
var ajax_password = '';

function setWSAuthInfo(user, pwd)
{
	ajax_user = user;
	ajax_password = pwd;
}

function responseIsSuccess(status)
{
    return status == undefined
        || status == 0 
        || (status >= 200 && status < 300);
}

function responseIsFailure(status) 
{
    return !responseIsSuccess(status);
}

function serviceOperation(operation, query_id /* e.g. ByIDs */, query_column /* e.g. IDs */, column_type /* e.g. xsd:long[1] */, query_params) {
	
	var nsuri = SOAP.URI;
	var baseuri = 'urn:theplatform-com:v4/base/';
	
	var envelope = new SOAP.Envelope();
	envelope.set_attribute(new WS.QName('soapenc', SOAP.URI, 'xmlns'), 'http://schemas.xmlsoap.org/soap/encoding/');
	envelope.set_attribute(new WS.QName('xsd', SOAP.URI, 'xmlns'), 'http://www.w3.org/2001/XMLSchema');
	envelope.set_attribute(new WS.QName('xsi', SOAP.URI, 'xmlns'), SOAP.XSI);
	envelope.set_attribute(new WS.QName('types', SOAP.URI, 'xmlns'), 'urn:theplatform-com:v4/wsdl/encodedTypes');
	envelope.set_attribute(new WS.QName('tns', SOAP.URI, 'xmlns'), 'urn:theplatform-com:v4/wsdl/');

	// SOAP Header
	var header = envelope.create_header();
	var job_header = header.create_child(new WS.QName('JobHeader', baseuri, 'q1'));
	job_header.set_attribute(new WS.QName('id'),'h_id1');

	// SOAP Body
	var body = envelope.create_body();
	var op = body.create_child(new WS.QName(operation, baseuri, 'q1'));
	
	// query ref
	op.create_child(new WS.QName('query', nsuri)).set_attribute(new WS.QName('href'), '#id1');

	var query_el = body.create_child(new WS.QName('Query', baseuri, 'q2'));
	query_el.set_attribute(new WS.QName('id'), 'id1');
	query_el.set_attribute(SOAP.XSIQNAME, 'q2:Query');
	
	// Query.name
	var query_name = query_el.create_child(new WS.QName('name', nsuri));
	query_name.set_attribute(SOAP.XSIQNAME, 'xsd:string');
	query_name.set_value(query_id);
	
	// Query.parameterNames
	query_el.create_child(new WS.QName('parameterNames', nsuri)).set_attribute(new WS.QName('href'), '#id2');

	// Query.parameterValues
	query_el.create_child(new WS.QName('parameterValues', nsuri)).set_attribute(new WS.QName('href'), '#id3');
	
	// Array (id2)
	var array_id2 = body.create_child(new WS.QName('Array', SOAP.SOAPENCODING, 'soapenc'));
	array_id2.set_attribute(new WS.QName('id'), 'id2');
	array_id2.set_attribute(new WS.QName('arrayType', SOAP.SOAPENCODING, 'soapenc'), 'xsd:string[1]');
	array_id2.create_child(new WS.QName('Item', nsuri)).set_value(query_column);
	
	// Array (id3)
	var array_id3 = body.create_child(new WS.QName('Array', SOAP.SOAPENCODING, 'soapenc'));
	array_id3.set_attribute(new WS.QName('id'), 'id3');
	array_id3.set_attribute(new WS.QName('arrayType', SOAP.SOAPENCODING, 'soapenc'), 'xsd:anyType[1]');
	array_id3.create_child(new WS.QName('Item', nsuri)).set_attribute(new WS.QName('href'), '#id4');
	
	// Array (id4) (value of query parameter)
	var array_id4 = body.create_child(new WS.QName('Array', SOAP.SOAPENCODING, 'soapenc'));
	array_id4.set_attribute(new WS.QName('id'), 'id4');
	array_id4.set_attribute(new WS.QName('arrayType', SOAP.SOAPENCODING, 'soapenc'), column_type);
	
	for (var n = 0; n < query_params.length; n++) {
		array_id4.create_child(new WS.QName('Item', nsuri)).set_value(query_params[n]);
	}
	
	var call = new WS.Call('http://admin.theplatform.com/API/urn:service');
	
	call.add_handler(
		{
			on_error: 
			function(call, envelope, transport)
			{
			},
			on_request: 
			function(call, envelope, transport)
			{
			},
			on_response: 
			function(call, envelope, transport)
			{
				var_got_serviceOperation_result = true;
				serviceOperation_error = true;
				serviceOperation_result = transport.status;
			}
		}
	);
	
	call.invoke(
		envelope,
		function(call,envelope) {
			var_got_serviceOperation_result = true;
			var ret = envelope.get_body().get_all_children()[2].get_all_children()[0].get_value();
			serviceOperation_error = false;
			serviceOperation_result = new String(arguments[2]);
			serviceOperation_result = serviceOperation_result.replace("\n", "");
		},
		ajax_user, 
		ajax_password
    );
}

var_got_serviceOperation_result = false;

function got_thePlatform_serviceOperation_result() {
	return var_got_serviceOperation_result;
}

function get_thePlatform_serviceOperation_error_status() {
	return serviceOperation_error;
}

function get_thePlatform_serviceOperation_result_length() {
	return serviceOperation_result.length();
}

function get_thePlatform_serviceOperation_result() {
	var_got_serviceOperation_result = false;
	return serviceOperation_result;
}

function thisMovie(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName]
    }
    else {
        return document[movieName]
    }
}
