
djConfig.usePlainJson=true;
dojo.require("dijit.layout.ContentPane");

app = new Object();

app.site_id = null;
app.screen_id = null;
app.click_refresh = false;
app.baseurl = '/';

app.send_request = function ( /* Object */ request, load_fn ) {
	// keep IE7 from caching
	request.iebug_date = Date.parse( Date() );
	dojo.xhrGet({
		url: '/ajax.php',
		handleAs: "json",
		content: request,
		timeout: 60000,
		load: function ( response, ioArgs ) {
			load_fn( response );
			return response;
		},
		error: function ( response, ioArgs ) {
			console.log( "HTTP status code: " + ioArgs.xhr.status );
			return response;
		}
	});
};

app.get_status = function () {
	app.send_request( { _r: "get_status", site_id: app.site_id }, 
			function ( response ) { app.get_status_load( response ) }
	);
};

app.get_status_load = function ( data ) {
	if ( app.click_refresh && data.q.in_q ) {
		dijit.byId( "div_refresh" ).setContent( '<input type="button" value="Refresh Screenshot" onclick="this.disabled = true; app.do_refresh();" disabled="true">' );
		dijit.byId( "div_error" ).setContent( '' );
		if ( data.q.status == "1" ) {
			dijit.byId( "div_status" ).setContent( 'Screenshot in progress... <span class="smalltext">' + data.q.ss_time + '</span>' );
			dijit.byId( "div_queue" ).setContent( '(' + data.q.length + ' items in queue)' );
		} else if ( data.q.status == '0' ) {
			dijit.byId( "div_status" ).setContent( 'Waiting to start screenshot... <span class="smalltext">' + data.q.queue_time + '</span>' );
			dijit.byId( "div_queue" ).setContent('(#' + data.q.place + ' out of '  + data.q.length + ' items in queue)' );
		}
		// send another request in 5 seconds
		setTimeout( "app.get_status()", 5000 );
	} else {
		dijit.byId( "div_refresh" ).setContent( '<input type="button" value="Refresh Screenshot" onclick="this.disabled = true; app.do_refresh();">' );
		dijit.byId( "div_queue" ).setContent( '(' + data.q.length + ' items in queue)' );
		dijit.byId( "div_status" ).setContent( 'Done' );
		dijit.byId( "div_error" ).setContent( '' );
		app.click_refresh = false;
	}
	if ( data.screen_id != app.screen_id ) { 	// Update window
		// Update img
		img_id = dojo.byId( "preview_img" );
		img_id.src = data.img;
		dojo.contentBox( img_id, { l: 0, t: 0, w: data.img_width, h: data.img_height } );
		
		app.screen_id = data.screen_id;
		dojo.byId( "submit_button" ).disabled = false;
	}
	
	if ( data.error.is_error && ! app.click_refresh) {
		// check for errors
		dijit.byId( "div_status" ).setContent( '<span style="color:red;">Error</span>' );
		if ( data.error.status == '100' ) {
			dijit.byId( "div_error" ).setContent( 'The last screenshot attempt for this URL took longer than 3 minutes and resulted in a time out.' );
		} else {
			dijit.byId( "div_error" ).setContent( 'The last screenshot attempt for this URL resulted in an unknown error occurred. Please verify that the URL is correct.' );
		}
	} 
	
	if ( data.date && data.ago ) {
		var date_div = dijit.byId( "datebox" );
		date_div.setContent( data.date + ' (' + data.ago + ' ago)' );	
	}
};

app.do_refresh = function () {
	app.click_refresh = true;
	app.send_request({ _r: "refresh_screen", site_id: app.site_id }, 
			function ( response ) { app.do_refresh_load( response ) }
	);
}

app.do_refresh_load = function () {
	dijit.byId( "div_refresh" ).setContent( '<input type="button" value="Refresh Screenshot" onclick="this.disabled = true; app.do_refresh();" disabled="true">' );
	dijit.byId( "div_status" ).setContent( 'Sending...' );
	dijit.byId( "div_error" ).setContent( '' );
	setTimeout( "app.get_status()", 1000 );
};

app.getimage_submit = function () {
	dojo.byId( "submit_button" ).disabled = true;
	var form_obj = dojo.byId( "getimage_form" );
	console.log( "formdata: " + dojo.formToQuery( form_obj ) );
	var form_data = dojo.formToObject( form_obj );
	form_data[ "screen_id" ] = app.screen_id;
	window.location = app.baseurl + 'getimage.php?' + dojo.objectToQuery( form_data );
	
}
