var jsOpener = new Object();
jsOpener.lastCatUid = -1;
jsOpener.lastOrderBy = -1000;
jsOpener.offset = 0;
jsOpener.rowspp = 20;

$(document).ready(function(){
	$('.user-note').cluetip();
});

/* new/edit/del cat */
jsOpener.newCategory = function(viewType, categoryType, categoryUid) {
	$.ajax({
		type:'POST',
		url:'/app/opener/'+viewType+'/'+categoryType+'/'+categoryUid+'/manage?catAction=new&parCatUid=-1',
		success: function(html) {
			$('#opener-splitpane-right-items').html(html);
			jsOpener.resizeH();
		}
	});
};
jsOpener.editCategory = function(viewType, categoryType, categoryUid) {
	$.ajax({
		type:'POST',
		url:'/app/opener/'+viewType+'/'+categoryType+'/'+categoryUid+'/manage?catAction=edit&catUid='+categoryUid,
		success: function(html) {
			$('#opener-splitpane-right-items').html(html);
			jsOpener.resizeH();
		}
	});
};
jsOpener.viewDeleteCategory = function(viewType, categoryType, categoryUid) {
	$.ajax({
		type:'POST',
		url:'/app/opener/'+viewType+'/'+categoryType+'/'+categoryUid+'/manage?catAction=delete&catUid='+categoryUid,
		success: function(html) {
			$('#opener-splitpane-right-items').html(html);
			jsOpener.resizeH();
		}
	});
};
jsOpener.deleteCategory = function(viewType, categoryType, categoryUid) {
	$.ajax({
			async:false,
		type:'POST',
			url:'/app/opener/'+viewType+'/'+categoryType+'/'+categoryUid+'/submit-category-delete?catUid=' + categoryUid,
		success: function(ret) {
				if($.trim(ret) == 'ok')
					{ jsOpener.reloadCatItems(viewType, categoryType, -1, true); }
			else
				{ alert('ERROR: ' + $.trim(ret)); }
		}
	});
};
jsOpener.updateCategory = function(viewType, categoryType, categoryUid) {
	var n = categoryUid>0 ? $('#newName_' + categoryUid).val() : $('#newName').val();
	var d = categoryUid>0 ? $('#newDesc_' + categoryUid).val() : $('#newDesc').val();
	var p = $('#parCatUid').length>0 ? $('#parCatUid').val() : -1;

	if(n == 'Enter New Category Name')
	{
		alert('Please enter a name for new category!');
		return
	}

	$.ajax({
		async:false,
		type:'POST',
		url:'/app/opener/'+viewType+'/'+categoryType+'/'+categoryUid+'/submit-category',
		data:'catUid='+categoryUid+'&parCatUid='+p+'&newName='+escape(n)+'&newDesc='+escape(d),
		success: function(ret) {
			if($.trim(ret) == 'ok')
				{ jsOpener.reloadCatItems(viewType, categoryType, p, true); }
			else
				{ alert('ERROR: ' + $.trim(ret)); }
		}
	});
};
jsOpener.changeCatParent = function(p) {
	var params = p.split('_');
	$('#parCatUid').val(params[3]);
	$('#parCatName').html($('#'+p).html());
};
jsOpener.reloadUserCats = function(viewType, categoryType, categoryUid) {
	ajaxLoading($('#opener-cats'));
	$.ajax({
		type:'POST',
		url:'/app/opener/'+viewType+'/'+categoryType+'/'+categoryUid + '/user-cats',
		success: function(html) {
			$('#opener-cats').html(html);
		}
	});
};
jsOpener.initCats = function() {
	$('#cat-list').jqcollapse({
		expandOn:true,
		action: function(p) {
			var params = p.split('_');
			jsOpener.reloadCatItems(params[1], params[2], params[3]);
		}
	});
};


/* search */
jsOpener.initQuickSearch = function(viewType, categoryType) {
	$('#quick-search').unbind('keyup');
	$('#quick-search').bind('keyup', function(e){
		if(e.keyCode==13)
		{
			e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); e.returnValue = false;
			if($('#quick-search').val() != 'Quick Search')
				{ jsOpener.viewSearch(categoryType, true, viewType); }
		}
	});
	$('#quick-search-go').bind('click', function(e){
		if($('#quick-search').val() != 'Quick Search') 
			{ jsOpener.viewSearch(categoryType, true, viewType);
	}
	});
};
jsOpener.viewSearch = function(categoryType) {
	var quick = arguments.length > 1 ? arguments[1] : false;
	var viewType = arguments.length > 2 ? arguments[2] : '';

	$('#opener-splitpane-left').find('a').removeClass('on');
	$('#link_SEARCH').addClass('on');
	var p = '';
	if(quick) 
		{ p += 'searchName='+ $('#quick-search').val() + '&quickSearch=' + viewType; }

	ajaxLoading($('#opener-splitpane-right-items'));
	$.ajax({
		type:'POST',
		url:'/app/opener/community/'+categoryType,
		data:p,
		success: function(html) {
			$('#opener-splitpane-right-items').html(html);
	}
	});
};
jsOpener.submitSearch = function() {
	var checkBoxExtra = '';
	if($('#searchIncludePreDefined:checked').val()==null) { checkBoxExtra += '&searchIncludePreDefined=0'; }
	if($('#searchIncludeSaved:checked').val()==null) { checkBoxExtra += '&searchIncludeSaved=0'; }
	$.post(
		'/app/opener/'+$('#searchViewType').val()+'/'+$('#searchCategoryTypeName').val(),
		$('#opener-search-form').serialize() + '&go' + checkBoxExtra,
		function(html) {
			$('#opener-search-result-table').html(html);
			$('.user-note').cluetip();
			jsOpener.resizeH();
		}
	);
	$('#opener-search-results').show();
};

jsOpener.searchReset = function(type) {
	ajaxLoading($('#opener-splitpane-right-items'));
	$.ajax({
		type:'POST',
		url:'/app/opener/community/'+type+'?reset=1',
		success: function(html) {
			$('#opener-splitpane-right-items').html(html);
		}
	});
};
jsOpener.toggleSearchCriteria = function(tog) {
	if(tog)
	{
		$('#opener-search-criteria').hide();
		$('#hide-search-criteria').hide();
		$('#show-search-criteria').show();
	}
	else
	{
		$('#opener-search-criteria').show();
		$('#show-search-criteria').hide();
		$('#hide-search-criteria').show();
	}
	jsOpener.resizeH();
};
jsOpener.paginateResults = function(action, extra) {
	var curOffset = parseInt($('#searchOffset').val());
	var curRpp = parseInt($('#searchRowsPerPage').val());
	if(action == 'sort')
	{
		var ordBy = extra != null ? extra : '2';
		if($('#searchOrderBy').val() == ordBy) { ordBy = ordBy * (-1); }
		$('#searchOrderBy').val(ordBy);
		$('#searchOffset').val('0');
	}
	else if(action == 'resultrowspp')
	{
		$('#searchRowsPerPage').val('' + $('#resultrowspp').val());
		$('#searchOffset').val('0');
	}
	else if(action == 'first')
	{
		$('#searchOffset').val('0');
	}
	else if(action == 'prev')
	{
		$('#searchOffset').val('' + (curOffset - curRpp));
	}
	else if(action == 'next')
	{
		$('#searchOffset').val('' + (curOffset + curRpp));
	}
	else if(action == 'last')
	{
		var tot = ($('#resulttotalcnt').length > 0) ? $('#resulttotalcnt').attr('rel') : 0;
		var pages = Math.ceil(tot / curRpp);
		$('#searchOffset').val('' + curRpp * ( pages > 0 ? pages-1 : 0));
	}
	else
	{
		$('#searchRowsPerPage').val('20');
		$('#searchOffset').val('0');
	}
	$('#opener-search-result-table').html('<image src="/images/new/ajax-loader-trans.gif" border="0" alt=""/>');
	jsOpener.submitSearch();
};



/* delete items */
jsOpener.viewDelete = function(viewType, categoryType, categoryUid) {
	if($('input:checked').length == 0)
	{
		alert('No items selected to delete. Click on the checkbox next to an item to select.');
		return;
	}
	$('#opener-splitpane-left a').removeClass('on');

	$.ajax({
		type:'POST',
		url:'/app/opener/'+viewType+'/'+categoryType+'/'+categoryUid+'/delete?' + jsOpener.serializeSelected(),
		success: function(html) {
			$('#opener-splitpane-right-items').html(html);
			jsOpener.resizeH();
		}
	});
};
jsOpener.deleteSubmit = function(viewType, categoryType, categoryUid) {
	$.ajax({
		type:'POST',
		url:'/app/opener/'+viewType+'/'+categoryType+'/'+categoryUid+'/submit-delete?' + jsOpener.serializeSelected(),
		success: function(ret) {
			if($.trim(ret).indexOf('ok')==0)
				{
					location='/app/opener/'+viewType+'/'+categoryType+'/'+categoryUid;
				}
			else
				{ alert('ERROR: ' + $.trim(ret)); }
		}
	});
};

/* categorize items */
jsOpener.categorizeSubmit = function(viewType, categoryType, categoryUid) {
	if($('input:checked').length == 0)
	{
		alert('No items selected to categorize. Click on the checkbox next to an item to select.');
		return;
	}

	if(categoryUid < 0)
			{
		alert('Please select a category for checked items!');
		return;
			}
	$.ajax({
		type:'POST',
		url:'/app/opener/'+viewType+'/'+categoryType+'/'+categoryUid+'/submit-categorize?' + jsOpener.serializeSelected() + '&catUid=' + categoryUid,
		success: function(ret) {
			if($.trim(ret).indexOf('ok')==0)
				{ location='/app/opener/'+viewType+'/'+categoryType+'/'+categoryUid; }
			else
				{ alert('ERROR: ' + $.trim(ret)); }
		}
	});
};

jsOpener.paginateItems = function(action, extra) {
	if(action == 'sort')
	{
		var ordBy = extra != null ? parseInt(extra) : 2;
		if(jsOpener.lastOrderBy == ordBy)
			{ jsOpener.lastOrderBy *= -1; }
		else
			{ jsOpener.lastOrderBy = ordBy; }
		jsOpener.offset = 0;
	}
	else if(action == 'resultrowspp')
	{
		jsOpener.offset = 0;
		jsOpener.rowspp = parseInt($('#resultrowspp').val());
	}
	else if(action == 'first')
	{
		jsOpener.offset = 0;
	}
	else if(action == 'prev')
	{
		jsOpener.offset -= jsOpener.rowspp;
	}
	else if(action == 'next')
	{
		jsOpener.offset += jsOpener.rowspp;
	}
	else if(action == 'last')
	{
		var tot = ($('#resulttotalcnt').length > 0) ? $('#resulttotalcnt').attr('rel') : 0;
		var pages = Math.ceil(tot / jsOpener.rowspp);
		jsOpener.offset = jsOpener.rowspp * (pages > 0 ? pages-1 : 0);
	}
	else
	{
		if($('#resultrowspp').length>0)
		{
			$('#resultrowspp').val('20');
			jsOpener.rowspp = 20;
		}
		else
			{ jsOpener.rowspp = 0; }
		jsOpener.offset = 0;
	}

	var params = 'offset=' + jsOpener.offset + '&rowspp=' + jsOpener.rowspp;
	if(jsOpener.lastOrderBy != -1000)
		{ params += '&orderBy=' + jsOpener.lastOrderBy;}

	var path = window.location.pathname.split('/');
	ajaxLoading($('#opener-splitpane-right-items'));
	$.ajax({
		type:'POST',
		url: '/'+path[1]+'/'+path[2]+'/'+path[3]+'/'+path[4]+'/'+ jsOpener.lastCatUid + '/items',
		data: params,
		success: function(html) {
			$('#opener-splitpane-right-items').html(html);
			$('.user-note').cluetip();
			jsOpener.resizeH();
	}
	});
};


/* bookmarks */
jsOpener.deleteBookmark= function(categoryType, orderBy, delUid) {
	ajaxLoading($('#opener-splitpane-right-items'));
	$.ajax({
		type:'POST',
		url:'/app/opener/saved/'+categoryType+'/'+jsOpener.lastCatUid+'/delete-bookmark',
		data:'delUid=' + delUid,
		success: function(ret) {
			if($.trim(ret).indexOf('ok')==0)
				{ jsOpener.viewBookmarks(categoryType, orderBy); }
			else
				{ alert('ERROR: ' + $.trim(ret)); }
		}
	});
};
jsOpener.viewBookmarks= function(categoryType) {
	var orderBy = arguments.length > 1 ? parseInt(arguments[1]) : 0;

	$('#opener-splitpane-left').find('a').removeClass('on');
	$('#link_BK').addClass('on');
	var p = '';
	if(orderBy != 0)
		{ p += 'orderBy='+ orderBy; }
	
	ajaxLoading($('#opener-splitpane-right-items'));
	$.ajax({
		type:'POST',
		url:'/app/opener/saved/'+categoryType+'/'+jsOpener.lastCatUid+'/bookmarks',
		data:p,
		success: function(html) {
			$('#opener-splitpane-right-items').html(html);
			$('.user-note').cluetip();
			jsOpener.resizeH();
		}
	});
};

/* helpers */
jsOpener.updateSelectedCat = function(viewType, categoryType, categoryUid) {
	$('#opener-splitpane-left').find('a').removeClass('on');
	if(categoryUid < 0)
		{ $('#link_' + categoryUid).addClass('on'); }
	else
		{ $('#link_'+viewType+'_'+categoryType+'_'+categoryUid).addClass('on'); }
};

jsOpener.showAll = function(viewType, categoryType, categoryUid, view) {
	jsOpener.reloadCatItems(viewType, categoryType, categoryUid);
};

jsOpener.portAggregate = function() {
	if($('input:checked').length == 0)
	{
		alert('No items selected to aggregate. Click on the checkbox next to an item to select.');
		return;
	}
	var url = '/port_aggregate.jsp?type=1';
	$('input:checked').each(function(e){
		url += '&' + $(this).attr('name') + '=' + $(this).val();
	});
	url += "&rows="+$('input').length;
	location=url;
};

jsOpener.switchPortSimView = function(viewType, categoryType, categoryUid, view) {
	jsOpener.offset = 0;
	ajaxLoading($('#opener-splitpane-right-items'));
	$.ajax({
		type:'POST',
		url:'/app/opener/'+viewType+'/'+categoryType+'/'+categoryUid + '/items',
		data:'portSimView='+view,
		success: function(html) {
			$('#opener-splitpane-right-items').html(html);
			$('.user-note').cluetip();
			jsOpener.resizeH();
		}
	});
};

jsOpener.reloadCatItems = function(viewType, categoryType, categoryUid) {
	jsOpener.offset = 0;
	var reloadCats = arguments.length > 3 ? arguments[3] : false;
	jsOpener.lastCatUid = categoryUid;
	jsOpener.updateSelectedCat(viewType, categoryType, categoryUid);
	ajaxLoading($('#opener-splitpane-right-items'));
	$.ajax({
		type:'POST',
		url:'/app/opener/'+viewType+'/'+categoryType+'/'+categoryUid + '/items',
		success: function(html) {
			$('#opener-splitpane-right-items').html(html);
			$('.user-note').cluetip();
			jsOpener.resizeH();
			if(reloadCats)
				{ jsOpener.reloadUserCats(viewType, categoryType, categoryUid); }
		}
	});
};






jsOpener.serializeSelected = function() {
	var str = '';
	$('input:checked').each(function(i){
		if(str != '') { str += '&'; }
		str += 'uid[]=' + $(this).attr('value');
	});
	return str;
};

jsOpener.hideSidebar = function() {
	$('#hidesidebar').hide();
	$('#showsidebar').show();
	$('#sidebar-links').hide();
	$('#opener-splitpane-left-cont').hide();
	jsOpener.resizeH();
};
jsOpener.showSidebar = function() {
	$('#showsidebar').hide();
	$('#hidesidebar').show();
	$('#sidebar-links').show();
	$('#opener-splitpane-left-cont').show();
	jsOpener.resizeH();
};


var checkToggle = false;
jsOpener.toggleCheckAll = function() {
	var onOff = arguments.length > 0 ? arguments[0] : -1;
	if(onOff==-1){ checkToggle = !checkToggle; }
	else if(onOff==0) { checkToggle = false; }
	else { checkToggle = true; }
	$('.TableBase  input[type=checkbox]').each(function(e){
		var par = $(this).parents('tr').get(0);
		if(checkToggle) { $(par).addClass('sel'); }
		else { $(par).removeClass('sel'); }

		if(checkToggle) { $('#checkbox-actions').addClass('sel'); }
		else { $('#checkbox-actions').removeClass('sel'); }

		this.checked = checkToggle;
	});
};

jsOpener.toggleCheck = function(elem) {
	var par = $(elem).parents('tr').get(0);

	if($(elem).attr('checked')) { $(par).addClass('sel'); }
	else { $(par).removeClass('sel'); }

	if($('#checkbox-actions').length>0)
	{
		if($('.TableBase  input:checked').length > 0) { $('#checkbox-actions').addClass('sel'); }
		else { $('#checkbox-actions').removeClass('sel'); }
	}
};


jsOpener.categorizeDragSubmit = function(viewType, categoryType, categoryUid, newCategoryUid) {
	if($('input:checked').length == 0)
	{
		alert('No items selected to categorize. Click on the checkbox next to an item to select.');
		return;
	}

	if(newCategoryUid < 0)
	{
		alert('Please select a category for checked items!');
		return;
	}
	$.ajax({
		type:'POST',
		url:'/app/opener/'+viewType+'/'+categoryType+'/'+categoryUid+'/submit-categorize?' + jsOpener.serializeSelected() + '&catUid=' + newCategoryUid,
		success: function(ret) {
			if($.trim(ret).indexOf('ok')==0)
				{ location='/app/opener/'+viewType+'/'+categoryType+'/'+categoryUid; }
			else
				{ alert('ERROR: ' + $.trim(ret)); }
		}
	});
};

jsOpener.resizeH = function( e ) {
	var h = $(window).height();
	var w = $(window).width();
	var newH = ( h - 92 ) + 'px';

	if($('#opener-splitpane-left-cont').length != 0)
	{
		if($('#sidebar-links').is(':visible'))
			{ $('#opener-splitpane-right .title').css('paddingLeft', '7px'); }
		else
			{ $('#opener-splitpane-right .title').css('paddingLeft', '37px'); }

		var sideW = $('#opener-splitpane-left-cont').is(':visible') ? parseInt($('#opener-splitpane-left-cont').width()) : 0;
		$('#opener-splitpane-left').css('height', newH);
		$('#opener-splitpane-right').css('height', newH);
	
		var newW = ( w - sideW) + 'px';
		$('#opener-splitpane-right').css('width', newW);

	}
};

