// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

function get_type(id) {

    var sel_elem  = document.getElementById(id);
    var min_label = document.getElementById('value_min');
    var max_label = document.getElementById('value_max');
	var def_label = document.getElementById('value_def');
	var desc_label = document.getElementById('desc_label');
	
    Element.show('col_min');
    Element.show('col_max');
	Element.show('col_label')
	Element.show('col_default')
	Element.show('col_descr')
	Element.show('col_mand')
	
    switch(sel_elem.value) {
        case '1':
 		case '9':	min_label.firstChild.data = "min Length"; 
                    max_label.firstChild.data = "max Length";
                    break;
        case '2':   min_label.firstChild.data = "Columns";
                    max_label.firstChild.data = "Rows";
                    break;
        case '3':   min_label.firstChild.data = "Label-List, Comma seperated";
					max_label.firstChild.data = "Value-List, Comma seperated";
                    //Element.hide('col_max');
                    break;
        case '4':   min_label.firstChild.data = "checked Value";  
			        max_label.firstChild.data = "unchecked Value";
			        //Element.hide('col_max');
			        break;
        case '5':   min_label.firstChild.data = "Value-List, Comma seperated";  
                    Element.hide('col_max');
                    break;
        case '7':   min_label.firstChild.data = "Collection";  
                    max_label.firstChild.data = "Fieldname";
                    break;
        case '8':   Element.hide('col_min');
					Element.hide('col_default');
					max_label.firstChild.data = "max Attachments";
					break;
   		case '10':	min_label.firstChild.data = "Label";  
          			max_label.firstChild.data = "Groupname";
                    break;
		case '12':  min_label.firstChild.data = "Link-Label";
					max_label.firstChild.data = "Link";
					def_label.firstChild.data = "Target";
		 			break;
		case '14':
		case '15': 	min_label.firstChild.data = "Labels";
					max_label.firstChild.data = "Groupnames";
					break;
		case '16':  min_label.firstChild.data = "Child-Form";
					max_label.firstChild.data = "Count";
					def_label.firstChild.data = "Usergroups may edit";
					break;
		case '17':  min_label.firstChild.data = "min Length";
					max_label.firstChild.data = "Precision";
					def_label.firstChild.data = "Currency Symbol";
					break;
		case '19':  desc_label.firstChild.data = "Text";
					min_label.firstChild.data = "Columns";
                    max_label.firstChild.data = "Rows";
					Element.hide('col_default');
					Element.hide('col_mand');
					break;
		case '20':  min_label.firstChild.data = "Field";
					Element.hide('col_default');
					Element.hide('col_mand');
                    Element.hide('col_max');
					break;
		case '6': 	//Element.hide('col_label');
					Element.hide('col_default');
					//Element.hide('col_descr');
					Element.hide('col_mand');
        default:    Element.hide('col_min');
                    Element.hide('col_max');
                    break;
    }
}

var value_collection = ""

var groups = new Array()
var cards = new Array()
var group_fields = new Array()


// collect Field-Groups
function create_group(group, status) {
	var fld = new Array();
	fld[0] = group;
	fld[1] = status;
	groups.push(fld);
}

// collect Fields in Groups
function add_field_to_group( id, group ) {
    for ( i in groups ) {
		if ( groups[i][0] == group) {
			var fld = new Array();
			fld[0] = id;
			fld[1] = group;
			fld[2] = groups[i][1];
			fld[3] = "";
			group_fields.push(fld);
		}
    }
}

// collect Cards
function add_card( card ) {
	var card_list = card.split(",");
	for (var i=0; i<card_list.length;i++) {
		cards.push(card_list[i]);
	}
}

// Display/Hide Groups
function get_fields( group ) {
//	alert("get_fields: " + group_fields.length);
	for (i=0;i<group_fields.length;i++) {
//		if ( group_fields[i][2] && ((group == null) || (group != null) && (group_fields[i][1] == group)) )
		if ( group_fields[i][2] == true )
			Element.show('item_'+group_fields[i][0])
		else
			Element.hide('item_'+group_fields[i][0])
	}
}

// Display/Hide Group (toggle)
function set_group( group, status ) {
//alert(status);
	for(i=0;i<group_fields.length;i++){
		if ( group_fields[i][1] == group) {
			group_fields[i][2] = status;
			if ( status )
				Element.show('item_'+group_fields[i][0])
			else
				Element.hide('item_'+group_fields[i][0])
		}
	}
}

// Display/Hide Dropdown-Group
function set_dropdowngroup( group ) {
	for(i=0;i<group_fields.length;i++){
		if ( group_fields[i][1] == group )
			Element.show('item_'+group_fields[i][0])
		else
			Element.hide('item_'+group_fields[i][0])
	}
}

// Display/Hide Cards
function set_card( card ) {
	for(i=0;i<cards.length;i++){
		if ( cards[i] == card )
			document.getElementById("card_"+cards[i]).className = "card_active";
		else
			document.getElementById("card_"+cards[i]).className = "card_inactive";
	}

	set_dropdowngroup( card );
}

// dynamic Menue --------------------------------------------
function creMenu(menu_id,sub_id,isSub,isMain,page) {
	var menu = $(menu_id);
	var sub = sub_id ? $(sub_id) : null;
	menu.onmouseover = open_sub;
	menu.onmouseout = close_sub;
	menu.onclick = goto_page;
	
	isIE7 = navigator.appVersion.match(/MSIE 7/);
	isIE8 = navigator.appVersion.match(/MSIE 8/);
	
	function goto_page(e) {
		window.open(page, "_self","");
		if ( !e )
			window.event.cancelBubble = true;
		else
			e.stopPropagation();
	}

	function open_sub(e) {
		if ( sub ) {
			sub.style.top = (menu.offsetTop + menu.offsetHeight) + "px";

			if (!isSub) {
				if ( isIE7 ) {
					sub.style.left = (menu.offsetLeft + $("header_left_id").offsetWidth + 6) + "px";
					sub.style.top = (menu.offsetTop) + 88 + "px";
					sub.style.width = "250px";
				}
				else if ( isIE8 ) {
					sub.style.left = (menu.offsetLeft + $("header_left_id").offsetWidth + 6) + "px";
				}
			}
		}
		if ( isSub ) {
			sub.style.left = (menu.offsetLeft + menu.offsetWidth + 6) + "px";
			sub.style.top = (menu.offsetTop - 5) + "px";
		}
		menu.className = isMain ? "js_menu_item js_over":"js_entry js_over";
		if ( sub ) sub.style.visibility = "visible";
		window.status = "Gehe zu \"http://campus.wwedu.com" + page + "\"";
	}

	function close_sub(e) {
		menu.className = isMain ? "js_menu_item":"js_entry";
		if ( sub ) sub.style.visibility = "hidden";
		window.status = "";
	}
}
// dynamic Menue --------------------------------------------

// extends String.reverse
String.prototype.reverse = function(){
	return this.split("").reverse().join("");
}

//extends String.insert
String.prototype.insert = function( pos, str ) {
	return this.substr(0,pos) + str + this.substr(pos);
}

// Format Money-String (#.###.###,##)
function format_money(elem,dec) {
	if ( elem.value.length == 0 ) return true;
	var num = elem.value.split(".").join("").replace(/,/,".");
	var fl = parseFloat(num);
	if ( isNaN(fl) ) {
		alert("this is not MONEY!!");
		return false;
	}
	else {
		fl = fl.toFixed(dec);
		num = fl.toString();
		var parts = num.split(".");
		var reversed = parts[0].reverse();
		var newNum = "";
		for( var i=0; i<reversed.length;i++ ) {
			if ( i>0 && i%3==0 ) {
				newNum += ".";
			}
			newNum += reversed[i];
		}
		if ( parts.length == 1 )
			parts[1]="00";
			
		newNum = newNum.reverse()+","+parts[1];
		elem.value= newNum;
	}
	return true;
}

// build Data-Fields Params
function collectElements(form) {
	var params = "";
	for (var i=0; i<form.elements.length;i++ ) {
		if ( form.elements[i].name.search(/data_field/) != -1 ) {
			var name = form.elements[i].name;
			if ( params != "" ) 
				params += "&";
			params += name + "=" + form.elements[i].value;
		}
	}
	return params;
}


function setFormCollectionLink( link_id, elem ) {
	for ( var i=0; i<elem.options.length; i++) {
		link = $(link_id + elem.options[i].value);
		if ( elem.options[i].value == elem.value )
			Element.show(link);
		else
			Element.hide(link);
	}
}

function setUnsetableDateCb( cb_id, date ) {
	if ( date == "")
		$(cb_id).checked = false;
	else
		$(cb_id).checked = true;
}

function setUnsetableDate( elem, date_elem ) {
	var now = new Date();
/*	var date_d = $(elem.id+"_3i");
	var date_m = $(elem.id+"_2i");
	var date_y = $(elem.id+"_1i");

	if ( !elem.checked ) {
		date_d.value = "";
		date_m.value = "";
		date_y.value = "";
	}
	else {
		date_d.value = now.getDate() ;
		date_m.value = now.getMonth()+1;
		date_y.value = now.getFullYear();
	}
*/	
	if ( !elem.checked )
		$(date_elem).value = "";
	else
		$(date_elem).value = now.getFullYear() + "-" + (now.getMonth()+1) + "-" + now.getDate();
}


function setUnsetableDatetimeCb( cb_id, date ) {
	if ( date == "")
		$(cb_id).checked = false;
	else
		$(cb_id).checked = true;
}

function setUnsetableDatetime( elem ) {
	var now = new Date();
	var date_minutes = $(elem.id+"_5i");
	var date_h   = $(elem.id+"_4i");
	var date_d   = $(elem.id+"_3i");
	var date_m   = $(elem.id+"_2i");
	var date_y   = $(elem.id+"_1i");

	if ( !elem.checked ) {
	    date_minutes.value = "";
    	date_h.value = "";
		date_d.value = "";
		date_m.value = "";
		date_y.value = "";
	}
	else {
	    date_minutes.value = now.getMinutes();
	    date_h.value   = now.getHours();
		date_d.value   = now.getDate() ;
		date_m.value   = now.getMonth()+1;
		date_y.value   = now.getFullYear();
	}
}

// PDF Layout-Editor --------------------------------------------
var act_ff = null;
var act_ff_layout = null;
var act_x = 0;
var act_y = 0;
var act_elements = null;

var layout_const = { fac_layout: 1.0, 
					 fac_size:   972.0/637.28, 
					 fac_font:   1.1, 
					 fac_pt_mm:  72.0/25.4,
					 fac_zoom:   1.0,
					 line_adj:   1,
					 pos_x:      230,
					 pos_y:      32};

function layout_set_factors( layout, size, font, pt_mm, zoom, line_adj, pos_x, pos_y ) {
	layout_const.fac_layout = layout;
	layout_const.fac_size = size;
	layout_const.fac_font = font;
	layout_const.fac_pt_mm = pt_mm;
	layout_const.fac_zoom = zoom;
	layout_const.line_adj = line_adj;
	layout_const.pos_x = pos_x;
	layout_const.pos_y = pos_y;
}

function get_act_position(ff_id) {
	act_x = $("ff_"+ff_id).offsetLeft;
	act_y = $("ff_"+ff_id).offsetTop;
}

function update_ff(ff_id,form) {
	var div       = $("ff_"+ff_id);
	var div1      = $("ff_text_"+ff_id);
	var unit      = form.elements["form_field[units]"];
	var printable = form.elements["form_field[printable]"][1].checked;
		
	if ( unit.value == "mm") 
		var fac = layout_const.fac_size * layout_const.fac_pt_mm * layout_const.fac_zoom;
	else
		var fac = layout_const.fac_size * layout_const.fac_zoom;

	if ( form.elements["form_field[pos_x]"] )  div.style.left    = form.elements["form_field[pos_x]"].value*fac + layout_const.pos_x + "px";
	if ( form.elements["form_field[pos_y]"] )  div.style.top     = form.elements["form_field[pos_y]"].value*fac + layout_const.pos_y + "px";
	if ( form.elements["form_field[width]"] )  div.style.width   = form.elements["form_field[width]"].value*fac + "px";
	if ( form.elements["form_field[height]"] ) div.style.height  = form.elements["form_field[height]"].value*fac + "px";


	if ( form.elements["form_field[width]"] )  div1.style.width      = form.elements["form_field[width]"].value*fac + "px";
	if ( form.elements["form_field[height]"] ) div1.style.height  	 = form.elements["form_field[height]"].value*fac + "px";
	if ( form.elements["form_field[size]"] )   div1.style.fontSize   = form.elements["form_field[size]"].value*layout_const.fac_font + "pt";
	if ( form.elements["form_field[size]"] )   div1.style.lineHeight = form.elements["form_field[size]"].value*layout_const.fac_font + layout_const.line_adj + "pt";
	if ( form.elements["form_field[align]"] )  div1.style.textAlign  = form.elements["form_field[align]"].value;
	if ( form.elements["form_field[font]"] )   div1.style.fontFamily = form.elements["form_field[font]"].value;
	if ( form.elements["form_field[color]"] )  div1.style.color      = "#"+form.elements["form_field[color]"].value;
	if ( form.elements["form_field[valign]"] ) div1.style.verticalAlign  = form.elements["form_field[valign]"].value=="center" ? "middle" : form.elements["form_field[valign]"].value;

	if ( form.elements["form_field[leading]"] )   div1.style.lineHeight = form.elements["form_field[size]"].value*layout_const.fac_font + layout_const.line_adj + 
																		  parseInt(form.elements["form_field[leading]"].value) + "pt";

	if ( !printable ) {
		Element.hide("ff_"+ff_id);
		$("ff_link_"+ff_id).style.fontStyle = "italic";
	}
	else {
		Element.show("ff_"+ff_id);
		$("ff_link_"+ff_id).style.fontStyle = "normal";
	}
}

function update_layout(ff_id,p,u,x,y,w,h,f,s,a,c,v,l) {
	var div       = $("ff_"+ff_id);
	var div1      = $("ff_text_"+ff_id);

	if ( u == "mm") 
		var fac = layout_const.fac_size * layout_const.fac_pt_mm * layout_const.fac_zoom;
	else
		var fac = layout_const.fac_size * layout_const.fac_zoom;
	
	div.style.left    = x*fac + layout_const.pos_x + "px";
	div.style.top     = y*fac + layout_const.pos_y + "px";
	div.style.width   = w*fac + "px";
	div.style.height  = h*fac + "px";
	div1.style.verticalAlign  = v=="center" ? "middle" : v;
    
	div1.style.width      = w*fac + "px";
	div1.style.height     = h*fac + "px";
	div1.style.fontSize   = s*layout_const.fac_font+"pt";
	div1.style.lineHeight = s*(layout_const.fac_font + layout_const.line_adj + l) + "pt";
	div1.style.textAlign  = a;
	div1.style.fontFamily = f;
	div1.style.color      = "#" + c;

	if ( !p ) {
		Element.hide("ff_"+ff_id);
		$("ff_link_"+ff_id).style.fontStyle = "italic";
	}
	else {
		Element.show("ff_"+ff_id);
		$("ff_link_"+ff_id).style.fontStyle = "normal";
	}

}

function highlight_form_field( ff_id ) {
	var elem = $("ff_link_"+ff_id);
	var layout = $("ff_"+ff_id);
	
	if (act_ff && elem.className == act_ff.className ) return;
	
	if ( elem.className == "form_field_normal" ) {
		elem.className = "form_field_highlight";
		layout.className = "form_layout_field_highlight";
		if (act_ff) act_ff.className = "form_field_normal";
		if ( act_ff_layout)  act_ff_layout.className = "form_layout_field_normal";
	}
	else {
		elem.className = "form_field_normal";
		layout.className = "form_layout_field_normal";
	}
	act_ff = elem;
	act_ff_layout = layout;
}

function calc_units( unit, form ) {
	if ( unit == "mm")
		var fac = 1.0/layout_const.fac_pt_mm;
	else
		var fac = layout_const.fac_pt_mm;

	var x = form.elements["form_field[pos_x]"].value *= fac;
	var y = form.elements["form_field[pos_y]"].value *= fac;
	var w = form.elements["form_field[width]"].value *= fac;
	var h = form.elements["form_field[height]"].value  *= fac;
	x = Math.round(x.toFixed(2)*1000)/1000;
	y = Math.round(y.toFixed(2)*1000)/1000;
	w = Math.round(w.toFixed(2)*1000)/1000;
	h = Math.round(h.toFixed(2)*1000)/1000;
	
	if ( form.elements["form_field[pos_x]"] )  form.elements["form_field[pos_x]"].value = x;
	if ( form.elements["form_field[pos_y]"] )  form.elements["form_field[pos_y]"].value = y;
	if ( form.elements["form_field[width]"] )  form.elements["form_field[width]"].value = w;
	if ( form.elements["form_field[height]"] ) form.elements["form_field[height]"].value = h;
}

function enable_apply(ff_id,form) {
	$('save_form').disabled = false;
	$('upd_return').firstChild.data='';

	update_ff(ff_id,form);
}

function update_position(ff_id, form) {
	var div = $("ff_"+ff_id);

	if ( (div.offsetTop == act_y) && (div.offsetLeft == act_x) ) return;
	
	if ( form.elements["form_field[units]"].value == "mm") 
		var fac = layout_const.fac_size * layout_const.fac_pt_mm * layout_const.fac_zoom;
	else
		var fac = layout_const.fac_size * layout_const.fac_zoom;
		
	var x = (div.offsetLeft - layout_const.pos_x)/fac;
	var y = (div.offsetTop - layout_const.pos_y)/fac;

	x = Math.round(x.toFixed(2)*1000)/1000;
	y = Math.round(y.toFixed(2)*1000)/1000;
	
	form.elements["form_field[pos_x]"].value = x; 
	form.elements["form_field[pos_y]"].value = y; 

/*
	var w = div.offsetWidth/fac;
	var h = div.offsetHeight/fac;

	w = Math.round(w.toFixed(2)*1000)/1000;
	h = Math.round(h.toFixed(2)*1000)/1000;
	
	form.elements["form_field[width]"].value = act_elements["form_field[width]"].value; 
	form.elements["form_field[height]"].value = act_elements["form_field[height]"].value; 
*/

	$('save_form').disabled = false;
	$('upd_return').firstChild.data='';
}

function inc_value(field,ff_id,form) {
	form.elements["form_field["+field+"]"].value = parseFloat(form.elements["form_field["+field+"]"].value) + 1;
	enable_apply(ff_id,form);
}

function dec_value(field,ff_id,form) {
	form.elements["form_field["+field+"]"].value = parseFloat(form.elements["form_field["+field+"]"].value) - 1;
	enable_apply(ff_id,form);
}

function drag_cb(obj,e) {
	elem = obj.element;
	id = elem.id.split("_")[2];
	
	window.status = " " +id+" "+elem.offsetTop+" "+elem.offsetLeft;
	
	l = $("ff_" + id);
	l.style.height = (elem.offsetTop + 3) + "px";
	l.style.width = (elem.offsetLeft + 3) + "px";
	
	
	//	update_position(<% #=ff.id%>,document.forms[0]);
}	

// PDF Layout-Editor --------------------------------------------

var act_course_level = "l1";

function set_act_course_level(level){
	$(act_course_level).style.fontWeight="normal";
	$(level).style.fontWeight="bold";
	act_course_level = level;
}

function init_course() {
	hide_class($('course_path_boxes'),'course_path_level_2');
	hide_class($('course_path_boxes'),'course_path_level_3');
	hide_class($('course_path_boxes'),'course_path_level_4');
	hide_class($('course_path_boxes'),'course_path_level_5');
	show_class($('course_path_boxes'),'course_path_level_2');
	set_act_course_level('l1');
}

function set_opt_courses(id,st) {
	var l = document.getElementsByTagName("input");
	var s = "";
	var start = false;
	var cb = $("CB_"+id).parentNode.id
	
	var level = "course_path_level_" + (parseInt(cb.substr(cb.length-1,1))+1);
	
	for (var i=0;i<l.length;i++) {
		if ( l[i].id.match(id) && !start ) {
			s += l[i].id;
			s += ",";
			start = true;
			break;
		}
	}

	if ( start ) {
		for( var j=i+1;j<l.length;j++) {
			if ( $(l[j].id).parentNode.id == level )
				$(l[j].id).checked = st;
			else
			 	break;
		}
	}
}

function hide_class(node,c) {
    while( node ) {
		if ( ( node.nodeType == 1 ) && ( node.id == c ) ) 
			node.style.display = "none";
		if ( node.hasChildNodes() )
			hide_class(node.firstChild,c);

		node = node.nextSibling;
	}
}

function show_class(node,c) {
    while( node ) {
		if (( node.nodeType == 1 ) && ( node.id == c ))
			node.style.display = "block";
		if ( node.hasChildNodes() )
			show_class(node.firstChild,c);

		node = node.nextSibling;
	}
}


function hide_classes() {
	hide_class($('course_path_boxes'),'course_path_level_2');
    hide_class($('course_path_boxes'),'course_path_level_3');
    hide_class($('course_path_boxes'),'course_path_level_4');
    hide_class($('course_path_boxes'),'course_path_level_5');
}


// not used
function set_dropdowngroup_old( group ) {
	card = "";
	for(i=0;i<cards.length;i++){
		if ( cards[i][1] == group ) {
			card = cards[i][0];
		}
	}
	for(i=0;i<group_fields.length;i++){
		if ( group_fields[i][3] == card) {
			if ( group_fields[i][1] == group )
				Element.show('item_'+group_fields[i][0])
			else
				Element.hide('item_'+group_fields[i][0])
		}
	}
}

function submitCheck( record_id, value, form_id ) {
} 

function toggle_class(node,c) {
//	var level = c.substr(c.length-1,1);
    while( node ) {
		if ( node.nodeType == 1 ) {
//			var node_level = node.id.substr(c.length-1,1);
			if ( node.id == c ) {
				if (node.style.display == "none" )
					node.style.display = "block"; 
				else
					node.style.display = "none";
			}
		}
		if ( node.hasChildNodes() )
			toggle_class(node.firstChild,c);
			
		node = node.nextSibling;
	}
}

function toggle_class1( node, st ) {
    while( node ) {
		if ( node.nodeType == 1 ) {
			if ( st )
				node.style.display = "block"
			else
				node.style.display = "none";
		}
		if ( node.hasChildNodes() )
			toggle_class1(node.firstChild,st);
			
		node = node.nextSibling;
	}
}

/*
function add_field( id, group, status, card ) {
//alert("add field")
	if ( group != "" ) {
		var fld = new Array();
		fld[0] = id;
		fld[1] = group;
		fld[2] = status;
		fld[3] = card;
		group_fields.push(fld);
	}
}
*/


function show_ticket_description(ticket_group) {
    alert("Here");
}
