﻿function pageOutOfDateFeedback()
{
	$('#ExistingPostsNeedsUpdateContainer').fadeIn();
}
function enableNewPostLink()
{
	$('#NewFormButtonBlocker').fadeOut();
}

function initLoading()
{
	initRequest(loadingStr + "...");
}
function initSaving()
{
    initRequest(savingStr + "...");
}
function initDeleting()
{
    initRequest(deletingStr + "...");
}

function initRequest(text)
{
	var info = text + '<img src="../images/icons/editor/loading_circles.gif" alt="" class="icon" />';
	showFeedback(info, "info", false); // TODO... ska vara false... men måste fixa callbacks innan
}

// Todo: se till att timeouten enbart gäller för "sista klicket"
var hideFeedbackTimeoutHandle = null;
function startHideFeedbackTimeout()
{
	abortHideFeedbackTimeout();
	hideFeedbackTimeoutHandle = setTimeout('hideFeedback()', 6000);
}
// Abort timeout if active
function abortHideFeedbackTimeout()
{
	if (hideFeedbackTimeoutHandle != null)
	{
		clearTimeout(hideFeedbackTimeoutHandle);
		hideFeedbackTimeoutHandle == null;
	}
}
	
function hideFeedback()
{
	if ($('#FeedbackInfoContainer:visible').size() == 1)
//		$('#FeedbackInfoContainer').fadeOut();
		$('#FeedbackInfoContainer').hide();
}

function showFeedback(info, icon, hideAfterTimeout)
{
	if ($('#FeedbackInfoContainer:visible').size() == 0)
		$('#FeedbackInfoContainer').fadeIn()
		
	var now = new Date();
	var nowStr = '<span class=\"discreteInfo">' + makeDoubleDigit(now.getHours()) + ':' + makeDoubleDigit(now.getMinutes() )+ ':' + makeDoubleDigit(now.getSeconds()) + '</span>';
	var html = "<img src=\"../images/icons/feedback_icon_" + icon + ".png\" style=\"vertical-align:-12px; margin-right:10px;\" />" + info + " " + nowStr;
	$('#FeedbackInfoContainer').children("span").html(html);
	if (hideAfterTimeout)
	{
		startHideFeedbackTimeout();
	}
	else
	{
		// if we do not want to hide info... then we abort any current timeout so this new info does not disappear when it shouldn't
		abortHideFeedbackTimeout();
	}
}
function makeDoubleDigit(digit)
{
	return (digit < 10 ? "0" : "") + digit;
}		

// anropas som callback efter ajax success
//function removeSelectedRowFromSelect(selectObjId)
//{
//	var selectObj = $id(selectObjId);
//	if (selectObj.options[selectObj.selectedIndex] > 0)
//	{
//		selectObj.remove(selectObj.selectedIndex);
//	}
//	else
//	{
//	}
//}
function removeRowFromSelect(selectObjId, optionValue) // nackdel med att ta bort den valda är ju ifall man byter i listan innan requesten har fixats.. därför tar vi bort en post beroende på dess värde
{
	var selectObj = $id(selectObjId);
	for (var i = 0; i < selectObj.options.length; i++)
	{
		if (''+optionValue == ''+selectObj.options[i].value)
		{
			selectObj.remove(selectObj.selectedIndex);
			selectObj.selectedIndex = 0;
			
			var selectObjIdParts = selectObjId.split('_');
			if (selectObjIdParts.length >= 2 && selectObjIdParts[0] == 'SelectedImage')
			{
				var previewId = selectObjIdParts[0] + 'Preview';
				for (var i = 1; i < selectObjIdParts.length; i++) // since we can have multiple underscores in the id string...
				{
					previewId += "_" + selectObjIdParts[i];
				}
				previewSelectedImage(selectObj, previewId);
			}
			return;
		}
	}
	showFeedback(lang_NoMatchingRowInDropDown, "warning", true);
}
// anropas som callback efter ajax success
function addRowToSelect(selectObjId, value, text)
{
	var selectObj = $id(selectObjId);
	if (selectObj.options.length > 0 && selectObj.options[selectObj.options.length-1].value == '0') {
		selectObj.options[selectObj.options.length] = new Option('# ' + lang_NewCategories + ':', '0');
	}
	selectObj.options[selectObj.options.length] = new Option(/*select'- ' +*/ text, value);
	selectObj.selectedIndex = selectObj.options.length-1;

	$id(selectObjId + '_new_category').value = '';
}

// för att ta bort filer som finns i selects
function ProcessDeleteSelectedFileRequest(selectObjId)
{
	var selectObj = $id(selectObjId);
	var path = selectObj.options[selectObj.selectedIndex].value;
	if (path.length > 0)
	{
		ProcessDeleteFileRequest(path, selectObjId, null, null);
		//AjaxRequest('try=deleteFile&path=' + path + '&selectObjId=' + selectObjId, null, null);
	}
	else
	{
		showFeedback(lang_YouHaveToSelectAFile, "warning", true);
	}
}

function ProcessDeleteFileRequest(path, selectObjId, blockingObj, hidingObj)
{
	var queryStr = 'try=deleteFile';
	if (path != null && path.length > 0)
	{
		queryStr += '&path=' + path; // 
	}
	if (selectObjId != null && selectObjId.length > 0)
	{
		queryStr += '&selectObjId=' + selectObjId;
	}
	AjaxRequest(queryStr, blockingObj, hidingObj);
}

function ProcessDeleteCategoryRequest(moduleId, selectObjId)
{
	var selectObj = $id(selectObjId);
	if (parseInt(selectObj.options[selectObj.selectedIndex].value) > 0)
	{
		var categoryId = selectObj.options[selectObj.selectedIndex].value;
		AjaxRequest('moduleId=' + moduleId + '&try=delete&id=' + categoryId + '&selectObjId=' + selectObjId, null, null);
	}
	else
	{
		showFeedback(lang_YouHaveToSelectACategory, "warning", true);
	}
}

function ProcessNewCategoryRequest(moduleId, selectObjId, inputObjId)
{
	var categoryName = $id(inputObjId).value;
	if (categoryName.length > 0)
	{
		AjaxRequest('moduleId=' + moduleId + '&try=add&categoryName=' + categoryName + "&selectObjId=" + selectObjId, null, null);
	}
	else
	{
		showFeedback(lang_YouHaveToEnterACategoryTitle, "warning", true);
	}
}

function hideAttachment(id) {
    $('#attachment_' + id).slideUp();
}

function showAttachment(attachmentHtml) {
    $('#attachment_list').append(attachmentHtml);
}


function ProcessRemoveAttachmentRequest(moduleId, fileId) {
    AjaxRequest('moduleId=' + moduleId + '&try=removeAttachment&id=' + fileId, null, null);
}

function ProcessAddAttachmentRequest(moduleId, postObjId, selectObjId, inputObjId) {
    var postId = $id(postObjId).value;
    var filename = encodeURIComponent($id(selectObjId).value);
    var description = encodeURIComponent($id(inputObjId).value);
    if (filename.length > 0) {
        AjaxRequest('moduleId=' + moduleId + '&try=addAttachment&id=' + postId + '&file=' + filename + '&description=' + description + '&selectObjId=' + selectObjId, null, null);
    }
    else {
        showFeedback(lang_YouHaveToSelectAFile, "warning", true);
    }
}

function AjaxRequest(queryString, blockingObj, hideObj)
{
	$.ajax({
		method: "get",
		url: "AdminAjaxResponse.ashx",
		data: queryString,
		beforeSend: function() { initLoading(); }, //show loading just when link is clicked
		complete: function() { $("#loading").fadeOut();}, //stop showing loading when the process is complete
		success: function(html) { //so, if data is retrieved, store it in html
				var result = html.split('{#}', 4); // status{#}info{#}icon[{#}callbackAsString]
				showFeedback(result[1], result[2], true);
				if (result[0] == "success")
				{
					if (blockingObj != null)
						$('#' + blockingObj).show(); // TODO... fade... men då ta ut opacity från css först pga bugg i ie
					if (hideObj != null)
						$('#' + hideObj).slideUp();//fadeOut();
					if (result.length == 4)
						eval(result[3]);
				}
			},
		error: function (XMLHttpRequest, textStatus, errorThrown) {
				// typically only one of textStatus or errorThrown will have info
				this; // the options for this ajax request
				if (textStatus == 'timeout')
					showFeedback(lang_TimeoutWarning, "warning", true);
				if (textStatus == 'error')
					showFeedback(lang_GenericError, "warning", true);
//				else
//					alert(textStatus + " or " + errorThrown);
			}
		//, timeout: 1
		
	});
	return false; // if javascript is disabled... we want the link to behave as normal... but not now
}


function previewSelectedImage(selectObj, previewContainerUID)
{
	previewImage(selectObj.options[selectObj.selectedIndex].value, previewContainerUID);
}
function previewImage(imgSrc, previewContainerUID)
{
	var innerHtml = lang_SelectImageToPreview;
	if (imgSrc.length > 4) // kortaste extension plus punkt
	{
		if (imgSrc.substr(imgSrc.length - 4).toLowerCase() == '.swf')
		{
			//innerHtml = 'Ingen f&ouml;rhandsvisning <br />av flash-filer.';
			var width = 80;
			//var height = 300;
			var fullName = imgSrc;
			innerHtml = '<object classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" border="0" width="' + width + '" data="' + fullName + '">' +
						'	<param name="movie" value="' + fullName + '">' +
						'	<param name="quality" value="Medium">' +
						'	<embed src="' + fullName + '" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="' + width + '" quality="Medium">' +
						'</object>';
		}
		else
		{
			innerHtml = '<img src="' + imgSrc + '" width="80" />';
		}
	}
	$id(previewContainerUID).innerHTML = innerHtml;
}
