/***
* functions.js
**
* MPOHL, Tue Aug 14 21:10:43 CEST 2007
**
* Hilfsfunktionen für Homepageinhalte
*/

// Globale Variablen
var urlPlayer = "ajax_player.php";
var regNoPicture = /(action|portrait)_[0-9]+/;

/* {{{ Funktionen für JS-Windows */
var timeout; 

// Anzeige Funktion
function openAlertWindow(text, seconds) {
    
    // Debug: alert("Text :" + text + "\nSeconds :" + seconds);
    
    // Timeout in Sekunden
    timeout = seconds;

    // Dialog Fenster aufrufen, incl Parameter
    Dialog.info(text, {width:250, height:100, showProgress: true}); 

    // "Countdown initialisieren, der Timeout-Funktion periodisch aufruft
    setTimeout(infoTimeout, 1000);
} 

// Timeout Funktion - wird alle 1000ms vom Timer "setTimeout" aufgerufen
function infoTimeout(){ 
    // Timeout reduzieren
    timeout--;

    // Noch Fenster anzeigen ?
    if (timeout > 0){ 
        // Fenstertext aendern ?!
        // Dialog.setInfoMessage(text);
        // Timer erneut aufrufen
        setTimeout(infoTimeout, 1000);
    } 
    else {
        // Fenster schliessen
        Dialog.closeInfo();
    }
}

/* }}} */

/* Das Portrait des gewählten Spielers erkennbar machen */
function highlight_player_preview(target_id){//{{{ 
    
    // Target Div
    var target = $("player_preview_" + target_id);
    
    
    // Highlight Spieler Vorschau
    new Effect.Highlight(target, {startcolor:'#cfb5b5', endcolor:'#414141', duration: 1.5});
    
    // Für HTML-Element - Rückgabewert
    return true;
} //}}}

/* Eingebetteten Film starten / stoppen */
function StartStopVideo(video_name){//{{{ 
    
    // Filmobjekt - unterscheiden von IE und Mozilla
    var film = (navigator.userAgent.toLowerCase().indexOf("msie") < 0) ? video_name : document.video_name;
        
    // DEBUG: alert("Film-Objekt :\n" + Object.keys(film));
    
    // Film geladen und spielen
    if (film && film.IsPlaying()) {
        // DEBUG: alert("Film anhalten !");
        film.StopPlay();
    }
    else {
        film.Play();
    }
    
    
}//}}}

/* Video Fenster öffnen */
function openVideoWindow(src, title, width, height){//{{{  
    
    // Fenster Objekt
    var win = new Window({
        className: "dialog", 
        title: title,
        width: width + 20, 
        height: height + 20, 
        maximizable: false, 
        resizable: false,
        minimizable: false
        // , showEffectOptions: {duration:1.5}
    });
    
    // Alter Content
    content_old = "<div style='padding:10px' id='flow_video'><object width='" + width + "' height='" + height + "'><param name='Sportagentur_Video' value='" + src + "'></param><param name='play' value='false'><!-- Mozilla Plugin --><embed name='Sportagetur_Video' src='" + src + "' type='application/x-shockwave-flash' wmode='transparent' width='" + width + "' height='" + height + "' swLiveConnect='true' play='true'></embed></object></div>";
    
    //{{{ Neu : flowplayer     
    // Content
    content = "<div style='padding:10px' id='flow_video'>Hier kommt das Video</div>";
    
    flow_config = "{ playList: [{overlayId: 'play' },{ url: '" +  src + "'}], initialScale: 'fit', hideControls: false, autoBuffering: true}"
    
    var fo_video = new SWFObject("/www-libs/flowplayer/FlowPlayer.swf", "FlowPlayer", width, height, "7", "#ffffff", true);
    // need this next line for local testing, it's optional if your swf is on the same domain as your html page
    fo_video.addParam("allowScriptAccess", "always");
    fo_video.addVariable("config", flow_config);


    
    
    //}}}
    // DEBUG: alert("Content" + content);
    
    
    // Fenster Inhalt HTML
    win.setHTMLContent(content); 
    
    // Jetzt den Flowplayer aktivieren
    fo_video.write("flow_video");    
    
    // Fenster zentrieren auf Seite
    win.showCenter(true);
    
    
    // Fenster anzeigen
    // win.show(); 
    
    
    
    
}//}}}

/* Kontakt Formular absenden - ein bisschen pseudo AJAX */
function submitContactForm(uid){//{{{  

        
    // Zur "uid" gehörendes Formular ausblenden
    myform = $("contact_form_" + uid);
    
    /**
    * cycle between calling form.disable() and form.enable()
    * thx Prototype !
    */
    // Brauchen wir nicht, wird ja dann das Fenster "drüber" geblendet !
    // myform.disable();


    // Kurzes Fenster einblenden
    openAlertWindow("Mitteilung verarbeiten ...", 1);

    // Formular absenden
    myform.submit();
    
}//}}}
    
/* Container ein/ausblenden */
function toggleDiv(div){//{{{ 
    // Ein-/Ausblenden
    new Effect.toggle(div, 'blind', { duration: 0.6 });
} //}}}


//{{{ ADMIN Bereich

/* Bild "löschen" */
function deletePlayerPicture(picture){//{{{ 
	/**
	* Löschen bedeutet den Wert des Hidden Feldes zu leeren,
	* dann wird beim Speichern der gespeicherte Dateiname entfernt !
	*/
	
	// Nachfrage
	if(confirm("Wollen Sie das Bild wirklich entfernen ?\n(Hinweis: Das Bild wird erst beim Speichern dieser Änderung wirklich gelöscht !)")){
		// Ok - Wert des Hidden-Feldes leeren
		$("player" + picture).value = "";
		
		// Bild SRC
		var src_neu = $("PlayerPicture" + picture).src.replace(regNoPicture, "no_$1");
		
		// DEBUG: alert("SRC nach RegExp :" + src_neu);
		
		$("PlayerPicture" + picture).src = src_neu;
		
		
	}
	
} //}}}

//{{{ Spieler Speichern 
/* Spieler Speichern, evtl per Ajax wenn Bilder nicht hochgeladen werden */
function storePlayer(playerId){//{{{
	
	// Das Formular
	var player_form = $("player_form");
	
	// Feld mit Spielername
	var playerNameInput = $("playerName");
	var playerName = $F("playerName");
	
	/**
	* Wurden Medien mit übergeben, dann per POST Formular
	*/
	
	// Zu überprüfenden Formular-Felder
	var action_upload = $F("action_upload");
	var portrait_upload = $F("portrait_upload");
	// var video_upload = $F("video_upload");
	
	// DEBUG: alert("Action Upload Länge : " + action_upload.length + "\n" + "Portrait Upload Länge : " + portrait_upload.length);
	
	// Stringlänge der eingegebenen Datei
	if(action_upload.length > 0 || portrait_upload.length > 0){//{{{ per POST	
		// Das Ziel - das Player Store Skript
		player_form.action = "admin_player_store.php";
		
		/**
		* Namensfeld unbedingt wieder einschalten, weil sonst der Wert nicht
		* übermittelt wird !
		*/
		playerNameInput.enable();
		
		// DEBUG: alert("Player Name vor absenden :" + playerNameInput.value); 
		
		// Das Formular absenden
		player_form.submit();
		
	} //}}}
	else {//{{{ per Ajax GET-Request
		// Aktions Parameter, Spieler speichern
		var par_action = "player_action=store_player";

		// Spielerdaten aus Formular auslesen
		var player_data = _getPlayerData(playerId);
		
		// Ajax Optionen
		var options = {//{{{
			method: "get",
			parameters: par_action + "&" + $H(player_data).toQueryString(),
			// Event Handler
			onSuccess: function(response) {
				_storePlayerSuccess(response, playerName);
			},
			onFailure: function(response) {
				_storePlayerFailed(response, playerName);
			}
		}; //}}}
		
		// AJAX Request ausführen
		new Ajax.Request(urlPlayer, options);
	} //}}}

}//}}}

/* Spielerdaten auslesen */
function _getPlayerData(playerId){//{{{ zurück per JS Array (?) 
	
	// Objekt zur Datenspeicherung
	return {
		playerId:			playerId,
		playerCreate:		$F("playerCreate"),
		playerName: 		$F("playerName"),
		playerBirthdate:	$F("playerBirthdate"),
		playerHeight:		$F("playerHeight"),
		playerWeight:		$F("playerWeight"),
		playerTeamId:		$F("playerTeamId"),
		playerNationality:	$F("playerNationality"),
		playerMainposition:		$F("playerMainposition"),
		playerTaktik:		$F("playerTaktik"),
		playerSide:			$F("playerSide"),
		// Bilderdaten
		playerPortrait:	$F("playerPortrait"),
		playerAction:		$F("playerAction")
		// Medien gar nicht erfassen !
	};
	
} //}}}

// Speichern "erfolgreich"
function _storePlayerSuccess(response, playerName){//{{{ 
    // Antwort des Skripts ausgeben
    // DEBUG: 	alert(response.responseText);
	
	// DEBUG: alert("Spieler " + playerName + " erfolgreich gespeichert.";
    
    // Nach erfolgreichen Speicherung zur Übersichtsseite
    location.href = "admin.php";
    
}//}}}

// Speichern nicht erfolgreich
function _storePlayerFailed(response, playerName){//{{{ 
    // Meldung ausgeben
    alert(response.responseText);
} //}}}


//}}}


//{{{ Spieler löschen 
/* Dialog-Box vor Löschung eines Spielers */
function _confirmDeletePlayer(playerId){//{{{  
	
	// Spieler ID auf "_new" prüfen, sonst nur kurze Meldung
	if(playerId != "_new"){
		
		// Namen des Spielers
		var PlayerName = $F('playerName');
		
		// Dialog mit Abbruchmöglichkeit
		if(confirm("ACHTUNG: Diese Aktion löscht auch alle Statistiken, Bilder etc. !\nWollen Sie den Spieler \"" + PlayerName + "\" wirklich löschen ?")){
			// Spieler soll gelöscht werden
			deletePlayer(playerId);
		}
	}
	else {
		alert("Sie müssen einen Spieler erst anlegen, bevor Sie ihn löschen können !");
	}
    
}//}}}

// löschen "erfolgreich"
function _deletePlayerSuccess(response, playerID){//{{{ 
    // Meldung ausgeben
    // alert(response.responseText);
    
    // Nach erfolgreichen Speicherung zur Übersichtsseite
    location.href = "admin.php";
    
}//}}}

// Löschen nicht erfolgreich
function _deletePlayerFailed(response, playerId){//{{{ 
    // Meldung ausgeben
    alert(response.responseText);
} //}}}


/* Spieler löschen, nicht direkt aufzurufen !! */
function deletePlayer(playerId){//{{{  
	
	var options = {
        method: 'get',
        parameters: 'player_action=delete_player&playerId='+playerId,
        onSuccess: function(response) {
            _deletePlayerSuccess(response, playerId);
        },
        onFailure: function(response) {
            _deletePlayerFailed(response, playerId);
        }
    }

    // Ajax Aufruf
    new Ajax.Request(urlPlayer, options); 
	
}//}}}
//}}}

//}}}






    


