
// Fuer window.open():
var windowFeatures='width=500,height=550,scrollbars,resizable'
function wopen( url )
{
    window.open( url, '', windowFeatures);
		return(0);
}




/*
 * functions fuer buttons Skala, mit rollover und Arretierung beim click
 * Die Punkte einer Skala muessen in HTML id's haben wie: 
 * point_x_y 
 *  'point' : festes Prefix
 *  x       : int, Nummer einer Reihe von Punkten die eine Skala bilden, Start bei 0
 *  y       : int, Nummer eines Punktes in der Reihe, Beginn=0
 * 
 * 
 * 
 */

var MAXPOINTS = 10;  // max points per scale
var MAXSCALES = 10;  // max scales per document 
var points = new Array( MAXSCALES );
for (var i=0; i <= MAXSCALES ; i++){
	points[i] = 0
}

/*
 * SetPoints: lo/hi ligth die points einer Reihe
 *  args:
 *  id: die id eines points der Reihe in der form 'point_x_y'
 *  click: wenn 1, dann zustand fixieren: im array points wird der Wert gespeichert, 
 *    den der geklickte Stern fuer die Reihe erreicht hat.  
 */
function SetPoints ( id , click )
{
	var s = id.split('_')
	el = document.getElementById( id )
	pset = s[1]
	iset = s[2]
	myname = el.attributes["src"].value
	loname = myname.replace(/_hi\./, "_lo.")      
	hiname = myname.replace(/_lo\./, "_hi.")
	if ( click || ! points[pset] ){
		for ( var i =0; i<= MAXPOINTS; i++){
			e=document.getElementById( 'point_' + pset + '_' + i )
			if ( e ) {
				e.src=loname
			}
		}
		for ( var i =0; i<= iset; i++){
			e=document.getElementById( 'point_' + pset + '_' + i )
			e.src=hiname
		}
		if (click){
			points[pset]=(parseInt(iset)+1)
		}
	}
} // SetPoints





/****
* SetPointValues:  setzt points[id] = v 
*
* args   : 
*	id : integer , id der Reihe
*	v  :  integer, 0 <= v <= MAXPOINTS, setzt den Wert des internen points arrays auf  
*
* return :
*
*/
function SetPointValues(id, v){
	points[ id ]  = v; 
} // SetPointValues




	/****
	* CheckPoints: wird gerufen beim mouseout event. Prueft, ob der Stern mit SetPoint schon fixiert ist,
	* 	dann bleibt der Wert. Wenn nicht , geht die Aktivierung zurueck .
	* args   :
	* return :
	*
	*/

function CheckPoints( id ){
	var s = id.split('_')
	el = document.getElementById( id )
	pset = s[1]
	iset = s[2]
	myname = el.attributes["src"].value
	loname = myname.replace(/_hi\./, "_lo.")      
	hiname = myname.replace(/_lo\./, "_hi.")
	
	if (  points[pset] ){
		start = points[pset]
	} else {
		start = 0
	}
	for ( var i = start; i<= MAXPOINTS; i++){
		e=document.getElementById( 'point_' + pset + '_' + i )
		if ( e ) {
			e.src=loname
		}
	}
} // CheckPoints 


/*
 * PointValues: Gibt die gesetzten Punktwerte aus
 *  Der hoechste erhaelt, auch wenn's ganzahlung nicht hinkommt immer 100
 *  args: 
 *  max = Anzahl (0 basiert) der Reihen, die wir in der Seite verwenden
 *  np  : Anzahl der points pro frage
 *  formId: id des <form> Elements
 *  valfields: ein Array, das die id's von (hidden) Feldnamen enthaelt, die die Wahl der Sternleiste als int aufnehmen koennen
 */
 function PointValues( max , np,  formId, valfields){
	s=''
	formok=1;
	for (var i=0; i <= max; i++){
		if ( points[i] > 0 ) {
			//alert (points[i] + ',' +  np)
			if (points[i] == np ){
				x=100;
			} else {
				x =   parseInt(points[i])*Math.floor(100/np) 
			}
			s += 'Frage ' + (parseInt(i)+1) + ': ' + ( x ) + '%\n'
			document.getElementById( valfields[i] ).value = x
		} else {
			s+= 'Rangreihe '  + (parseInt(i)+1) + ': Bitte bestaetigen Sie Ihr Urteil noch mit einem Klick\n'
			formok=0;
		}
	}
	//alert (s)
	if (formok) {
		//alert(formId)
		document.getElementById(formId).submit()
	}  else {
		document.getElementById(formId).submit()
	}
 }// PointValues






	/****
	* htr    : highlight table row : erst border-bottom und dann den border-bottom der
	*   oberen tr, denn bei border-collapse: collapse
	*   fallen die border-bottom von rowN mit border-top von rowN+1 zusammen;
	*   die border-top sind nicht sichtbar oder setz-bar.
	*		Wir operieren auf allen childNodes einer <tr>, deren nodeName "TD" ist,
	*   denn style.border funktioniert bei MSIE nicht
	*
	* usage: 
 		 <tr id="tr3" onMouseOver="htr( this, 'tr3')" onMouseOut="ltr( this, 'tr3')" >
			 <td> ... </td>
		 </tr>
 		 <tr id="tr4" onMouseOver="htr( this, 'tr4')" onMouseOut="ltr( this, 'tr4')" >
	*
	*
	*
	*
	*
	*
	* np@bsn.com 6.9.2007
	*
	* args   : tr und deren "id" 
	*
	* return :
	*
	*/
	function htr( tr, id ){
		for (i=0; i<tr.childNodes.length; i++){
			if ( tr.childNodes[i].nodeName == 'TD' ){
				tr.childNodes[ i ].style.cssText = "border-bottom: 1pt dashed  #5b5c5b;  ; ";
			}
		}

		// bottom-top von der previous tr ebenfalls high light:

		myid = parseInt(id.replace('tr','')) ;
		if ( myid > 0 ){
			previd = 'tr' + (myid - 1)
			tr = document.getElementById (  previd ) 
			for (i=0; i<tr.childNodes.length; i++){
				if ( tr.childNodes[i].nodeName == 'TD' ){
					//tr.childNodes[ i ].style.cssText = "background-color: #efefef;   ";	
					tr.childNodes[ i ].style.cssText = "border-bottom: 1pt dashed  #5b5c5b;   ";
				}
			}
		}
	} // htr



  /* lowlight einer <TR>; siehe htr() */

	function ltr( tr, id ){
		for (i=0; i<tr.childNodes.length; i++){
			if ( tr.childNodes[i].nodeName == 'TD' ){
				//tr.childNodes[ i ].style.cssText = "background-color: #ffffff;   ";	
				tr.childNodes[ i ].style.cssText = "border-bottom: 1pt dashed  #ceb5c8;    ";
			}
		}
		myid = parseInt(id.replace('tr','')) ;
		if ( myid > 0 ){
			previd = 'tr' + (myid - 1)
			tr = document.getElementById (  previd ) 
			for (i=0; i<tr.childNodes.length; i++){
				if ( tr.childNodes[i].nodeName == 'TD' ){
					//tr.childNodes[ i ].style.cssText = "background-color: #ffffff;   ";	
					tr.childNodes[ i ].style.cssText = "border-bottom: 1pt dashed  #ceb5c8;    ";
				}
			}
		}
	}  // ltr


