// Copyright (C) 2009 eduxx GmbH Ludwigsburg. All rights reserved.


var go_props = {bt:{}};
var gl_ref_inst_id = 0, gl_ref_req_id = 0, gl_timestamp_current_request = 0;
var go_stack = {pos:0};
var go_nav_timers = {FV:0, FF:0}, gs_nav_timer = '', gl_timestamp_last_nav = 0;
var gl_clientcount_page = 0;


function print_r(pa_object, ps_padding) {
	var ls_result = '';  
	for (var ls_value in pa_object)
		if (typeof pa_object[ls_value] == 'object')
			ls_result = ls_result + ps_padding + ls_value + "\n" + print_r(pa_object[ls_value], ps_padding + "\t");
		else
			ls_result = ls_result + ps_padding + ls_value + ":\t" + pa_object[ls_value] + "\n";
	return ls_result;
}

function gf_ngjs_json_callback(po_data, ps_status) {
	// wird nur im Erfolgs-Fall aufgerufen!
	
	if(po_data.inst_id) {
		gl_ref_inst_id = po_data.inst_id;
		gl_clientcount_page = 1;
	}
	if(gl_ref_req_id != po_data.req_id) {
		gl_ref_req_id = po_data.req_id;
		if(po_data.dir == 'next')
			gl_clientcount_page++;
		else if(po_data.dir == 'prev')
			gl_clientcount_page--;
	}
	gs_nav_timer = '';
	go_nav_timers = {FV:0, FF:0};

	if(po_data.alert)
		alert(po_data.alert);

	if(po_data.reload) {
		location.reload();
		return;
	}

	if(po_data.url) {
		location.href = po_data.url;
		return;
	}

	if(po_data.stack)
		go_stack = po_data.stack;

	//alert(print_r(go_stack, ''));
	gl_timestamp_current_request = 0;
	$(".processing").removeClass("processing");

	if(po_data.html) {
		for(var ls_key in po_data.html) {
			$('#' + ls_key).html(po_data.html[ls_key]);
		}
	}

	gf_ngjs_stack_action('this');
	gl_timestamp_last_nav = new Date().getTime();
}
function gf_ngjs_stack_action(ps_fkt) {
	//alert(print_r(go_stack, ''));
	if(ps_fkt == 'bt_prev') {
		if(!go_stack[go_stack.pos - 1]) {
			$(this).addClass("processing");
			$("body").addClass("processing");
			gf_ngjs_json_request({cmd: ps_fkt});
			return;
		}
		go_stack.pos--;
		gl_clientcount_page--;
	} else if(ps_fkt == 'bt_next') {
		if(!go_stack[go_stack.pos + 1]) {
			$(this).addClass("processing");
			$("body").addClass("processing");
			gf_ngjs_json_request({cmd: ps_fkt});
			return;
		}
		go_stack.pos++;
		gl_clientcount_page++;
	}
	gs_nav_timer = go_stack[go_stack.pos].timer;
	if(go_stack[go_stack.pos].bt) {
		for(var ls_key in go_stack[go_stack.pos].bt) {
			ls_button = 'bt_' + ls_key;
			if(go_stack[go_stack.pos].bt[ls_key]) {
				if(!go_props.bt[ls_key]) {
					go_props.bt[ls_key] = 1;
					$('#' + ls_button).fadeIn(500);
				}
			} else {
				if(go_props.bt[ls_key]) {
					go_props.bt[ls_key] = 0;
					$('#' + ls_button).hide();
				}
			}
		}
	}
	if(go_stack[go_stack.pos].html) {
		for(var ls_key in go_stack[go_stack.pos].html) {
			$('#' + ls_key).html(go_stack[go_stack.pos].html[ls_key]);
		}
	}
	$('#clientcount_page').html(gl_clientcount_page);

	if(go_stack[go_stack.pos].alert)
		alert(go_stack[go_stack.pos].alert);

	if(go_stack[go_stack.pos].url) {
		$("body").addClass("processing");
		location.href = go_stack[go_stack.pos].url;
		return;
	}

	gf_ngjs_make_button($(".newbutton"))
	.fadeIn(500)
	.removeClass("newbutton");
}

function gf_ngjs_json_request(po_data) {
	var ll_now = new Date().getTime();
	
	if(ll_now - gl_timestamp_current_request < 3000)
		return;
	gl_timestamp_current_request = ll_now;
	po_data.ref_inst_id = gl_ref_inst_id;
	po_data.ref_req_id = gl_ref_req_id;
	po_data.t_fv = go_nav_timers.FV;
	po_data.t_ff = go_nav_timers.FF;
	$.post('ngjs_json.php', po_data, gf_ngjs_json_callback, 'json');
}

function gf_jq_addclass_hover(pe_event) {
	$(this).addClass("hover");
}
function gf_jq_removeclass_hover(pe_event) {
	$(this).removeClass("hover");
}
function gf_jq_addclass_clicked(pe_event) {
	$(this).addClass("clicked");
	return false;
}
function gf_jq_removeclass_clicked(pe_event) {
	$(this).removeClass("clicked");
}
function gf_ngjs_jq_button_clicked(pe_event) {
	$(this).removeClass("clicked");

	var ll_now = new Date().getTime();
	var ll_time_since_last_nav = Math.floor((ll_now - gl_timestamp_last_nav) / 1000);
	gl_timestamp_last_nav = ll_now;
	if(gs_nav_timer)
		go_nav_timers[gs_nav_timer] = go_nav_timers[gs_nav_timer] + ll_time_since_last_nav;
	//alert(print_r(go_nav_timers, ''));

	ls_id = $(this).get(0).id;
	if(ls_id == 'bt_next' || ls_id == 'bt_prev')
		gf_ngjs_stack_action(ls_id);
	else if(ls_id == 'bt_submit') {
		lo_request = {cmd: ls_id};
		$('input').each(function () {
			lo_request[$(this).attr('id')] = $(this).val();
		});
		$(this).addClass("processing");
		$("body").addClass("processing");
		gf_ngjs_json_request(lo_request);
	} else {
		$(this).addClass("processing");
		$("body").addClass("processing");
		gf_ngjs_json_request({cmd: $(this).get(0).id});
	}
	return false;
}

function gf_ngjs_make_button(po_jquery_btn) {
	return po_jquery_btn
		.hover(gf_jq_addclass_hover, gf_jq_removeclass_hover)
		.click(gf_ngjs_jq_button_clicked)
		.mousedown(gf_jq_addclass_clicked)
		.mouseup(gf_jq_removeclass_clicked)
		.mouseout(gf_jq_removeclass_clicked)
		.disableTextSelect()
	;
}

function gf_ngjs_jq_document_ready() {
	var lo_minver_alert = {msie: 6, mozilla: 1.8, opera: 9, safari: 416, konqueror:Number.MAX_VALUE, unknown: Number.MAX_VALUE};
	var lo_minver_try = {msie: 6, mozilla: 1.7, opera: 9, safari: 416, konqueror: 0, unknown: Number.MAX_VALUE};
	var ls_browser, ld_browser_version;
	// siehe auch: http://docs.jquery.com/Browser_Compatibility

	if($.browser.safari)
		ls_browser = 'safari';
	else if($.browser.opera)
		ls_browser = 'opera';
	else if($.browser.msie)
		ls_browser = 'msie';
	else if($.browser.mozilla)
		ls_browser = 'mozilla';
	else if(/Konqueror/.test(navigator.userAgent))
		ls_browser = 'konqueror';
	else
		ls_browser = 'unknown';
	
	ld_browser_version = parseFloat($.browser.version);
	if(ld_browser_version < lo_minver_alert[ls_browser]) {
		alert('Achtung! Sie verwenden einen nicht unterstützten Webbrowser!\r\n\r\nUnterstützt werden:\r\n- Mozilla Firefox ab Version 1.5\r\n- Microsoft Internet Explorer ab Version 6.0\r\n- Safari ab Version 2.0.2\r\n- Opera ab Version 9');
		if(ld_browser_version < lo_minver_try[ls_browser])
			return;
	}

	/*var la_parms = location.search.substring(1).split('&');
	for (var i = 0; i < la_parms.length; i++) {
		var ll_pos = la_parms[i].indexOf('=');
		if (ll_pos > 0)
			ga_query[la_parms[i].substring(ll_pos + 1)] = la_parms[i].substring(0, ll_pos);
	}*/

	gf_ngjs_make_button($("#bt_exit"));
	gf_ngjs_make_button($("#bt_prev"));
	gf_ngjs_make_button($("#bt_next"));
	$("#foot").disableTextSelect();
	gf_ngjs_json_request({cmd: "init", param: location.search});
}

function gf_ngjs_video_finished() {
	gf_ngjs_stack_action('bt_next');
}

$(document).ready(gf_ngjs_jq_document_ready);

