<?xml version="1.0" encoding="UTF-8"?>
<ccxml xmlns="http://www.w3.org/2002/09/ccxml" xmlns:conf="http://www.w3.org/2005/ccxml-conformance" version="1.0">
	<!--
      <conf:fail reason="'Unexpected Event ' + event$.name"/>
-->
	<conf:docsetup/>
	<var name="ConnectionID" expr="undefined"/>
	<var name="param1" expr="1"/>
	<var name="param2" expr="'hello'"/>
	<var name="chld_reason"/>
	<var name="send_id_1"/>
	<var name="DialogID"/>
	<var name="i_success"/>
	<var name="assertionPassed"/>
	<var name="fail_send_id"/>

	<var name="assert_1232_N" expr="1234"/>
	<var name="assert_1232_S" expr="'^%1234$'"/>
	<var name="assert_1230_eventID"/>
	<var name="assert_1232_eventID"/>
	<var name="assert_1230_conn_id"/>
	<var name="assert_1232_conn_id"/>
	
	

	
	<var name="MY_BLANK" expr="''"/>
	<var name="WKR_STRING"/>	

	<script><![CDATA[
	   function GetMilliseconds() {
     var d = new Date();
     return d.getTime();  // ms from midnight on Jan 1, 2000.
   }

var t_start, t_end, t_delay = 2000, t_delta, t_delta_e = 0.05 * t_delay;
		   ]]></script>
	<script><![CDATA[
	var assert_1232_X = new Object();
	var assert_1232_Y = new Object();
	assert_1232_X.var_1 = 567;
	assert_1232_X.var_2 = 'foo bar';
	assert_1232_Y.var_3 = 'Y_var_3';
var i=0;
assertions[i++] = init_assertion('1230');
assertions[i++] = init_assertion('1232');

var send_basichttp_1230 = TEST_IR_URI + '9_2_3_A/examine_parameters.ircgi';
//var send_basichttp_1230 = 'examine_parameters.ircgi';

var ASSERT_ID;
var ASSERT_PASS_FAIL;
var EVENT_NAME;
var EVENT_NAME_PREFIX = 'EVENT_';

var assert_last = i - 1;
var assert_index = -1;
//
// out of the loop assertions (children?)
//
//
s_ASSERTIONS_LEFT = show_remained_assertions();
var b_in_test = false;


]]></script>
	<eventprocessor statevariable="current_state">
		<conf:setup type="alerting"/>
		<transition event="connection.alerting" state="init">
			<send targettype="'ccxml'" target="session.id" name="'user.timeout'" delay="TEST_LONG_TIMEOUT"/>
			<accept connectionid="event$.connectionid"/>
		</transition>
		<transition event="connection.connected" state="init">
			<assign name="ConnectionID" expr="event$.connectionid"/>
			<assign name="assert_1232_conn_id" expr="event$.connectionid"/>
			<send targettype="'ccxml'" target="session.id" name="name_prepare_new"/>
		</transition>
		<transition event="user.PREPARE_NEW">
			<conf:comment expr="'Event: ' + event$.name"/>
			<if cond="assert_index &gt;= 0">
				<assign name="ASSERTION_NUM" expr="assertions[assert_index].number"/>
				<assign name="t_ASSERT_RESULT" expr="assertions[assert_index].P_F"/>
				<script>t_ASSERT_REASON = assertions[assert_index].reason</script>
				<if cond="t_ASSERT_RESULT == s_PASS">
					<conf:pass reason="t_ASSERT_REASON"/>
					<elseif cond="t_ASSERT_RESULT == s_FAIL"/>
					<conf:fail reason="t_ASSERT_REASON"/>
					<else/>
					<conf:not_exec reason="t_ASSERT_REASON"/>
				</if>
			</if>
			<assign name="assert_index" expr="assert_index + 1"/>
			<if cond="assert_index &gt; assert_last">
				<log label="s_TA" expr="s_ASSERTIONS_LEFT"/>
				<conf:uncond_exit expr="'DONE'"/>
				<else/>
				<log label="s_TA" expr="s_ASSERTIONS_LEFT"/>
				<assign name="ASSERTION_NUM" expr=" assertions[assert_index].number"/>
				<assign name="t_ASSERT_REASON" expr="''"/>
				<script>assertions[assert_index].P_F = s_FAIL;</script>
				<assign name="current_state" expr="state_prefix + ASSERTION_NUM"/>
				<send targettype="'ccxml'" target="session.id" name="start_name_prefix + ASSERTION_NUM"/>
			</if>
		</transition>
		<transition event="user.START_ASSERTION_1230" state="ASSERTION_NMBR_1230">
			<conf:comment expr="'Event: ' + event$.name"/>
			<!--
1230 	
9.2.3 &lt;send&gt; 	
Platforms MUST support a targettype attribute with a value of basichttp 
to target the Basic HTTP Event I/O Processor specified in Appendix K.
 	mscott@voicegenie.com 	Accepted 	

-->
			<script>
			ASSERT_ID = '1230';
			ASSERT_PASS_FAIL = 'PASS';
			EVENT_NAME = EVENT_NAME_PREFIX + ASSERT_ID;
			</script>
			<assign name="current_state" expr="'ASSERTION_NMBR_1230_IN_PROGRESS'"/>
			<send name="EVENT_NAME" targettype="'basichttp'" target="send_basichttp_1230" namelist="ASSERT_ID" sendid="assert_1230_eventID"/>			
		</transition>
		
		<transition event="send.successful" state="ASSERTION_NMBR_1230_IN_PROGRESS" cond="event$.sendid == assert_1230_eventID">
			<assign name="current_state" expr="'GEN'"/>		
			<script>assertions[assert_index].P_F = s_PASS;</script>
			<send targettype="'ccxml'" target="session.id" name="name_prepare_new"/>		
		</transition>
		

		<transition event="error.send.failed" state="ASSERTION_NMBR_1230_IN_PROGRESS"  cond="event$.sendid == assert_1230_eventID">
			<assign name="current_state" expr="'GEN'"/>		
		
			<script>assertions[assert_index].P_F = s_FAIL;
					assertions[assert_index].reason = 'send failed : ' + event$.reason + '.';</script>
			<send targettype="'ccxml'" target="session.id" name="name_prepare_new"/>
		</transition>

		<transition event="error.semantic" state="ASSERTION_NMBR_1230_IN_PROGRESS">
		
			<script>assertions[assert_index].P_F = s_FAIL;
					assertions[assert_index].reason = 'send failed : ' + event$.reason + '.';</script>
			<send targettype="'ccxml'" target="session.id" name="name_prepare_new"/>
		</transition>

		<transition event="user.START_ASSERTION_1232" state="ASSERTION_NMBR_1232">
			<conf:comment expr="'Event: ' + event$.name"/>
			<!--
1232 	
9.2.3 &lt;send&gt; 	
When <send> is used with the name and namelist attributes, and the targettype is "basichttp", 
each variable in the namelist is sent to the web server as defined in Appendix K 	mscott@voicegenie.com 	Accepted 	

			<send name="'Hello'" targettype="'basichttp'" target="'http://localhost:9990/CCXML-IR/show_php_params_ccxml.php'" namelist="assert_1232_N assert_1232_S assert_1232_X assert_1232_Y.var_3" sendid="assert_1232_eventID"/>

-->
			<script>
			ASSERT_ID = '1232';
			ASSERT_PASS_FAIL = 'PASS';
			EVENT_NAME = EVENT_NAME_PREFIX + ASSERT_ID;
			var ASSERT_STRING = ASSERT_PASS_FAIL + ASSERT_ID;
			</script>
			<assign name="current_state" expr="'ASSERTION_NMBR_1232_IN_PROGRESS'"/>
			<send name="EVENT_NAME" targettype="'basichttp'" target="send_basichttp_1230" namelist="ASSERT_ID ASSERT_STRING" sendid="assert_1232_eventID"/>
		</transition>
		
		<transition event="send.successful" state="ASSERTION_NMBR_1232_IN_PROGRESS"  cond="event$.sendid == assert_1232_eventID">
			<assign name="current_state" expr="'GEN'"/>				
			<script>assertions[assert_index].P_F = s_PASS;</script>
			<send targettype="'ccxml'" target="session.id" name="name_prepare_new"/>
		</transition>


		<transition event="error.send.failed" state="ASSERTION_NMBR_1232_IN_PROGRESS"  cond="event$.sendid == assert_1232_eventID">
			<assign name="current_state" expr="'GEN'"/>				
			<script>assertions[assert_index].P_F = s_FAIL;
					assertions[assert_index].reason = 'send failed : ' + event$.reason + '.';</script>
			<send targettype="'ccxml'" target="session.id" name="name_prepare_new"/>
		</transition>
		
		<transition event="fetch.done">
			<goto fetchid="event$.fetchid"/>
		</transition>
		
		<transition event="cancel.successful">
			<conf:comment expr="'Event: ' + event$.name"/>
		</transition>
		
		<transition event="send.successful">
			<conf:comment expr="'Event: ' + event$.name"/>
		</transition>
		
		<transition event="user.timeout">
			<conf:uncond_exit expr="'TEST-TIMEOUT'"/>
		</transition>

		<transition  event="send.*">
			<conf:comment expr="'Event (send*): ' + event$.name"/>
		</transition>

		<transition event="*">
			<conf:comment expr="'Event: ' + event$.name"/>
			<assign name="t_ASSERT_REASON" expr="'UNEXPECTED EVENT ' + event$.name + ' IN STATE ' + current_state"/>
			<conf:comment expr="t_ASSERT_REASON"/>
			<if cond="current_state == 'init'">
				<conf:uncond_exit expr="'Did not come out from init state.'"/>
				<else/>
				<send targettype="'ccxml'" target="session.id" name="name_prepare_new"/>
			</if>
		</transition>
	</eventprocessor>
</ccxml>
