/**
 * Dojo widgets
 * 
 * Connecting dojo with Zend and Hook.
 * 
 */

function Hook_TinyMCE(id, plugins) {
	//Hook_TinyMCE_GZ();

	tinyMCE
			.init( {
				// General options
				mode :"exact",
				elements :id,
				theme :"advanced",
                height: "400",
				valid_elements :"p,b,i,ol,ul,li,h1,h2,h3,strong,em,u,span,br,a[*],font,table[border=0|cellspacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|background|bordercolor|id],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope]",
				plugins :"safari,pagebreak,layer,advhr,advlink,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,table",
				
				// Theme options
				theme_advanced_buttons1 :plugins,
				theme_advanced_buttons2 :"",
				theme_advanced_buttons3 :"",
				theme_advanced_buttons2_add : "tablecontrols",
				theme_advanced_buttons3_add : "tablecontrols",
       			 	table_styles : "Header 1=header1;Header 2=header2;Header 3=header3",
        			table_cell_styles : "Header 1=header1;Header 2=header2;Header 3=header3;Table Cell=tableCel1",
        			table_row_styles : "Header 1=header1;Header 2=header2;Header 3=header3;Table Row=tableRow1",
        			table_cell_limit : 100,
        			table_row_limit : 5,
        			table_col_limit : 5,

				theme_advanced_buttons4 :"",
				theme_advanced_toolbar_location :"top",
				theme_advanced_toolbar_align :"left",
				// theme_advanced_statusbar_location : "bottom",
				theme_advanced_resizing :true,
				theme_advanced_font_sizes :"Standard=11px,12 px=12px,14 px=14px",
				theme_advanced_blockformats :"p,h1,h2",

				// Example content CSS (should be your site CSS)
				content_css :"/app/design/backend/default/skin/css/tinymce.css",
				// Drop lists for link/image/media/template dialogs
				template_external_list_url :"",
				external_link_list_url :"",
				external_image_list_url :"",
				media_external_list_url :"",

				// Replace values for the template plugin
				template_replace_values : {
					username :"Some User",
					staffid :"991234"
				}
			});
}

function Hook_TinyMCE_GZ() {
	tinyMCE_GZ.init( {
	/*
	 * plugins :
	 * "safari,pagebreak,layer,advhr,advlink,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
	 * theme : 'advanced', languages : 'en', disk_cache : true, debug : false
	 */
	});
}

function bgChange(id, vari, hov, def) {
	if (vari) {
		document.getElementById(id).style.background = 'url(/app/design/backend/default/skin/img/' + hov + ')no-repeat';
	} else {
		document.getElementById(id).style.background = 'url(/app/design/backend/default/skin/img/' + def + ') no-repeat';
	}
}
function cChange(id, color) {
	document.getElementById(id).style.background = '#' + color;
}

function toggleAdvanced() {
	if (dojo.style("openMe", "display") != 'none') {
		dojo.style("openMe", "display", "none");
		dojo.byId("openAdvanced").innerHTML = "Open advanced settings";
	} else {
		dojo.style("openMe", "display", "block");
		dojo.byId("openAdvanced").innerHTML = "Close advanced settings";
	}

}
function selectAll() {
	dojo.query('.selectAll').connect('onchange', function(evt) {
		var el = dojo.query('.check');
		var oldState = dojo.attr(el, "checked");
		if (oldState == "true") {
			dojo.removeAttr(el, "checked");
		} else {
			dojo.attr(el, "checked", "checked");
		}
	});
}

function selectAll() {
	if (dojo.query('.selectAll')) {
		dojo.query('.selectAll').connect('onchange', function(evt) {
			var checkEl = dojo.query('.check');
			if (dojo.query('.selectAll').checked) {
				// checkEl.attr("checked", false);
				checkEl.removeAttr("checked");
			} else {
				checkEl.attr("checked", true);
			}
		});
	}
}

function clickLink() {
	if (dojo.byId("openAdvanced")) {
		firstLinkNode = dojo.byId("openAdvanced");
		dojo.connect(firstLinkNode, 'onclick', toggleAdvanced);
	}
}

function subm() {
	console.log(dojo.byId("content").submit());
}

function saveForm() {
	dojo.query('#saveForm').connect('onclick', function(evt) {
		var formEl = dojo.byId('content');
		if (formEl)
			formEl.submit();
	});
}

function preload() {
	dojo.fadeOut( {
		node :"preloader",
		onEnd : function() {
			dojo.style("preloader", "display", "none");
		}
	}).play();
}

function quickEdit(id, arg, type) {
	dojo.byId(id + "-edited").innerHTML = '<img src="/app/design/backend/default/skin/img/icons/loader.gif" align="right">';
	var kw = {
		url :"/admin/content/quickedit/?id=" + id + "&ctnt=" + arg + "&type="
				+ type,
		load : function(data) {
			dojo.byId(id + "-edited").innerHTML = '<img src="/app/design/backend/default/skin/img/icons/disk_black.png" align="right">';
			dojo.byId('smallMessage').style('display', 'block');
		},
		error : function(data) {
			console.debug("An error occurred: ", data);
		},
		timeout :2000
	};
	dojo.xhrGet(kw);
}

function lightbox() {

	if (dojo.query('.thumb')) {
		dojo.query('.thumb').connect('onclick', function(evt) {
			var checkEl = dojo.query('.check');
			alert('test');
			if (dojo.query('.thumb').checked) {

				checkEl.removeAttr("checked");
			} else {
				checkEl.attr("checked", true);
			}
		});
	}

}

function php_urlencode (str) {
	str = escape(str);
	return str.replace(/[*+\/@]|%20/g,
		function (s) {
			switch (s) {
				case "*": s = "%2A"; break;
				case "+": s = "%2B"; break;
				case "/": s = "%2F"; break;
				case "@": s = "%40"; break;
				case "%20": s = "+"; break;
			}
			return s;
		}
	);
}

function ajaxresponse(url, divid, hidePreloader) {
	document.body.style.cursor = "wait";
	if (divid != "" && hidePreloader != true) {
		dojo.byId(divid).innerHTML = '<img src="/app/design/backend/default/skin/img/preload.gif"/>';
	}
	dojo
			.xhrGet( {
				url :url,
				load : function(response, ioArgs) {

					document.body.style.cursor = "default";
					if (divid != "") {
						dojo.byId(divid).innerHTML = response;
						dojo.parser.parse(divid);
					}

					// Dojo recommends that you always return(response); to
					// propagate
					// the response to other callback handlers. Otherwise, the
					// error
					// callbacks may be called in the success case.
					return response;
				},
				error : function(response, ioArgs) {
					document.body.style.cursor = "default";
					if (divid != "")
						if (response == "Error: Tried to register widget with id==edit but that id is already registered") {
							alert("Login session timedout");
							window.location = "/admin/login/login";
						} else
							dojo.byId(divid).innerHTML = "An error occurred, with response: "
									+ response;
					return response;
				},
				handleAs :"text"
			});
}

function loading() {
	var underlay = new dijit.DialogUnderlay( {
		'class' :'loading'
	});
	underlay.show();
}

function deleteFile(url, path, divid, filedivid, extra) {
	dojo.require("dojo._base.fx");
	deleteurl = '/admin/files/delete/?file=' + path + '&parent=' + url;
	ajaxresponse(deleteurl, "");

	var thisdiv = dojo.byId(filedivid);
	var parent = thisdiv.parentNode;

	var foo = dojo.fadeOut( {
		node :filedivid,
		duration :300
	});
	dojo.connect(foo, "onEnd", function() {

		parent.removeChild(thisdiv);
		var check = true;
		var nodes = document.getElementsByTagName("div");
		for(var i=0; i<nodes.length; i++){
			var id = nodes[i].id;
			if(id.indexOf("btn") >= 0){
				check = false;
				break;
			}
		}

		if (check) {
			ajaxresponse('/admin/files/files?folder=' + url + extra, divid);
		}
	});
	foo.play();
}

function selectimage(target, folder) {
	
	Hook_Module_Showmanager(target, folder, "file");
}

function selectfolder(target, folder) {

	Hook_Module_Showmanager(target, folder, "folder");
}

function insertfile(path, target) {
	dojo.byId('' + target + '').value = path;

}

function deletefolder(path, div, extra) {
	
	var filelist = dojo.byId("filelist");
	var nodes = filelist.getElementsByTagName("div");
	var check = true;
	for(var i=0; i<nodes.length; i++){
		if(nodes[i].id.indexOf("btn") >= 0){
			check = false;
			break;
		}
	}
	
	if(check){
		ajaxresponse("/admin/files/deletefolder?foldername=" + path, "deleteFolderResult");
		setTimeout(function(){
			var result = dojo.byId("deleteFolderResult").innerHTML;
			if(result == "error"){
				alert("Error: Access denied!");
			} else if(result == "") {
				alert("Error on deleteing the folder. Delete the files and folders inside the folder before deleteing this folder");
			} else {
				var mode = "";
				if(extra != ""){
					mode = "?" + extra.substring(1);
				}
				ajaxresponse('/admin/files/filestreemenu' + mode, div);
				ajaxresponse('/admin/files/files?folder=' + result + extra, 'filelist');
			}
		}, 500);
	} else {
		alert("Error on deleteing the folder. Delete the files and folders inside the folder before deleteing this folder");
	}

	return false;
}

function createfolder(parentpath, parentdiv, extra) {
	var foldername = dojo.byId('foldername').value;
	if(parentpath.substr(-1) != "/"){
		parentpath += "/";
	}
	var geturl = '/admin/files/createfolder?parent=' + parentpath
			+ '&foldername=' + foldername + "&folder=" + parentpath + foldername;
	var divid = 'filelist';
	ajaxresponse(geturl + extra, divid);
	var mode = "";
	if(extra != ""){
		mode = "?" + extra.substring(1);
	}
	ajaxresponse('/admin/files/filestreemenu'+mode, parentdiv);
}

function uploadFile(formid) {

	// Hide the file input field
	dojo.style('uploadfile', "display", "none");

	// Show the progress bar
	dojo.style('progressField', "display", "inline");
	dojo.byId('preamble').innerHTML = "Uploading ...";

	dojo.style('progressField', 'display', 'inline');

	dojo.io.iframe
			.send( {
				contentType :"multipart/form-data",
				method :"POST",
				url :"/admin/files/upload",
				handleAs :"text",
				form :formid,
				handle : function(data, ioArgs) {

					var foo = dojo.fromJson(data);

					if (foo.status == "success") {
						// Show the file input field
						dojo
								.style(dojo.byId('uploadfile'), "display",
										"inline");
						dojo.byId('uploadfile').value = '';

						// Hide the progress bar
						dojo.style(dojo.byId('progressField'), "display",
								"none");
						dojo.byId('uploadedFiles').innerHTML += "File: "
								+ foo.details.name + " size: "
								+ foo.details.size + "<br>";
						dojo.byId('preamble').innerHTML = "File to Upload: ";
					} else {
						dojo
								.style(dojo.byId('uploadfile'), "display",
										"inline");
						dojo.style(dojo.byId('progressField'), "display",
								"none");
						dojo.byId('preamble').innerHTML = '<span class="errors">An Error occured, please try again: ' + foo.details.name + '</span>';
					}
				}

			});
}

function closeuploader(folder, updatediv, closediv) {
	togglediv(closediv);
	ajaxresponse(folder, updatediv);
	return false;
}

function togglediv(divid, override) {
	var foo;
	var div = dojo.byId(divid);
	if ((div.style.visibility == "visible" || override == "out") && override != "in") {
		foo = dojo.fadeOut( {
			node :divid,
			duration :300
		});
		dojo.connect(foo, "onEnd", function() {
			div.style.visibility = "hidden";
		});
		foo.play();
	} else if ((div.style.visibility == "hidden" || div.style.visibility == "" || override == "in")
			&& override != "out") {
		div.style.visibility = "visible";
		div.style.opacity = "0";
		foo = dojo.fadeIn( {
			node :divid,
			duration :300
		});
		foo.play();
	}

	return false;
}

function changeMainNavigation() {
	var li = document.getElementsByTagName("li");
	var order = 1;

	dojo.byId("save_button").style.display = "none";
	dojo.byId("save_loading").style.display = "block";

	for ( var i = 0; i < li.length; i++) {
		if (li[i].id.substr("dojoUnique".length) != "") {
			var id = li[i].attributes.name.value;
			ajaxresponse("/admin/menu/updateorder?itemid=" + id + "&order="
					+ order, "");

			order++;
		}
	}

	setTimeout(
			function() {

				dojo.byId("save_loading").style.display = "none";

				dojo.byId("save_button").innerHTML = "<font color='#008300'>Changes Saved!</font>";
				dojo.byId("save_button").disabled = true;
				dojo.byId("save_button").style.display = "block";

				setTimeout( function() {
					dojo.byId("save_button").innerHTML = "Save Changes";
					dojo.byId("save_button").disabled = false;
				}, 600);
			}, 500);

	return false;
}

function addCategory() {
	// Getting the value
	var category_field = dojo.byId("cateory_input");
	var category_name = category_field.value;

	// Check if not empty
	if(category_name != ""){
		
		// Returning true
		return true;
		
	} else {
		// Error, alerting
		alert("Please type in a category");
	}
	
	// Returning false
	return false;
}

function saveCategories() {

	// Getting the lists
	var categoryList = dojo.byId("categorylist");
	var divs = categoryList.getElementsByTagName("div");
	
	dijit.byId("cate").disabled = true;
	dojo.byId("cate").innerHTML = "Loading...";
	
	// Looping throuh the list
	for(var i=0; i<divs.length; i++){
		
		// Getting the div
		var div = divs[i];
		
		// Checking class
		if(div.className == "category_list"){
			
			dijit.byId("cate").disabled = true;
			dojo.byId("cate").innerHTML = "Loading...";
			
			// Getting the group id
			var group_id = div.getElementsByTagName("h1")[0].id;
			
			// Getting the list
			var list = div.getElementsByTagName("li");
			var amount = list.length;
			// Looping
			for(var u=0; u<list.length; u++){
				
				// Getting the categoy
				var item = list[u];
				var cat_id = item.attributes.name.value;
				
				// Ajaxresponse
				dojo.xhrGet({
					url : "/admin/system/updatecategory?cat_id="+cat_id+"&group_id="+group_id+"&order="+(u+1), 
					handleAs : "text", 
					load : function(data){
						
					}, 
					error : function(data){
						alert(data);
					}
				});
			}
		}
	}
	
	setTimeout(function(){
		dijit.byId("cate").disabled = false;
		dojo.byId("cate").innerHTML = "Save Categories";
	}, 5000);
	
	return false;
}

function deleteCategory(node) {
	
	// Promp user
	if(confirm("Are you sure you want to delete?")){
		
		// Getting the values
		var li = node.parentNode.parentNode;
		var cat_id = li.attributes.name.value;
		
		// Ajaxresponse
		dojo.xhrGet({
			url : "/admin/system/deletecategory?cat_id=" + cat_id, 
			handleAs : "text", 
			load : function(data){
				var ul = li.parentNode;
				ul.removeChild(li);
			}, 
			error : function (data){
				alert(data);
			}
		});
	}
	
	// Returning false
	return false;
}

function addCategoryGroup(){
	// Getting the value
	var categorygroup_field = dojo.byId("categorygroup_input");
	var categorygroup_name = categorygroup_field.value;

	// Check if not empty
	if(categorygroup_name != ""){
		
		// Returning true
		return true;
		
	} else {
		// Error, alerting
		alert("Please type in a categorygroup");
	}
	
	// Returning false
	return false;
}

function editCategoryGroup(group_id, name){
	// Setting the values
	dojo.byId("categorygroup_input").value = name;
	dojo.byId("categorygroup_id").value = group_id;
	dojo.byId("categorygroup_btn").value = "Save";
	dojo.byId("categorygroup_cancel").innerHTML = "<a href='javascript:;' onclick='return cancelCategoryGroup()'>cancel</a>";
	
	return false;
}

function cancelCategoryGroup(){
	// Setting the values
	dojo.byId("categorygroup_input").value = "";
	dojo.byId("categorygroup_id").value = "";
	dojo.byId("categorygroup_btn").value = "Create";
	dojo.byId("categorygroup_cancel").innerHTML = "";
	
	return false;
}

function positionCategoryGroup(group_id, order){
	window.location="/admin/system/categorygrouporder?group_id=" + group_id + "&order=" + order;
}

function deleteCategoryGroup(group_id){
	if(confirm("Are you sure you want to delete the categorygroup?")){
		if(confirm("Do you want to save the categories in the untitled group?")){
			window.location="/admin/system/deletecategorygroup?group_id=" + group_id + "&cat=yes";
		} else {
			window.location="/admin/system/deletecategorygroup?group_id=" + group_id + "&cat=no";
		}
	}
	
	return false;
}

function editCategory(value, id) {
	dojo.byId("name").value = value;
	dojo.byId("edit").value = id;
	return false;
}

function content_categories() {
	var hiddenId = "Setup-category";
	var input = document.getElementsByTagName("input");
	var string = "";

	for ( var i = 0; i < input.length; i++) {
		if (input[i].type == "checkbox") {
			if (input[i].className == "Hook_Categories") {
				if (input[i].checked) {
					string += input[i].value + ",";
				}
			}
		}
	}

	string = string.substr(0, (string.length - 1));

	dojo.byId(hiddenId).value = string;
}

function reindex() {

	dojo.byId("reindex_box").style.display = "block";
	ajaxresponse("/admin/content/reindexsearch", "reindex_box_progress", true);
}

function Hook_Delete_TableRow(url, rowId) {
	
	ajaxresponse(url, "", true);

	var tr = dojo.byId(rowId);
	var table = tr.parentNode;

	var foo = dojo.fadeOut( {
		node :rowId,
		duration :300
	});
	dojo.connect(foo, "onEnd", function() {
		table.removeChild(tr);
	});
	foo.play();

	return false;
}

function contentFilter(url) {
	var chosen_category = dijit.byId("content_" + url);
	var value = chosen_category.getValue();
	var itemid = dojo.byId("content_itemid").value;

	ajaxresponse('/admin/content/indexajax?itemid=' + itemid + '&' + url
			+ 'filter=' + value, 'contentList', true);
}

function contentSearch() {
	
	var value = dojo.byId("content_search").value;
	value = php_urlencode(value);
	var itemid = dojo.byId("content_itemid").value;
	
	ajaxresponse('/admin/content/indexajax?itemid=' + itemid + '&search='
			+ value, 'contentList', true);

	return false;
}

function Hook_Modules_Moveable(divid) {
	dojo.require("dojo.dnd.Mover");
	dojo.require("dojo.dnd.Moveable");
	dojo.require("dojo.dnd.move");

	var m1 = new dojo.dnd.Moveable(divid);

	dojo.subscribe("/dnd/move/start", function(mover) {
		console.debug("Start move", mover);
	});
	dojo.subscribe("/dnd/move/stop", function(mover) {
		console.debug("Stop move", mover);
	});

	dojo.connect(m1, "onMoveStart", function(mover) {
		console.debug("Start moving m1", mover);
	});
	dojo.connect(m1, "onMoveStop", function(mover) {
		console.debug("Stop moving m1", mover);
	});

	return false;
}

function Hook_Url_Template() {
	Hook_Modules_Moveable("contentUrl");

	var div = dojo.byId("contentUrl");
	div.style.display = "block";

	var foo = dojo.fadeIn( {
		node :"contentUrl",
		duration :300
	});
	foo.play();
}

function Hook_Url_Template_Close() {
	var foo = dojo.fadeOut( {
		node :"contentUrl",
		duration :300
	});
	dojo.connect(foo, "onEnd", function() {
		dojo.byId("contentUrl").style.display = "none";
	});
	foo.play();
}

function Hook_Url_Template_Insert(url) {
	var title = dijit.byId('Setup-title').getValue();
	title = title.toLowerCase();
	title = title.replace(/ +/g, '-');
	title = title.replace(/æ/g, 'a');
	title = title.replace(/ø/g, 'o');
	title = title.replace(/å/g, 'a');
	title = title.replace(/[^a-z-]/g, '');

	var urlNode = dijit.byId('Setup-url');
	var path = "";
	if (url == "/")
		path = "/" + title;
	else
		path = url + "/" + title;

	urlNode.setValue(path);

	return false;
}

function Hook_Filemanager_UploadFile() {
	var value = dojo.byId("fileToUpload").value;
	var warning = dojo.byId("uploadfilesMessage");
	warning.style.display = "none";
	warning.className = "";

	if (value != "") {
		dojo.byId("heading").innerHTML = "Uploading, please wait!";
		var fileInputDiv = dojo.byId("fileInputDiv");
		var loadingImg = dojo.byId("loadingImg");

		fileInputDiv.style.display = "none";
		loadingImg.style.display = "block";

		doUpload();
	} else {
		warning.innerHTML = "No file selected! Please select one!";
		warning.className = "uploadfilesError";
		togglediv("uploadfilesMessage");
	}
}

function Hook_Filemanager_Check_Valid() {
	var value = dojo.byId("fileToUpload").value;
}

function Hook_Module_Showmanager(target, folder, type) {
	
	if(type == "file"){
		var url = '/admin/files/mediabrowser?folder=' + folder + '&mode=insertlink&target=' + target;
	} else {
		var url = '/admin/files/mediabrowser?folder=' + folder + '&mode=insertlink&type=folder&target=' + target;
	}
	
	var div = document.createElement("div");
	div.id = "showmanager";
	div.style.opacity = "0";
	var innerDiv = document.createElement("div");
	innerDiv.id = "showmanager_inner";
	//innerDiv.innerHTML = "Heisann";
	innerDiv.innerHTML = " ";
	div.appendChild(innerDiv);
	document.body.appendChild(div);
	dojo.fadeIn({node: "showmanager", duration: 200}).play();
	
	ajaxresponse(url, "showmanager_inner");
}

function Hook_Module_Hidemanager() {

	var div = "showmanager";
	var foo = dojo.fadeOut( {node: div, duration :200 });
	dojo.connect(foo, "onEnd", function() {
		var node = dojo.byId(div);
		document.body.removeChild(node);
	});
	foo.play();
	
	return false;
}








