var MCB_SMS_STATE_LOADING				=	0;
var MCB_SMS_STATE_NONE					=	1;

var MCB_SMS_STATE_ENTER_CLI				=	5;
var MCB_SMS_STATE_ENTER_PIN				=	6;
var MCB_SMS_STATE_ENTER_PIN_INCORRECT			=	7;

var MCB_SMS_STATE_GOT_MO				=	10;
var MCB_SMS_STATE_GOT_SECOND_OPT_IN			=	20;
var MCB_SMS_STATE_SENT_MT				=	30;
var MCB_SMS_STATE_GOT_ONE_RECEIPT			=	50;
var MCB_SMS_STATE_GOT_HALF_RECEIPTS			=	60;
var MCB_SMS_STATE_GOT_RECEIPTS				=	70;
var MCB_SMS_STATE_COMPLETE				=	100;

var MCB_SMS_STATE_INCOMPLETE				=	1000;
var MCB_SMS_STATE_FAILURE				=	1001;
var MCB_SMS_STATE_OUTSTANDING				=	1002;
var MCB_SMS_STATE_BLOCKED_NETWORK			=	1003;
var MCB_SMS_STATE_EARLY_REDIRECT			= 	1004;
var MCB_SMS_STATE_DEFERRED_MESSAGES			= 	1005;
var MCB_SMS_STATE_GOT_MO_SECOND_OPT_IN_MO		=	1006;


var glob_sms_step 					= 	-1;

function processSMSState(state){
    if ( document.getElementById("simulate_dropdown") ) {
	/**
		If the user is running in test mode, there will be a html select called 'simulate_dropdown', listing all the states. Select the correct one:
		*/
	o = document.getElementById('simulate_dropdown').options;
	for ( i=0 ; i< o.length ; i++ ) {
	    if ( o[i].value == state ) {
		o[i].selected = true;
		break;
	    }
	}
    }
    glob_state = state;

    switch(state){
	case MCB_SMS_STATE_INCOMPLETE:
	    clearInterval(glob_sms_check_interval);
	    showSMSStep(state);
	    glob_sms_check_interval = setInterval('pollSMS()', 30000);
	    break;
		
	case MCB_SMS_STATE_FAILURE:
	case MCB_SMS_STATE_OUTSTANDING:
	case MCB_SMS_STATE_BLOCKED_NETWORK:
	case MCB_SMS_STATE_ENTER_CLI:
	case MCB_SMS_STATE_ENTER_PIN:
	case MCB_SMS_STATE_ENTER_PIN_INCORRECT:
	    clearInterval(glob_sms_check_interval);
	    showSMSStep(state);
	    break;

	case MCB_SMS_STATE_COMPLETE:
	case MCB_SMS_STATE_EARLY_REDIRECT:
	case MCB_SMS_STATE_DEFERRED_MESSAGES:
	    clearInterval(glob_sms_check_interval);
	    showSMSStep(state);
	    if ( ! glob_simulated ) {
		setTimeout("redirectOnComplete()", 10000);
	    }
	    break;

	case MCB_SMS_STATE_GOT_ONE_RECEIPT:
	case MCB_SMS_STATE_SENT_MT:
	case MCB_SMS_STATE_GOT_SECOND_OPT_IN:
	case MCB_SMS_STATE_GOT_MO:
	case MCB_SMS_STATE_NONE:
	case MCB_SMS_STATE_LOADING:
	case MCB_SMS_STATE_GOT_MO_SECOND_OPT_IN_MO:
	    clearInterval(glob_sms_check_interval);
	    showSMSStep(state);
	    glob_sms_check_interval = setInterval('pollSMS()', 10000);
	    break;

    }
}


function pollSMS(){
    /*
	This request should return an integer between 1 and 100. 100 being completed.
	*/
    state = __getUrl("xmlrpc_sms_new_poll?smsid=" + glob_smsid + "&site=" + glob_siteid);
    state = parseInt(state);
    if ( state == 0 ) {
	return false;
    }
    processSMSState(state);
}



function showSMSStep(step){
    /*
	Loop through each div who's ID starts with 'sms_step_', and show only the one specified in step, eg: sms_step_1
	*/

    if ( glob_sms_step == step ){
	return true;
    } else {
	glob_sms_step = step
    }

    steps = document.getElementsByTagName('div');
    c 		= steps.length
    for(i=0; i < c ; i++){
	t = steps[i]
	if ( t.id.substr(0,9) == 'sms_step_'){
	    /* debug(t.id); */
	    if ( t.id.substr(9) == step){
		t.style.display = 'block';
		glob_sms_step = step;
	    } else {
		t.style.display = 'none';
	    }
	}
    }
}


if ( glob_smsid > 0 ){
    var glob_sms_check_interval = setInterval('pollSMS()', 1000);
}
