//==================//
//					//
//		IMAGES		//
//					//
//==================//

//
// GLOBALS IMAGE LOAD
//
var intImageLoadFrameRate = 5;
var strUrlImageRequest = "xhr/Request.php";

var intCameraId;
var strStartDate;
var strEndDate;
var strStartTime;
var strEndTime;
var intPerc;
var bolReload = true;
var bolImageLoad = true;

//
// LOADS IMAGE URL & ON SUCCES LOADS IMAGE
//
function imageLoad(intCameraId, strStartDate, strEndDate, strStartTime, strEndTime, intPerc){
	
	if(bolImageLoad){
		bolImageLoad = false;

		$.ajax({
			type: "GET",
			url: strUrlImageRequest,
			data: {CameraId: intCameraId, StartDate: strStartDate, EndDate: strEndDate, StartTime: strStartTime, EndTime: strEndTime, Percentage: intPerc, Raw: 'false'},
			async: false,
			success: function(data, textStatus){
				
				arrData = data.split('#');
				var image = arrData[0];
				var description = arrData[1];
				$("#timeStart_holder").html(arrData[2]);
				$("#timeEnd_holder").html(arrData[3]);
				
				var img = new Image();
				$(img)
					.load(function () {
						$("#monitor_holder").html($(this));
						$("#description").html(description);
						bolImageLoad = true;
						imageMonitor();
					})
					.error(function () {
						bolImageLoad = true;
					})
				.attr('src', image).attr('width', 800).attr('height', 600);
			},
			error: function(XMLHttpRequest, textStatus, errorThrown){
				bolImageLoad = true;

			}
		});
	}
}
//
// KEEPS TRACK WETHER A NEW IMAGE NEEDS TE BE RELOADED
//
function imageMonitor(){
	
	_intCameraId = $("#CameraId").val();
	if(intCameraId != _intCameraId){
		intCameraId = _intCameraId;
		bolReload = true;
	}
	_strStartDate = $("#StartDate").val();
	if(strStartDate != _strStartDate){
		strStartDate = _strStartDate;
		bolReload = true;
	}
	_strEndDate = $("#EndDate").val();
	if(strEndDate != _strEndDate){
		strEndDate = _strEndDate;
		bolReload = true;
	}
	_strStartTime = '0'; //sliderVertMax - $("#slider-range").slider("values", 1);
	if(strStartTime != _strStartTime){
		strStartTime = _strStartTime;
		bolReload = true;
	}
	_strEndTime = '86400'; //sliderVertMax - $("#slider-range").slider("values", 0);
	if(strEndTime != _strEndTime){
		strEndTime = _strEndTime;
		bolReload = true;
	}
	_intPerc = $("#slider").slider('value') / sliderMax;
	if(intPerc != _intPerc){
		intPerc = _intPerc;
		bolReload = true;
	}
	
	if(bolReload){
		bolReload = false;
		imageLoad(intCameraId, strStartDate, strEndDate, strStartTime, strEndTime, intPerc);
	}
	
	//$("#message").html($("#slider").slider('value'));
}

//==================//
//					//
//		SLIDERS		//
//					//
//==================//

//
// GLOBALS VARIABLES FOR THE SLIDERS
//
var sliderMin = 1;
var sliderMax = 0;
var sliderDefault = 0;

var sliderVertMin = 0;
var sliderVertMax = 86400;
var sliderVertDefault = [0, 86400];

var intStep = 0;
var arrStepsReverse = [-1, -2, -4, -8, -16, -32];
var arrStepsForward = [1, 2, 4, 8, 16, 32];
var intSliderFrameRate = 5;
//
// INIT SLIDER ON DOM READY
//
function sliderInit(){
	// horizontal percentages slider
	$("#slider").slider({min:sliderMin, max:sliderMax, animate: true, value:sliderDefault});
	
	// verital time slider
	$("#slider-range").slider({
		orientation: "vertical",
		range: true,
		min: sliderVertMin,
		max: sliderVertMax,
		values: sliderVertDefault,
		animate: true
	});
}

//
// START ACTION
//
function sliderStart(){
	bolFastReverse = false;
	bolFastForward = false;
	$('#speed_reverse').html('');
	$('#speed_forward').html('');
	if(bolStepping == true) sliderAnimateStop();
	$("#slider").slider('value', sliderMin);
}
//
// FAST REVERSE ACTION
//
var bolFastReverse = false;
function sliderFastReverse(){
	if(bolFastReverse == false) intStep = arrStepsReverse[1];
	else{
		var index = arrStepsReverse.indexOf(intStep);
		if(index == (arrStepsReverse.length-1)) index = 0;
		intStep = arrStepsReverse[index+1]
	}
	bolFastReverse = true;
	bolFastForward = false;
	$('#speed_reverse').html(intStep+'x');
	$('#speed_forward').html('');
	if(bolStepping == false) sliderAnimateStart();
}
//
// REVERSE ACTION (NORMAL SPEED)
//
function sliderReverse(){
	bolFastReverse = false;
	bolFastForward = false;
	intStep = arrStepsReverse[0];
	$('#speed_reverse').html('');
	$('#speed_forward').html('');
	if(bolStepping == false) sliderAnimateStart();
}
//
// REVERSE STEP ACTION
//
function sliderStepReverse(){
	bolFastReverse = false;
	bolFastForward = false;
	intStep = arrStepsReverse[0];
	$('#speed_reverse').html('');
	$('#speed_forward').html('');
	if(bolStepping == true) sliderAnimateStop();
	sliderSetStep();
}
//
// STOP ANIMATION
//
function sliderAnimateStop(){
	intStep = 0;
	bolStepping = false;
	bolFastReverse = false;
	bolFastForward = false;
	$('#speed_reverse').html('');
	$('#speed_forward').html('');
	clearInterval(objInterval);
}
//
// FORWARD STEP ACTION
//
function sliderStepForward(){
	bolFastReverse = false;
	bolFastForward = false;
	intStep = arrStepsForward[0];
	$('#speed_reverse').html('');
	$('#speed_forward').html('');
	if(bolStepping == true) sliderAnimateStop();
	sliderSetStep();
}
//
// FORWARD ACTION (NORMAL SPEED)
//
function sliderForward(){
	bolFastReverse = false;
	bolFastForward = false;
	intStep = arrStepsForward[0];
	$('#speed_reverse').html('');
	$('#speed_forward').html('');
	if(bolStepping == false) sliderAnimateStart();
}
//
// FAST FORWARD ACTION
//
var bolFastForward = false;
function sliderFastForward(){
	if(bolFastForward == false) intStep = arrStepsForward[1];
	else{
		var index = arrStepsForward.indexOf(intStep);
		if(index == (arrStepsForward.length-1)) index = 0;
		intStep = arrStepsForward[index+1]
	}
	bolFastReverse = false;
	bolFastForward = true;
	$('#speed_reverse').html('');
	$('#speed_forward').html(intStep+'x');
	if(bolStepping == false) sliderAnimateStart();
}
//
// END ACTION
//
function sliderEnd(){
	bolFastReverse = false;
	bolFastForward = false;
	$('#speed_reverse').html('');
	$('#speed_forward').html('');
	if(bolStepping == true) sliderAnimateStop();
	$("#slider").slider('value', sliderMax);
}
//
// START ANIMATION
//
var objInterval;
function sliderAnimateStart(){
	bolStepping = true;
	objInterval = setInterval("sliderSetStep()", ((1/intSliderFrameRate)*1000));
}
//
// SET STEP IN SLIDER
//
var bolStepping = false;
function sliderSetStep(){
	var valueNew = $("#slider").slider('value') + intStep;
	
	// loop
	if(valueNew >= sliderMax) valueNew = sliderMin;
	else if(valueNew <= sliderMin) valueNew = sliderMax;
	
	$("#slider").slider('value', valueNew);
}


//==================//
//					//
//		CAMERAs		//
//					//
//==================//

//
// GLOBALS CAMERA
//
var strUrlCameraRequest = "xhr/RequestCamera.php";

function cameraInit(){
	$.ajax({
		type: "GET",
		url: strUrlCameraRequest,
		async: false,
		success: function(data, textStatus){
			$("#cameraholder").html(data);
			cameraDate($('#CameraId :selected').val(), true);
		},
		error: function(XMLHttpRequest, textStatus, errorThrown){
			alert('Camera load error.');

		}
	});
}

function cameraDate(intCameraId, init){
	$.ajax({
		type: "GET",
		url: strUrlCameraRequest,
		data: {CameraId: intCameraId},
		async: false,
		success: function(data, textStatus){
			arrDates = data.split('#');
			$("#camera_start").html(arrDates[0]);
			$("#camera_end").html(arrDates[1]);
			
			// rest speed
			sliderMax = 133 * arrDates[2];
			sliderDefault = sliderMax;
			// to reset
			$('#slider').slider('option', 'max', sliderMax);
			$('#slider').slider('option', 'value', sliderDefault);
			sliderEnd();
			
			if(init) initPageRest();
		},
		error: function(XMLHttpRequest, textStatus, errorThrown){
			alert('Camera load error.');

		}
	});
}

//==================//
//					//
//		EVENTS		//
//					//
//==================//


function initPageRest(){
	// init slider
	sliderInit();
	
	// init first image	
	imageMonitor();
	
	// set image monitor
	objInterval = setInterval("imageMonitor()", ((1/intImageLoadFrameRate)*1000));
}

//
// ON DOM READY
//
$(document).ready(function () {

	// init cameras
	cameraInit();
	

});

