var ecms = {
	"ROOT" : "root",
	"FOLDER" : "folder",
	"DOCUMENT" : "document",
	"ecm" : {
		"config" : {}
	},
	"ecp" : {},
	"paginate" : {}
};

ecms.paginate.changePage = function(pagesSelector, pageNo){
	$('._current',pagesSelector).removeClass('_current').hide();
	$(pagesSelector+' .p'+pageNo).addClass('_current').show();
}

ecms.ecp.changePage = function(pageNo){
	ecms.paginate.changePage('table.feature-ecp-list-pages', pageNo);
}

ecms.ecm.changePage = function(pageNo){
	ecms.paginate.changePage('table.feature-ecm-list-pages', pageNo);
}

ecms.ecm.setupContentManagementPagination = function(numPages, filesPerPage){
	var paginatorOptions = {
		"onChange"     			: ecms.ecm.changePage,
		"count"					: numPages,
		"paginatorSelector"		: 'div.feature-ecm-paginator',
		"pageListSelector"		: 'table.feature-ecm-list-pages'
	};
	ecms.setupPaginator(paginatorOptions);
};

ecms.ecp.setupContentPublicationPagination = function(numPages, filesPerPage){
	var paginatorOptions = {
		"onChange"     			: ecms.ecp.changePage,
		"count"					: numPages,
		"paginatorSelector"		: 'div.feature-ecp-paginator',
		"pageListSelector"		: 'table.feature-ecp-list-pages'
	};
	ecms.setupPaginator(paginatorOptions);
};

ecms.paginate.defaults = {
		"start" 				: 1,
		"display"     			: 7,
		"border"				: true,
		"border_color"			: '#fff',
		"text_color"  			: '#fff',
		"background_color"    	: 'black',	
		"border_hover_color"	: '#ccc',
		"text_hover_color"  	: '#000',
		"background_hover_color": '#fff', 
		"images"				: true,
		"mouse"					: 'press',
		"onChange"     			: ecms.ecp.changePage
	};

ecms.setupPaginator = function(options){
	
		var opts = $.extend({}, ecms.paginate.defaults, options);
		
		$(opts.paginatorSelector).paginate(opts);

		var pages = $(opts.pageListSelector +' tr[class^=p]');

		pages.removeClass('_current').hide();
		pages.filter('.p1').addClass('_current').show();
		
		var lineHeight = pages.filter('tr.p1').height();
		
		$(opts.pageListSelector).height(lineHeight*(opts.itemsPerPage+1));
}

ecms.ecp.printViewInit = function(){
	var printViewOptions = {
			"autoOpen": false,
			"width": 700,
			"modal": true
	};
	$("#feature-ecp-printView").dialog(printViewOptions);
};

ecms.ecp.ecpFiletreeInit = function(){
	
	var $filetree = $("ul#feature-ecp-filetree").parent();
		
		var typesConfig = {
			"max_depth" : -2,
			"max_children" : 1,
			"valid_children" : [ "root" ],
			"types" : {
				"root" : {
					"valid_children" : ["folder"],
					"icon" : {
							"image" : "/wego/feature/ecms/images/drive.png"
						}
				},
				"folder" : {
					"valid_children" : ["folder"],
					"icon" : {
								"image" : "/wego/feature/ecms/images/folder.gif"
							}
				}
			}
		};
		
		var ecpTreeOptions = {
			"types" : typesConfig,
	        "plugins" : [ "themes", "html_data", "types", "ui" ]
	    };
		
		$filetree.jstree(ecpTreeOptions)
			.bind("select_node.jstree", function(e,data){
				var selectedNode = data.rslt.obj;
				var targetFolderInput = selectedNode.parents("tr").prev("tr[id^=target_folder]").find("input");
				var newValue = selectedNode.find("a").attr('href');
				if(newValue == ""){
					newValue = "Document Root"
				}
				targetFolderInput.val(newValue);
			});
};

ecms.members = null;

ecms.ecm.config.core = {
	html_titles : true
};

ecms.ecm.config.types = {
	"max_depth" : -2,
	"max_children" : 1,
	"valid_children" : [ "root" ],
	"types" : {
		"root" : {
			"valid_children" : [ "document", "folder" ],
			"icon" : {
					"image" : "/wego/feature/ecms/images/drive.png"
				}
		},
		"document" : {
			"valid_children" : "none",
			"icon" : {
					"image" : "/wego/feature/ecms/images/file.gif"
				}
		},
		"folder" : {
			"valid_children" : [ "document", "folder" ],
			"icon" : {
						"image" : "/wego/feature/ecms/images/folder.gif"
					}
		}
	}
};

ecms.ecm.config.crrm = {
	"move" : {
	    "check_move" : function (m) {
	    	var canMove = ecms.ecm.isValidMove(m.o, m.np);
	        return canMove;
	    }
	}
};

ecms.ecm.isValidMove = function(obj, newParent){
	var isValidMove = false;
	isValidMove = ecms.ecm.hasItemMoved(obj, newParent);
	if(isValidMove){
		isValidMove = ecms.ecm.canUserMove(obj, newParent);
	}
	if(isValidMove){
		var type = ecms.ecm.getType(obj);
		if(type == ecms.DOCUMENT){
			isValidMove = ecms.ecm.isDocTypeCompatible(obj, newParent);
		}
	}
	return isValidMove;
};

ecms.ecm.hasItemMoved = function(obj, newParent){
	var oldParent = obj.parentsUntil(".jstree", "li:eq(0)");
	var oldParentPath = ecms.ecm.getPath(oldParent);
	var newParentPath = ecms.ecm.getPath(newParent);
	var hasMoved = oldParentPath != newParentPath;
	return hasMoved;
}

ecms.ecm.isDocTypeCompatible = function(obj, newParent){
	var docType = ecms.ecm.getDocType(obj);
	return ecms.ecm.hasDocType(newParent, docType);
};

ecms.ecm.getDocType = function(docNode){
	return docNode.find("a").attr("rev");
};

ecms.ecm.hasDocType = function(folderNode, desiredDocType){
	
	var hasDocType = false;
	var docTypes = ecms.ecm.getDocTypes(folderNode);
	for(i=0; i<docTypes.length; i++){
		var docType = docTypes[i];
		if( docType.name == desiredDocType){
			hasDocType = true;
			break;
		}
	}
	
	return hasDocType;
};

ecms.ecm.getDocTypeNodes = function(folderNode){
	var nodes = folderNode.children("dl.feature-ecms-docTypes").find("dt");
	return nodes;
};
    
ecms.ecm.getDocTypes = function(folderNode){
	var docTypes = [];
	var docTypeNodes = ecms.ecm.getDocTypeNodes(folderNode);
	docTypeNodes.each(function(i, e){
		docTypes[i] = {
			"name" : $(e).text().trim(),
			"label" : $(e).next().text().trim(),
			"action" : function (obj) {
				var $newDocForm = $("div#feature-ecms-newDocument-dialog>form");
				var currentFolder = obj.find("a").attr("rel");
				$newDocForm.find("input[name^=ecm_cf]").val(currentFolder);
				var docType = $(e).text();
				$newDocForm.find("input[name^=ecm_dt]").val(docType);
				$newDocForm.submit();
			}
		}
	});
	return docTypes;
};

ecms.ecm.getAuthors = function(obj){
	var authors = [];
	obj.children("dl.feature-ecms-authors").find("dt").each(function(i,e){
		authors[i] = $(e).attr("title");
	});
	return authors;
};

ecms.ecm.getEditors = function(obj){
	var editors = [];
	obj.children("dl.feature-ecms-editors").find("dt").each(function(i,e){
		editors[i] = $(e).attr("title");
	});
	return editors;
};

ecms.ecm.getMembers = function(){
	if(ecms.members == null){
		ecms.members = [];
		$("dl.feature-ecms-members").find("dt").each(function(i,e){
			ecms.members[i] = $(e).attr("title");
		});
	}
	return ecms.members;
};

ecms.ecm.setUsers = function(obj){
	var authors = ecms.ecm.getAuthors(obj);
	var editors = ecms.ecm.getEditors(obj);
	var members = ecms.ecm.getMembers();
	var availableNames = [];
	var isEditor = false;
	
	for(i in authors){
		var thisAuthor = authors[i];
		if( $.inArray(thisAuthor, editors) > -1){
			isEditor = true;
		}
		else{
			isEditor = false;
		}
		ecms.ecm.addAuthorRow(thisAuthor, isEditor);
	}
	
	for(j in members){
		if( $.inArray(members[j], authors) == -1){
			availableNames.push(members[j])
		}
	}
	
	$("#feature-ecm-add-author").autocomplete({
		source: availableNames,
		minLength: 0,
		select: function(event, ui){
			var name = ui.item.value;
			ecms.ecm.addAuthorRow(name);
		},
		close: function(event, ui){
			ecms.ecm.authorTextbox.val("");
		}
	});
	
	ecms.ecm.authorsInit();
};

ecms.ecm.getDeleteUrl = function(obj){
	return obj.children("link.feature-ecms-delete").attr("href");
};

ecms.ecm.deleteOption = {
	"separator_before"	: false,
	"icon"				: false,
	"separator_after"	: false,
	"label"				: "Delete",
	"action"			: function (obj) {
							var url = ecms.ecm.getDeleteUrl(obj);
							$delDialog = $("div#feature-ecms-verify-dialog");
							var type = ecms.ecm.getType(obj);
							if( type == ecms.FOLDER ){
								$delDialog.find("p[title=file]").hide();
								$delDialog.find("p[title=folder]").show();
							}else{
								$delDialog.find("p[title=file]").show();
								$delDialog.find("p[title=folder]").hide();
							}
							$delDialog.find("form").attr("action", url);
							$delDialog.dialog('open');
						}
};

ecms.ecm.setDocTypes = function(obj){
	var $checkboxes = $("div#feature-ecms-docTypes-dialog input:checkbox");
	$checkboxes.attr('checked', false);
	
	var docTypes = ecms.ecm.getDocTypes(obj);
	for(i in docTypes){
		$checkboxes.filter('[value='+docTypes[i].name.escapeJQuerySelector()+']').attr('checked', true);
	}
};

ecms.ecm.canUserMove = function(obj, newParent){
	return (ecms.ecm.isEditor(obj) && ecms.ecm.isEditor(newParent));
};

ecms.ecm.isEditor = function(obj){
	var isEditor = false;
	var url = ecms.ecm.getDeleteUrl(obj);
	if( typeof(url) != 'undefined'){
		isEditor = true;
	}
	return isEditor;
};

ecms.ecm.getMenu = function(obj){
	var type = ecms.ecm.getType(obj);
	var items = null;
	
	if(type == ecms.ROOT){
		items = ecms.ecm.getRootMenu(obj);
	}else if(type == ecms.FOLDER){
		items = ecms.ecm.getFolderMenu(obj);
	}else if(type == ecms.DOCUMENT){
		items = ecms.ecm.getFileMenu(obj);
	}
	
	return items;
};

ecms.ecm.config.contextmenu = {
    "items" : ecms.ecm.getMenu
};

ecms.ecm.config.cookies = {
    "cookie_options" : { "expires": 365 }
};

ecms.ecm.getEditOption = function(){
	var editOption = {
			"separator_before"	: false,
			"icon"				: false,
			"separator_after"	: true,
			"label"				: "Edit",
			"action"			: false,
			"submenu" : { 
					"cut" : {
						"separator_before"	: false,
						"separator_after"	: false,
						"label"				: "Cut",						
						"action"			: function (obj) { this.cut(obj); }
					},
					"paste" : {
						"separator_before"	: false,
						"icon"				: false,
						"separator_after"	: false,
						"label"				: "Paste",
						"action"			: function (obj) { this.paste(obj); }
					}
				}
			}
	return editOption;
};

ecms.ecm.getRootMenu = function(obj){
	var rootMenu = ecms.ecm.getFolderMenu(obj);
	rootMenu.rename = null;
	rootMenu.remove = null;
	if(rootMenu.ccp != null){
		rootMenu.ccp.submenu.cut = null;
	}
	return rootMenu;
};

ecms.ecm.getFolderMenu = function(obj){
	var folderMenu = {
		"new_folder" : {
			"separator_before"	: false,
			"separator_after"	: false,
			"label"				: "New Folder",
			"action"			: function (obj) {
									var position = "last";
									var attrs = { "rel" : "folder" };
									var js = { "attr" : attrs,
												"data": "New Folder"};
									this.create(obj, position, js); 
								}
		},
		"new_doc" : {
			"separator_before"	: false,
			"separator_after"	: true,
			"label"				: "New Document",
			"action"			: false
		},
		"search" : {
			"separator_before"	: false,
			"separator_after"	: true,
			"label"				: "Search",
			"action"			: function(obj){
									$searchDialog = $("div#feature-ecms-search-dialog");
									$searchDialog.find("input[name^=ecm_qt]").focus();
									prepareAndOpenDialog(obj, $searchDialog);
								}
		},
		"rename" : {
			"separator_before"	: false,
			"separator_after"	: false,
			"label"				: "Rename",
			"action"			: function (obj) { this.rename(obj); }
		},
		"remove" : ecms.ecm.deleteOption,
		"ccp" : {},
		"manage_users" : {
			"separator_before"	: true,
			"separator_after"	: false,
			"label"				: "Manage Users",
			"action"			: function(obj){
									ecms.ecm.setUsers(obj);
									$userDialog = $("div#feature-ecms-users-dialog");
									prepareAndOpenDialog(obj, $userDialog);
								}
		},
		"manage_docTypes" : {
			"separator_before"	: false,
			"separator_after"	: true,
			"label"				: "Manage Document Types",
			"action"			: function(obj){
									ecms.ecm.setDocTypes(obj);
									$docTypeDialog = $("div#feature-ecms-docTypes-dialog");
									prepareAndOpenDialog(obj, $docTypeDialog);
								}
		}
	};
	
	folderMenu.ccp = ecms.ecm.getEditOption();
	
	var prepareAndOpenDialog = function(obj, $dialog){
		var currentFolder = setCurrentFolder(obj, $dialog);
		setTitleForFolderDialog($dialog, currentFolder);
		$dialog.dialog('open');
	};
	
	var setCurrentFolder = function(obj, $dialog){
		var currentFolder = obj.find("a").attr("rel");
		$dialog.find("input[name^=ecm_cf]").val(currentFolder);
		
		if( currentFolder == ""){
			currentFolder = $(obj.find("a").get(0)).text();
		}
		return currentFolder;
	};
	
	var setTitleForFolderDialog = function($dialog, currentFolder){
		var oldTitle = $dialog.prev().find("span[id^=ui-dialog-title-feature-ecms-]").text().split("-")[0];
		var title = oldTitle + " - " + currentFolder
		$dialog.dialog( "option", "title", title );
	};
	
	var docTypes = ecms.ecm.getDocTypes(obj);
	folderMenu.new_doc.submenu = {};
	if(docTypes.length==0){
		folderMenu.new_doc.submenu.notAvailable = {
			"separator_before"	: false,
			"separator_after"	: false,
			"label"				: "No Available Document Types",
			"action"			: false
		}
	}else{
		for ( i in docTypes ){
			folderMenu.new_doc.submenu[docTypes[i].name] = {
				"separator_before"	: false,
				"separator_after"	: false,
				"label"				: docTypes[i].label,
				"action"			: docTypes[i].action,
				"_class"			:"feature-ecm-docTypeMenu"
			}
		}
	}
	
	if(!ecms.ecm.isEditor(obj)){
		folderMenu.new_folder = null;
		folderMenu.rename = null;
		folderMenu.remove = null;
		folderMenu.manage_users = null;
		folderMenu.manage_docTypes = null;
		folderMenu.ccp = null;
	}
	
	return folderMenu;
};

ecms.ecm.getFileMenu = function(obj){
	
	var fileMenu = null;
	
	if ( ecms.ecm.isEditor(obj) ) {
		fileMenu = {
		    	"remove" : ecms.ecm.deleteOption
		};
			
		fileMenu.ccp = ecms.ecm.getEditOption();
	}
	
	return fileMenu;
};

ecms.ecm.getType = function(obj){
	var type = obj.attr("rel");
	return type;
};

ecms.ecm.getPath = function(obj){
	var type = ecms.ecm.getType(obj);
	var path = null;
	if(type == ecms.FOLDER || type == ecms.DOCUMENT){
		path = obj.find("a").attr("rel");
	}else if(type == ecms.ROOT){
		path = "";
	}
	return path;
};

ecms.success = function(data){
	var path = window.location.pathname;
	window.location.replace(path);
};

ecms.ecm.ecmFiletreeInit = function(){

	var ecmsTreeOptions = {
			"core" : ecms.ecm.config.core,
			"types" : ecms.ecm.config.types,
			"crrm" : ecms.ecm.config.crrm,
			"contextmenu" : ecms.ecm.config.contextmenu,
			"cookies" : ecms.ecm.config.cookies,
			"plugins" : [ "themes", "html_data", "types", "crrm", "dnd", "contextmenu", "ui", "unique", "cookies" ]
	    };
	    
	var $filetree = $('ul#feature-ecm-filetree').parent();
	
	$filetree
		.jstree(ecmsTreeOptions)
		.bind("rename.jstree", function (e, data) {
			var newName = data.rslt.new_name;
			
			var type = ecms.ecm.getType(data.rslt.obj);
			if( type == "folder" ){
				var folder = ecms.ecm.getPath(data.rslt.obj);
				var url = $("div#feature-ecms-renameFolder-dialog").find("form").attr("action");
				var data = {
					"ecm_cf" : folder,
					"ecm_nfn" : newName
				};
				$.post(url, data, ecms.success);
			}
		})
		.bind("remove.jstree", function(e,data){
			var type = ecms.ecm.getType(data.rslt.obj);
			if( type == ecms.FOLDER ){
			}else if( type == ecms.DOCUMENT ){
			}
		})
		.bind("move_node.jstree", function(e,data){
			var type = ecms.ecm.getType(data.rslt.o);
			var newPath = ecms.ecm.getPath(data.rslt.np);

			var params = {
				"ecm_npp" : newPath
			};
			
			if(type == ecms.DOCUMENT){
				url = $("div#feature-ecms-moveDocument-dialog").find("form").attr("action");
				var document = ecms.ecm.getPath(data.rslt.o);
				params.ecm_dp = document;
			}else if(type == ecms.FOLDER){
				url = $("div#feature-ecms-moveFolder-dialog").find("form").attr("action");
				var folder = ecms.ecm.getPath(data.rslt.o);
				params.ecm_cf = folder;
			}
			
			$.post(url, params, ecms.success);
		})
		.bind("create.jstree", function(e,data){
			var type = ecms.ecm.getType(data.rslt.obj);
			if( type == "folder" ){
				var newName = data.rslt.name;
				var parentFolder = data.rslt.parent.find("a").attr("rel");
				var url = $("div#feature-ecms-newFolder-dialog").find("form").attr("action");
				var params = {
					"ecm_nfn" : newName,
					"ecm_cf" : parentFolder
				};

				$.post(url, params, ecms.success);
				
			}
		})
		.bind("select_node.jstree", function(e,data){
			var selectedNode = data.rslt.obj;
			var type = selectedNode.attr("rel");
			if( type == ecms.DOCUMENT ){
				var url = selectedNode.find("a").attr("href");
				if( ecms.ecm.saveWarningRequired() ){
					$saveDialog = $("div#feature-ecms-save-dialog");
					$saveDialog.find("form").attr("action", url);
					$saveDialog.dialog('open');
				}else{
					window.location = url;
				}
			}
		});
		ecms.ecm.openFiletreeNode($filetree,".feature-ecms-current-folder");
};

ecms.ecm.openFiletreeNode = function(filetree, node){
	filetree.jstree("open_node",node, false, true);
	$(node).parentsUntil("div.jstree").filter("li").each(function openParents(i,e){
		filetree.jstree("open_node",this, false, true);
	});
};

ecms.associatedFileFieldInit = function(){
	var changeFile = function(event){
		var prev = $(this).prev().prev();
		prev.each(function(i){
			var tagName = this.tagName
			var fileSelector = $(this).siblings("form.feature-ecms-docForm :file");
			fileSelector.show();
			if ( this.tagName != "IMG" ){
				$(this).hide();
			}
		});
		$(this).hide();
		return false;
	};
	
	$("form.feature-ecms-docForm a.feature-ecms-changeFile").click(changeFile);
};

ecms.ecm.documentFormInit = function(){
	var $editForm = $("div#feature-ecms-docColumn>form.feature-ecms-docForm");
	$editForm.change(function(e){
		this.isChanged = true;
	});
};

//jquery extension for ecms dialogs 
(function($){
	$.fn.ecmDialog = function( options ){
		this.each(function(options){
			var linkAction = this.id.split('-')[2];
			var link = "#feature-ecms-" + linkAction + "-link";
			var $link = $(link);
			var $dialogDiv = $(this);
			
			var defaultButtons;
			if ( $dialogDiv.find("form").size() == 1 ){
				defaultButtons = {
					"cancel": function(){
						$(this).find('.temp').remove();
						$(this).dialog('close');
					},
					"submit": function(){
						var form = $(this).find("form")[0];
						$(this).find("form").submit();
					}
				};
			}else{
				defaultButtons = {
					"ok": function(){
						$(this).dialog('close');
					}
				};
			}
			
			var settings = jQuery.extend({
				"autoOpen": false,
				"width": 350,
				"modal": true,
				"buttons": defaultButtons
			}, options || {});
			
			settings.buttons = $.extend(defaultButtons, {} || options.buttons);
			
			$dialogDiv.dialog( settings );
			
			$dialogDiv.bind( "dialogclose", function(event, ui) {
				$(event.target).find('.temp').remove();
			})
			
			var saveWarningRequired = function(){
				var required = false;
				if( linkAction == "commit" || linkAction == "publish"){
					var editForm = $("div#feature-ecms-docColumn>form.feature-ecms-docForm")[0];
					if( editForm.isChanged ){
						required = true;
					}
				}
				return required;
			};
			
			var addSaveWarning = function(){
				var saveWarning = "<div class='feature-ecms-error'>You have made changes that will be lost if you continue with this action.<div>";
				$dialogDiv.find("div.feature-ecms-error").remove();
				var $dialogForm = $dialogDiv.find("form");
				$dialogForm.before(saveWarning);
			};
			
			if($link.size() > 0){
				$link.click( function(){
					if( saveWarningRequired() ){
						addSaveWarning();
					}
					$dialogDiv.dialog('open');
					return false;
				});
			}
		});
	};
})(jQuery);

ecms.dialogsInit = function(){
	var $dialogs = $("div[id$='-dialog']");
	var $ecmDialogs = $dialogs.filter("div[id^='feature-ecms-']");
	$ecmDialogs.ecmDialog();
	ecms.ecm.authorsInit();
	ecms.ecm.commitDialogInit();
	ecms.ecm.saveDialogInit();
	ecms.ecp.printViewInit()
}

ecms.ecm.addAuthorRow = function(name, isEditor){
	if(name && name != ""){
		var $newAuthorRow = $("<tr class='temp'><td>"+name+"</td>" +
			"<td><input type='checkbox' name='authors'/></td>" +
			"<td><input type='checkbox' name='editors'/></td></tr>");
		
		var $authorBox = $newAuthorRow.find(":checkbox[name=authors]");
		$authorBox.val(name).attr('checked',true);
			
		var $editorBox = $newAuthorRow.find(":checkbox[name=editors]");
		$editorBox.val(name).click(ecms.ecm.correlateAuthorEditor);
		if(isEditor){
			$editorBox.attr('checked',true);
		}
		
		ecms.ecm.correlateAuthorEditor.call($editorBox);
		
		var $table = $("div#feature-ecms-users-dialog form").find("tbody");
		$newAuthorRow.prependTo($table);
	}
	ecms.ecm.authorTextbox.val("");
}

ecms.ecm.correlateAuthorEditor = function(){
	var $editorBox = $(this);
	var $authorBox = $editorBox.parent().prev().children();
	if($editorBox.attr('checked')==true){
		$authorBox.attr('checked',true);
		$authorBox.attr('disabled',true);
		$authorBox.attr('readonly',true);
	}else{
		$authorBox.removeAttr('disabled');
		$authorBox.removeAttr('readonly');
	}
}

ecms.ecm.authorsInit = function(){

	var authorsSubmit = function(){
		var $checkBox = $(this).find(':checkbox');
		if($checkBox.attr('checked')==true){
			$checkBox.removeAttr('disabled');
			$checkBox.removeAttr('readonly');
		}
	};

	$form = $("div#feature-ecms-users-dialog form");
	ecms.ecm.authorTextbox = $form.find("input#feature-ecm-add-author");
	$form.submit(authorsSubmit);

	ecms.ecm.authorTextbox.
		keypress(function(e){
			if (e.which == 13){
				ecms.ecm.addAuthorRow(this.value);
			}
		});
	
	$form.keypress(function(e){
		if (e.which == 13){
			return false;
		}
	});
}

ecms.submitFormOnEnter = function(e){
	if (e.which == 13) {
		$(e.target).parents("div.feature-ecp-search form").submit();
	}
}

ecms.submitFormOnClick = function(e){
	var left = $(this).width() - 22;
	var x = e.pageX - $(this).offset().left;
    if( x>left){
    	$(e.target).parents("div.feature-ecp-search form").submit();
    }
}

ecms.searchInit = function(){
	var $searchText = $("fieldset.feature-ecms-search-term input");
	$searchText.keypress(ecms.submitFormOnEnter);
	$searchText.click(ecms.submitFormOnClick);
	$("fieldset.feature-ecp-search-facets select").keypress(ecms.submitFormOnEnter);
}

ecms.ecm.saveWarningRequired = function(){
	var required = false;
	var $editForms = $("div#feature-ecms-docColumn>form.feature-ecms-docForm");
	if($editForms.size() == 1){
		editForm = $editForms[0];
		if( editForm.isChanged ){
			required = true;
		}
	}
	return required;
};	

ecms.ecm.saveDialogInit = function(){
	var buttons = {
			"cancel": function(){
				$(this).find('.temp').remove();
				$(this).dialog('close');
			},
			"continue": function(){
				var form = $(this).find("form")[0];
				$(this).find("form").submit();
			}
		};
	
	$saveDialog = $("div#feature-ecms-save-dialog");
	$saveDialog.dialog("option","buttons",buttons);
}

ecms.ecm.commitDialogInit = function(){
	$("div#feature-ecms-commit-dialog form").submit(function(){
		var newLabel = $(this).find("input").val();
		var ok = true;
		var msg = "";
		
		if(newLabel != ""){
			var versions = $(this).siblings("ul#prev").children();
			versions.each(function(index){
				var prevLabel = $(this).text();
				if( prevLabel == newLabel){
					msg = "Please enter a unique version label."
					ok = false;
					return false;
				}
			});
		}else{
			msg = "Please enter a version label."
			ok = false;
		}
		
		if(msg != ""){
			var errorText = $("<div class='feature-ecms-error'>"+msg+"</div>");
			var fieldSet = $(this).find("fieldset");
			fieldSet.find("div.feature-ecms-error").remove();
			fieldSet.prepend(errorText);
		}
		return ok;
	});
};

ecms.ecp.documentLinksInit = function(){
	$(".feature-ecp-printViewLink").click( function(e){
		$("#feature-ecp-printView").dialog("open");
		return false;
	});
	
	$(".feature-ecp-printLink").click( function(e) {
		$(this).parent().prev(".feature-ecp-printable").jqprint();
		return false;
	});
         
    $(".feature-ecp-permalink").hide();      
    $(".feature-ecp-docLink").click( function(e){
    	$(".feature-ecp-permalink").toggle();
    	return false;
    });
};

ecms.ajaxInit = function(){
	$.ajaxSetup({
		"async" : false
	});
};

$( function(){
	ecms.ecm.ecmFiletreeInit();
	ecms.ecp.ecpFiletreeInit();
	ecms.associatedFileFieldInit();
	ecms.dialogsInit();
	ecms.searchInit();
	ecms.ecm.documentFormInit();
	ecms.ecp.documentLinksInit();
	ecms.ajaxInit();
} );

String.prototype.escapeJQuerySelector = function() {
	return this.replace(/([#;&,\.\+\*\~':"\!\^$\[\]\(\)=>\|])/g, "\\$1");
}
