// Copyright (C) 2007 eduxx GmbH Ludwigsburg. All rights reserved.

function gf_trim(ps_string) {
	while (ps_string.substring(0,1) == ' ') {
		ps_string = ps_string.substring(1, ps_string.length);
	}
	while (ps_string.substring(ps_string.length-1, ps_string.length) == ' ') {
		ps_string = ps_string.substring(0,ps_string.length-1);
	}
	return ps_string;
}

function gf_txt(ps_text) {
	switch(gs_spc) {
	case 'en':
		switch(ps_text) {
		case 'Medieninformationen':	return 'media information';
		}
		break;
	}
	return ps_text;
}

function gf_highlight(po_field, ps_action, ps_css_class, ps_checkbox_name) {
	var ls_current_class;
	var ls_new_class;

	ls_current_class = po_field.className;

	switch(ps_action) {
		case 'over':
			ls_new_class = ps_css_class + '_over';
			break;
		case 'out':
			if(po_field.onmouseleave)
				return;
		case 'leave':
			if(document.getElementsByName(ps_checkbox_name)[0].checked) {
				ls_new_class = ps_css_class + '_sel';
			} else {
				ls_new_class = ps_css_class;
			}
			break;
		case 'click':
			if(document.getElementsByName(ps_checkbox_name)[0].checked) {
				ls_new_class = ps_css_class;
				document.getElementsByName(ps_checkbox_name)[0].checked = false;
			} else {
				ls_new_class = ps_css_class + '_sel';
				document.getElementsByName(ps_checkbox_name)[0].checked = true;
			}
			break;
		case 'check':
			ls_new_class = ps_css_class + '_sel';
			document.getElementsByName(ps_checkbox_name)[0].checked = true;
			break;
		case 'uncheck':
			ls_new_class = ps_css_class;
			document.getElementsByName(ps_checkbox_name)[0].checked = false;
			break;
	}

	if(ls_new_class) {
		po_field.className = ls_new_class;
	}
	return false;
}

function gf_highlight_by_name(ps_field_name, ps_action) {
	var lo_rowelem = document.getElementById(ps_field_name);
	if(lo_rowelem) {
		var ls_css_class = lo_rowelem.className.slice(0, 4);
		gf_highlight(lo_rowelem, ps_action, ls_css_class, 'item[' + ps_field_name + ']');
	}
}

function gf_checkbox_foreach(ps_highlight_action) {
	if(document.forms.chooseform) {
		for (var i=0; i<document.forms.chooseform.elements.length; i++) {
			var lo_elem = document.forms.chooseform.elements[i];
			if(lo_elem.type == 'checkbox') {
				var ls_field_name = lo_elem.name.replace(/(item\[|\])/g, '');
				gf_highlight_by_name(ls_field_name, ps_highlight_action);
			}
		}
	}
}
function gf_select_all() {
	gf_checkbox_foreach('check');
}
function gf_select_none() {
	gf_checkbox_foreach('uncheck');
}

function gf_help(ps_context) {
	var ls_url = "help/" + ps_context + ".htm";
	var lw_help = window.open(ls_url, "_blank", "width=640,height=480");
	lw_help.focus();
}

function gf_nav(ps_url) {
	location.href = ps_url;
}

function gf_show_img(pb_visible) {
	var la_img = document.getElementsByName("sh_img");
	if(pb_visible) {
		for(var i = 0; i < la_img.length; ++i) {
			if(la_img[i].alt) {
				la_img[i].src = 'preview/' + la_img[i].alt;
				la_img[i].style.display = 'inline';
			}
		}
	} else {
		for(var i = 0; i < la_img.length; ++i) {
			la_img[i].style.display = 'none';
			la_img[i].src = 'img/transparent.gif';
		}
	}
}

function gf_check_img() {
	if(document.queryform) {
		if(document.queryform.show_img) {
			if(document.queryform.show_img.checked) {
				gf_show_img(true);
			}
		}
	}
}

var go_push_buttons = new Object();
var go_push_button_cache = new Object();

function gf_init_push_buttons(ps_group, ps_typ, ps_button_type, ps_field, ps_display_buttons) {
	go_push_buttons[ps_group] = new Object();
	go_push_buttons[ps_group].field = document.getElementsByName(ps_field)[0];
	go_push_buttons[ps_group].display_buttons = document.getElementById(ps_display_buttons);
	go_push_buttons[ps_group].button_type = ps_button_type;
	go_push_buttons[ps_group].states = new Object();
	go_push_buttons[ps_group].visible_buttons = new Object();
	
	if(!go_push_button_cache[ps_button_type])
		go_push_button_cache[ps_button_type] = new Object();
	
	var la_values = go_push_buttons[ps_group].field.value.split(',');
	for(var i=0; i<la_values.length; i++) {
		ls_btn = la_values[i];
		if(ls_btn.length)
			go_push_buttons[ps_group].states[ls_btn] = 10;
	}
	gf_load_push_buttons(ps_group, ps_typ);
}

function gf_load_push_buttons(ps_group, ps_typ) {
	var ls_html = '';
	var ls_img_url;
	var ls_param = go_esy_auswahl.MMTYP.n2p[ps_typ];
	if(!ls_param)
		ls_param = '';
	if(!go_push_buttons[ps_group])
		return;
	go_push_buttons[ps_group].visible_buttons = ls_param.split(',');

	for(var i=0; i<go_push_buttons[ps_group].visible_buttons.length; i++) {
		ls_btn = go_push_buttons[ps_group].visible_buttons[i];
		ls_img_url = 'bilder/pushbtn_' + go_push_buttons[ps_group].button_type + '_' + ls_btn + '_00.jpg';
		if(!go_push_button_cache[go_push_buttons[ps_group].button_type][ls_btn])
			go_push_button_cache[go_push_buttons[ps_group].button_type][ls_btn] = gf_new_button(ls_img_url, '04,10,14');
		
		la_btn = go_push_button_cache[go_push_buttons[ps_group].button_type][ls_btn];
		ls_descr = go_esy_auswahl.MVTYP.n2b[ls_btn];
		ls_html += '<img id="btn_' + ps_group + '_' + ls_btn + '" src="' + ls_img_url + '" onmouseover="gf_push_button_action(\'' + ps_group + '\',this,\'' + ls_btn + '\',\'hover\')" onclick="gf_push_button_action(\'' + ps_group + '\',this,\'' + ls_btn + '\',\'click\')" onmouseout="gf_push_button_action(\'' + ps_group + '\',this,\'' + ls_btn + '\',\'\')" title="' + ls_descr + '"> ';
	}

	go_push_buttons[ps_group].display_buttons.innerHTML = ls_html;
	for(var i=0; i<go_push_buttons[ps_group].visible_buttons.length; i++)
		gf_push_button_action(ps_group, document.getElementById('btn_' + ps_group + '_' + go_push_buttons[ps_group].visible_buttons[i]), go_push_buttons[ps_group].visible_buttons[i], '');
}

function gf_new_button(ps_first_img, ps_button_states) {
	var la_button_states = ps_button_states.split(',');
	la_button = new Array();
	la_button[0] = new Image();
	la_button[0].src = ps_first_img;
	for(var i=0; i<la_button_states.length; i++) {
		ll_state = parseInt(la_button_states[i]);
		la_button[ll_state] = new Image();
		la_button[ll_state].src = ps_first_img.replace(/00/, la_button_states[i]);
	}
	return la_button;
}

function gf_push_button_action(ps_group, po_img_tag, ps_btn_id, ps_action) {
	var ll_button_state = 0;
	switch(ps_action) {
	case 'click':
		if(go_push_buttons[ps_group].states[ps_btn_id])
			go_push_buttons[ps_group].states[ps_btn_id] = 0;
		else
			go_push_buttons[ps_group].states[ps_btn_id] = 10;
		break;
	case 'hover':
		ll_button_state = 4;
		break;
	}
	if(!isNaN(go_push_buttons[ps_group].states[ps_btn_id]))
		ll_button_state += go_push_buttons[ps_group].states[ps_btn_id];
  	po_img_tag.src = go_push_button_cache[go_push_buttons[ps_group].button_type][ps_btn_id][ll_button_state].src;
  	go_push_buttons[ps_group].field.value = gf_get_pressed_push_buttons(ps_group);
}

function gf_get_pressed_push_buttons(ps_group) {
	var ls_result = ',';
	for(var i=0; i<go_push_buttons[ps_group].visible_buttons.length; i++)
		if(go_push_buttons[ps_group].states[go_push_buttons[ps_group].visible_buttons[i]])
			ls_result += go_push_buttons[ps_group].visible_buttons[i] + ',';
	if(ls_result == ',')
		return '';
	return ls_result;
}

var ga_emm_info = new Array();
var ga_emm_info_show = '';

var ga_val_invalid_fields = new Array();
var gb_validate_form = false;
var gb_enable_messages = false;
var gl_keypress_id = 0;


function gf_emm_info(ps_id) {
	ga_emm_info_show = ps_id;
	ls_info = ga_emm_info[ps_id];
	if(ls_info) {
		return overlib(ls_info, LEFT, VAUTO, CAPTION, gf_txt('Medieninformationen'), CSSCLASS, BGCLASS, 'tt_bg', TEXTFONTCLASS, 'tt_txt');
	} else {
		return xajax_xf_emm_info(ps_id);
	}
}

function gf_emm_info_out() {
	ga_emm_info_show = '';
	return nd();
}

function gf_emm_set_info(ps_id, ps_info) {
	ga_emm_info[ps_id] = ps_info;
	if(ga_emm_info_show == ps_id) {
		overlib(ps_info, LEFT, VAUTO, CAPTION, gf_txt('Medieninformationen'), CSSCLASS, BGCLASS, 'tt_bg', TEXTFONTCLASS, 'tt_txt');
	}
}

function gf_css_img_format(po_image, pb_width) {
	var ll_width = po_image.width;
	var ll_height = po_image.height;
	var ld_aspect_ratio = ll_width / ll_height;
	
	var ll_max_width = po_image.parentNode.offsetWidth;
	var ll_max_height = po_image.parentNode.offsetHeight;
	if(ll_width > ll_max_width) {
		ll_width = ll_max_width;
		ll_height = ll_width / ld_aspect_ratio;
	}
	if(ll_height > ll_max_height) {
		ll_height = ll_max_height;
		ll_width = ll_height * ld_aspect_ratio;
	}
	if(pb_width) {
		return parseInt(ll_width) + 'px';
	} else {
		return parseInt(ll_height) + 'px';
	}
}

function gf_submit(po_form) {
	gb_validate_form = true;
	
	if(gf_validate_all())
		po_form.submit();
}

function gf_keypress() {
	gl_keypress_id++;
	window.setTimeout('gf_keypress_delayed(' + gl_keypress_id + ')', 1000);
}
function gf_keypress_delayed(pl_keypress_id) {
	if(gl_keypress_id == pl_keypress_id)
		gf_validate_all();
}


function gf_set_msg(ps_msg, pl_err) {
	if(pl_err == 1)
		ls_msg = '<table class="msg_err"><tr><td><img src="bilder/msg_err1.gif" width="100" height="100" align="left"></td><td style="color:red;">' + ps_msg + '</td></tr></table>';
	else if(pl_err)
		ls_msg = '<table class="msg_err"><tr><td><img src="bilder/msg_err.gif" width="100" height="100" align="left"></td><td style="color:red;">' + ps_msg + '</td></tr></table>';
	else
		ls_msg = '<table class="msg_ok"><tr><td><img src="bilder/msg_ok.gif" width="100" height="100" align="left"></td><td style="color:green;">' + ps_msg + '</td></tr></table>';
	document.getElementById('msg').innerHTML = ls_msg;
}

function gf_validate_all() {
	var ll_err = 0;

	if(!gb_validate_form)
		return true;

	gb_form_valid = true;
	gs_form_errors = '';

	for(var i=0; i<ga_val_invalid_fields.length; i++)
		gf_set_valid(ga_val_invalid_fields[i], true);
	ga_val_invalid_fields = new Array();


	
	for(var i=0; i<ga_validations.length - 1; i++)
		gf_validate(ga_validations[i], i)

	if(gs_form_errors.length) {
		ls_msg = '<ul>' + gs_form_errors + '</ul>';
		gb_enable_messages = true;
		ll_err = -1;
	} else
		ls_msg = ga_validations[ga_validations.length - 1];

	if(gb_enable_messages)
		gf_set_msg(ls_msg, ll_err);
	
	return gb_form_valid;
}


function gf_val_not_empty(pa_fields) {
	for(var i=0; i<pa_fields.length; i++) {
		lo_item = document.getElementsByName(pa_fields[i])[0];
		if(lo_item && gf_trim(lo_item.value).length == 0)
			return false;
	}
	return true;
}

function gf_val_one_radio(pa_fields) {
	for(var i=0; i<pa_fields.length; i++) {
		lo_items = document.getElementsByName(pa_fields[i]);
		for(var j=0; j<lo_items.length; j++)
			if(lo_items[j].checked)
				return true;
	}
}

function gf_val_int(pa_fields) {
	for(var i=0; i<pa_fields.length; i++) {
		lo_item = document.getElementsByName(pa_fields[i])[0];
		if(lo_item) {
			ls_value = gf_trim(lo_item.value);
			if(ls_value.length == 0)
				ls_value = '0';
			
			if(lo_item.value != ls_value)
				lo_item.value = ls_value;
			
			if(!ls_value.match(/^-?\d+$/))
				return false;
		}
	}
	return true;
}

function gf_val_int_list(pa_fields) {
	for(var i=0; i<pa_fields.length; i++) {
		lo_item = document.getElementsByName(pa_fields[i])[0];
		if(lo_item) {
			ls_value = lo_item.value.replace(/\s/g, '');
			if(lo_item.value != ls_value)
				lo_item.value = ls_value;
		
			if(ls_value.length && !ls_value.match(/^-?\d+(,-?\d+)*$/))
				return false;
		}
	}
	return true;
}

function gf_val_email(pa_fields, pb_allow_empty) {
	for(var i=0; i<pa_fields.length; i++) {
		lo_item = document.getElementsByName(pa_fields[i])[0];
		if(lo_item) {
			ls_value = gf_trim(lo_item.value);
			if(lo_item.value != ls_value)
				lo_item.value = ls_value;
			
			if(ls_value.length) {
				if(ls_value.match(/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/))
					return false;
				if(!ls_value.match(/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,6}|[0-9]{1,3})(\]?)$/))
					return false;
			} else if(!pb_allow_empty)
				return false;
		}
	}
	return true;
}



function gf_validate(pa_validation_row, pl_row) {
	var lb_invalid, ll_cached;
	
	switch(pa_validation_row[0]) {
	case 'not_empty':
		if(!gf_val_not_empty(pa_validation_row[1]))
			gf_validation_failed(pa_validation_row[2], pa_validation_row[3]);
		break;
	case 'one_radio':
	case 'checked':
		if(!gf_val_one_radio(pa_validation_row[1]))
			gf_validation_failed(pa_validation_row[2], pa_validation_row[3]);
		break;
	case 'int':
		if(!gf_val_int(pa_validation_row[1]))
			gf_validation_failed(pa_validation_row[2], pa_validation_row[3]);
		break;
	case 'int_list':
		if(!gf_val_int_list(pa_validation_row[1]))
			gf_validation_failed(pa_validation_row[2], pa_validation_row[3]);
		break;
	case 'int_list_ne':
		if(!gf_val_int_list(pa_validation_row[1]) || !gf_val_not_empty(pa_validation_row[1]))
			gf_validation_failed(pa_validation_row[2], pa_validation_row[3]);
		break;
	case 'email':
		if(!gf_val_email(pa_validation_row[1], true))
			gf_validation_failed(pa_validation_row[2], pa_validation_row[3]);
		break;
	case 'email_ne':
		if(!gf_val_email(pa_validation_row[1], false))
			gf_validation_failed(pa_validation_row[2], pa_validation_row[3]);
		break;
	}
}

function gf_validation_failed(ps_message, pa_fail_fields) {
	gb_form_valid = false;
	gs_form_errors = gs_form_errors + '<li>' + ps_message + '</li>';
	for(var i=0; i<pa_fail_fields.length; i++) {
		lo_field = document.getElementsByName(pa_fail_fields[i])[0];
		ga_val_invalid_fields.push(lo_field);
		gf_set_valid(lo_field, false);
	}
}

function gf_set_valid(po_field, pb_valid) {
	if(po_field) {
		if(pb_valid)
			po_field.className = po_field.className.split(' ')[0];
		else {
			po_field.className = po_field.className.split(' ')[0] + ' fieldinvalid';
		}
	}
}

// Auszug aus datepick.js
var argDate;
var argYear;
var argMonth;
var argDay;
function datepick(theme,field) {
	argYear = '';
	argMonth = '';
	argDay = '';
	argDate = field;
	open('ee_helper/smarty_datepick/?type=textfield&theme='+theme+'&date='+argDate.value,'datepick','width=200,height=200');
}
