/**
 * JS-Library for bewegtbild-pr generell (nicht nur Administration!).
 * Tested with jQuery 1.2.6 & jQuery 1.3.2 ...
 * 
 * Last updated 7/8/2009
 * 
 * @author David Sullivan
 * @version 1.0
 */

// variables for bewegtbild-pr specific functions ...
var ajaxUrl = "../include/ajax.php"; // relative path!
var allowedFileTypesForVideoUpload = new Array("mpg", "mpeg", "avi", "mov", "mp4", "flv","vob","wmv");
var allowedFileTypesSlideshow = new Array("jpg", "jpeg");
var stdFadeSpeed = 150; // ms
var timecodes = new Array();
var ignoreVideoJsValidation = false;
var ignoreExtraFileValidation = true;

/****************************************************************************
 * The following are bewegtbild-pr specific functions.						*
 ****************************************************************************/

// use objects in future to avoid collisions and long names ...
var video = function(){};
var bw = function(){};

function enableSelect(id)
{
	$("#" + id).attr("disabled", "");
	$("#" + id).removeClass("disabled");
}

function enableStandardUploadExtraFile() {
	$("#ftpSelection").hide();
	$("#ftpFileList").hide();
	$("#extraFile").show();
}

function enableStandardUpload() {
	$("#normalSave").show();
	$("#noCheckSave").hide();
	
	$("#ftpSelection").hide();
	$("#ftpFileList").hide();
	$("#videoFile").show();
	enableVideoJsValidation();
}

function enableFTPSelection() {
	$("#normalSave").hide();
	$("#noCheckSave").show();
	$("#newExtraFileBtn1").hide();
	
	ignoreExtraFileValidation = true;
	$("#ftpSelection").hide();
	$("#ftpFileList").show();
	disableVideoJsValidation();
}

function enableNewExtraFileForm() {
	disableVideoJsValidation();
	ignoreExtraFileValidation = false;
	$("#newExtraFile").show();
	$("#newExtraFileAdd").hide();
	$("#oldVidBtn1").hide();
	$("#oldVidBtn2").hide();
	$("#newExtraFileBtn1").show();
}

function toggleQuickUploadEmail(enabled)
{
	if(enabled) {
		$("#zugriff_email_label").show();
		$("#zugriff_email").show();
	}
	else {
		$("#zugriff_email_label").hide();
		$("#zugriff_email").hide();
	}
}

function fillProjectSelect(clientID, selected)
{
	var brandID = $("#marke").val();
	storeSelectedValue("marke", "brandID");
	
	$.post(ajaxUrl, {call: "fillProjectSelect", clientID: clientID, brandID: brandID, selected: selected}, function(data)
	{	
		$("#projekt").replaceWith(data);
		enableSelect("projekt");
		$("#projectID").val(0);
	});
}

function storeSelectedValue(fromID, toID)
{
	$("#" + toID).val($("#" + fromID).val());
}

function confirmDeleteSlideshowPicture(projectID, videoID, slideID)
{
	if (confirm("Slide wirklich löschen?"))
	{
		$.post(ajaxUrl, {call: "deleteSlideshowPicture", projectID: projectID, videoID: videoID, slideID: slideID},
			function(data)
			{
				//console.log(data);
				if (projectID)
					document.location = "project.php?projectID=" + projectID + "&view=2";
				else
					document.location = "video.php?videoID=" + videoID + "&view=4";
			}
		);
	}
}

function checkSlideshowForm() {
	var file = $("#picture").val();
	$("#pictureError").empty();
	
	if (file != "" && !inArray(getSuffix(file).toLowerCase(), allowedFileTypesSlideshow))
	{
		$("#pictureError").html("Es wird nur das JPG-Format unterst&uuml;tzt.");
		return false;
	}
	return true;
}

function checkVideoForm(uploadID, btn)
{
	if(!ignoreExtraFileValidation) {
		var file = $("#extraFile").val();
		
		if(!file || file == "") {
			$("#extraFileError").html("Keine Datei ausgew&auml;hlt");	
			return false;
		}
		return true;
	}
	
	if (ignoreVideoJsValidation)
		return true;
	else
	{
		var file = $("#videoFile").val();
		var mailto = $("#mailto").val();
		var error = false;	// did an error occur?
		
		// empty all error divs
		$("div.error").empty();
		
		// validate file stuff
		if (!file || file == "")
		{
			$("#videoFileError").html("Keine Datei ausgew&auml;hlt");
			error = true;
		}
		else
		{
			if (!inArray(getSuffix(file).toLowerCase(), allowedFileTypesForVideoUpload))
			{
				$("#videoFileError").html("Format wird nicht unterst&uuml;tzt");
				error = true;
			}
		}
		
		// ratio given?	
		if (!$("#format0:checked").val() && !$("#format1:checked").val())
		{
			$("#aspectRatioError").html("Bitte eine Auswahl treffen");
			error = true;
		}
			
		// format given?
		if (!$("#flv:checked").val() && !$("#mpg:checked").val() && getSuffix(file) != "flv")
		{
			$("#formatsError").html("Bitte eine Auswahl treffen");
			error = true;
		}	
		
		// validate emails ...
		if (mailto != "")
		{
			mailto = mailto.split(",");
			for (i = 0; i < mailto.length; i++)
			{
				mailto[i] = trim(mailto[i]);
				if (!isCorrectEmail(mailto[i]))
				{
					$("#mailtoError").html("Bitte Eingabe &uuml;berpr&uuml;fen");
					error = true;
					break;
				}
			}
		}
		
		if (error)
			return false;
		else
			return true;
	}
}

function checkAcceptanceForm()
{
	var errs = false;
	
	$("div.error").empty();
	
	if (!$("#receivers-select option").val())
	{
		$("#receiversError").html("Bitte mindestens einen Empf&auml;nger ausw&auml;hlen");
		errs = true;
	}
	
	/*
	$.each($("input[type='file']"), function(obj){
		if (getSuffix(obj.val()) != "pdf")
			errs = true;
	});
	*/
	
	var pdf1 = $("#pdf1").val();
	var pdf2 = $("#pdf2").val();
	var pdf3 = $("#pdf3").val();
	var pdfPls = "Bitte PDF-Datei ausw&auml;hlen";
	
	if (pdf1 && getSuffix(pdf1) != "pdf")
	{
		$("#pdf1Err").html(pdfPls);
		errs = true;
	}
	
	if (pdf2 && getSuffix(pdf2) != "pdf")
	{
		$("#pdf2Err").html(pdfPls);
		errs = true;
	}
	
	if (pdf3 && getSuffix(pdf3) != "pdf")
	{
		$("#pdf3Err").html(pdfPls);
		errs = true;
	}	
	
	return !errs;
}

function addNewReceiver(call)
{
	var forename = $("#forename").val();
	var surname = $("#surname").val();
	var email = $("#email").val()
	var error = false;
	
	if (!call || call == undefined)
		call = "addNewReceiver";
	else
		call = "addNewPerson";
	
	$("div.error").empty();
	
	if (forename == "" || surname == "")
	{
		$("#namesError").html("Bitte Vor- und Nachname angeben");
		error = true;
	}
	
	if (!isCorrectEmail(email))
	{
		$("#emailError").html("Bitte E-Mail-Adresse &uuml;berpr&uuml;fen");
		error = true;
	}
		
	if (!error)
	{
		$.post(ajaxUrl, {call: call, forename: forename, surname: surname, email: email}, function(data)
		{
			if (data != "0" && isFinite(data)) // isNumber()?
			{
				var newContactID = data;
				var newOption = "<option onclick=\"deleteReceiver(" + newContactID + ")\" style=\"display:none\" " +
					"id=\"receiver" + newContactID + "\" value=\"" + newContactID + " " + email + "\">" + forename + " " + surname +
					" (" + email + ")" + "</option>";
				$("#receivers-select").append(newOption);
				$("#receiver" + newContactID).fadeIn(stdFadeSpeed);
				
				var newHiddenReceiver = "<option selected=\"selected\" id=\"hiddenReceiver" + newContactID + "\" value=\"" + newContactID + " " + email + "\"></option>";
				$("#hiddenReceivers-select").append(newHiddenReceiver);
				
				$("#forename").val("");
				$("#surname").val("");
				$("#email").val("");
			}
			else
			{
				$("#emailError").html("Sie haben schon einen Kontakt mit dieser E-Mail-Adresse");
			}	
		});
	}	
}

function addNewPerson()
{
	addNewReceiver("addNewPerson");
}

function deleteReceiver(contactID)
{
	var receiverHTML = $("#receiver" + contactID).html();
	var email = receiverHTML.split(" ").pop();
	var newOption = "<option onclick=\"addReceiver(" + contactID + ")\" style=\"display:none\" id=\"receiver" + contactID + "\""+
		" value=\"" + contactID + " " + email + "\">" + receiverHTML + "</i>" + "</option>";
	
	$("#receiver" + contactID).fadeOut(stdFadeSpeed, function(){
		$("#receiver" + contactID).remove();
		$("#contacts-select").append(newOption);
		$("#receiver" + contactID).fadeIn(stdFadeSpeed);
		$("#hiddenReceiver" + contactID).remove();
	});
	
}

function addReceiver(contactID)
{	
	var receiverHTML = $("#receiver" + contactID).html();
	var email = receiverHTML.split(" ").pop();
	var newOption = "<option onclick=\"deleteReceiver(" + contactID + ")\" style=\"display:none\" id=\"receiver" + contactID + "\"" +
		" value=\"" + contactID + " " + email + "\">" + receiverHTML + "</i>" + "</option>";
	var newHiddenReceiver = "<option selected=\"selected\" id=\"hiddenReceiver" + contactID + "\" value=\"" + contactID + " " + email + "\"></option>";
	
	$("#receiver" + contactID).fadeOut(stdFadeSpeed, function(){
		$("#receiver" + contactID).remove();
		$("#receivers-select").append(newOption);
		$("#hiddenReceivers-select").append(newHiddenReceiver);
		$("#receiver" + contactID).fadeIn(stdFadeSpeed);
	});
}

function addReceiverFromSelect()
{
	if (isIE())
	{
		var fullValue = $("#contacts-select option:selected").val();
		var idOnly = fullValue.split(" ").shift();
		addReceiver(idOnly);
	}
}

function deleteReceiverFromSelect()
{
	if (isIE())
	{
		var fullValue = $("#receivers-select option:selected").val();
		var idOnly = fullValue.split(" ").shift();
		deleteReceiver(idOnly);
	}
}

function deleteVideoTag(videoID, ID)
{
	$.post(ajaxUrl, {call: "deleteVideoTag", videoID: videoID, ID: ID}, function(data)
	{
		$("#videoTags").html(data);
		//document.location = "";
	});
}

function quickUploadFormContinue(videoID, isNew, nextStep, msg)
{
	if (!msg) msg = "";
	
	document.location = "video.php?videoID=" + videoID + "&view=" + nextStep + (isNew ? "&new=true" : "") + (msg ? ("&msg=" + msg) : "");
}

function videoFormContinue(videoID, isNew, nextStep, msg)
{
	if (!msg) msg = "";
	
	document.location = "video.php?videoID=" + videoID + "&view=" + nextStep + (isNew ? "&new=true" : "") + (msg ? ("&msg=" + msg) : "");
}

function addTimecode(timecode)
{
	timecodes.push(timecode);
}

function refreshSpecialPersonsDiv()
{
	if (document.getElementById("special").checked)
	{
		$("#specialPersons-div").fadeIn(stdFadeSpeed);
	}
	else
	{
		$("#specialPersons-div").fadeOut(stdFadeSpeed);
	}
}

function disableVideoJsValidation()
{
	ignoreVideoJsValidation = true;
}

function enableVideoJsValidation()
{
	ignoreVideoJsValidation = false;
}

function __setStartSlide(projectID, videoID, slideID)
{
	$.post(ajaxUrl, {call: "setStartSlide", projectID: projectID, videoID: videoID, slideID: slideID}, function(data)
	{
		if (videoID)
			document.location = "video.php?view=4&videoID=" + videoID + "&msg=9";
		else if (projectID)
			document.location = "project.php?view=2&projectID=" + projectID + "&msg=9";
	});
}

video.setStartSlide = __setStartSlide;

function __history(videoID)
{
	videoID = videoID ? videoID : 0;
	$.post(ajaxUrl, {call: "video.history", videoID: videoID}, function(data){
		$("#history-div").html(data);
		$("#history-div").fadeIn(stdFadeSpeed);
		$("#history-a").html("Vergangene Abstimmungen ausblenden");
		$("#history-a").attr("href", "javascript:video.hideHistory(" + videoID + ")");
	});
}

function __hideHistory(videoID)
{
	$("#history-a").html("Vergangene Abstimmungen anzeigen");
	$("#history-a").attr("href", "javascript:video.history(" + videoID + ")");
	$("#history-div").fadeOut(stdFadeSpeed, function(){
		$("#history-div").empty();
	});
}

video.history = __history;
video.hideHistory = __hideHistory;

function __showPdfForm()
{
	$("#acc-pdfs-a").fadeOut(stdFadeSpeed, function(){
		$("#acc-pdfs-a").remove();
		$("#acc-pdfs").fadeIn(stdFadeSpeed);
	});
}

video.showPdfForm = __showPdfForm;
