var returnUserCookie = 'rusr';
var firstTimeUser	= '0';
var returnUser		= '1';

/*
	Fix a small part of IE's continuing lack of support
	for anything remotely resembling a "standard".
	Do yourself a favor & use FireFox (http://www.mozilla.org)
*/

if (!window.Node) {
	var Node = {
		ELEMENT_NODE: 1,
		ATTRIBUTE_NODE: 2,
		TEXT_NODE: 3,
		COMMENT_NODE: 8,
		DOCUMENT_NODE: 9,
		DOCUMENT_FRAGMENT_NODE: 11
	}
}

//	Declare the AJAX controller URL
var ajax_controller_mediaLib = '/apps/medialibrary/ajax_controller.asp'

//var doubleClickThumbnailItemId = 0;
//var doubleClickSpeed = 800;

nmAppendOnload(initMediaLibrary);

function initMediaLibrary()
{
	initLightBoxDeleteWidgets();
	
	if($('appSubViewMedialib')){
		
		displayFirstTimeotifications();
		
		var mediaLibView = $('appSubViewMedialib');
		thumbnail_items = $A(document.getElementsByClassName('testMediaItem'));
		
		for(i=0;i<thumbnail_items.length;i++){
			thumbnail_items[i].onclick = itemWasSelected.bind(thumbnail_items[i]);
			thumbnail_items[i].ondblclick = itemWasDoubleClicked.bind(thumbnail_items[i]);
			
		}
	} else {
		//alert('Missing Library View: #appSubViewMedialib');
	}
	
	/*if($('nmSimpleSearchButtonWidget') && $('simpleSearchString')){
		$('nmSimpleSearchButtonWidget').onclick = runSimpleSearchFilter.bind($('simpleSearchString'));
	}*/
	
	initLightboxDropZone();
	initDragables();
	
	if($('message_tnails_loading')) $('message_tnails_loading').style.display = 'none';
	if($('appSubViewMedialib')) $('appSubViewMedialib').style.display = 'block';
}


function displayFirstTimeotifications(){
	rtnCookie = readCookie(returnUserCookie);
	if (rtnCookie != returnUser) {
		openFSContent('<img class="nmFSNotice" src="/images/notices/firsttime.gif" alt="Close" onclick="closeFSContent();"/>');
		createCookie(returnUserCookie,returnUser,365);
	} else {
		//eraseCookie(returnUserCookie);
	}
}



function initLightBoxDeleteWidgets(){
	var deleteClassName = "mediaItemLightboxDeleteWidget"
	deleteWidgets = $A(document.getElementsByClassName(deleteClassName));
	//alert(deleteWidgets.length);
	deleteWidgets.each(function(item, index){
		item.onclick = lightboxDeleteWidgetClicked.bind(item);
	})
	if($('lightboxDeleteAllButtonWidget')){
		$('lightboxDeleteAllButtonWidget').onclick = lightboxDeleteAll;
	}
}

var supressConfirmCount = 0;

function lightboxDeleteAll_old(){
	supressConfirmCount = confirm('Are you sure you want to delete ALL LIGHTBOX ITEMS? You can not undo this action.');
	var deleteClassName = "mediaItemLightboxDeleteWidget"
	deleteWidgets = $A(document.getElementsByClassName(deleteClassName));
	deleteWidgets.each(function(item, index){
		window.setTimeout("supressConfirmCount ++; $('" + item.id + "').onclick(); supressConfirmCount--;", 250 * index);
	})
	supressConfirmCount = false;
}


function resetInspector() {
	window.setTimeout("$('nmUIInspectorModeButton_browse').onclick()", 200);
}

function lightboxDeleteAll(){
	
	shouldDelete = false;
	if(supressConfirmCount > 0){
		shouldDelete = true;
	} else {
		shouldDelete = confirm('Are you sure you want to delete this ALL LIGHTBOX ITEMS? You can not undo this action.');
	}
	
	if(shouldDelete){
		//alert('delete: ' + this.getAttribute('itemid'));
		this.parentNode.parentNode.parentNode.onclick = function(){};
		new	Ajax.Request(
			ajax_controller_mediaLib,
			{
				onSuccess: function(response){
					var deleteItems = $A(document.getElementsByClassName('testMediaItem'));
					deleteItems.each(function(item,index){
						var deleted_tNail	= $('lightboxThumb_' + item.getAttribute('itemid'));
						new Effect.Fade(item,{duration: 0.5});
						new Effect.Fade(deleted_tNail,{duration: 0.5});
					})
					
					resetInspector();
					
					window.setTimeout('refreshLightBoxThumbnails()',1500);
					
				},
				onFailure: function(response){
					alert('An Error Occurred.\n' + response.responseText);
				},
				parameters: "callmethod=deleteitemfromlightboxbyid&itemid=all"
			}
		);
		
		
	} else {
	}
}

function lightboxDeleteWidgetClicked(){
	
	shouldDelete = false;
	if(supressConfirmCount > 0){
		shouldDelete = true;
	} else {
		shouldDelete = confirm('Are you sure you want to delete this item? You can not undo this action.');
	}
	
	if(shouldDelete){
		//alert('delete: ' + this.getAttribute('itemid'));
		var deletedItem		= this.parentNode.parentNode.parentNode;
		var deleted_tNail	= $('lightboxThumb_' + this.getAttribute('itemid'));
		this.parentNode.parentNode.parentNode.onclick = function(){};
		new	Ajax.Request(
			ajax_controller_mediaLib,
			{
				onSuccess: function(response){
					
					/*var objJSON = new Function('return ' + response.responseText);
					ReturnObj = objJSON();
					if(ReturnObj.errorCount < 1){
						alert('Return OK.');
					} else {
						alert('Sorry, we found ' + ReturnObj.errorCount + ' errors.');
					}*/
					
					resetInspector();
					new Effect.Fade(deletedItem,{duration: 0.5});
					new Effect.Fade(deleted_tNail,{duration: 0.5});
					
				},
				onFailure: function(response){
					alert('An Error Occurred.\n' + response.responseText);
				},
				parameters: "callmethod=deleteitemfromlightboxbyid&itemid=" + this.getAttribute('itemid')
			}
		);
		
		
	} else {
	}
}

function initDragables() {
	thumbnail_items = document.getElementsByClassName('testMediaItem');
	thumbnail_items.each(function(item, index){
		lastDragable = new Draggable(item.getAttribute('id'), {
			revert:true/*,
			starteffect:function(element){
				element._opacity = Element.getOpacity(element); 
				new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7});
			}*/
		});
	})
}

function runSimpleSearchFilter()
{
	if(this.value != ''){
		new	Ajax.Request(
			ajax_controller_mediaLib,
			{
				onSuccess: function(response){
					new Effect.Fade(
						$('nmDocContent'),
						{
							duration: 0.25,
							afterFinish:	function(obj){
								$('nmDocContent').innerHTML = response.responseText;
								new Effect.Appear($('nmDocContent'),{duration: 0.25});
								initMediaLibrary();
								}
						}
					);
				},
				onFailure: function(response){
					alert('Ad Error Occurred.\n' + response.responseText);
				},
				parameters: "callmethod=filterSimpleSearch&filter=" + this.value
			}
			);
	} else {
		alert('Please enter search terms');
	}
}

function initLightboxDropZone()
{
	if($('nmPageFooter')){
	  //$('nmPageFooter').style.position = 'fixed';
		Droppables.add('nmPageFooter', {
			fixed:true,
			onHover:function(){
			},
			onDrop:function(element){
				var add_id = element.getAttribute('itemid');
				//alert(add_id);
				new	Ajax.Request(
					ajax_controller_mediaLib,
					{
						onSuccess: function(response){
							//alert(response.responseText);
							$('dropZone_lightbox').innerHTML = response.responseText;
						},
						onFailure: function(response){
							alert('Ad Error Occurred.\n' + response.responseText);
						},
						parameters: "callmethod=addItemToLightBoxById&id=" + add_id
					}
					)

				refreshLightBoxThumbnails();
			}
		});
		refreshLightBoxThumbnails();
	}
}

function emptyLightBox()
{
	new	Ajax.Request(
		ajax_controller_mediaLib,
		{
			onSuccess: function(response){
				$('dropZone_lightbox').innerHTML = response.responseText;
			},
			onFailure: function(response){
				alert('Ad Error Occurred.\n' + response.responseText);
			},
			parameters: "callmethod=emptyLightBox"
		}
		)
}

function refreshLightBoxThumbnails()
{
	if($('dropZone_lightbox')){
		new	Ajax.Request(
			ajax_controller_mediaLib,
			{
				onSuccess: function(response){
					$('dropZone_lightbox').innerHTML = response.responseText;

					var thumbnail_items = document.getElementsByClassName('lightboxItemThumb');
					for(i=0;i<thumbnail_items.length;i++){
						thumbnail_items[i].onclick = itemWasSelected.bind(thumbnail_items[i]);
						thumbnail_items[i].ondblclick = itemWasDoubleClicked.bind(thumbnail_items[i]);
					}
				},
				onFailure: function(response){
					alert('Ad Error Occurred.\n' + response.responseText);
				},
				parameters: "callmethod=refreshLightBoxThumbnails"
			}
		)
	}
}

function resetDoubleClickThumbnailItemId()
{
	doubleClickThumbnailItemId = 0;
	return true;
}


function itemWasDoubleClicked(){
	var item_id = this.getAttribute('itemid');
	displayMediaItemDetailsView(item_id)
}


function itemWasSelected()
{	
	this.blur();
	var item_id = this.getAttribute('itemid');
	
	//window.setTimeout("resetDoubleClickThumbnailItemId()", doubleClickSpeed);
	
	//alert(doubleClickThumbnailItemId + ' - ' + item_id);
	
	//if(doubleClickThumbnailItemId != item_id){
	if(item_id){
		//doubleClickThumbnailItemId = item_id;
		
		if($('inspectorModeWrapper_info')){
			//Inspector.hideAll();
			$('inspectorModeWrapper_info').style.display = 'block';
			tab = $($('inspectorModeWrapper_info').getAttribute('uitab'));
			tab.className = 'inspectorPaletteTabOpen';
		}
		
		if($('inspector_preview_results')){
			$('inspector_preview_results').innerHTML = uiAsyncSpinner;
			var imgTNail = this.getElementsByTagName('IMG');
			var tmpElem = document.createElement('SPAN');
			var tNailSourceCode = imgTNail[0].parentNode.innerHTML;
			window.setTimeout('tmpLoadThumbnail(\'' + tNailSourceCode + '\')', 100);
		}

		if($('inspector_info_results')){
			new Ajax.Request(
				ajax_controller_mediaLib,
				{
					onSuccess: function(response){
						$('inspector_info_results').innerHTML = response.responseText;
					},

					onFailure: function(response){
						alert('Ad Error Occurred.\n' + response.responseText);
					},

					parameters: "callmethod=mediaItemGetInfo&id=" + item_id
				})
		}

		if($('inspector_keyword_results')){
			new Ajax.Request(
				ajax_controller_mediaLib,
				{
					onSuccess: function(response){
						$('inspector_keyword_results').innerHTML = response.responseText;
					},

					onFailure: function(response){
						alert('Ad Error Occurred.\n' + response.responseText);
					},

					parameters: "callmethod=mediaItemGetKeywords&id=" + item_id
				})
		}

		if($('inspector_preview_results')){
			new Ajax.Request(
				ajax_controller_mediaLib,
				{
					onSuccess: function(response){
						//alert(response.responseText);
						$('inspector_preview_results').innerHTML = response.responseText;
					},

					onFailure: function(response){
						alert('Ad Error Occurred.\n' + response.responseText);
					},

					parameters: "callmethod=mediaItemGetPreview&id=" + item_id
				})
		}
	} else {
		//displayMediaItemDetailsView(item_id);
	}
}

function displayMediaItemDetailsView(item_id){
	/*var objDetailsSubview = document.createElement('DIV');
	objDetailsSubview.setAttribute("id", "mediaItemDetailsSubview");
	objDetailsSubview.className = 'overlayItem';
	objDetailsSubview.innerHTML = "SOME TEXT";
	document.getElementsByTagName("BODY")[0].appendChild(objDetailsSubview);*/
	window.location.href = '/apps/mediaLibrary/details_view.asp?itemid=' + item_id;
}

function tmpLoadThumbnail(tNailHTML)
{
	//$('inspector_preview_results').innerHTML = tNailHTML;
}

/*function toggleEventsByCalendarId() {
	cal_id = this.getAttribute('calendarid');
	vevents = document.getElementsByClassName("calendar_" + cal_id);
	for(i=0; i<vevents.length; i++){
		toggleObjectDisplay(vevents[i]);
	}
	toggleObjectClassEnabled(this.parentNode);
}

function toggleObjectDisplay(obj) {
	if (obj.style.display == 'none')
	{
		//obj.style.display = 'block';
		new Effect.Appear(obj);
	} else {
		//obj.style.display = 'none';
		new Effect.Fade(obj);
	}
}

function toggleObjectClassEnabled(obj) {
	if (obj.className == 'enabled')
	{
		obj.className = 'disabled';
	} else {
		obj.className = 'enabled';
	}
}*/

