/*
This file is licensed and should not be used as part and/or all without permission
*/

function DefaultButtonClick(event, buttonID) {
	if (event.type != "keypress" || event.keyCode != 13)
		return true;
	var elem = document.getElementById(buttonID);
	if (elem.tagName == "A")
		location.href = elem.href;
	if (elem.tagName == "INPUT" && elem.type == "button")
		elem.click();

	var evt = document.createEvent("HTMLEvents");
	evt.initEvent("click", true, true);
	elem.dispatchEvent(evt);

	return false;
}

// Does generic widget instance non-ajax postback
function DoPostback(sp, wi, pid, act, prm) {
	$('#_postbackData').val(wi + "|)" + act + "|)" + prm + "|)" + pid);
	$('#form').submit();
}
// Does generic widget instance ajax postback
function DoPostbackAjax(sp, wi, pid, act, prm) {
	// fade out control
	var wiPref = '#wi' + wi + 'container';
	var overDiv = OverlayDiv(sp, $(wiPref));
	// do postback
	var inputs = GetInputs(sp, wiPref);
	$.post(sp + "DoAjaxCall.aspx", { action: "doPostback", wi: wi, pid: pid, act: act, prm: prm, ips: inputs },
	function(data) {
		$('#wi' + wi + 'container').html(data);
		OverlayDivRemove(overDiv);
	}, "html");
}
// Does generic widget instance ajax postback but ignores callback, does not replace widget
function DoPostbackAction(sp, wi, pid, act, prm, de, em) {
	// do postback
	var inputs = null;
	if (em == false) {
		var wiPref = '#wi' + wi + 'container';
		inputs = GetInputs(sp, wiPref);
	}
	else {
		inputs = GetInputs(sp, '#_editWidgetDiv');
	}
	$.post(sp + "DoAjaxCall.aspx", { action: "doActionPostback", wi: wi, pid: pid, act: act, prm: prm, ips: inputs, em: em },
	de, "html");
}
// Does ajax postback for drag and drop window
function DoPostbackAjaxDragDrop(sp, act, prm) {
	// do postback
	$.post(sp + "DoAjaxCall.aspx", { action: "doPostbackDragDrop", act: act, prm: prm },
	function(data) {
	}, "html");
}
// Does ajax postback for edit window
function DoEditPostbackAjax(sp, wi, pid, act, prm) {
	tabsForEditSelected = $('#tabs').tabs('option', 'selected');
	// fade out control
	var wiPref = '#wi' + wi + 'container';
	var overDiv = OverlayDiv(sp, $('#_editWidgetDiv'));
	// do postback
	if (typeof EditBeforePostAction == "function")
		EditBeforePostAction();
	var inputs = GetInputs(sp, '#_editWidgetDiv');
	$.post(sp + "DoAjaxCall.aspx", { action: "doEditPostback", wi: wi, pid: pid, act: act, prm: prm, ips: inputs },
	function(data) {
		if (typeof EditExitAction == "function")
			EditExitAction();
		if (typeof (editPostbackSaveMode) == "undefined" || editPostbackSaveMode == false) {
			$('#_editWidgetDiv').html(data);
			OverlayDivRemove(overDiv);
			$('#tabs').tabs();
			$('#tabs').tabs('select', tabsForEditSelected);
			delete tabsForEditSelected;
		}
	}, "html");
}
// Does ajax postback for popup window
function DoPopupPostbackAjax(sp, wi, pid, act, prm, puc) {
	if ($(".tinymce").length > 0)
		tinyMCE.activeEditor.save()
	// fade out control
	var wiPref = '#wi' + wi + 'container';
	var overDiv = OverlayDiv(sp, $('#_editWidgetDiv'));
	// do postback
	if (typeof EditBeforePostAction == "function")
		EditBeforePostAction();
	var inputs = GetInputs(sp, '#_editWidgetDiv');
	$.post(sp + "DoAjaxCall.aspx", { action: "doPopupPostback", wi: wi, pid: pid, act: act, prm: prm, puc: puc, ips: inputs },
	function(data) {
		if (typeof EditExitAction == "function")
			EditExitAction();
		if (typeof (editPostbackSaveMode) == "undefined" || editPostbackSaveMode == false) {
			$('#_editWidgetDiv').html(data);
			OverlayDivRemove(overDiv);
		}
	}, "html");
}
function AddWidgetAndStartEdit(sp, pid, ctid, wi) {
	editPostbackSaveMode = false;
	$.post(sp + "DoAjaxCall.aspx", { action: "doAddWidgetToPage", pid: pid, ctid: ctid, wi: wi },
	function(data) {
		var wi = parseInt(data);
		addWidgetEditMode = true;
		OpenEdit(sp, wi, pid);
	}, "html");
}
function AddWidgetNoEdit(sp, pid, ctid, wi) {
	editPostbackSaveMode = false;
	$.post(sp + "DoAjaxCall.aspx", { action: "doAddWidgetToPage", pid: pid, ctid: ctid, wi: wi },
	function(data) {
		var wi = parseInt(data);
		addWidgetEditMode = true;
		editedWi = wi;
		editedPid = pid;
		AddWidgetToPage(sp);
	}, "html");
}
// Gets inputs for ajax postback
function GetInputs(sp, wiPref) {
	return $(wiPref + ' :input').serialize();
}
// Open popup in lightbox style div
function OpenLightBoxPopup(sp, wi, pid, act, prm, puc) {
	editPostbackSaveMode = false;
	editedWi = wi;
	editedPid = pid;
	// fade out control
	var div = $('#wi' + wi + 'container');
	overDivEdit = OverlayDiv(sp, div);
	// do ajax request
	$('#_editWidgetDiv').remove();
	$.post(sp + "DoAjaxCall.aspx", { action: "openPopup", puc: puc, wi: wi, act: act, prm: prm, pid: pid },
		function(data) {
			BlockEditUi(data);
			$('#tabs').tabs();
		}, "html");
}
// Does ajax postback and opens edit widget instance window
function OpenEdit(sp, wi, pid) {
	editPostbackSaveMode = false;
	editedWi = wi;
	editedPid = pid;
	// fade out control
	var div = $('#wi' + wi + 'container');
	overDivEdit = OverlayDiv(sp, div);
	// do ajax request
	$('#_editWidgetDiv').remove();
	$.post(sp + "DoAjaxCall.aspx", { action: "openEdit", wi: wi, pid: pid },
		function(data) {
			BlockEditUi(data);
			$('#tabs').tabs();
		}, "html");
}
function BlockEditUi(data) {
	$('#form').append('<div id="_editWidgetDivRoot" style="display: none;"><div style="position: absolute; top: 0px; left: 0px; width:100%; height:200%;z-index:1000;filter:alpha(opacity=50); opacity: 0.5; background-color: #B0B0B0;"></div> <div style="z-index: 1001;position: absolute; left: 0px; top: 0px; width:100%; background-color: transparent;"> <div id="_editWidgetDiv" style="width: 750px; margin: 150px auto; margin-top: 60px; display: block; background-color:#fff; cursor: default;">' + data + '</div></div></div>');
	$("#_editWidgetDivRoot").show();
}
function UnblockEditUi() {
	//$("#_editWidgetDivRoot").fadeOut(100, function() { $("#_editWidgetDivRoot").remove(); });
	if (typeof EditExitAction == "function")
		EditExitAction();
	$("#_editWidgetDivRoot").remove();
}
// Saves edited configuration
function PostEdit(sp) {
	DoEditPostbackAjax(sp, editedWi, editedPid, 'save', '');
	DoPostbackAjax(sp, editedWi, editedPid, '', '');
	OverlayDivRemove(overDivEdit);
}
// Apply edited configuration
function ApplyEdit(sp) {
	editPostbackSaveMode = false;
	PostEdit(sp);
}
// Saves (apply+close) edited configuration
function SaveEdit(sp) {
	editPostbackSaveMode = true;
	PostEdit(sp);
	UnblockEditUi();
	if (typeof (addWidgetEditMode) != "undefined" && addWidgetEditMode == true) {
		addWidgetEditMode = false;
		AddWidgetToPage(sp);
	}
}
// Cancels edited configuration changes
function CancelEdit(sp) {
	editPostbackSaveMode = false;
	OverlayDivRemove(overDivEdit);
	if (typeof EditExitAction == "function")
		EditExitAction();
	UnblockEditUi();
	if (typeof (addWidgetEditMode) != "undefined" && addWidgetEditMode == true) {
		addWidgetEditMode = false;
		AddWidgetToPage(sp);
	}
}
function ClosePopup(sp) {
	DoPostbackAjax(sp, editedWi, editedPid, 'popupClosed', '');
	OverlayDivRemove(overDivEdit);
	if (typeof EditExitAction == "function")
		EditExitAction();
	UnblockEditUi();
}
// adds new widget to page to given zone
function AddWidgetToPage(sp) {
	var wi = editedWi;
	var pid = editedPid;
	// do postback
	$.post(sp + "DoAjaxCall.aspx", { action: "doRenderWidget", wi: wi, pid: pid, act: '', prm: '', ips: '' },
	function(data) {
		$('#zo' + currentZone).prepend(data);
	}, "html");
}
// Shows overlay 'please wait' div
function OverlayDiv(sp, div) {
	//OverlayDivRemove();
	divOverlay = $(document.createElement('div'))
	divOverlay.css({ backgroundColor: 'white', opacity: 0.0, position: 'absolute', left: 0, top: 0, width: div.width(), height: div.height() });
	divOverlay.prependTo(div);
	div.css('position', 'relative');
	var img = $(document.createElement('img')).attr({ src: sp + 'Resources/Images/ajax-loader.gif', style: 'display: block; text-align:center; margin: 0px auto;' });
	img.appendTo(divOverlay);
	setTimeout(function() { divOverlay.animate({ 'opacity': '0.8' }, 'slow'); }, 250);
	return divOverlay;
}
// Closes overlay 'please wait' div
function OverlayDivRemove(div) {
	RemoveTinyMce();
	div.remove();
}
function TableFilterHelper(tableId, val) {
	var t = $("#" + tableId);
	$.uiTableFilter(t, val);
}
function RemoveTinyMce() {
	var ctrls = $(".tinymce");
	for (var i = 0; i < ctrls.length; i++) {
		tinyMCE.execCommand('mceRemoveControl', false, ctrls[i].id);
	}
}
/* ckEditor */
var RoastCkDialogGlobalEditor;
var RoastCkDialogGlobalSender;
function LoadWidgetIntoCk(sp, wi, pid, act, prm) {
	var overDiv = OverlayDiv(sp, $('#RoastCkEditorPluginWrapperTab1'));
	$.post(sp + "DoAjaxCall.aspx", { action: "doPostbackCkEdit", wi: wi, pid: pid, act: act, prm: prm },
	function(data) {
		$('#RoastCkEditorPluginWrapperTab1').html(data);
		OverlayDivRemove(overDiv);
	}, "html");
}
function DoPostbackCkEditor(sp, wi, pid, act, prm) {
	// fade out control
	var wiPref = '#wi' + wi + 'container';
	var overDiv = OverlayDiv(sp, $(wiPref));
	// do postback
	var inputs = GetInputs(sp, wiPref);
	$.post(sp + "DoAjaxCall.aspx", { action: "doPostbackCkEditor", wi: wi, pid: pid, act: act, prm: prm, ips: inputs },
	function(data) {
		$('#wi' + wi + 'container').html(data);
		OverlayDivRemove(overDiv);
	}, "html");
}
function CkEditorInsertHtml(html) {
	RoastCkDialogGlobalEditor.insertHtml(unescape(html));
	RoastCkDialogGlobalSender.hide();
}
function CkEditorPluginInit(editor, pluginName, tabTitle) {
	RoastCkDialogGlobalEditor = editor;
	var html = '<div id="RoastCkEditorPluginWrapperTab1" style="width: 100%; height: 100%; overflow: hidden;"></div>';
	var mainDialog =
	{
		type: 'html',
		html: html,
		onLoad: function(event) {
			RoastCkDialogGlobalSender = event.sender;
		},
		focus: function() {
			//var firstSmile = this.getElement().getChild([0, 0, 0, 0]);
			//firstSmile.focus();
		},
		//onClick: onClick,
		style: 'width: 100%; height: 100%; border-collapse: separate;'
	};
	return {
		title: pluginName,
		minWidth: 600,
		minHeight: 300,
		contents: [
			{
				id: 'tab1',
				label: tabTitle,
				title: tabTitle,
				elements:
				[
					mainDialog
				]
			}
		]
	};
}
function AjaxFileUploadPostback(sp, wi, pid, act, prm) {
	var wiPref = '#wi' + wi + 'container';
	var overDiv = OverlayDiv(sp, $(wiPref));
	$('#_postbackData').val("AimFileUploadMode|" + wi + "|)" + act + "|)" + prm + "|)" + pid);
	// do postback in iframe
	AIM.submit(this, { 'onComplete': function(response) {
		$('#wi' + wi + 'container').html(data);
		OverlayDivRemove(overDiv);
	}});
}
/* Following code is not created by RoastMedia
*  AJAX IFRAME METHOD (AIM)
*  http://www.webtoolkit.info/
**/
AIM = {
	frame: function(c) {
		var n = 'f' + Math.floor(Math.random() * 99999);
		var d = document.createElement('DIV');
		d.innerHTML = '<iframe style="display:none" src="about:blank" id="' + n + '" name="' + n + '" onload="AIM.loaded(\'' + n + '\')"></iframe>';
		document.body.appendChild(d);

		var i = document.getElementById(n);
		if (c && typeof (c.onComplete) == 'function') {
			i.onComplete = c.onComplete;
		}
		return n;
	},
	form: function(f, name) {
		f.setAttribute('target', name);
	},
	submit: function(f, c) {
		AIM.form(f, AIM.frame(c));
		if (c && typeof (c.onStart) == 'function') {
			return c.onStart();
		} else {
			return true;
		}
	},
	loaded: function(id) {
		var i = document.getElementById(id);
		if (i.contentDocument) {
			var d = i.contentDocument;
		} else if (i.contentWindow) {
			var d = i.contentWindow.document;
		} else {
			var d = window.frames[id].document;
		}
		if (d.location.href == "about:blank") {
			return;
		}

		if (typeof (i.onComplete) == 'function') {
			i.onComplete(d.body.innerHTML);
		}
	}
}