/*
function -
function Upload gestion
*/

var qlub_eventsmgr_sortlist = [] ;

function qlub_eventsmgr_upload_request() {
	return { "callerid" : "" ,
	"uploadkind" : "image",
	"title" : "N/A" ,
	"prompt" : "N/A" ,
	"multiple" : false,
	"extensions" : ["jpg" , "jpeg" , "png" , "gif" , "tiff" , "tif" ] ,
	"namingdata" : { "wantname" : true },
	"formats" : "screen halfscreen quarterscreen",
	"callback" : "qlub_eventsmgr_image_done", 
	"cancel": { "callback" : "qlub_eventsmgr_image_cancel" } , 
	"reveal": { "anim" : false },
	"resize" : true ,
	"resize_option" : { "ratio" :  "image" } ,
	"transparency" : "image" ,
	"web" : false,
	"prompt" : events_msgs["addImage"] , 
	"title" : events_msgs["addImage"] } ;
}

function qlub_eventsmgr_image_cancel() { showblock( [ 'q_drawers' , 'qlub_admindrawer'] ); }

function qlub_eventsmgr_image_done( x ) { 
	if(x && x.files && x.files[0]) x = x.files[0];
	ge('qlub_eventsmgr_inputhidden_image').value = q_toxml(x) ;	
	//modification des menus et de l'apercu
	showblock( ['q_drawers' , 'qlub_admindrawer'] );
	var container = ge( "qlub_eventsmgr_image" ) ;
	container.innerHTML = "" ;
	var b = create_elem( "a", { href : "#" , className : "button" } ) ;
	b.innerHTML = events_msgs["changeImage"] ;
	b.onclick = function () { qdyn_qorgload( 'qu_reveal' , [ qlub_eventsmgr_upload_request() ] , 'qu' );hideblock('qlub_admindrawer'); } ;
	container.appendChild( b ) ;
	b = create_elem( "a", { href : "#" , className : "button" } ) ;
	b.innerHTML = events_msgs["delImage"] ;
	b.onclick = function () { qlub_eventsmgr_image_suppress( ) ; } ;
	container.appendChild( b ) ;
	var br = create_elem( "br" );
	container.appendChild( br ) ;
	var i  = create_elem( "img", { src : (q_spacebaseurl() + x.formats['height50']) , alt : x.linkname } ) ;
	container.appendChild( i ) ;
}

function qlub_eventsmgr_image_suppress ( ) {
	ge('qlub_eventsmgr_inputhidden_image').value= null ;
	//modification des menus et de l'apercu
	var container = ge( "qlub_eventsmgr_image" ) ;
	container.innerHTML = "" ; 
	var b = create_elem( "a", { href : "#" , className : "button" } ) ;
	b.innerHTML = events_msgs["addImage"] ;
	b.onclick = function () { qdyn_qorgload( 'qu_reveal' , [ qlub_eventsmgr_upload_request() ] , 'qu' );hideblock('qlub_admindrawer'); } ;
	container.appendChild( b ) ;
}

/*
function -
function EVENTS MANAGER
*/

function qlub_eventsmgr_prepare( ) {
	qlub_eventsmgr_reveal( ) ;
	qlub_finishreveal_admindrawer( ) ;
}

function qlub_eventsmgr_reveal( ) {
	q_removeChilds( ge( "qlub_eventsmgr_maintable" ).getElementsByTagName( "TBODY" )[ 0 ] ) ;
//console.log ( "qlub_tools.events.option[ 0 ] : " + qlub_tools.events.option[ 0 ] ) ;	
	switch( qlub_tools.events.option[ 0 ] ) {
	case "smartnotematchnext" : // smartnote matchnext
		var t = qlub_eventsmgr_editlist( { ref: "match" } ) ;
		var tr = getContainer( t ) ;
		tr.enable_admintools_switch = false ; // prevent switch
		var btn = gebtn( gebcn( tr, "qorp_eventsmgr_buttonsdiv" ), "table" ) ;
		btn.onclick = function( ) { // close admin drawer
			qlub_eventsmgr_closeeditpane( this ) ;
			qlub_close_admindrawer( ) ;
			return false ;
		} ;
		qlub_freeze_admindrawer( true ) ;
		break ;
	default : // default : all events select pane
		var t = qlub_eventsmgr_prepareeditpane( "list", { ref: "events" } ) ;
		for ( var i=0; i<events_types.length; i++ ) {
			qlub_eventsmgr_appendformbutton( create_td( t.insertRow( -1 ) ), "events_" + events_types[ i ], events_types[ i ], qlub_eventsmgr_editlist, "sprite_arrow_green_bottomright_16" ) ;
		}
		hideblock( gebtn( gebcn( getContainer( t ), "qorp_eventsmgr_buttonsdiv" ), "table" ) ) ;
		qlub_freeze_admindrawer( false ) ;
	}
	showblock( "qlub_eventsmgr" ) ;
	qlub_tools.events.option = [] ; // reset mode
}

/*
function -
function EDIT PANE
*/

function qlub_eventsmgr_prepareeditpane( mode, x ) {
	var mt =ge( "qlub_eventsmgr_maintable" ) ;
	var tr = q_insertTR( mt, "qlub_eventsmgr_edittemplate_" + mode ) ;
	tr.xref = x.ref ;
	tr.enable_admintools_switch = ( mode != "choose" ) ;
	var d = gebcn( tr.cells[ 0 ], "qorp_eventsmgr_editdiv" ) ;
	var s = x.ref.split( "#" ) ;
	var k = s[ 0 ], m = ( s[ 1 ] == -1 ) ? "_new" : "_edit" ;
	q_innerHTML( gebtn( d, "h3" ), events_msgs[ k + m + "title_" + mode ] ) ;
		
	// filters bar
	if ( ( mode == "list" ) || ( mode == "choose" ) ) {
		tr.itemsfilter = new Object( ) ; //{} ;
		qlub_eventmgr_updatefilters( tr , true )
	} 
	var t = d.appendChild( create_elem( "table", { "cellSpacing": "5", "cellPadding": "0", xref : x.ref } ) ) ;
	var callerpane = getContainer( x ) ;
	if ( callerpane ) {
		tr.callerpane = callerpane ;
		hideblock( callerpane ) ;
	}
	qlub_eventsmgr_freezeadmindrawer( tr ) ;
	showblock( tr ) ;
	return t ;
}

function qlub_eventmgr_updatefilters( tr, firsttime ) {
	var d = gebcn( tr.cells[ 0 ], "qorp_eventsmgr_editdiv" ) ;
	var seldiv = gebcn( d, "qorp_eventsmgr_selectiontr" ) ;
	if ( ! events_prototypes[ tr.xref ] ) hideblock( seldiv ) ;
	else {
		var p = events_prototypes[ tr.xref ].properties ;
		var e, n = 0 ;
		for ( var i=0; i<p.length; i++ ) {				
			pp = qlub_eventsmgr_getprop( p[ i ] ) ;
			if ( events_prototypes[ pp ] ) {
				switch( events_prototypes[ pp ].kind ) {
				case "closedselect" :
					if( firsttime ) { 
						var td = create_td ( seldiv, { style : { width:"1%" , whiteSpace :"nowrap" } } ) ; 
						td.innerHTML = " " + events_msgs[ pp ] + events_msgs[ ":" ] + " " ;
						
					}			
					e = qlub_eventsmgr_appendclosedselect( seldiv, pp ) ;
					break ;
				case "openselect" :
					if( firsttime ) { 
						var td = create_td ( seldiv, { style : { width:"1%" , whiteSpace :"nowrap" } } ) ; 
						td.innerHTML = " " + events_msgs[ pp ] + events_msgs[ ":" ] + " " ;
						
					}
					e =qlub_eventsmgr_appendopenselect( seldiv, pp ) ;
					break ;
				case "calendar" :
					if( firsttime ) { 
						var td = create_td ( seldiv , { style : { width:"1%" , whiteSpace :"nowrap" } } ) ; 
						td.innerHTML = " " + events_msgs[ pp ] + events_msgs[ ":" ] + " " ;
						
					}
					e = qlub_eventsmgr_appendyearselect( seldiv, pp ) ;
					break ;
				default :
					e = null ;
				}
				if ( e ) {
					n++ ;
					e.filtername = pp ;
					e.onchange = function( ) {
						qlub_eventsmgr_filter_reinitselect( ) ;
						// var tr = getContainer( this ) ;
						tr.itemsfilter[ this.filtername ] = this.options[ this.selectedIndex ].value ;
						gebcn( tr, "qorp_eventsmgr_editdiv" ).getElementsByTagName("table")[1].update( ) ;
					} ;
				}
			}
		}
		if ( n == 0 ) hideblock( seldiv ) ; // no select tool
	}
}

function qlub_eventsmgr_closeeditpane( x ) {
	var tr = getContainer( x ) ;
	if ( tr.callerpane ) {
		qlub_eventmgr_updatefilters( tr.callerpane ) ;
		qlub_eventsmgr_updateeditpane( tr.callerpane ) ;
		showblock( tr.callerpane ) ;
		qlub_eventsmgr_freezeadmindrawer( tr.callerpane ) ;
	}
	q_deleteRow( tr ) ;
}

function qlub_eventsmgr_updateeditpane( p ) {
	var t = p.getElementsByTagName( "table" ) ;
	if ( t.length < 1 ) return ;
	if ( t[ 1 ] && t[ 1 ].update ) t[ 1 ].update( ) ;
	else if ( t[ 0 ] && t[ 0 ].update ) t[ 0 ].update( ) ;
}

function qlub_eventsmgr_closeadmindrawer( x ) {
	qlub_eventsmgr_closeeditpane( x ) ;
	qlub_close_admindrawer( ) ;
}

function qlub_eventsmgr_freezeadmindrawer( x ) {
	qlub_freeze_admindrawer( ( x.rowIndex > 0 ) || ( ! x.enable_admintools_switch ) ) ;
}


/*
function -
function EDIT EVENT - OPENSELECT
*/

function qlub_eventsmgr_editchooselist( x, checkeditems ) {
	var t = qlub_eventsmgr_prepareeditpane( "choose", x ) ;
	t.update = function( ) { qlub_eventsmgr_updatelist( this, checkeditems ) } ;
	t.update( ) ;
	return t ;
}

function qlub_eventsmgr_editlist( x ) {
	var t = qlub_eventsmgr_prepareeditpane( "list", x ) ;
	t.update = function( ) { qlub_eventsmgr_updatelist( this ) } ;
	t.update( ) ;
	return t ;
}

function eightdigs(thedate) {
	return thedate.getFullYear() + twodigs( thedate.getMonth() + 1 ) + twodigs( thedate.getDate() ) ; 
}

function fourdigs(thedate) {
	return thedate.getDate() + "/" + twodigs( thedate.getMonth() + 1 ) ;
}

function qlub_eventsmgr_updatelist( t, checkeditems ) {
	q_removeChilds( t ) ;
	var filters = getContainer( t ).itemsfilter ;
	var tr, td, m, v, pp, ref, itemindex ;
	var xref = t.xref ;
	// events
	var p = events_prototypes[ xref ].properties ;
	if ( events_prototypes[ xref ].kind == "event" ) {
		var si = q_getElemByTagAndAttr( clubevents, "event", "kind", xref, true ) ;
		var attr = "id" ;
	} else {
		var si = qlub_eventsmgr_getopenselectitems( xref ) ;
		var attr = "value" ;
	}
	// checkboxes
	if ( checkeditems && ! t.checkstate ) {
		t.checkstate = [ ] ;
		for ( var i=0; i<si.length; i++ ) {
			t.checkstate.push( indexOfItem( si[ i ].getAttribute( attr ), checkeditems ) > -1 ) ;
		}
	}
	// filters
	qlub_eventsmgr_sortlist = [ ] ;
	var checkfilters, sortbydate = false, itemdate ;
	for ( var i=0; i<si.length; i++ ) {
		ref = xref + "#" + si[ i ].getAttribute( attr ) ;
		m = events_msgs[ xref + "_editname" ] ; // edit name
		checkfilters = true ;
		if ( m ) {
			for ( var j=0; j<p.length; j++ ) {				
				pp = qlub_eventsmgr_getprop( p[ j ] ) ;
				if ( filters[ pp ] && ( filters[ pp ] != -1 ) ) {
					v = q_getInnerText( gebtn( si[ i ], pp ) )
//console.log( "item " + i + " - propriété " + pp + " valeur " + v + " < fitre " + filters[ pp ] )
					if ( pp == "date" ) {
						var today = new Date() ;
						var curyear = today.getFullYear() ;
						var saisonyear = ( today.getMonth() < 7 ) ? curyear -1 : curyear ;
						var curmonth = twodigs(today.getMonth()+1) ;
						var curday =  twodigs(today.getDate()) ;
						var curdate = eightdigs( today ) ;
						thedate = new Date ( today.getFullYear() , today.getMonth() , today.getDate() + 1  ) ;
						var tomorrow = eightdigs( thedate ) ;
						thedate = new Date ( today.getFullYear() , today.getMonth() , today.getDate() + 7 - today.getDay() );
						var endweek = eightdigs( thedate ) ;
						thedate = new Date ( today.getFullYear() , today.getMonth() , today.getDate() + 8 - today.getDay() );
						var nextweek = eightdigs( thedate ) ;
						thedate = new Date ( today.getFullYear() , today.getMonth() , today.getDate() + 14 - today.getDay() );
						var endnextweek = eightdigs( thedate ) ; 
						if (  (filters[ pp ] == "s") && (v >= (saisonyear+ "0801")) && (v < ( (saisonyear+1)+"0731" )) ) {  //saison
						} else if ( filters[ pp ] == "m" && v >= curdate && v <= (curyear+""+curmonth+""+"31") ) { //mois a venir
						} else if ( filters[ pp ] == "w" && ( v >= curdate ) && ( v <= endweek ) ) { //semaine courante a venir
						} else if ( filters[ pp ] == "nw" && ( v>= nextweek ) && ( v <= endnextweek ) ) { //semaine prochaine
						} else if ( filters[ pp ] == "tm" && v == tomorrow) { //demain
						} else if ( filters[ pp ] == "td" && v == curdate ) { //aujourd'hui
						} else {
							checkfilters = false ;
							break;
						}
					} else if ( pp == "localteam" && ( filters[ pp ] == "M" || filters[ pp ] == "F" )  ) { //check du gender de l'équipe
						var localteam = q_getElemByTagAndAttr( clubopenselects, "localteam", "value", v, true ) ;
						var gender = q_getInnerText( gebtn( localteam[0], "gender" ) ) ;
						if ( ( gender == 1 && filters[ pp ] == "M" ) || ( gender == 0 && filters[ pp ] == "F" ) ) {
							checkfilters = false ;
							break;
						}
					} else if ( v != filters[ pp ] ) {
						checkfilters = false ;
						break ;
					}
				}
				v = qlub_eventsmgr_geteventitem( si[ i ], pp ) ;
				if ( pp == "date" ) {
					sortbydate = true ;
					itemdate = v ;
					v = qlub_eventsmgr_smartdate( v, true, ( qlub_eventsmgr_getdatemode( p[ j ] ) == "year" ) ? true : false ) ;
				} else if ( pp == "day" ) {
					v = parseInt( v.substr( 0, 2 ), 10 ) + " " + mname[ parseInt( v.substr( 2, 2 ), 10 ) - 1 ] ;
				}
				else if ( v == -1 ) v = events_msgs[ "undefineditem" ] ;
				m = m.replace( "%" + pp + "%", "<span class=qlub_eventsmgr_formtitle_" + pp + ">" + v + "</span>" ) ;
			}
		} else m = q_getInnerText( gebtn( si[ i ], "name" ) ) ;
		if ( ! checkfilters ) continue ;
		if ( m == "" ) m = "[" + events_msgs[ xref ] +"]" ;
		qlub_eventsmgr_sortlist.push( [ itemdate, i, m, ref ] ) ;
	}
	// sort
	if ( sortbydate ) {
		qlub_eventsmgr_sortlist = qlub_eventsmgr_sortlist.sort( function ( d1, d2 ) {
			if ( d1[ 0 ] == d2[ 0 ] ) return 0 ;
			if ( d1[ 0 ] < d2[ 0 ] ) return 1 ;
			return -1 ;
		} )
	}
	// display
	tr = t.insertRow( -1 ) ;
	qlub_eventsmgr_appendformbutton( create_td( tr, { colSpan: "3" } ), xref + "_newlink", xref + "#-1", qlub_eventsmgr_edititem, "sprite_arrow_green_bottomright_16" ) ; // new item
	for ( var i=0; i<qlub_eventsmgr_sortlist.length; i++ ) {
		itemindex = qlub_eventsmgr_sortlist[ i ][ 1 ] ;
		m = qlub_eventsmgr_sortlist[ i ][ 2 ] ;
		ref = qlub_eventsmgr_sortlist[ i ][ 3 ] ;
		tr = t.insertRow( -1 ) ;
		if ( checkeditems ) {
			var cb = qlub_eventsmgr_appendcheckbox( create_td( tr ), ref ) ;
			cb.itemindex = itemindex ; // i ;
			cb.onclick = function( ) { this.parentNode.parentNode.parentNode.parentNode.checkstate[ this.itemindex ] = this.checked ; } ;
			cb.checked = cb.parentNode.parentNode.parentNode.parentNode.checkstate[ cb.itemindex ] ;
		}
		qlub_eventsmgr_appendformtitle( create_td( tr ), m, 320 ) ;
		qlub_eventsmgr_appendformbutton( create_td( tr ), "edit", ref, qlub_eventsmgr_edititem, "sprite_edit_16" ) ;
		qlub_eventsmgr_appendformbutton( create_td( tr ), "delete", ref, qlub_eventsmgr_deleteitem, "sprite_delete_16" ) ;
	}
}

function qlub_eventsmgr_exportlist( x ) {
	var t = gebtn( gebcn( getContainer( x ), "qorp_eventsmgr_editdiv" ), "table" ) ;
	var c, s, r = [ ] ;
	for ( var i=0; i<t.rows.length; i++ ) {
		var c = gebtn( t.rows[ i ].cells[ 0 ], "input" ) ;
		if ( c && c.checked ) {
			s = c.ref.split( "#" ) ;
			r.push( { "kind" : s[ 0 ], "id" : s[ 1 ] } ) ;
		}
	}
	if ( r.length == 0 ) if ( ! confirm( events_msgs[ "emptyselection" ] ) ) return ;
	match_importevents( r ) ;
	qlub_eventsmgr_closeeditpane( x ) ;
	qlub_close_admindrawer( ) ;
}

function qlub_eventsmgr_edititem( x ) {
	var t = qlub_eventsmgr_prepareeditpane( "item", x ) ;
	q_removeChilds( t ) ;
	var s = x.ref.split( "#" ) ;
	var kind = s[ 0 ], id = s[ 1 ] ;
	var p = events_prototypes[ kind ].properties ;
	if ( ! p ) return ;
	t.makerow = function( tr, pp, val, option ) {
		qlub_eventsmgr_appendmandatorysign( create_td( tr ), this.xref.split( "#" )[ 0 ], tr.rowIndex ) ;
		qlub_eventsmgr_appendformtitle( create_td( tr ), events_msgs[ pp ] + events_msgs[ ":" ] ) ;
		var td = create_td( tr ) ;
		create_td( tr ) ;
		qlub_eventsmgr_appendformitem( td, pp, val, option ) ;
	} ;
	var v = ( id < 0 ) ? null : qlub_eventsmgr_getitem( kind, id ) ; // new item | edit item
	var val, pp, option ;
	for ( var i=0; i<p.length; i++ ) {
		pp = qlub_eventsmgr_getprop( p[ i ] ) ;
		option = qlub_eventsmgr_getpropOptions( kind , pp ) ;
		if ( pp == "date" ) option = qlub_eventsmgr_getdatemode( p[ i ] ) == "year" ;
		if(gebtn( v, pp ) && gebtn( v, pp ).childNodes.length > 1) val = gebtn( v, pp );
		else val = v ? q_getInnerText( gebtn( v, pp ) ) : "" ;
		t.makerow( t.insertRow( -1 ), pp, val, option ) ;
	}
	t.update = function( ) {
		var i = getContainer( this ).indextoupdate ;
		if ( ! i ) return ;
		var tr = t.rows[ i ] ;
		var s = this.xref.split( "#" ) ;
		var kind = s[ 0 ], id = s[ 1 ] ;
		var p = events_prototypes[ kind ].properties ;
		var option ;
		q_removeChilds( tr ) ;
		var v = ( id < 0 ) ? null : qlub_eventsmgr_getitem( kind, id ) ;
		var pp = qlub_eventsmgr_getprop( p[ i ] ) ;
		option = qlub_eventsmgr_getpropOptions( kind , pp ) ;
		if ( pp == "date" ) option = qlub_eventsmgr_getdatemode( p[ i ] ) == "year" ;
		if(gebtn( v, pp ) && gebtn( v, pp ).childNodes.length > 1) val = gebtn( v, pp );
		else val = v ? q_getInnerText( gebtn( v, pp ) ) : "" ;
		this.makerow( tr, pp, val, option ) ;
	} ;
}

function qlub_eventsmgr_saveitem( x ) {
try {
	var tr = getContainer( x ) ;
	var s = tr.xref.split( "#" ) ;
	var kind = s[ 0 ], id = s[ 1 ] ;
	var p = events_prototypes[ kind ].properties ;
	if ( ! p ) return ;
	var e, r = { }, pp, v = "" ;
	for ( var i=0; i<p.length; i++ ) {
		pp = qlub_eventsmgr_getprop( p[ i ] ) ;
		e = gebcn( tr, "qevtsmgr_" + pp ) ;
		switch( e.tagName.toLowerCase( ) ) {
			case "input" :
				v = e.value ;
				break ;
			case "textarea" :
				if ( isie6() ) v = e.innerHTML ;
				else v = e.value ; 
				break ;
			case "select" :
				v = ( e.selectedIndex > -1 ) ? e.options[ e.selectedIndex ].value : -1 ;
				break ;
			case "div" :
				if ( /date/.test( e.className ) ) v = e.currdate ; // calendar date
				else if ( /day/.test( e.className ) ) v = e.innerHTML ; // birthday date
				break ;
			default :
				v = e.value ;
		}
//console.log( "	save : " + p[ i ] + " -> " + v ) ;
		if ( ( v.toString() == "" ) || ( v == -1 ) ) { // FF : 0 == "" -> true
			if ( qlub_eventsmgr_ismandatory( kind, i ) ) {
				alert( events_msgs[ "mandatoryfield" ].replace( "%s", events_msgs[ pp ] ) ) ;
				return focusandselect( e ) ;
			}
		}
		r[ pp ] = { value : v , kind : ( events_prototypes[pp] && events_prototypes[pp].kind ) ? events_prototypes[pp].kind : "" } ;
	}
	if ( r.vsscore && r.homescore && ( r.vsscore.value !="" ^ r.homescore.value!="" ) ) if ( ! confirm( events_msgs[ "onlyonescore" ] ) ) {
		if ( ! r.homescore ) return focusandselect( "homescore" ) ;
		return focusandselect( "vsscore" ) ;
	}
	// after check mandatory
	if ( id == -1 ) var item = qlub_eventsmgr_makenewitem( kind ) ;
	else var item = qlub_eventsmgr_getitem( kind, id ) ;
//console.log( "qlub_eventsmgr_saveitem kind " + s[ 0 ] + " id " + s[ 1 ] ) ;
	for ( var pp in r ) {
		q_setInnerContent( item.getElementsByTagName( pp )[ 0 ], r[ pp ].value , r[ pp ].kind ) ;
	}
	
	//var xpathbefore = "event[@date>\"" + date + "\"][position()=1]";
	//PENSER A FAIRE UNE CALLBACK PR RECUP LE VRAI ID DE L'ELEMENT AJOUTE
		
	if ( isie6() || isie78() ) var xmlString = item.xml ;
	else {
		var xmlString = (new XMLSerializer()).serializeToString(item);
		xmlString = xmlString.replace( / xmlns="[^"]*"/g , "" ) ;
		//var properties = events_prototypes[ kind ].properties ;
		for ( var j in p ) {
			pp = qlub_eventsmgr_getprop( p[ j ] ) ;
			var reg = new RegExp( "(</?)" + pp.toUpperCase() + "\\b" , "g" );
			xmlString = xmlString.replace( reg , "$1" + pp.toLowerCase() );
		}
	}
	
	if ( events_prototypes[kind].kind == "event" ) {
		document.mainform.mission.value = "setevent" ;
		q_ajaxsubmitwithservice( "common@" + q_lang , { id:id,value:xmlString } , qlub_eventsmgr_saveitem_callback , [ x ] ) ; 
	} else { 
		document.mainform.mission.value = "setopenselect" ;
		q_ajaxsubmitwithservice( "common@" + q_lang , { id:id,kind:kind,value:xmlString } , qlub_eventsmgr_saveitem_callback , [ x ] ) ; 
	}
} catch( err ) {
	var s = "qlub_eventsmgr_saveitem: " ;
	try { s += err.message } catch(e) {}
	try { s += err.description } catch(e) {}
	debugmail( s ) ;
}
}

function qlub_eventsmgr_saveitem_callback( x , thethis ) {
	if ( (x.newid || x.newid == "0" ) && x.kind == "event" ) q_getElemByTagAndAttr( clubevents, "event", "id", "-1" ).setAttribute("id" , x.newid );
	else if (x.newid || x.newid == "0" ) q_getElemByTagAndAttr( clubopenselects, x.kind, "value", "-1" ).setAttribute("value" , x.newid );
	qlub_eventsmgr_closeeditpane( thethis );
}

function qlub_eventsmgr_deleteitem( x ) {
	var s = x.ref.split( "#" ) ;
	var kind = s[ 0 ], id = s[ 1 ] ;
	if ( ! confirm( events_msgs[ "confirmdelete" ].replace( "%s", events_msgs[ kind + "_this" ] ) ) ) return ;	
	if (events_prototypes[kind].kind=="event") {
		document.mainform.mission.value = "deleteevent" ;
		q_ajaxsubmitwithservice( "common@" + q_lang , { id:id } ) ; 
	}
	else {
		document.mainform.mission.value = "deleteopenselect" ;
		q_ajaxsubmitwithservice( "common@" + q_lang , { id:id, kind:kind } ) ; 
	}
	var e = qlub_eventsmgr_getitem( kind, id ) ;
	e.parentNode.removeChild( e ) ;
	qlub_eventsmgr_updateeditpane( getContainer( x ) ) ;
}


/*
function -
function FORM ITEMS
*/

function qlub_eventsmgr_appendmandatorysign( td, kind, propindex ) {
	if ( qlub_eventsmgr_ismandatory( kind, propindex ) ) {
		td.className = "qlub_eventsmgr_mandatorysign" ;
		td.innerHTML = "*" ;
	}
}

function qlub_eventsmgr_appendformtitle( td, title, size ) {
	td.className = "qlub_eventsmgr_formtitle" ;
	var d = td.appendChild( create_elem( "div", { innerHTML: title } ) ) ;
	if ( size ) d.style.width = size + "px" ;
}

function qlub_eventsmgr_appendformbutton( d, msg, ref, fn, icon ) {
	if ( icon ) {
		d.appendChild( create_elem( "DIV", { className : "adminmenu " + icon , style: { float:"left", marginRight: "4px" } } ) ) ;
	}
	var a = create_elem( "A", { href : "#", className : "button", innerHTML : events_msgs[ msg ], ref : ref } ) ;
	a = d.appendChild( a ) ;
	a.onclick = function( ) {
		getContainer( this ).indextoupdate = this.parentNode.parentNode.rowIndex ;
		fn( this ) ;
		return false ;
	} ;
	if ( msg == "match_newlink" ) { // bouton "imprimer cette liste"
		var b = create_elem( "A", { href : "#", className : "button", innerHTML : events_msgs[ "printlist" ], style : { marginLeft:"5px" } } ) ;
		b.onclick = function () {
			qlub_eventsmgr_printlist( this.parentNode.parentNode , ref  ) ;
		}
		d.appendChild( b ) ;
	}
	return a ;
}

function qlub_eventsmgr_appendformitem( d, x, v, option ) {
	if ( events_prototypes[ x ] ) {
		var k = events_prototypes[ x ].kind ;
		if ( k == "openselect" ) {
			qlub_eventsmgr_appendopenselect( d, x, v, option ) ;
			qlub_eventsmgr_appendformbutton( d.nextSibling, x + "_editlink", x, qlub_eventsmgr_editlist, "sprite_edit_16" ) ;
		} else if ( k == "closedselect" ) {
			qlub_eventsmgr_appendclosedselect( d, x, v, option ) ;
		} else if ( k == "calendar" ) {
			qlub_eventsmgr_appendcalendar( d, x, v, option ) ;
		} else if ( k == "dayselector" ) {
			qlub_eventsmgr_appenddayselector( d, x, v, option ) ;
		} else if ( k == "choosefile" ) {
			qlub_eventsmgr_appendfilechooser( d, x, v, option ) ;
		}  else if ( k == "icon" ) {
			qlub_eventsmgr_appendiconchooser( d, x, v, option ) ;
		}
	} else qlub_eventsmgr_appendtextinput( d, x, v, option ) ;
}

function qlub_eventsmgr_appendiconchooser( d, x, v, option ) { 
	//table des images
	var container = create_elem( "div", { href:"#", style: { display:"none" } , id:"qlub_eventsmgr_iconcontainer" } ) ;
	var t = create_elem( "table", { } ) ;
	for ( var i in qlub_iconsref ) {
		if ( (i-1)%8 == 0 ) var tr = t.insertRow(-1); // 8 élément par ligne
		var td = tr.insertCell(-1);
		td.onclick = function ( ) {
			ge('qlub_eventsmgr_inputhidden_icon').value = this.getElementsByTagName("img")[0].src.replace( /.*(\/bundles\/qlub\/.*)/ , "$1") ;
			ge('qlub_eventsmgr_iconpreview').src = this.getElementsByTagName("img")[0].src ;
			hideshowblock("qlub_eventsmgr_iconcontainer" , "qlub_eventsmgr_addicon");
		} 
		td.onmouseover = function () { this.style.border = "solid 1px black"; }
		td.onmouseout = function () { this.style.border = "none"; }
		var image = create_elem( "img", { width:"24", src:"/bundles/qlub/images/clubicons32/" + qlub_iconsref[ i ].file + ".png" , alt:qlub_iconsref[ i ].file } ) ;
		td.appendChild( image );
	}
	container.appendChild( t ) ; 
	var noicon = create_elem( "a", { href:"#", className:"button" } ) ;
	noicon.innerHTML = events_msgs["noicon"] ;
	noicon.onclick = function() {
		ge('qlub_eventsmgr_inputhidden_icon').value = "" ;
		ge('qlub_eventsmgr_iconpreview').src = '/images/blank.gif' ;
		hideshowblock("qlub_eventsmgr_iconcontainer" , "qlub_eventsmgr_addicon");
	}
	container.appendChild( noicon ) ;
	d.appendChild( container ) ;
	
	//preview icon choisi
	if ( v ) var icon = create_elem( "img", { width:"24", src: v , alt:"", id:"qlub_eventsmgr_iconpreview" } ) ;
	else var icon = create_elem( "img", { width:"24", src:"/images/blank.gif", alt:"" , id:"qlub_eventsmgr_iconpreview" } ) ;
	d.appendChild( icon ) ;
		
	//bouton ajouter et input hidden
	var s = create_elem( "input", { type : "hidden", id : "qlub_eventsmgr_inputhidden_icon" , className : "qevtsmgr_" + x } ) ;
	if ( v ) s.value = v ;
	d.appendChild( s ) ;
	s = create_elem( "a", { href:"#", className:"button", id:"qlub_eventsmgr_addicon" } ) ;
	s.innerHTML = events_msgs["addicon"] ;
	s.onclick = function () {
		hideshowblock("qlub_eventsmgr_addicon" , "qlub_eventsmgr_iconcontainer");
	} ;
	return d.appendChild( s ) ;
}

function qlub_eventsmgr_appendopenselect( d, x, v ) {
	var si = qlub_eventsmgr_getopenselectitems( x ) ;
	var s = gebcn( d , "qevtsmgr_" + x ) ;
	if ( s ) {
		var append = false ; 
		 s.innerHTML = ""  ;
	}
	else {
		var append = true ; 
		s = create_elem( "select", { className : "qevtsmgr_" + x } ) ;
		if( d.className == "qorp_eventsmgr_selectiontr" ) {
			if( isie6() || isie78() ) s.className += " qevtsmgr_searchselectforie" ;
			d = create_td( d , { className : "qlub_eventsmgr_search" } ) ;
		}
	}
	if ( d.className && d.className == "qorp_eventsmgr_selectiontr" ) var textinselect = "allinselect" ;
	else var textinselect = "chooseinselect" ;
	s.options[ 0 ] = new Option ( events_msgs[ textinselect ], -1 ) ;
	var index = 0 ; 
	if ( x == "localteam" && d.className && d.className == "qorp_eventsmgr_selectiontr" ) {
		s.options[ 1 ] = new Option ( events_msgs["genderF"], "F" ) ;
		s.options[ 2 ] = new Option ( events_msgs["genderM"], "M" ) ;
		index=2 ;
	}
	for ( var i=index; i<(si.length+index); i++ ) {
		var val = si[ i-index ].getAttribute( "value" ) ;
		s.options[ i + 1 ] = new Option ( q_getInnerText( gebtn( si[ i-index ], "name" ) ), val ) ;
		if ( v && ( val == v ) ) s.options[ i + 1 ][ "selected" ] = "true" ;
	}
	if ( append && d.className && d.className == "qlub_eventsmgr_search" ) {
		var div = create_elem( "div" , { className:"qlub_eventsmgr_search" } ) ;
		div.appendChild( s ) ;
		d.appendChild( div ) ;
	} else if ( append ) d.appendChild( s ) ;
	return s ;
}

function qlub_eventsmgr_appendclosedselect( d, x, v, option ) {
	var p = events_prototypes[ x ].properties ;
	var s = gebcn( d , "qevtsmgr_" + x ) ;
	if ( s ) {
		var append = false ; 
		 s.innerHTML = ""  ;
	}
	else {
		var append = true ; 
		s = create_elem( "select", { className : "qevtsmgr_" + x } ) ;
		if( d.className == "qorp_eventsmgr_selectiontr" ) {
			if( isie6() || isie78() ) s.className += " qevtsmgr_searchselectforie" ;
			d = create_td( d , { className : "qlub_eventsmgr_search" } ) ;
		}
	}
	if ( d.className && d.className == "qorp_eventsmgr_selectiontr" ) var textinselect = "allinselect" ;
	else var textinselect = "chooseinselect" ;
	s.options[ 0 ] = new Option ( events_msgs[ textinselect ], -1 ) ;
	if ( p ) {
		for ( var i=0; i<p.length; i++ ) {
			var val = p[ i ][ 0 ] ;
			s.options[ i + 1 ] = new Option( events_msgs[ p[ i ][ 1 ] ], val ) ;
			if ( v && ( val == v ) ) s.options[ i + 1 ][ "selected" ] = "true" ;
		}
	}
	if ( append && d.className && d.className == "qlub_eventsmgr_search" ) {
		var div = create_elem( "div" , { className:"qlub_eventsmgr_search" } ) ;
		div.appendChild( s ) ;
		d.appendChild( div ) ;
	} else if ( append ) d.appendChild( s ) ;
	return s ;
}

function qlub_eventsmgr_appendyearselect( d, x, v, option ) {
	var y = new Date().getFullYear() ;
	var thedate = new Date() ;
	var endweek = new Date ( thedate.getFullYear() , thedate.getMonth() , thedate.getDate() + 7 - thedate.getDay() );
	var nextweek = new Date ( thedate.getFullYear() , thedate.getMonth() , thedate.getDate() + 8 - thedate.getDay() );
	var endnextweek = new Date ( thedate.getFullYear() , thedate.getMonth() , thedate.getDate() + 14 - thedate.getDay() );
	var s = gebcn( d , "qevtsmgr_" + x ) ;
	if ( s ) {
		var append = false ; 
		 s.innerHTML = ""  ;
	}
	else {
		var append = true ; 
		s = create_elem( "select", { className : "qevtsmgr_" + x } ) ;
		if( d.className == "qorp_eventsmgr_selectiontr" ) {
			if( isie6() || isie78() ) s.className += " qevtsmgr_searchselectforie" ;
			d = create_td( d , { className : "qlub_eventsmgr_search" } ) ;
		}
	}
	if ( d.className && d.className == "qorp_eventsmgr_selectiontr" ) var textinselect = "allinselect" ;
	else var textinselect = "chooseinselect" ;
	s.options[ 0 ] = new Option ( events_msgs[ textinselect ], -1 ) ;
	s.options[ 1 ] = new Option ( events_msgs[ "currentseason" ], "s" ) ;
	s.options[ 2 ] = new Option ( events_msgs[ "comingthismonth" ], "m" ) ;
	s.options[ 3 ] = new Option ( events_msgs[ "period" ].replace("%1" , fourdigs( thedate ) ).replace("%2" , fourdigs( endweek ) ), "w" ) ;
	s.options[ 4 ] = new Option ( events_msgs[ "period" ].replace("%1" , fourdigs( nextweek ) ).replace("%2" , fourdigs( endnextweek ) ), "nw" ) ;
	s.options[ 5 ] = new Option ( events_msgs[ "tomorrow" ], "tm" ) ;
	s.options[ 6 ] = new Option ( events_msgs[ "today" ], "td" ) ;	
	if ( append && d.className && d.className == "qlub_eventsmgr_search" ) {
		var div = create_elem( "div" , { className:"qlub_eventsmgr_search" } ) ;
		div.appendChild( s ) ;
		d.appendChild( div ) ;
	} else if ( append ) d.appendChild( s ) ;
	return s ;
}

function qlub_eventsmgr_appendtextinput( d, x, v, option ) {
	if ( option && option.textarea ) {
		var s = create_elem( "textarea", { className : "qevtsmgr_" + x } ) ;
		s.innerHTML = v ;
	}
	else var s = create_elem( "input", { type: "text" , value: v, className : "qevtsmgr_" + x } ) ;
	return d.appendChild( s ) ;
}

function qlub_eventsmgr_appendfilechooser( d, x, v, option ) {
	if ( v ) {
		var x = { } ;
		var format = { }  ;
		for ( var j = 0 ; j < v.childNodes.length ; j++ ) {
			var tagname = v.childNodes[ j ].tagName ;
			if ( v.childNodes[ j ].childNodes.length > 1 ) {
				x[ tagname ] = { } ;
				for ( var i=0 ; i < v.childNodes[ j ].childNodes.length ; i++ ) {
					x[ tagname ][ v.childNodes[ j ].childNodes[ i ].tagName ] = q_getInnerText( gebtn( v , v.childNodes[ j ].childNodes[ i ].tagName ) ) ;
				}
			}
			else x[ tagname ] = q_getInnerText( gebtn( v , tagname ) ) ;
		}	
		var container = create_elem( "div", { id : "qlub_eventsmgr_image" } ) ;
		d.appendChild( container ) ;
		var s = create_elem( "input", { type : "hidden", id : "qlub_eventsmgr_inputhidden_image" , className : "event_image qevtsmgr_image" } ) ;
		d.appendChild( s ) ;
		qlub_eventsmgr_image_done( x );
		return;
	}
	var container = create_elem( "div", { id : "qlub_eventsmgr_image" } ) ;
	var b = create_elem( "a", { href : "#" , className : "button", id : "qlub_eventsmgr_image" } ) ;
	b.innerHTML = events_msgs["addImage"] ;
	b.onclick = function () { qdyn_qorgload( 'qu_reveal' , [ qlub_eventsmgr_upload_request() ] , 'qu' );hideblock('qlub_admindrawer'); } ;
	container.appendChild( b ) ;
	var s = create_elem( "input", { type : "hidden", id : "qlub_eventsmgr_inputhidden_image" , className : "event_image qevtsmgr_" + x } ) ;
	d.appendChild( s ) ;
	return d.appendChild( container ) ;
}

function qlub_eventsmgr_appendcheckbox( d, ref ) {
	var c = d.appendChild( create_elem( "input", { type: "checkbox" } ) ) ;
	c.ref = ref ;
	return c ;
}

function qlub_eventsmgr_appendcalendar( d, x, v, y ) {
	var s = d.appendChild( create_elem( "DIV", { innerHTML: qlub_eventsmgr_smartdate( v, false, y ) , className : "qevtsmgr_" + x, currdate: v } ) ) ;
	var cal = d.appendChild ( ge( "qlub_eventsmgr_cal" ).cloneNode( true ) ) ;
	cal.removeAttribute( "id" ) ;
	if ( y ) cal.isy = true ;
	if ( v != "" ) {
		cal.curryear = cal.selyear = parseInt( v.substr( 0, 4 ), 10 ) ;
		cal.currmonth = cal.selmonth = parseInt( v.substr( 4, 2 ), 10 ) - 1 ;
		cal.selday = parseInt( v.substr( 6, 2 ), 10 ) ;
	} else {
		var d= new Date( ) ;
		cal.curryear = d.getFullYear() ;
		cal.currmonth = d.getMonth() ;
		cal.selyear = cal.selmonth = cal.selday = -1 ;
	}
	qlub_eventsmgr_rendercal( cal ) ;
	showblock( cal ) ;
	return s ;
}

function qlub_eventsmgr_appenddayselector( d, x, v, option ) {
	var div = d.appendChild( create_elem( "DIV", { innerHTML: "0101" , className : "qevtsmgr_" + x , style : { display : "none" } } ) ) ;
	var sel = d.appendChild ( ge( "qlub_eventsmgr_dayselector" ).cloneNode( true ) ) ;
	sel.removeAttribute( "id" ) ;
	if ( v ) {
		div.innerHTML = v ;
		sels = sel.getElementsByTagName( "select" ) ;
		sels[ 0 ].selectedIndex = parseInt( v.substr( 0, 2 ), 10 ) - 1;
		sels[ 1 ].selectedIndex = parseInt( v.substr( 2, 2 ), 10 ) - 1;
	}
	showblock( sel ) ;
}


/*
function -
function UTILES eventsmgr
*/

function qlub_eventsmgr_getitem( kind, id ) {
	if ( id == "undefined" ) return null ;
	var e = null ;
	if ( events_prototypes[ kind ].kind == "event" ) {
		e = q_getElemByTagAndAttr( clubevents, "event", "id", id ) ;
	} else {
		e = q_getElemByTagAndAttr( clubopenselects, "select", "kind", kind ) ;
		e = q_getElemByTagAndAttr( e, kind, "value", id ) ;
	}
	return e ;
}

function qlub_eventsmgr_getitem_JSON( kind, id, originaldate, idonly ) { //originaldate = true => date non formatée , idonly = [ ]  => tableaux des openselect/closedselect où l'on souhaite conserver l'id au lieu du nom
	var item = qlub_eventsmgr_getitem( kind, id ) ;
	if ( ! item ) return null ;
	if ( ! idonly ) idonly = [];
	var p = events_prototypes[ kind ].properties ;
	var pp, v, e, k, r = { } ;
	for ( var i=0; i<p.length; i++ ) {
		pp = qlub_eventsmgr_getprop( p[ i ] ) ;
		if ( ! gebtn( item , pp ) ) v = "" ;
		else if ( gebtn( item , pp ).childNodes.length > 1 ) {
			var thenode = gebtn( item , pp ) ;
			v = { } ;
			for ( j = 0 ; j < thenode.childNodes.length ; j++ ) {
				var tagname = thenode.childNodes[ j ].tagName ;
				if ( thenode.childNodes[ j ].childNodes && thenode.childNodes[ j ].childNodes.length > 1 ) {
					v[ tagname ] = { } ;
					for ( var k=0 ; k < thenode.childNodes[ j ].childNodes.length ; k++ ) {
						v[ tagname ][ thenode.childNodes[ j ].childNodes[ k ].tagName ] = q_getInnerText( gebtn( thenode , thenode.childNodes[ j ].childNodes[ k ].tagName ) ) ;
					}
				}
				else v[ tagname ] = q_getInnerText( gebtn( thenode , tagname ) ) ;
			}
		}
		else v = q_getInnerText( gebtn( item, pp ) ) ;
		if ( events_prototypes[ pp ] && (indexOfItem( pp , idonly ) == -1) ) {
			k = events_prototypes[ pp ].kind ;
			if ( k == "openselect" ) {
				if ( v == -1 ) v = "" ;
				else {
					e = q_getElemByTagAndAttr( clubopenselects, pp, "value", v ) ;
					v = e ? q_getInnerText( gebtn( e, "name" ) ) : "" ;
				}
			} else if ( k == "closedselect" ) {
				if ( v == -1 ) v = "" ;
				else {
					e = events_prototypes[ pp ].properties ;
					for ( var j=0; j<e.length; j++ ) {
						if ( e[ j ][ 0 ] == v ) {
							v = events_msgs[ e[ j ][ 1 ] ] ;
							break ;
						}
					}
				}
			} else if ( k == "calendar" ) { 
				if ( ! originaldate ) v = qlub_eventsmgr_smartdate( v, false ) ;
			} else if ( k == "dayselector" ) {
				var currdate = new Date() ;
				v = currdate.getFullYear() + v.match(/[0-9]{2}/g)[1] + v.match(/[0-9]{2}/g)[0] ;
				if ( ! originaldate ) v = qlub_eventsmgr_smartdate( v, false ) ;
			}
		}
		r[ pp ] = v ;
	}
	return r ;
}

function qlub_eventsmgr_geteventitem( e, tag ) {
	var x = q_getInnerText( gebtn( e, tag ) ) ;
//console.log( "qlub_eventsmgr_geteventitem tag : " + tag + " - x : " + x )
	var v = x ;
	if ( events_prototypes[ tag ] ) {
		switch ( events_prototypes[ tag ].kind ) {
			case "openselect" :
				try {
					var e = q_getElemByTagAndAttr( clubopenselects, "select", "kind", tag ) ;
					e = q_getElemByTagAndAttr( e, tag, "value", x ) ;
					v = q_getInnerText( gebtn( e, "name" ) ) ;
					break ;
				} catch ( err ) {}
			case "closedselect" :
				var p = events_prototypes[ tag ].properties ;
				for ( var i=0; i<p.length; i++ ) {
					if (p[ i ][ 0 ] == x ) {
						v = events_msgs[ p[ i ][ 1 ] ] ;
						break ;
					}
				}
				break ;
		}
	}
	return v ;
}

function qlub_eventsmgr_getopenselectitems( x ) {
	var t = [ ] ;
	var s = q_getElemByTagAndAttr( clubopenselects, "select", "kind", x ) ;
	if ( s ) {
		var e = s.getElementsByTagName( x ) ;
		if ( e.length > 0 ) for ( i=0; i<e.length; i++ ) t.push( e[ i ] ) ;
	}
	return t ;
}

function qlub_eventsmgr_makenewitem( kind ) {
	var e = null ;
	var p = events_prototypes[ kind ].properties ;
	if ( events_prototypes[ kind ].kind == "event" ) {
		var doc = clubevents.getElementsByTagName( "events" )[ 0 ] ;
		e = clubevents.createElement( "event" ) ;
		e.setAttribute( "kind", kind ) ;
		e.setAttribute( "id", -1 ) ;
		for ( var i=0; i<p.length; i++ ) e.appendChild( clubevents.createElement( qlub_eventsmgr_getprop( p[ i ] ) ) ) ;
	} else {
		var doc = q_getElemByTagAndAttr( clubopenselects, "select", "kind", kind ) ;
		if ( doc == null ) {
			var select = clubopenselects.createElement("select");
			select.setAttribute("kind" , kind);
			if ( clubopenselects.getElementsByTagName("openselects")[0] ) clubopenselects.getElementsByTagName("openselects")[0].appendChild(select); // emmanuel 21.10.2009 sans comprendre
			doc = q_getElemByTagAndAttr( clubopenselects, "select", "kind", kind ) ;
		}
		e = clubopenselects.createElement( kind ) ;
		e.setAttribute( "value", -1 ) ;
		for ( var i=0; i<p.length; i++ ) e.appendChild( clubopenselects.createElement( qlub_eventsmgr_getprop( p[ i ] ) ) ) ;
	}
	e = doc.appendChild( e ) ;
	return e ;
}

function qlub_eventsmgr_ismandatory( kind, propindex ) {
	var prop = events_prototypes[ kind ].properties[ propindex ] ;
	if ( typeof( prop ) == "object" ) {
		var p ;
		for ( var p in prop ) if ( prop[ p ][ "mandatory" ] ) return true ;
	}
	return false ;
}

function qlub_eventsmgr_getprop( p ) { // p : string ou object à une seule clé qu'on veut récupérer
	if ( typeof( p ) == "object" ) for ( var pp in p ) return pp ;
	return p ;
}

function qlub_eventsmgr_getpropOptions( kind , p ) {
	var event = events_prototypes[kind].properties ;
	for ( var i = 0 ; i < event.length ; i++  ) if ( qlub_eventsmgr_getprop(event[i]) == p ) return event[i][p] ;
}

function qlub_eventsmgr_getdatemode( x ) {
	return ( x.date.mode == "year" ) ? "year" : "full" ;
}

function qlub_eventsmgr_printlist( x ) {
	window.open ('/bundles/qlub/qlub_print.html', 'qlub_print' , 'height=550, width=750, toolbar=no, menubar=no, scrollbars=yes, resizable=yes, location=no, directories=no, status=no') ;
}

/*
function -
function UTILES q_common
*/

function q_parseXMLstring( s ) {
	var xmlDoc = null ;
	try { // IE
		xmlDoc = new ActiveXObject( "Microsoft.XMLDOM" ) ;
		xmlDoc.async = "false" ;
		xmlDoc.loadXML( s ) ;
	} catch( e ) {
		try { // FF, Mozilla, Opera
			parser = new DOMParser( ) ;
			xmlDoc = parser.parseFromString( s , "text/xml" ) ;
		} catch( e ) { }
	}
	return xmlDoc ;
}

function q_getInnerText( node ) {
	if ( ! node ) return "" ;
	if ( typeof node.textContent != "undefined" ) return node.textContent ;
	else if ( typeof node.innerText != "undefined" ) return node.innerText ;
	else if ( typeof node.text != "undefined" ) return node.text ;
	else {
		switch ( node.nodeType ) {
			case 3 :
			case 4 :
				return node.nodeValue ;
				break ;
			case 1 :
			case 11 :
				var innerText = "" ;
				for ( var i=0; i<node.childNodes.length; i++ ) {
					innerText += getInnerText( node.childNodes[ i ] ) ;
				}
				return innerText ;
				break ;
			default :
				return "" ;
		}
	}
}

function q_importNodefromString( xmlobject, bImportChildren ) {
	var oNew;
	if(xmlobject.nodeType == 9) xmlobject = xmlobject.firstChild ;
	if(xmlobject.nodeType == 1) {
		oNew = clubevents.createElement(xmlobject.nodeName);
		for(var i = 0; i < xmlobject.attributes.length; i++) {
			if(xmlobject.attributes[i].nodeValue != null && xmlobject.attributes[i].nodeValue != '') {
				var attrName = xmlobject.attributes[i].name;
				if(attrName == "class") oNew.setAttribute("className", xmlobject.attributes[i].value);
				else oNew.setAttribute(attrName, xmlobject.attributes[i].value);
			}
		}
		if(xmlobject.style != null && xmlobject.style.cssText != null) oNew.style.cssText = xmlobject.style.cssText;
	}
	else if(xmlobject.nodeType == 3) oNew = clubevents.createTextNode(xmlobject.nodeValue);
	if(bImportChildren && xmlobject.hasChildNodes()) for(var oChild = xmlobject.firstChild; oChild; oChild = oChild.nextSibling) oNew.appendChild(q_importNodefromString(oChild, true));
	return oNew;
}

function q_setInnerContent( node, content , kind ) { 
	if ( ! node ) return ;
	while ( node.firstChild ) node.removeChild( node.firstChild ) ;
	if ( kind == "choosefile" ) {
		try {
			var xmlobject = q_parseXMLstring( "<" + node.tagName + ">" + content + "</" + node.tagName + ">" ) ;
			var importednode = q_importNodefromString( xmlobject , true );
			node.parentNode.replaceChild(importednode , node );
		}
		catch (e) {
			node.appendChild( clubevents.createTextNode( content ) ) ;
		}
	}
	else node.appendChild( clubevents.createTextNode( content ) ) ;
}

function q_getElemByTagAndAttr( e, tag, attrname, attrvalue, all ) {
	var s = e.getElementsByTagName( tag ) ;
	var t = [ ] ;
	if ( s.length > 0 ) {
		for ( var i=0; i<s.length; i++ ) {
			if ( s[ i ].getAttribute( attrname ) == attrvalue ) {
				if ( ! all ) return s[ i ] ;
				else t.push( s[ i ] ) ;
			}
		}
	}
	if ( ! all ) return null ;
	else return t ;
}

function q_insertTR( table, trtemplate, ttbodyindex ) {
	if ( typeof trtemplate == "string" ) trtemplate = ge( trtemplate ) ;
	if ( ! trtemplate ) return null ;
	var tbodyindex = ttbodyindex || 0 ;
	var tb = table.getElementsByTagName( "TBODY" )[ tbodyindex ] ;
	var tr = tb.appendChild ( trtemplate.cloneNode( true ) ) ;
	tr.removeAttribute( "id" ) ;
	return tr ;
}


/*
function -
function CALENDAR
*/

function qlub_eventsmgr_rendercal( cal ) {
	var dref = new Date( cal.curryear, cal.currmonth, 1, 11, 0, 0 ) ;
	var d1 = ( dref.getDay() == 0 ) ? 7 : dref.getDay() ;
	var x = 86400000, daydate, n = 0, y, m, d ;
	for ( var j=1 ; j<8; j++ ) {
		if (  j >= d1 ) daydate = new Date( dref.getTime() + ( n++ ) * x ) ;
		else daydate = new Date( dref.getTime() - ( d1 - j ) * x ) ;
		qlub_eventsmgr_renderday( cal, 1, j, daydate ) ;
	}
	for ( var i=2 ; i<6; i++ ) {
		for ( var j=1 ; j<8; j++ ) {
			daydate = new Date( dref.getTime() + ( n++ ) * x ) ;
			qlub_eventsmgr_renderday( cal, i, j, daydate ) ;
		}
	}
	if ( new Date( daydate.getTime() + 86400000 ).getMonth() == cal.currmonth ) {
		for ( var j=1 ; j<8; j++ ) {
			daydate = new Date( dref.getTime() + ( n++ ) * x ) ;
			qlub_eventsmgr_renderday( cal, 6, j, daydate ) ;
		}
		showblock( cal.rows[ 7 ] ) ;
	} else hideblock( cal.rows[ 7 ] ) ;
	if ( cal.isy ) {
		cal.rows[ 0 ].cells[ 1 ].innerHTML = mname[ cal.currmonth ] ;
		hideblock( cal.rows[ 1 ] ) ;
	} else cal.rows[ 0 ].cells[ 1 ].innerHTML = ( ( mname[ cal.currmonth ].split('').length ) < 7 ? mname[ cal.currmonth ] : mshortname[ cal.currmonth ] + "." ) + " " + cal.curryear ;
	//showblock( cal )
}

function qlub_eventsmgr_renderday( cal, i, j, daydate ) {
	var thedate = new Date() ;
	var curday = thedate.getDate() ; 
	var curmonth = thedate.getMonth() ;  
	var curyear = thedate.getFullYear() ;  
	var y = daydate.getFullYear() ;
	var m = daydate.getMonth() ;
	var d = daydate.getDate() ;
	var td = cal.rows[ i + 1 ].cells[ j - 1 ] ;
	td.daydate = daydate ;
	td.innerHTML = daydate.getDate() ;
	td.title = daydate.getDate() + " " + mname[ daydate.getMonth() ] + " " + daydate.getFullYear() ;
	td.style.cursor = "pointer" ;
	td.style.color = "" ;
	if ( m == curmonth && d == curday && y == curyear ) {
		td.style.backgroundColor = "#666666" ; 
		td.style.color = "#FFF" ;
		td.today = true ;
	}
	if ( m != cal.currmonth ) td.style.color = "#AAA" ;
	if ( ( y == cal.selyear ) && ( m == cal.selmonth ) && ( d == cal.selday ) ) td.style.color = "#F00" ;
	td.onmouseover = function( ) { this.style.backgroundColor="#FFFFA6" ; if ( this.today ) this.style.color = "#AAA" } ;
	td.onmouseout = function( ) { this.style.backgroundColor="#FFF" ; if ( this.today ) { this.style.backgroundColor="#666666" ; this.style.color = "#FFF" } } ;
	td.onclick = function( ) { qlub_eventsmgr_changedate( this ) } ;
}

function qlub_eventsmgr_nextmonth( x ) {
	var cal = getContainer( x ) ;
	if ( cal.currmonth == 11 ) {
		cal.currmonth = 0 ;
		cal.curryear = cal.curryear + 1 ;
	} else cal.currmonth = cal.currmonth + 1 ;
	qlub_eventsmgr_rendercal( cal ) ;
}

function qlub_eventsmgr_prevmonth( x ) {
	var cal = getContainer( x ) ;
	if ( cal.currmonth == 0 ) {
		cal.currmonth = 11 ;
		cal.curryear = cal.curryear - 1 ;
	} else cal.currmonth = cal.currmonth - 1 ;
	qlub_eventsmgr_rendercal( cal ) ;
}

function qlub_eventsmgr_changedate( x ) {
	var cal = getContainer( x ) ;
	var div = cal.parentNode.getElementsByTagName( "div" )[ 0 ] ;
	var d = x.daydate ;
	cal.selyear = d.getFullYear() ;
	cal.selmonth = d.getMonth() ;
	cal.selday = d.getDate() ;
	qlub_eventsmgr_rendercal( cal ) ;
	div.currdate = cal.selyear + twodigs( cal.selmonth + 1 ) + twodigs( cal.selday ) ;
	div.innerHTML = qlub_eventsmgr_smartdate( div.currdate, false, cal.isy ) ;
}

function qlub_eventsmgr_smartdate( x, short, isy ) {
	if ( x == "" ) return "?" ;
	var day = parseInt( x.substr( 6, 2 ), 10 ) ;
	var month = parseInt( x.substr( 4, 2 ), 10 ) - 1 ;
	var t = day + " " + ( short ? mshortname[ month ] + " " : mname[ month ] ) ;
	if ( ! isy ) {
		var year = parseInt( x.substr( 0, 4 ), 10 ) ;
		var d = new Date( year, month, day ) ;
		t = dshortname[ d.getDay() ] + " " + t + " " + year ;
	}
	return t ;
}

/*
function -
function DAY SELECTOR
*/

function qlub_eventsmgr_updatedaysel( x ) {
	var sels = x.parentNode.getElementsByTagName( "select" ) ;
	if ( x == sels[ 1 ] ) {
		var l = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] ;
		var m = x.selectedIndex ;
		if ( sels[ 0 ].selectedIndex > l[ m ] - 1 ) sels[ 0 ].selectedIndex = l[ m ] - 1 ;
		for ( var i=0; i < 31; i++ ) visibleblock( sels[ 0 ].options[ i ], i < l[ m ] ) ;
	}
	var div = gebtn( getContainer( x ).parentNode, "div" ) ;
	var d = div.innerHTML ;
	div.innerHTML = sels[ 0 ].options[ sels[ 0 ].selectedIndex ].value + sels[ 1 ].options[ sels[ 1 ].selectedIndex ].value ;
}

/*
function -
function DOM EVENT of select
*/

function qlub_eventsmgr_filter_reinitselect ( ) {
	var selects = ge ( "qorp_eventsmgr_selectiontr" ).getElementsByTagName("SELECT");
	for( var i = 0 ; i < selects.length ; i++ ) selects[i].style.width=null ;
}

function qlub_eventsmgr_filter_onmouseover( target , ee ) {
	qlub_eventsmgr_filter_reinitselect( )
	target.style.width = "auto" ;
}

function qlub_eventsmgr_filter_onmouseout( target , ee ) {
	var relatedTarget = getRelatedElementFromEvent( ee ) ;
	if ( ! relatedTarget ) return ;
	qlub_eventsmgr_filter_reinitselect() ;
}


var qlub_eventsmgr_js_loaded = true ;
if ( window.qdyn_loaded ) qdyn_loaded ( "qlub_eventsmgr_js_loaded" ) ;