//{literal}
var brv = "IE";						// Internet Explorer
if(!document.all) brv = "FF";		// FireFox

function compatGetEvent(e)
{	
//	mm = e.offsetX+"-"+e.offsetY+'-'+e.x+'-'+e.y;
//	mm = e.layerX+"-"+e.layerY+'-'+e.x+'-'+e.y;
//	debugString(mm);
	var rv = new Object();
	if(!e) return;
	if(e.target) rv.srcElement = e.target;				else rv.srcElement = e.srcElement;
	if(brv=="IE")
	{
		rv.x = e.clientX;									
		rv.y = e.clientY;
	}
	else 
	{
		rv.x = e.pageX;
		rv.y = e.pageY;
		rv.x -= window.pageXOffset;
		rv.y -= window.pageYOffset;
		
		// mihair
		/*if( typeof( window.pageYOffset ) == 'number' ) {
    		//Netscape compliant
			scrOfY = window.pageYOffset;
			scrOfX = window.pageXOffset;
		}else{
			scrOfY = window.parent.pageYOffset;
			scrOfX = window.parent.pageXOffset;			
		}*/
		
		/*if(e.type=="mousedown")
		{
			console.info('E Type = ' + e.type + ' - Y Offset = ' + window.pageYOffset + ' - DOMY Offset = ' + document.body.scrollLeft);		
			//alert('Oy = ' + window.pageYOffset + ' ------ Ox = ' + window.pageXOffset);
		}*/
		
		//console.info('E Type = ' + e.type + ' - Y Offset = ' + window.pageYOffset);
		//console.info('E Type = ' + e.type + ' - Y Offset = ' + window.pageYOffset + ' - DOMY Offset = ' + document.body.scrollTop);		
		/*scrOfY = e.pageYOffset;
		scrOfX = e.pageXOffset;	
		rv.x = e.pageX - scrOfX;
		rv.y = e.pageY - scrOfY;*/
	}
	if(e.button) rv.button = e.button;					else rv.button = e.which;
	if((e.type=="mousedown")||(e.type=="mouseup")||(e.type=="mousemove"))
		if((rv.button==1)&&(e.ctrlKey)) rv.button=2;
	if(brv=='FF') event = rv;
	rv.keyCode = e.keyCode;
	if(!rv.srcElement) return false;
	if(!rv.srcElement.getAttribute) return false;
	return rv;
}

function isClick(e,t)
{
	if(dragmove) return false;
	e = compatGetEvent(e);
	if((e.button==1)&&(e.srcElement==t)) return true;
	else return false;
}
//{/literal};
//{literal}
var menuwidth = 300;

var poped_for = null;
var showed = 0;
var showed_help = 0;
var showed_family_menu = 0;
var showed_timeline_filter_menu = 0;

/*var popupmenus = new Array();
popupmenus[0] = "popmenu_clipboard";
popupmenus[1] = "popmenu_person";
popupmenus[2] = "popmenu_object";
popupmenus[3] = "popmenu_photo";
popupmenus[4] = "popmenu_event";*/


function loadMenuContent()
{
	if(!$('right_click_menu_text')) return;
	if(brv=="IE")$('right_click_menu_text').innerHTML = document.frames.right_click_content.document.body.innerHTML;
	if(brv=="FF")$('right_click_menu_text').innerHTML = $('right_click_content').contentDocument.body.innerHTML;
	correctPositionY($('right_click_menu_container'));	
	correctPositionX($('right_click_menu_container'));	
}

function hidePopMenu()
{
	if(showed) 
	{	
		showed = 0;
		return;
	}
	if($('right_click_menu_container'))
		$('right_click_menu_container').style.display = 'none';
		
	showed = 0;
}

function hideFamilyMenu()
{
	// mihair
	if(showed_family_menu) 
	{	
		showed_family_menu = 0;
		return;
	}
	
	if($('downdown_persons_list'))
		$('downdown_persons_list').style.display = 'none';
		
	showed_family_menu = 0;
}

function hideTimelineFilterMenu()
{
	// mihair
	if(showed_timeline_filter_menu) 
	{	
		showed_timeline_filter_menu = 0;
		return;
	}
	
	if($('a2_timeline_dropdown_list'))
		$('a2_timeline_dropdown_list').style.display = 'none';
		
	showed_timeline_filter_menu = 0;	
}

/* not used at the moment
function hideAlbumSearch() {
	var elem = $('albumSearchPanel')
	if ( elem )
		a2_hide( elem )
}*/

function displayPopMenu(event,menuurl)
{
	poped_for = event.srcElement;
	hidePopMenu();
	pm = $('right_click_menu_container');
	if(poped_for.getAttribute("poppos")=="bottom")
	{
		setPixelTop(pm,getPosTop(poped_for)+poped_for.clientHeight);
		setPixelLeft(pm,getPosLeft(poped_for));
	}
	else
	{
		setPixelTop(pm,event.y+getScrollTop(document.body));
		setPixelLeft(pm,event.x+getScrollLeft(document.body));
	}
	if(brv=='IE')	pm.style.display = 'block';
	if(brv=='FF')	pm.style.display = 'table';
	$('right_click_menu_text').innerHTML = $('right_click_menu_loading').innerHTML;
	if(!menuurl)
	{
		menuurl = poped_for.getAttribute('menuurl');
		if(poped_for.getAttribute("container")) menuurl+="&container="+poped_for.getAttribute("container");
		if(poped_for.getAttribute("popmenuparams")) menuurl+=poped_for.getAttribute("popmenuparams");
	}
	$('right_click_content').src = menuurl;
	
	correctPositionY(pm);	
	correctPositionX(pm);	

}


function loadHelpContent()
{
	if(!$('help_text')) return;
	if(!$('help_container')) return;
	if(brv=="IE")$('help_text').innerHTML = document.frames.help_content.document.body.innerHTML;
	if(brv=="FF")$('help_text').innerHTML = $('help_content').contentDocument.body.innerHTML;
	correctPositionY($('help_container'));	
	correctPositionX($('help_container'));	

}

function hideHelp()
{
	if(showed_help) 
	{	
		showed_help = 0;
		return;
	}
	$('help_container').style.display = 'none';

	showed_help = 0;
}

function displayHelp(event,helpid)
{
	event = compatGetEvent(event);
	menuurl = "help.php?action=short&help_id="+helpid;
	hideHelp();
	pm = $('help_container');
	setPixelTop(pm,event.y+getScrollTop(document.body));
	setPixelLeft(pm,event.x+getScrollLeft(document.body));
	if(brv=='IE')	pm.style.display = 'block';
	if(brv=='FF')	pm.style.display = 'table';
	$('help_text').innerHTML = $('help_loading').innerHTML;
	$('help_content').src = menuurl;

	correctPositionY(pm);	
	correctPositionX(pm);	

}


//{/literal}
;
//{literal}
var last_elmm = null;

var inselecting = 0;
var seltop = 0;
var selleft = 0;
var selbottom = 0;
var selright = 0;
var indrag = 0;

var drgico1 = 0;
var drgico2 = 0;

var draggableimages = new Array();

var dragselected = new Array();
var dragselected_clones = new Array();

var dragdestinations = new Array();

var candrop = 0;

var drag_hint_container = null;
var oldcntid = 0;

var dragtype = 1;
var dragmove = 0;

var dragStartX = 0;
var dragStartY = 0;

function hideDragHint()
{
	if(!drag_hint_container) 
	{
		drag_hint_container = $('tblhintmenudrag');
		if(!drag_hint_container) return;
	}
	drag_hint_container.style.display = 'none';
	oldcntid = 0;
}

function showDragHint(cntid)
{
	if(!drag_hint_container) 
	{
		drag_hint_container = $('tblhintmenudrag');
		if(!drag_hint_container) return;
	}
	if(oldcntid!=cntid) 
	{
		oldcntid = cntid;	
		drag_hint_container.innerHTML = "<table width='100%' cellpadding='2' cellspacing='0' border='0'>"+$(cntid).innerHTML+"</table>";
		if(drag_hint_container.style.display!='') drag_hint_container.style.display = '';
	}
	setPixelLeft(drag_hint_container,getPixelLeft(drgico1));
	setPixelTop(drag_hint_container,getPixelTop(drgico1)*1.0+drgico1.height+5);

	correctPositionX(drag_hint_container);
	correctPositionY(drag_hint_container);	
}

function deleteAB2Object(ident,type)
{
	for(var i=draggableimages.length-1;i>=0;i--)
		if(draggableimages[i])
			if((draggableimages[i].getAttribute('ab2type')==type)&&(draggableimages[i].getAttribute('ident')==ident))
				destroyDraggable(draggableimages[i]);
			
}

function destroyDraggable(e)
{
	if(!e) return;
	hmenu  = 0;
	if(e.hintmenu!="")	hmenu = $(e.hintmenu);
	if(hmenu)
	{
		if(getParent(hmenu))
			getParent(hmenu).removeChild(hmenu);
	}
	if(getParent(e))
		getParent(e).removeChild(e);
}

function appletHandle()
{
		alert('applethandle');
}

function callDragHandler(e,obj)
{
	if(e)
	{
		dragselected = new Array();
		dragselected_clones = new Array();
		dragselected[0] = e;
	}
	if(obj)
		if(obj.getAttribute('draghandler'))
			eval(obj.getAttribute('draghandler')+'(0,obj)');
}

function setBorder(e,color)
{
	if(color==0) 
	{
		/*if(e.getAttribute('bordercolor')) color=e.getAttribute('bordercolor');
		else color = '';*/
		e.style.border = 'none';
	}
	else
	{
		e.style.border = '1px solid '+color;
	}
}

function createDraggable(e)
{
	draggableimages[draggableimages.length] = e;
	e.setAttribute('draggable',1);
}

function countInCollection(e,type)
{
	if(!e) return 0;
	pe = getParent(e);
	if(!pe) return 0;
	childs = pe.childNodes;
	if(!childs) return 0;
	count = 0;
	for(i=0;i<childs.length;i++)
	{
		if(childs[i].tagName=="IMG")		
			if(childs[i].getAttribute('draggable')==1)		 
				if((!type)||(type==childs[i].getAttribute('ab2type')))
					count++;
	}
	return count;
}

function nextInCollection(e,type)
{
	if(!e) return 0;
	pe = getParent(e);
	if(!pe) return 0;
	childs = pe.childNodes;
	if(!childs) return 0;
	found = 0;
	for(i=0;i<childs.length;i++)
	{
		if(found) 
		{
			if(childs[i].tagName=="IMG")		
				if(childs[i].getAttribute('draggable')==1)		 
					if((!type)||(type==childs[i].getAttribute('ab2type')))
						return childs[i];
		}
		if(childs[i]==e) found = 1;
	}
	return 0;
}

function posInCollection(e,type)
{
	if(!e) return 0;
	pe = getParent(e);
	if(!pe) return 0;
	childs = pe.childNodes;
	if(!childs) return 0;
	found = 0;
	count = 0;
	for(i=0;i<childs.length;i++)
	{
		if(childs[i].tagName=="IMG")		
			if(childs[i].getAttribute('draggable')==1)		 
				if((!type)||(type==childs[i].getAttribute('ab2type')))
					count++;
		if(childs[i]==e) return count;
	}
	return 0;
}

function prevInCollection(e,type)
{
	if(!e) return 0;
	pe = getParent(e);
	if(!pe) return 0;
	childs = pe.childNodes;
	if(!childs) return 0;
	found = 0;
	preve = 0;
	for(i=0;i<childs.length;i++)
	{
		if(childs[i]==e) return preve;
		if(childs[i].tagName=="IMG")		
			if(childs[i].getAttribute('draggable')==1)		 
				if((!type)||(type==childs[i].getAttribute('ab2type')))
					preve = childs[i];
	}
	return 0;
}

function dragDestination(e)
{
	if(!e) return 0;
	if(!e.tagName) return 0;
	if(e.getAttribute('isdragdestination')) return e;
	return dragDestination(getParent(e));
}

function isDragDestination(e)
{
	if(!e) return 0;
	if(!e.tagName) return 0;
	if(e.getAttribute('isdragdestination')) return 1;
	return isDragDestination(getParent(e));
}

function highlightDragDestinations()
{
	if(!indrag) return;
	for(k=0;k<dragdestinations.length;k++)
	{

		if(eval(dragdestinations[k].getAttribute('draghandler')+'(1,dragdestinations[k])'))
		{
			setBorder(dragdestinations[k],'#ff0000');

		}
	}
};

function hideDragDestinations()
{
	if(!indrag) return;
	for(i=0;i<dragdestinations.length;i++)
			setBorder(dragdestinations[i],0);
};

function cloneDraggable(e)
{
	nimg = new Image();
	nimg.src = e.src;
	nimg.width = e.width;
	nimg.height = e.height;		
	nimg.style.width = e.style.width;
	nimg.style.height = e.style.height;		
	nimg.style.position = 'absolute';
	document.body.appendChild(nimg);
	nimg.originalobject = e;
	return nimg;
}

function startDrag(event)
{
	if(event.button==2) dragtype = 2;
	else dragtype = 1;	
	if(!drgico1)
	{
		drgico1 = $('drgico1');
		drgico2 = $('drgico2');
	}
	el = event.srcElement;
	el.ondragstart = windowOnDragStart;
	if(event.srcElement.getAttribute('draggable')==1)
	{// we are starting to move images
		if(!dragselected.length)
		{// just one, add it  to dragselected
			dragselected[0] = el;
		}
		else
		{// check if the el is marked
			found = 0;
			for(i=0;i<dragselected.length;i++)
				if(dragselected[i]==el)
				{
					found = 1;
					break;
				}
			if(!found)
			{// new drag
				unmarkDragged();
				dragselected = new Array();
				dragselected[0] = el;
			}
		}
		drgico1.src = dragselected[0].src;
		indrag = 1;
		
		dragStartX = event.x;
		dragStartY = event.y;
		
		document.body.style.cursor = 'no-drop';
//		showDragHint("hmenu_drag_no");
		//highlightDragDestinations();
	}
	else
	{// we are starting a selection
		if(event.button!=2) return;
		dsel = $('dragsel');
		selleft = event.x+getScrollLeft(document.body);
		seltop = event.y+getScrollTop(document.body);
		selright = event.x+getScrollLeft(document.body);
		selbottom = event.y+getScrollTop(document.body);
		updateSelection();
		inselecting = 1;
		dsel.style.display='';
	}
}

function updateSelection()
{
	dsel = $('dragsel');

	if(selleft<selright)
	{
		dsel.style.width = selright-selleft;
		setPixelLeft(dsel,selleft);
	}
	else
	{
		dsel.style.width = -selright+selleft;
		setPixelLeft(dsel,selright);
	}

	if(seltop<selbottom)
	{
		dsel.style.height = selbottom-seltop;
		setPixelTop(dsel,seltop);
	}
	else
	{
		dsel.style.height = -selbottom+seltop;
		setPixelTop(dsel,selbottom);
	}
	//debugString(selleft+","+seltop+" - "+selright+","+selbottom);
}

/**
*Checks which draggable images are within the selection
*/
function checkSelected()
{
	dragselected = new Array();
	if(seltop<selbottom) {ct=seltop;cb=selbottom} else {ct=selbottom;cb=seltop};
	if(selleft<selright) {cl=selleft;cr=selright} else {cl=selright;cr=selleft};
	for(i=0;i<draggableimages.length;i++)
	{
		setBorder(draggableimages[i],0);
		ex = getPosLeft(draggableimages[i])+getScrollLeft(document.body)-getScrollLeft(draggableimages[i]);
		ey = getPosTop(draggableimages[i])+getScrollTop(document.body)-getScrollTop(draggableimages[i]);
		if( ((ex<cr)&&(ex>cl)) || ((ex+draggableimages[i].width<cr)&&(ex+draggableimages[i].width>cl)) )
			if( ((ey<cb)&&(ey>ct)) || ((ey+draggableimages[i].height<cb)&&(ey+draggableimages[i].height>ct)) )
				selectDraggable(draggableimages[i]);
	}
}

function selectDraggable(e)
{
	setBorder(e,'#0000ff');
	dragselected[dragselected.length] = e;
}


function inDrag(event)
{
	if(indrag)
	{
		if(!dragmove)
		{
			var dx = event.x-dragStartX;
			var dy = event.y-dragStartY;
			var d = Math.abs(dx)+Math.abs(dy);
			if(d>10)
				dragmove = 1;
		}
		last_elmm = event.srcElement;
		last_elmmdd = dragDestination(last_elmm);
		candrop = 0;
		if(isDragDestination(event.srcElement))
			if(eval(last_elmmdd.getAttribute('draghandler')+'(1,event.srcElement)'))
				candrop = 1;
		if(candrop)
			document.body.style.cursor = 'crosshair';	
		else
			document.body.style.cursor = 'no-drop';

		if(drgico1.style.display!='') drgico1.style.display = '';
		setPixelTop(drgico1,event.y+getScrollTop(document.body)+5);
		setPixelLeft(drgico1,event.x+getScrollLeft(document.body)+5);
		
		if(dragselected.length>1)
		{
			
			if(drgico2.style.display!='') drgico2.style.display = '';
			setPixelTop(drgico2,event.y+getScrollTop(document.body)+10);
			setPixelLeft(drgico2,event.x+getScrollLeft(document.body)+10);
			drgico2.height = drgico1.height;
		}
		if(!nohints)
		{
			nohints = 1;
			hideHintMenu();		
		}
		if(!candrop)
			showDragHint('hmenu_drag_no');
		else
		{
			if(last_elmmdd.drophintmenu)
				showDragHint(last_elmmdd.drophintmenu);
			else
				showDragHint('hmenu_drag_yes');
		}
//		showHintMenuDrag();
		/*for(i=0;i<dragselected_clones.length;i++)
		{
			dragged_object = dragselected_clones[i];
			if(dragged_object.style.display != '') dragged_object.style.display = '';
			if(i<5)
			{
				setPixelTop(dragged_object,event.y+getScrollTop(document.body)+i*5+5);
				setPixelLeft(dragged_object,event.x+getScrollLeft(document.body)+i*5+5);
			}
			else
			{
				setPixelTop(dragged_object,event.y+5*5+getScrollTop(document.body)+5);
				setPixelLeft(dragged_object,event.x+5*5+getScrollLeft(document.body)+5);
			}
			dragged_object.style.zIndex = 100-i;
			if(candrop)  
			{	
				dragged_object.className = 'imgdraggable_drop';
			}
			else
			{
				dragged_object.className = 'imgdraggable_nodrop';
			}
				
		}*/
	}
	else if(inselecting)
	{// change the selection size
		if(event.button!=2) return;
		dsel = $('dragsel');
		selbottom = event.y+getScrollTop(document.body);
		selright = event.x+getScrollLeft(document.body);
		updateSelection();		
	}
}

function hideDragged()
{
/*	for(i=0;i<dragselected_clones.length;i++)
	{
		getParent(dragselected_clones[i]).removeChild(dragselected_clones[i]);
	}*/
	if(drgico1)
		drgico1.style.display = 'none';
	if(drgico2)
		drgico2.style.display = 'none';
}

function endDrag(event)
{
	document.body.style.cursor = 'auto';
	if(inselecting)
	{
		inselecting = 0;
		dsel = $('dragsel');
		dsel.style.display = 'none';
		if(event!=0)
			checkSelected();
	}	
	if(event==0)
	{// cancel drag
		dragselected = new Array();
		dragselected_clones = new Array();
		return;
	}
	if(indrag)
	{
		hideDragHint();
		if(event.button==2) dragtype = 2;
		else dragtype = 1;
		if(last_elmm&&isDragDestination(last_elmm))
		{
			eval(dragDestination(last_elmm).getAttribute('draghandler')+'(0,dragDestination(last_elmm))');
		}
		else
			hideDragged();			
		dragselected_clones = new Array();
		unmarkDragged();
		dragselected = new Array();
		indrag = 0;
		window.setTimeout("dragmove = 0;",100);
		nohints = 0;
	}
	last_elmm = null;
	if(inselecting)
	{
		inselecting = 0;
		dsel = $('dragsel');
		dsel.style.display = 'none';
		checkSelected();
	}
}

function unmarkDragged()
{
	for(i=0;i<dragselected.length;i++)
	{
		setBorder(dragselected[i],0);
		dragselected[i].className = 'imgdraggable';
	}
}

function createDragDestination(e)
{
	dragdestinations[dragdestinations.length] = e;
}

function loadDraggables()
{
	elems = document.getElementsByTagName('*');
	draggableimages = new Array();
	dragdestinations = new Array();
	for(i=elems.length-1;i>=0;i--)
	{
		if(elems[i].getAttribute('draggable')) createDraggable(elems[i]);
		if(elems[i].getAttribute('isdragdestination')) createDragDestination(elems[i]);
	}
}
//{/literal};
//{literal}
var clipboardcontents = new Array();
var clipboardcontentsIds = new Array();
var imgclipboard = "";

function saveWorkspace()
{
	if(!$('divWorkspace')) return;
	var parent = getParent($('divWorkspace'));
	if(parent!=$('divWorkspaceBlock'))
	{
		var e =  $('divWorkspaceInline').removeChild($('divWorkspace'));
		$('divWorkspaceBlock').appendChild(e);
		hideWorkspace();
	}
}

function workspaceExists()
{
	if($('divWorkspaceInline')) return 1;
}

function showWorkspace()
{
	if($('divWorkspace'))
	{
		$('divWorkspace').style.display = "block";
	}
	checkShowClipboardButtons();
}

function hideWorkspace()
{
	if($('divWorkspace'))
	{
		$('divWorkspace').style.display = "none";
	}
}

function workspaceShowIfNotVisible()
{
//	if(getCookie("workspaceinpage")==1) return;
/**	var parent = getParent($('divWorkspace'));
	if(parent!=$('divWorkspaceInline')) return;		
	e = $('divWorkspaceInline');
	var wst = getPosTop(e);
	if(wst>document.body.clientHeight+getScrollTop(document.body))
	{
		moveWorkspace(0,1);
	}*/
	if(!(getCookie("closedOrganizr")==1))
		toggleWorkspace(1);
	

}

function toggleWorkspace(goopen)
{
	if(goopen) var justopen = 1;
	else justopen = 0;
	
	e = $('tblpageworkspace');
	if(e.style.display!='none' && justopen==0)
	{
		e.style.display = 'none';
		$('divWorkspaceButtons').style.display = "none";
		$('divWorkspaceButtonsOff').style.display = "";
		$('organiser_inpage_title2').style.display = "none";
		loadArea('?action=setpref&name=showworkspace&value=0',0);
		//$('toggle_workspace_link').innerHTML = 'Expand the Organizer';
		//changeImage('images/icon_open_white.gif',$('toggle_white'));
		setCookie("closedOrganizr",1);
	}
	else
	{
		e.style.display = '';
		$('divWorkspaceButtons').style.display = "";	
		$('divWorkspaceButtonsOff').style.display = "none";
		$('organiser_inpage_title2').style.display = "";
		loadArea('?action=setpref&name=showworkspace&value=1',0);
		//$('toggle_workspace_link').innerHTML = 'Fold up the Organizer';
		//changeImage('images/icon_close_white.gif',$('toggle_white'));
	}
}

function moveWorkspace(where)
{
	moveWorkspace(where,0);
}

function moveWorkspace(where,save)
{
	
	if(!$('divWorkspaceInline')) return;
	var parent = getParent($('divWorkspace'));
	if(where == 1)
	{
		if(parent!=$('divWorkspaceBlock')) return;
		if(save)setCookie("workspaceinpage",1);
		var e =  $('divWorkspaceBlock').removeChild($('divWorkspace'));
		$('divWorkspaceInline').appendChild(e);
		
		$('aMoveOrganizer0').style.display = 'inline';
		$('aMoveOrganizer1').style.display = 'none';
		$('wrapper_spacer').style.display = 'none';
		$('divWorkspaceTitle').style.display='';
		$('organiser_inpage_title').style.display='none';
		$('organiser_inpage_linkpage').style.display='none';
		//$('footerAttached').style.display="none";
		$('footerNormal').style.display="block";
		//$('footerSpacer').style.display="none";

		
		if(save)  loadArea('?action=setpref&name=posworkspace&value=1',0);		
	}
	else
	{
		if(parent!=$('divWorkspaceInline')) return;		
		var e = $('divWorkspaceInline').removeChild($('divWorkspace'));
		$('divWorkspaceBlock').appendChild(e);
		
		$('aMoveOrganizer1').style.display = 'inline';
		$('aMoveOrganizer0').style.display = 'none';
		$('wrapper_spacer').style.display = 'block';
		$('divWorkspaceTitle').style.display='none';
		$('organiser_inpage_title').style.display='block';
		$('organiser_inpage_linkpage').style.display='block';
		//$('footerAttached').style.display="block";
		$('footerNormal').style.display="none";
		//$('footerSpacer').style.display="block";

		
		if(save) loadArea('?action=setpref&name=posworkspace&value=0',0);			
	}
}

function showClipboardEmptyNotice()
{
	alert("The Organizer contains no photos. Try to drag photos into the Organizer before choosing action.");
//	$('divEmptyClipboard').style.display='block';
}

function checkShowClipboardButtons()
{
	var cnt = clipboardCount();
	if(cnt==0) 
	{
		$('ulOrganizrOptions').style.display = 'none';
		$('spanOrgCount1').innerHTML = '';
		$('spanOrgCount2').innerHTML = '';
	}
	else 
	{
		$('ulOrganizrOptions').style.display = '';
		$('spanOrgCount1').innerHTML = '('+cnt+' photos)';
		$('spanOrgCount2').innerHTML = '('+cnt+' photos)';
	}
	
	
}

function getClipboardItem(id)
{
	for(var i in clipboardcontents) 
	{
		if( (clipboardcontents[i]==1) &&(id == i))
		{
			return clipboardcontentsIds[i];
		}
	}
}


function clipboardCount()
{
	var l = 0;
	for(var i in clipboardcontents) 
	{
		if(clipboardcontents[i] == 1)
		{
			l++;
		}
	}
	return l;
}

function clipboardIsEmpty()
{
	//return ($('clipboard_cont').innerHTML.replace(/^\s+|\s+$/, '') =="");
	var l = 0;
	for(var i in clipboardcontents) 
	{
		if(clipboardcontents[i] == 1)
		{
			l++;
			break;
		}
	}
	//debugString(l,1);
	return (l == 0);
}




function removeFromClipboard(e)
{
	var url = "clipboard.php?action=removefromclipboard";
	url=url+"&type[]="+e.getAttribute('ab2type')+"&ident[]="+e.getAttribute('ident');
	loadArea(url,0);
	clipboardcontents[e.getAttribute('ident')] = 0;
	destroyDraggable(e);
	checkShowClipboardButtons();	
	checkClipboardButtons(e,0);
}

function checkClipboardButtons(e,isIn)
{
	for(var i in draggableimages)
	{
		var x = draggableimages[i];
		if( x && e && (x.getAttribute('ab2type')==e.getAttribute('ab2type'))
			&& (x.getAttribute('ident')==e.getAttribute('ident')) )
		{
			//alert(x.getAttribute('ident')+" "+e.id);
			var px = getParent(x);
			while(px&&px.getAttribute&&px.getAttribute('imgoutlinetable')!=1)
			{
				px = getParent(px);
			}
			if(px&&px.getAttribute&&px.getAttribute('imgoutlinetable')==1)
			{
				var ab = getFirstElementByName(px,"aAddToClipboard","A");
				var rb = getFirstElementByName(px,"aRemoveFromClipboard","A");
				
				if(isIn)
				{
					ab.style.display = 'none';
					rb.style.display = 'inline';
				}
				else
				{
					rb.style.display = 'none';
					ab.style.display = 'inline';
				}			
				
			}
		}
		
	}
}

function clearClipboard()
{
	for(var i in clipboardcontents) 
	{
		if( (clipboardcontents[i]==1) )
		{
			checkClipboardButtons($(clipboardcontentsIds[i]),0);
		}
	}
	var url="clipboard.php?action=clearclipboard";
	loadArea(url,0);
	clipboardcontents = new Array();
	clipboardcontentsIds = new Array();
	clearContainer("clipboard");
	checkShowClipboardButtons();	
}

function inClipboardClick()
{
	if(event.srcElement) target = event.srcElement;
	if(event.target)     target = event.target;	
	if(target.getAttribute('container')!='clipboard')
	{
		callDragHandler(target,$('clipboard_cont'));
		
	}
	else
	{
		removeFromClipboard(target);
		dragselected = new Array();
		endDrag(event);		
	}
}

function dragHandlerClipboard(check,obj)
{
	if(check)
	{
		// only photos
		var can = 1;
		for(i=0;i<dragselected.length;i++)
			if(((dragselected[i].getAttribute('ab2type')!='photo') && ((dragselected[i].getAttribute('ab2type')!='event'))) || (clipboardcontents[dragselected[i].getAttribute('ident')]==1))
			{
				can=0;
				break;
			}
		return can;
	}
	else
	{
		showWorkspace();
		if(!dragHandlerClipboard(1,0))
		{
			hideDragged();
			return;
		}
		var url = "clipboard.php?action=addtoclipboard";
		for(i=dragselected.length-1;i>=0;i--)
		{
			url=url+"&type["+i+"]="+dragselected[i].getAttribute('ab2type')+"&ident["+i+"]="+dragselected[i].getAttribute('ident');
			if(dragselected[i].getAttribute('ab2type')=='event') dragselected.splice(i,1);
			else
			{
				clipboardcontents[dragselected[i].getAttribute('ident')] = 1;
			}
		}
		loadArea(url,0);
		var rv = dragHandlerAddToContainer($('clipboard_cont'),"clipboard");
		for(var i=0;i<rv.length;i++)
		{
			var e = rv[i];
			e.width = (e.width*30.0/e.height*1.0);
			e.style.width = "auto";
			e.height= 30;
			e.style.height=30;			
			e.setAttribute("popmenuparams","");
			changeHintText($(e.getAttribute('hintmenu')),"Click to remove the photo from the Organizer");
			clipboardcontentsIds[e.getAttribute('ident')] = e.id;
			checkClipboardButtons(e,1);
		}
		hideDragged();	
		$('divEmptyClipboard').style.display='none';
	}
	checkShowClipboardButtons();
	workspaceShowIfNotVisible();
}

function copyToClipboard(element,msg){
	
	var tempToClipboard = 'tempToClipboard';
	if(!$(tempToClipboard)){
		var newdiv = document.createElement('div');
		newdiv.id = tempToClipboard;
		document.body.appendChild(newdiv);
	}

	$(tempToClipboard).innerHTML = '<embed src="flash/copyToClipboard.swf" FlashVars="clipboard=' + escape(element.value) + '" width="0" height="0" type="application/x-shockwave-flash"></embed>';
	
	showElement(msg);	
	window.setTimeout('$(\''+ msg +'\').style.display="none"',1000);
	
	element.select();
}
function _decodeHTML(txt) {

	txt = txt.replace(/&lt;/g,"<"  );
	txt = txt.replace(/&gt;/g,">"  );
	txt = txt.replace(/&quot;/g,"\"");
	txt = txt.replace(/&amp;/g,"&"  );
	txt = txt.replace(/\"/g," \\\" "  );
	
	return txt;
}

//{/literal}
;
//{literal}




var noo = new Date(); var s1 = noo.getTime();
var currentPage = "";

var mb_lastpressed = -1;// because firefox won't include the mouse button status in the on mouse move?
var ab2onload='setCookie("clientWidth",document.body.clientWidth);setCookie("clientHeight",document.body.clientHeight);';
var ab2onunload = "";
var movedobjects = new Array();

var globalcounter = 0;

var posCacheCounter = 0;


function emptyDemoFrame() {
	$('demoFrame').src='empty.html';
}

function removeElement(e) {
	$(e).parentNode.removeChild(e);
}


function reziseImage(im,maxWidth,maxHeight) { }


function sprintf()
{
	if (!arguments || arguments.length < 1 || !RegExp)
	{
		return;
	}
	var str = arguments[0];
	var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
	var a = b = [], numSubstitutions = 0, numMatches = 0;
	while (a = re.exec(str))
	{
		var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
		var pPrecision = a[5], pType = a[6], rightPart = a[7];
		
		//alert(a + '\n' + [a[0], leftpart, pPad, pJustify, pMinLength, pPrecision);

		numMatches++;
		if (pType == '%')
		{
			subst = '%';
		}
		else
		{
			numSubstitutions++;
			if (numSubstitutions >= arguments.length)
			{
				alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).');
			}
			var param = arguments[numSubstitutions];
			var pad = '';
				   if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
			  else if (pPad) pad = pPad;
			var justifyRight = true;
				   if (pJustify && pJustify === "-") justifyRight = false;
			var minLength = -1;
				   if (pMinLength) minLength = parseInt(pMinLength);
			var precision = -1;
				   if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1));
			var subst = param;
				   if (pType == 'b') subst = parseInt(param).toString(2);
			  else if (pType == 'c') subst = String.fromCharCode(parseInt(param));
			  else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0;
			  else if (pType == 'u') subst = Math.abs(param);
			  else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);
			  else if (pType == 'o') subst = parseInt(param).toString(8);
			  else if (pType == 's') subst = param;
			  else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase();
			  else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase();
		}
		str = leftpart + subst + rightPart;
	}
	return str;
}

function getWindowOpener() {
	if(window.opener) return window.opener;
	else return window;
}

function getElementsByClass(searchClass,node,tag) 
{
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function openWindow(url,id,param)
{
	if(!param) param = " ";
	if(param.indexOf("height")==-1)
		param+=",height="+screen.height;
	if(param.indexOf("width")==-1)
		param+=",width="+screen.width;
	if(param.indexOf("top")==-1)
		param+=",top="+0;
	if(param.indexOf("left")==-1)
		param+=",left="+0;
	if(param.indexOf("scrollbars")==-1)
		param+=",scrollbars=1";
			
	var hnd = window.open(url,id,param);
	if(!hnd) alert('Album2 has detected that you are using a pop-up blocker. Album2 needs to open new windows for various activities such as showing a slideshow or displaying help on a topic. Some Album2 features might be unavailable if the pop-up blocker prevents new windows. Please configure your pop-up blocker to allow Album2 to open new windows.');
	return hnd;
}

function disableSubmits(el)
{
	if(!el.form) return true;
	for(i=el.form.length-1;i>=0;i--)
		if((el.form.elements[i].type=="button")||
		   (el.form.elements[i].type=="BUTTON")||
		   (el.form.elements[i].type=="submit")||
		   (el.form.elements[i].type=="SUBMIT"))
		{
			el.form.elements[i].disabled = 1;
		}
	
}


function checkBoxesToString(name)
{
	var rv = "";
	var cs = document.getElementsByName(name);
	for(var i=0;i<cs.length;i++)
	{
		var c = cs[i];
		if(c.checked) rv+="#"+c.value;
	}
	return rv;
}
	
function stringToCheckBoxes(name,str)
{
	var aux = str.split("#");
	var cs = document.getElementsByName(name);
	for(var i=0;i<cs.length;i++)
	{
		var c = cs[i];
		c.checked = 0;
		for(var j=0;j<aux.length;j++)
			if(aux[j]==c.value)
				c.checked = 1;
	}	
}
	


function multipleSelectToString(ms)
{
	var str = "";
	for(var i=0;i<ms.options.length;i++)
		if(ms.options[i].selected)
			str+="#"+ms.options[i].value;
	return str;
}

function stringToMultipleSelect(ms,str)
{
	var aux = str.split("#");
	for(var i=0;i<ms.options.length;i++)
	{
		ms.options[i].selected = 0;
		for(var j=0;j<aux.length;j++)
			if(aux[j]==ms.options[i].value)
				ms.options[i].selected = 1;
	}
}

// A2 document.getElementById improvement
// will simply return the given object
// or the object corresponding to the given ID
// plusses: shorter than "document.getElementById"
function $( id_or_obj ) {
	return ( (typeof id_or_obj == 'string') ? document.getElementById(id_or_obj) : id_or_obj )
}

function _$( tag ) {
	return document.createElement( tag )
}

function setup_body_events( evt ) {
	alert("SETTING UP BODY EVENTS")
	body = document.getElementsByTagName("body")[0]
	
	if ( body ) {	
		if ( body_onmousedown )
			body.onmousedown = function( event ) {
				return body_onmousedown( event )
			}
		
		if ( body_onmousemove )
			body.onmousemove = function( event ) {
				return body_onmousemove( event )
			}
		
		if ( body_onmouseup )
			body.onmouseup = function( event ) {
				return body_onmouseup( event )
			}
		
		if ( body_oncontextmenu )
			body.oncontextmenu = function( event ) {
				return body_oncontextmenu( event )
			}
		
		if ( body_onselectstart )
			body.onselectstart = function( event ) {
				return body_onselectstart( event )
			}
		
		if ( donscroll )
			body.onscroll = function( event ) {
				return donscroll( event )
			}
		
		if ( body_onkeyup )
			body.onkeyup = function( event ) {
				return body_onkeyup( event )
			}
		
		if ( body_onkeydown )
			body.onkeydown = function( event ) {
				return body_onkeydown( event )
			}
		
		if ( body_onload )		
			body.onload = function( event ) {
				return body_onload( event )
			}
	}
}

function body_onkeydown(event) {
	event = compatGetEvent(event);
	if(!event) return;
	if(event.keyCode==16)
		highlightDragDestinations();
}

function body_onkeyup(event)
{
	event = compatGetEvent(event);
	if(!event) return;	
	if(event.keyCode==16)
		hideDragDestinations();
	if(event.keyCode==13)
	{
		el = event.srcElement;
		if(el.tagName=="INPUT")
		{
			if(!el.form) return true;
			for(i=el.form.length-1;i>=0;i--)
				if((el.form.elements[i].type=="button")||
 				   (el.form.elements[i].type=="BUTTON"))
				{
					el.form.elements[i].click();
					break;
				}
		}
	}
	return true;
}

function checkEmail(addr) 
{
  var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
  return regex.test(addr);
}

function changeImage(url,e)
{
	e.src = url;
}

function trim(sInString) 
{
  sInString = sInString.replace( /^\s+/g, "" );// strip leading
  return sInString.replace( /\s+$/g, "" );// strip trailing
}


function getCookie(key)
{
	var ac = document.cookie.split(";");
	for(i=0;i<ac.length;i++)
	{
		aci = ac[i].split('=');

		if(trim(aci[0]) == key) return aci[1];
	}
	return null;
}


function setCookie(key,val)
{
	document.cookie=key+"="+val;
}

var appletPage = 0;
function isAppletPage()
{
	return appletPage;
}

function removeUrlParam(url,name)
{
	url = url.split("?");
	loc = url[0];
	rv = loc+"?";
	query = url[1];
	if(query)
	{	
		query = query.split("&");
		values = new Array();
		for(i=0;i<query.length;i++)
		{
			values[i] = new Array();
			values[i] = query[i].split('=');
		}
		for(i=0;i<values.length;i++)
		{
			if(values[i][0])
				if(values[i][0]!=name)
					rv=rv+values[i][0]+"="+values[i][1]+"&";
		}
	}
	return rv;
}

function escapeDQuote(str)
{
	var arv = str.split('"');
	var rv = "";
	for(var i=0;i<arv.length;i++)
	{
		rv+=arv[i];
		if(i<arv.length-1) rv+="&quot;";
	}
	return rv;	
}

function postTo(url,trg)
{
//	alert("posting");
	url = url.split("?");
	loc = url[0];
	query = url[1];
	query = query.split("&");
	values = new Array();
	for(i=0;i<query.length;i++)
	{
		values[i] = new Array();
		values[i] = query[i].split('=');
	}
	myfrm = document.createElement('form');
	myfrm.action=loc;
	myfrm.method = "POST";
	myfrm.style.display = 'none';
	if(trg)
		myfrm.target = trg;
	str = "";
	for(i=0;i<values.length;i++)
	{
		
		values[i][1] = unescape(values[i][1]);
		values[i][1] = escapeDQuote(values[i][1]);
		str+='<input type="hidden" value="'+values[i][1]+'" name="'+values[i][0]+'">';
	}
	myfrm.innerHTML=str;			
	document.body.appendChild(myfrm);
	myfrm.submit();
	document.body.removeChild(myfrm);
}

function arrayRemoveEntries(arr,val)
{
	rv = new Array();
	k=0;
	for(i=0;i<arr.length;i++)
		if(arr[i]!=val)
		{
			rv[k] = arr[i];
			k++;
		}
	return rv;
}

function msDiff(s,e)
{
	var diff = e - s;
	diff = Math.abs(diff); var strDiff = diff.toString(); 
	return strDiff;
}

function getMainWindow()
{
	if(AB2MainWindow) return window;
	else return window.parent;
}

function gotoLogin(email,error)
{
	if(email == "" && error == "")
		document.location = "index.php?action=main";
	else
		document.location = "index.php?action=main&us_email="+email+"&error="+error;
}

function getInputValue(id)
{
		return $(id).value;
}

function composeFormGet(frm)
{
	url = "";
	for(i=0;i<frm.elements.length;i++)
	{
		if(frm.elements[i].name)
		{
			if((frm.elements[i].type!="checkbox")||((frm.elements[i].type=="checkbox")&&(frm.elements[i].checked)))
			{
				if((frm.elements[i].tagName=="SELECT")&&(frm.elements[i].multiple))
				{
					k = 0;
					for(j=0;j<frm.elements[i].options.length;j++)
						if(frm.elements[i].options[j].selected)
							url+= "&"+frm.elements[i].name+"["+(k++)+"]="+escape(frm.elements[i].options[j].value);
				}
				else
				{
					if(!frm.elements[i].inlabel)
					{ 
						/*var searchStr = frm.elements[i].value;
						if ( searchStr.search('/') != -1 )
						{
							searchStr = searchStr.replace(/\//g,'#');
							//url+="&"+frm.elements[i].name+"="+encodeURIComponent(searchStr);
							url+="&"+frm.elements[i].name+"="+escape(frm.elements[i].value);
						}
						else
						{
							url+="&"+frm.elements[i].name+"="+escape(frm.elements[i].value);
						}*/
						url+="&"+frm.elements[i].name+"="+escape(frm.elements[i].value);
					}
					else
					{
						url+="&"+frm.elements[i].name+"=";
					}	
				}
			}
		}
	}
	return url;
}

function strReplace(strorig,strfind,strreplace)
{
	var pieces = strorig.split(strfind);
	var rv = "";
	var i;
	for(i=0;i<pieces.length-1;i++) rv=rv+pieces[i]+strreplace;
	rv=rv+pieces[pieces.length-1];
	return rv;
}

var disablerefresh = 0;

function documentGoTo(url)
{
	if(url.length<1000) document.location = url;
	else postTo(url,0);
}

function getCurrentUrl()
{
	var refurl = requestURL+"";
	refurl = strReplace(refurl,"#","");
	if(currentPage == "layout_left_right")
	{
		refurl = removeUrlParam(refurl,"lefturl");
		refurl = removeUrlParam(refurl,"righturl");
		if($("la_leftpanel").dynurl)
			refurl = refurl+"&lefturl="+escape($("la_leftpanel").dynurl);
		if($("la_rightpanel").dynurl)
			refurl = refurl+"&righturl="+escape($("la_rightpanel").dynurl);
	}
	refurl = removeUrlParam(refurl,"pop");
	refurl = removeUrlParam(refurl,"hideleft"); //aba
	return refurl;
}

function refreshPage()
{
	if(disablerefresh) return;
	setCookie("popwindow","");
	documentGoTo(getCurrentUrl());
}

function findID(oid)
{
	var k = 0;
	while($(oid+"_"+k))
	{
		k = Math.floor(Math.random()*100000)
	};
	return oid+"_"+k;
}

function removePX(a)
{
	a = a+"";
	var b = a.split('px');
	return b[0];	
}

function isInput(e) {
	if(
		(event.srcElement.tagName=='A')||
		(event.srcElement.tagName=='SELECT')||
		(event.srcElement.tagName=='INPUT')||
		(event.srcElement.tagName=='BUTTON')||
		(event.srcElement.tagName=='TEXTAREA')||
		(event.srcElement.tagName=='OBJECT'))
		return 1
	
	return 0
}

function body_onselectstart(event)
{
	event = compatGetEvent(event);
	if(!event) return;	
	if(!isInput(event.srcElement))	return false;
	return true;
}

function windowOnDragStart(event)
{
/*	event = compatGetEvent(event);
	if(!event) return;	*/
	return false;
}

function body_oncontextmenu(event)
{
	event = compatGetEvent(event);
	if(!event) return;
	//if(event.srcElement.getAttribute('popmenu')) return false;
	if(!isInput(event.srcElement)) return false;
}

function donscroll()
{
	if(brv!="IE") return;
	endDrag(0);
}

var last_el_onmousedown=0;

function body_onmousedown(event)
{
	event = compatGetEvent(event);
	if ( !event ) return;
	if ( event.srcElement.tagName == "scrollbar" ) return false;
	last_el_onmousedown = event.srcElement;
	mb_lastpressed = event.button;
	hidePopMenu();
	hideFamilyMenu();
	hideTimelineFilterMenu();
	hideHelp();
	//hideAlbumSearch();
	
	if((event.button==1)&&(!isInput(event.srcElement)))
	{
		if(mwIsMovable(event.srcElement)==1)
			mwStartMove(event);
	}
	
	if ( !isInput(event.srcElement) )
		if ( (event.srcElement.tagName != 'IMG' ) || ( event.srcElement.getAttribute('draggable') ) )
			startDrag(event);
	
	if ( !isInput( event.srcElement ) )	return false;
}

function body_onmousemove(event)
{
	event = compatGetEvent(event);
	if(!event) return;
	/* see a2_containsExcludeTarget for details on commented lines below */
	//if ( event.srcElement.id && event.srcElement.id == "flash_container" ) alert("found")
	//if ( a2_containsExcludeTarget(event.srcElement) ) return; /* used to skip mousemove on some elements */
	
	if(shownMenusCount)menusOnMouseMove(event);
	
	event.button = mb_lastpressed;

//***************************************************
//	if((!indrag)&&(!inselecting))
//	{
//		if(event.srcElement.getAttribute('draggable'))
//		{
//			if(document.body.style.cursor!='hand')
//				document.body.style.cursor = 'hand';
//		}
//		else
//		{
//			if(document.body.style.cursor!='auto')
//				document.body.style.cursor = 'auto';
//		}
//	}
//***************************************************
	
	inDrag(event);
	if(event.srcElement.getAttribute('hintmenu'))	showHintMenu(event);
	mwMove(event);
	if(!isInput(event.srcElement)) return false;
}

function body_onmouseup(event)
{
	event = compatGetEvent(event);
	if(!event) return;
	if(event.srcElement.tagName=="scrollbar")return false;

	
	if(last_el_onmousedown==event.srcElement)
		if(event.srcElement.getAttribute('popmenu'))
		{
			if((event.srcElement.getAttribute('popbutton')=="left")||(event.button==2))
				displayPopMenu(event);
			
		}
	endDrag(event);
	mwEndMove();
	return false;
}

function body_onunload(event)
{
}

var unloadMessage = "";
function body_onbeforeunload(event)
{
	event = compatGetEvent(event);
	if(ab2onunload)
	{
		eval(ab2onunload);
	}	
	if(unloadMessage!="") return unloadMessage ;
}

function body_onload(event)
{
//	return;
	event = compatGetEvent(event);

	loadDraggables();
	loadHintMenus();
	if(ab2onload)
	{		
		eval(ab2onload);
	}
}

function getScrollTop(e)
{
	scrollTop = 0;
	if(e.scrollTop) scrollTop = e.scrollTop;
	if(getParent(e)) e.absolute_scrollTop = scrollTop + getScrollTop(getParent(e));
	else e.absolute_scrollTop = scrollTop;
	return e.absolute_scrollTop;
}

function getScrollLeft(e)
{
	scrollLeft =0;
	if(e.scrollLeft) scrollLeft = e.scrollLeft;
	if(getParent(e)) e.absolute_scrollLeft = scrollLeft + getScrollLeft(getParent(e));
	else e.absolute_scrollLeft = scrollLeft;
	return e.absolute_scrollLeft;
}


/*******************************************************************************************************/
function calcAbsolutePos( theElement ) {
	var offsetLeft = 0;
	var offsetTop = 0;
	while (theElement != null) {
		offsetLeft += theElement.offsetLeft;
		offsetTop += theElement.offsetTop;
		theElement = theElement.offsetParent;
	}
	
	return {offsetLeft: offsetLeft, offsetTop: offsetTop};
}


function getPosLeft(e)
{
	if(!e) return;	
	var ol = getPosLeft_A(e);
	if(ol<0) ol*=-1;
	return ol;
}
var dbfl = 0;
function getPosLeft_A(e)
{
	if(!e) return;
	if((e.absolute_offsetLeft)&&(e.absolute_offsetLeft!=-1)&&(posCacheCounter==e.posCacheCounterLeft))
		return e.absolute_offsetLeft;
	e.posCacheCounterLeft = posCacheCounter;
	var offsetLeft = 0;
	if(e.offsetLeft) 
		offsetLeft = e.offsetLeft;
	if(e.style)if(e.style.left)
		offsetLeft=-1*offsetLeft;
	if(e.tagName=="TR") offsetLeft = 0;		
	if(getParent(e))
	{
		parentOffLeft = getPosLeft_A(getParent(e));
		if(parentOffLeft<0)
		{
			if(offsetLeft<0)
			{
				total = offsetLeft + parentOffLeft;
				e.absolute_offsetLeft = -1;
			}
			else
			{
				total = -1*offsetLeft + parentOffLeft;
				e.absolute_offsetLeft = -1;
			}
		}
		else
		{
			if(offsetLeft<0)
			{
				total = offsetLeft - parentOffLeft;
				e.absolute_offsetLeft = -1;
			}
			else
			{
				total = offsetLeft + parentOffLeft;
				e.absolute_offsetLeft = total;
			}			
		}
		//if(dbfl)debugString("<br>"+e.id+" "+e.tagName+" "+" "+parentOffLeft+" "+e.offsetLeft+" "+total,1);

		return total;
	}
	else 
	{
		return offsetLeft;
	}
}

function getPosTop(e)
{
	if(!e) return;	
	var ot = getPosTop_A(e);
	if(ot<0) ot*=-1;
	return ot;
}

function getPosTop_A(e)
{
	if(!e) return;	
	if((e.absolute_offsetTop)&&(e.absolute_offsetTop!=-1)&&(posCacheCounter==e.posCacheCounterTop))
		return e.absolute_offsetTop;
	e.posCacheCounterTop = posCacheCounter;
	var offsetTop = 0;
	if(e.offsetTop) 
		offsetTop = e.offsetTop;
	if(e.style)if(e.style.top)
		offsetTop=-1*offsetTop;
	if(e.tagName=="TR") offsetTop = 0;
	if(getParent(e))
	{
		parentOffTop = getPosTop_A(getParent(e));
		if(parentOffTop<0)
		{
			if(offsetTop<0)
			{
				total = offsetTop + parentOffTop;
				e.absolute_offsetTop = -1;
			}
			else
			{
				total = -1*offsetTop + parentOffTop;
				e.absolute_offsetTop = -1;
			}
		}
		else
		{
			if(offsetTop<0)
			{
				total = offsetTop - parentOffTop;
				e.absolute_offsetTop = -1;
			}
			else
			{
				total = offsetTop + parentOffTop;
				e.absolute_offsetTop = total;
			}			
		}
//		debugString("<br>"+e.id+" "+e.tagName+" "+" "+parentOffTop+" "+offsetTop+" "+total,1);		
		return total;
	}
	else 
	{
		return offsetTop;
	}
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return [curleft,curtop];
}

function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}


	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

/**
* Correct's an element position so that it does not float out of the document area. Useful for hints, pop menus etc.
*/
function correctPositionX_A(e)
{
	if(!e) return;
	posx = getPixelLeft(e);
	dfx = document.body.clientWidth*1 - (posx*1+e.clientWidth*1)-2;
	if(dfx<0) 
	{
		posx = posx - 20 - e.clientWidth*1; //differes from correctPositionX
		if(posx<1) posx=1;
		setPixelLeft(e, posx);
	}
	if(getPixelLeft(e)<0) setPixelLeft(e, 0);
}

function correctPositionX(e)
{
	if(!e) return;
	posx = getPixelLeft(e);
	dfx = document.body.clientWidth*1 - (posx*1+e.clientWidth*1)-2;
	if(dfx<0) 
	{
		posx = posx*1 + dfx*1;
		if(posx<1) posx=1;
		setPixelLeft(e, posx);
	}
	if(getPixelLeft(e)<0) setPixelLeft(e, 0);
}

function correctPositionY(e)
{
	if(!e) return;	
	posy = getPixelTop(e);
	dfy = document.body.clientHeight*1+getScrollTop(document.body)*1 - (posy*1+e.clientHeight*1)-2;

	if(dfy<0) 
	{
		posy = posy*1 + dfy*1;
		if(posy<1) posy = 1;
		setPixelTop(e,posy);
	}	
	if(getPixelTop(e)<0) setPixelTop(e, 0);
	
}

function clientFitY(e)
{
	posy = e.style.pixelTop;
	dfy = document.body.clientHeight + document.body.scrollTop- (posy+e.clientHeight)-2;
	if(dfy<0) return 0;
	else return 1;
}

function getPixelTop(e)
{
	if(e.style.pixelTop) return removePX(e.style.pixelTop);
	else return removePX(e.style.top);
}

function getPixelLeft(e)
{
	if(e.style.pixelLeft) return removePX(e.style.pixelLeft);
	else return removePX(e.style.left);
}

function setPixelTop(e,y)
{
	if(!e) return;	
	if(y<1) y=1;
	e.style.pixelTop = y;
	e.style.top = y;
}

function setPixelLeft(e,x)
{
	if(!e) return;	
	if(x<1) x=1;
	e.style.pixelLeft = x;
	e.style.left = x;
}

function getParent(e)
{
	if(!e) return null; // added by MihaiA
	if(e.parentElement) return e.parentElement;
	if(e.parentNode) return e.parentNode;
	return null;
}

function debugString( str, add ) {
	var debugPanel = $("debugdiv")
	if ( !debugPanel ) return
	if ( debugPanel.style.display = "none" ) {
		a2_show( debugPanel )
		debugPanel.style.zIndex = 2000
		debugPanel.style.color = "#ffffff"
		debugPanel.style.backgroundColor = "#000000"
		debugPanel.style.overflow = "auto"
		debugPanel.style.width = "400px"
		debugPanel.style.height = "300px"
	}
	
	setPixelTop( debugPanel, getScrollTop(document.body) )
	if ( !add ) debugPanel.innerHTML = str
	else debugPanel.innerHTML += str
}

function cleanArray(a)
{
	for(i=a.length-1;i>=0;i--)
	{
		if((!a[i])||(!getParent(a[i]))) 
		{
			a.splice(i,1);
		}
	}
}

function restoreChildren()
{
	for(i=0;i<movedobjects.length;i++)
	{
		pe = getParent(movedobjects[i]);
		oe = pe.removeChild(movedobjects[i]);
		movedobjects[i].oldParent.appendChild(oe);
	}
	movedobjects = new Array();
}

function noAction(e)
{
	$('noaction_layer').style.width = screen.width;
	$('noaction_layer').style.height = screen.height;
	if(e)
		$('noaction_layer').style.display = "";
	else
	{
		$('noaction_layer').style.display = "none";
	}
}

function CopyToClipboard(e)
{
	if(brv=="IE")
	{
		e.focus();
		e.select();
		tr = e.createTextRange();
		tr.execCommand("Copy");
		window.status = "Highlighted contents has been copied to the clipboard!";
		setTimeout("window.status=''",3000);
	}
	else
	{
	   // This is importent but it's not noted anywhere
	   netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
	   
	   // create interface to the clipboard
	   var clip = Components.classes['@mozilla.org/widget/clipboard;[[[[1]]]]'].createInstance(Components.interfaces.nsIClipboard);
	   if (!clip) return;
	   
	   // create a transferable
	   var trans = Components.classes['@mozilla.org/widget/transferable;[[[[1]]]]'].createInstance(Components.interfaces.nsITransferable);
	   if (!trans) return;
	   
	   // specify the data we wish to handle. Plaintext in this case.
	   trans.addDataFlavor('text/unicode');
	   
	   // To get the data from the transferable we need two new objects
	   var str = new Object();
	   var len = new Object();
	   
	   var str = Components.classes["@mozilla.org/supports-string;[[[[1]]]]"].createInstance(Components.interfaces.nsISupportsString);
	   
	   var copytext="abcde";
	   
	   str.data=copytext;
	   
	   trans.setTransferData("text/unicode",str,copytext.length*[[[[2]]]]);
	   
	   var clipid=Components.interfaces.nsIClipboard;
	   
	   if (!clip) return false;
	   
	   clip.setData(trans,null,clipid.kGlobalClipboard);
	}
}

/*function hideComboboxesRect(x1,y1,x2,y2,keephidden)
{
	hideComboboxesRect_A(x1,y1,x2,y2,keephidden,"select");
	hideComboboxesRect_A(x1,y1,x2,y2,keephidden,"iframe");
}

function hideComboboxesRect_A(x1,y1,x2,y2,keephidden,tagname)
{
	if(brv!='IE') return;
	var combos = document.getElementsByTagName(tagname);
	for(i=0;i<combos.length;i++)
	{
		if(mwInMW(combos[i]))continue;
		cx1 = getPosLeft(combos[i]);
		cy1 = getPosTop(combos[i]);
		cx2 = getPosLeft(combos[i])+combos[i].clientWidth;
		cy2 = getPosTop(combos[i])+combos[i].clientHeight;
		corner = new Array();
		corner[0] = -1;
		corner[1] = -1;
		corner[2] = -1;
		corner[3] = -1;
		if((cx1>x1)&&(cx1<x2)&&(cy1>y1)&&(cy1<y2)) corner[0] = 1;
		if((cx2>x1)&&(cx2<x2)&&(cy1>y1)&&(cy1<y2)) corner[0] = 1;
		if((cx1>x1)&&(cx1<x2)&&(cy2>y1)&&(cy2<y2)) corner[0] = 1;
		if((cx2>x1)&&(cx2<x2)&&(cy2>y1)&&(cy2<y2)) corner[0] = 1;
		hidec = 0;
		for(j=0;j<4;j++) if(corner[j]>0) hidec = 1;
		if(!hidec) 
		{
			if(!keephidden)
				combos[i].style.visibility = "visible";
		}
		else 
		{
			combos[i].style.visibility = "hidden";
		}
	}
}*/

function getLeftURL()
{
  if($('la_leftpanel'))
  return $('la_leftpanel').dynurl;
}

function getRightURL()
{
  if($('la_rightpanel'))
  return $('la_rightpanel').dynurl;
}

function getMwURL()
{
  if($('mwdisplay'))
  return $('mwdisplay').dynurl;
}


function getLeftID()
{
  if($('la_leftpanel'))
  return $('la_leftpanel').contentID;
}

function getLeftTAG()
{
  if($('la_leftpanel'))	
  return $('la_leftpanel').contentTAG;
}

function getLeftTAG2()
{
  if($('la_leftpanel'))	
  return $('la_leftpanel').contentTAG2;
}

function getRightID()
{
  if($('la_rightpanel'))	
  return $('la_rightpanel').contentID;
}

function getMwID()
{
  if($('mwdisplay'))	
  return $('mwdisplay').contentID;
}
function getRightTAG()
{
	if($('la_rightpanel'))	
	return $('la_rightpanel').contentTAG;	
}

function getRightTAG2()
{
	if($('la_rightpanel'))	
	return $('la_rightpanel').contentTAG2;	
}

function getMwTAG()
{
	if($('mwdisplay'))	
	return $('mwdisplay').contentTAG;	
}


function fxFunction(elementid,property,start,end,fps,func,param,aux)
{
	var element = $(elementid);
	var cVal = removePX(element.style[property]);
	if(cVal>end) 
	{
		element.style[property] = end;
		return;
	}
	else
	{
		var newVal = cVal*1.0;
		if(!newVal) newVal = start;
		if(func=="inc") newVal = cVal*1.0+param*1.0;
		else if(func=="exp") 
		{
			if(!aux) aux = param;
			newVal = cVal*1.0+param*1.0;
			param = param*aux;
		}
		element.style[property] = newVal;
		if(!aux) aux = 0;
		window.setTimeout("fxFunction('"+elementid+"','"+property+"',"+start+","+end+","+fps+",'"+func+"',"+param+","+aux+");",fps);
	}
}

function bookmark(title, url)
{
	if (document.all)
		window.external.AddFavorite(url, title);
	else if (window.sidebar)
		window.sidebar.addPanel(title, url, "")
}

function changeClass(elem){
	
	elementClass = elem.className;
	if(elementClass.indexOf('sOver')==-1){
		elem.className = elem.className + ' sOver'; 
	}
	elem.onmouseout = function(){
		elem.className =  elem.className.replace(' sOver','');
  	}
}



function isFormChanged(frm) {
	var rtnVal = false; 
	var frm =  $(frm); //document.forms[0];
	var ele = frm.elements;
	
	for ( i=0; i < ele.length; i++ ) {
		if ( ele[i].type.length > 0 ) {
			if ( isElementChanged( ele, i ) ) {
				rtnVal = true;
			break;
			}
		}

 	}
	return rtnVal;
}



function isElementChanged( ele, i ) {
	var isEleChanged = false; 
	switch ( ele[i].type ) { 
		case "text" : 
			if ( ele[i].value != ele[i].defaultValue ) return true;
			break;
		case "textarea" : 
			if ( ele[i].value != ele[i].defaultValue ) return true;
			break;
		case "radio" :
			val = "";
			if ( ele[i].checked != ele[i].defaultChecked ) return true;
			break;
		case "select-one" : 
			for ( var x =0 ; x <ele[i].length; x++ ) {
				if ( ele[i].options[ x ].selected != ele[i].options[ x ].defaultSelected ) 
				return true;
			}
			break;
		case "select-multiple" :
			for ( var x =0 ; x <ele[i].length; x++ ) {
				if ( ele[i].options[ x ].selected != ele[i].options[ x ].defaultSelected ) 
				return true;	
			}
			break;
		case "checkbox" :
			if ( ele[i].checked != ele[i].defaultChecked ) return true;
		default:
			return false;
			break;

	}
}

// Get Url Param
function gup( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

function sendPageFeedback(){
	var feedback_url = "index.php?action=sendfeedback&us_comments=";
	var feedback_for_page_txt = "Your feedback on this page: ";
	
	var menu_top_div = document.getElementById('menu_top');
	var li_elements = menu_top_div.getElementsByTagName('li');
	for(i=0;i<li_elements.length;i++){
		li_el = li_elements[i];
		if(li_el.getAttribute("class")=='active'){
			// get link
			var link = li_el.getElementsByTagName('a')[0];
			var link_text = link.innerHTML;
			link_text = link_text.replace(/&(lt|gt);/g, function (strMatch, p1){
 		 		return (p1 == "lt")? "<" : ">";
 			});
	 		var strTagStrippedText = link_text.replace(/<\/?[^>]+(>|$)/g, "");
	 		feedback_for_page_txt += strTagStrippedText+"\n\n";
		}
	}
	// get page feedback text
	feedback_url += escape(feedback_for_page_txt);
	mwShow(feedback_url);
}


/* --- from (SCRIPT) : http://acko.net/blog/mouse-handling-and-absolute-positions-in-javascript  --- */
/**
 * Retrieve the absolute coordinates of an element.
 * @param element : A DOM element.
 * @return : A hash containing keys 'x' and 'y'.
 */
function getAbsolutePosition(element) {
	//if ( !element ) return { x: 0, y: 0 };
	var r = { x: element.offsetLeft, y: element.offsetTop };
	if (element.offsetParent) {
		var tmp = getAbsolutePosition(element.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
	}
	return r;
};

/**
 * Retrieve the coordinates of the given event relative to the center
 * of the widget.
 *
 * @param event : A mouse-related DOM event.
 * @param reference : A DOM element whose position we want to transform the mouse coordinates to.
 * @return : A hash containing keys 'x' and 'y'.
 */
function getRelativeCoordinates(event, reference) {
	var x, y;
	event = event || window.event;
	var el = event.target || event.srcElement;
	
	if (!window.opera && typeof event.offsetX != 'undefined') {
		// Use offset coordinates and find common offsetParent
		var pos = { x: event.offsetX, y: event.offsetY };
		
		// Send the coordinates upwards through the offsetParent chain.
		var e = el;
		while (e) {
			e.mouseX = pos.x;
			e.mouseY = pos.y;
			pos.x += e.offsetLeft;
			pos.y += e.offsetTop;
			e = e.offsetParent;
		}
		
		// Look for the coordinates starting from the reference element.
		var e = reference;
		var offset = { x: 0, y: 0 }
		while (e) {
			if (typeof e.mouseX != 'undefined') {
				x = e.mouseX - offset.x;
				y = e.mouseY - offset.y;
				break;
			}
			offset.x += e.offsetLeft;
			offset.y += e.offsetTop;
			e = e.offsetParent;
		}
		
		// Reset stored coordinates
		e = el;
		while (e) {
			e.mouseX = undefined;
			e.mouseY = undefined;
			e = e.offsetParent;
		}
	} else {
		// Use absolute coordinates
		var pos = getAbsolutePosition(reference);
		x = event.pageX  - pos.x;
		y = event.pageY - pos.y;
	}
	// Subtract distance to middle
	return { x: x, y: y };
}
/* --- end (SCRIPT) --- */


/* A2_Event unifies the IE and Firefox Events */
function A2_Event( event, element ) {
	this.event = null;
	this.eventRelativeTo = null;
	
	if ( arguments ) {
		this.event = event || window.event;
		if ( element ) this.eventRelativeTo = element;
	}
	
	this.init();
}


A2_Event.prototype.init = function() {
	if ( this.event ) {
		this.currentTarget = this.event.currentTarget || this.event.target || this.event.srcElement
		this.pageX = this.event.pageX || (event.clientX + document.body.scrollLeft)
		this.pageY = this.event.pageY || (event.clientY + document.body.scrollTop)
		
		var pos4ie = getRelativeCoordinates( this.event, this.eventRelativeTo || this.currentTarget )
		this.relativeX = /*this.event.layerX ||*/ pos4ie.x
		this.relativeY = /*this.event.layerY ||*/ pos4ie.y
	}
}

Function.prototype.bind = function(obj) {
	var t = this;
	var params = arguments;
	var x = function() {
		var arr = new Array();
		for (var i=1; i<params.length; i++) {arr[i-1] = params[i];}
		t.apply(obj, arr)
	};
	return x;
}


/* element_id - should lead to an element with a specific structure
   selected_tab - starts from zero, represents the tabthat should be shown by default
*/
function a2_install_tabs( element_id, selected_tab, css_display_for_show ) {
	var element = $(element_id);
	if (!element) return;
	
	var tabs = element.getElementsByTagName("ul")[0];
	tabs = tabs.getElementsByTagName("li");
	
	var contents = getElementsByClass( "content", element, "div" );
	if (tabs.length != contents.length)
		return;
	
	element.a2_css_display_for_show = css_display_for_show;
	element.a2_tabs = tabs;
	element.a2_contents = contents;
	element.a2_activeTab = selected_tab ? tabs[selected_tab] : tabs[0];
	
	element.a2_activateTab = function( tabElement ) {
		a2_hide( this.a2_contents[this.a2_activeTab.a2_index] );
		this.a2_activeTab.className = "";
		
		a2_show( this.a2_contents[tabElement.a2_index], this.a2_css_display_for_show );
		tabElement.className = "active";
		
		this.a2_activeTab = tabElement;
	}
	
	element.a2_switchToTab = function( tab_no ) {
		this.a2_activateTab( this.a2_tabs[ tab_no ] );
	}
	
	for (var i=0; i<tabs.length; i++) {
		tabs[i].a2_parent = element;
		tabs[i].a2_index = i;
		tabs[i].onclick = function() {
			this.a2_parent.a2_activateTab(this);
		}
	}
	
	element.a2_activateTab( element.a2_activeTab );
	return element;
}



// A2 improvement of adding hover to any HTML element based on the background image
// and the items height or lineHeight if the height is missing.
// The attachment stands for extensible functionality
//   * if the showHide property is set to an ID, the corresponding element will be
//	 shown/hidden on mouse over/out
function install_a2_simple_hover_button( sender_obj, attachments ) {
	sender_obj = $(sender_obj)
	
	if (sender_obj.isA2Hover) return //A2 special hover already added, skip sequence
	sender_obj.isA2Hover = true
	
	button_height = getCSSProp(sender_obj, 'height')
	button_height = button_height.toLowerCase()
	button_height = trim(button_height.replace("px", "")) //trim defined in common.js
	
	button_lineHeight = getCSSProp(sender_obj, 'lineHeight')
	button_lineHeight = button_lineHeight.toLowerCase()
	button_lineHeight = trim(button_lineHeight.replace("px", "")) //trim defined in common.js
	
	sender_obj._a2_height = button_height ? button_height : button_lineHeight
	
	if ( attachments && attachments["showHide"] ) {
		sender_obj.showHideObj = $( attachments["showHide"] )
	}
	
	sender_obj.onmouseover = function() {
		this.style.backgroundPosition = "left -" + this._a2_height + "px"
		if (this.showHideObj) a2_show( this.showHideObj )
	}
	
	sender_obj.onmouseout = function() {
		this.style.backgroundPosition = "left top"
		if (this.showHideObj) a2_hide( this.showHideObj )
	}
	
	sender_obj.onmouseover()
}

 
function a2_getViewPortWH() {
	var result = { width: 0, height: 0 }
	
	// the more standards compliant browsers (mozilla/netscape/opera/IE7)
	if (typeof window.innerWidth != 'undefined') {
	  result.width = window.innerWidth,
	  result.height = window.innerHeight
	}
	// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
	else if (typeof document.documentElement != 'undefined'
	 && typeof document.documentElement.clientWidth !=
	 'undefined' && document.documentElement.clientWidth != 0) {
	   result.width = document.documentElement.clientWidth,
	   result.height = document.documentElement.clientHeight
	}
	// older versions of IE
	else {
	   result.width = document.getElementsByTagName('body')[0].clientWidth,
	   result.height = document.getElementsByTagName('body')[0].clientHeight
	}
	
	return result;
}

function a2_containsExcludeTarget( elem ) {
	return false; //function disabled temporary (FFT affected under IE, TREE drag is slow now)
	if ( !elem.id ) return false
	
	for ( var i in arr_skip_body_mousemove_on )
		if ( arr_skip_body_mousemove_on[i] == elem.id ) {
			//alert( "arr_skip_body_mousemove_on[" + i + "] == " + elem.id )
			return true
		}
	
	return false
}

//{/literal};
//{literal}
var shown_hint = null;
var hintnodes = new Array();
var shown_hint_for = 0;
var hintmenus_loaded = 0;
var nohints = 0;


var shown_hint_v2 = null;
var hintnodes_v2 = new Array();
var shown_hint_for_v2 = 0;
var hintmenus_loaded_v2 = 0;
var nohints_v2 = 0;

function refreshHintMenu()
{
	
	if(shown_hint_for) 
	{
		o = shown_hint_for;
		shown_hint_for = 0;
		showHintMenu(o);
	}
}

function hideHintMenu()
{
	shown_hint_for = 0;
	if(shown_hint)
		shown_hint.style.display = 'none';
}

function hideHintMenu_v2() {
	shown_hint_for_v2 = 0;
	if (shown_hint_v2) {
		shown_hint_v2.style.display = 'none';
		shown_hint_v2.innerHTML = '';
	}
}

function showHintMenu( event ) {
	if ( event.srcElement.getAttribute('a2hm') == "v2" )
		return showHintMenu_v2(event);
	if(nohints) return;
	e = event.srcElement;
	if( (e.getAttribute('emptyhintmenu'))&&(e.innerHTML!="") ) 
		return;
	if(!shown_hint) 
	{
		shown_hint = $('tblhintmenu');
		if(!shown_hint) return;
	}
	hmenu = shown_hint;
	
	if((shown_hint_for)&&(shown_hint_for==e))
	{
		if(event)
		{
			setPixelTop(hmenu,event.y+getScrollTop(document.body)+10);
			setPixelLeft(hmenu,event.x+getScrollLeft(document.body)+10);
			correctPositionX_A(hmenu);
			correctPositionY(hmenu);
		}
		return;
	}
	
	shown_hint_for = e;
	e.onmouseout = hideHintMenu;
	targethint = $(e.getAttribute('hintmenu'));
	
	if(targethint.hidehint) return;
	if((targethint.getAttribute("imgsrc") != "")&&($(targethint.id+"_img")))
	{
		$(targethint.id+"_img").innerHTML = '<img src="'+targethint.getAttribute("imgsrc")+'" width=300/>';
	}

	hmenu.innerHTML= "<div class='InnerHintMenu' id='divInnerHintMenu'><table cellpadding='3' cellspacing='0'>"+targethint.innerHTML+"</table></div>";
	//hmenu.style.zIndex = 160;
	if(event)
	{
		setPixelTop(hmenu,event.y+getScrollTop(document.body)+10);
		setPixelLeft(hmenu,event.x+getScrollLeft(document.body)+10);
	
	}
	correctPositionX_A(hmenu);
	correctPositionY(hmenu);
	hmenu.style.display = 'block';
	if(document.all)
	{
		var dihm = $('divInnerHintMenu');
		hmenu.innerHTML='<iframe src="javascript:false;" frameborder="0" tabindex="-1" style="filter:Alpha(Opacity=\'0\'); display:block;position:absolute;top:0;left:0;z-Index:-1;background-color:#000000;border:none;width:'+dihm.offsetWidth+'px;height:'+dihm.offsetHeight+'px"></iframe>'+hmenu.innerHTML;
	}

	

}

function showHintMenu_v2( event ) {
	if ( nohints_v2 ) return;
	e = event.srcElement;
	if( e.getAttribute('emptyhintmenu') && e.innerHTML!="" ) return;
	
	if ( !shown_hint_v2 ) {
		shown_hint_v2 = $('tblhintmenu_v2');
		if ( !shown_hint_v2 ) return;
	}
	hmenu = shown_hint_v2;
	
	if ( shown_hint_for_v2 && shown_hint_for_v2==e ) {
		if (event) {
			setPixelTop( hmenu, event.y+getScrollTop(document.body)+10 );
			setPixelLeft(hmenu, event.x+getScrollLeft(document.body)+10 );
			correctPositionX_A(hmenu);
			correctPositionY(hmenu);
		}
		return;
	}
	
	shown_hint_for_v2 = e;
	e.onmouseout = hideHintMenu_v2;
	targethint = $(e.getAttribute('hintmenu'));
	
	if(targethint.hidehint) return;
	if( targethint.getAttribute("imgsrc")!="" && $(targethint.id+"_img") ) {
		$(targethint.id+"_img").innerHTML = '<img src="'+targethint.getAttribute("imgsrc")+'" width="300" />';
	}
	
	hmenu.innerHTML= targethint.innerHTML;
	//hmenu.style.zIndex = 160;
	if (event) {
		setPixelTop(hmenu,event.y+getScrollTop(document.body)+10);
		setPixelLeft(hmenu,event.x+getScrollLeft(document.body)+10);
	}
	
	correctPositionX_A(hmenu);
	correctPositionY(hmenu);
	hmenu.style.display = 'block';
	
//	if ( document.all ) {
//		var dihm = $('divInnerHintMenu');
//		hmenu.innerHTML='<iframe src="javascript:false;" frameborder="0" tabindex="-1" style="filter:Alpha(Opacity=\'0\'); display:block;position:absolute;top:0;left:0;z-Index:-1;background-color:#000000;border:none;width:'+dihm.offsetWidth+'px;height:'+dihm.offsetHeight+'px"></iframe>'+hmenu.innerHTML;
//	}
}



function changeHintText(hint,newtext)
{
	var textTd = $(hint.id+"_text");
	if(textTd) textTd.innerHTML = newtext;
}

function cloneHint(e,oldcontainer)
{
	hc = e.cloneNode(true);
	hc.oldParent = oldcontainer;
	hc.id = findID(hc.id);
	document.body.appendChild(hc);
	movedobjects[movedobjects.length] = hc;
	var allc = hc.getElementsByTagName("*");
	for(var i=0;i<allc.length;i++)
	{
		if(allc[i].id!="")
		{
			if(allc[i].id.indexOf(e.id)==0)
				allc[i].id = strReplace(allc[i].id,e.id,hc.id);
		}
	}
	return hc;
}

function registerHint(e)
{
	pe = getParent(e);
	oe = pe.removeChild(e);
	document.body.appendChild(oe);
	oe.oldParent = pe;
	movedobjects[movedobjects.length] = oe;
}

function loadHintMenus()
{
	/*elems = document.getElementsByTagName('*');
	for(i=elems.length-1;i>=0;i--)
		if(elems[i].getAttribute('ishintmenu')==1)
		{
			registerHint(elems[i]);
		}*/
	hintmenus_loaded = 1;
}

function createHintMenu()
{
	hideHintMenu();
	hintmenuid = "hintmenu_textingarea_dyn_"+globalcounter++;
	hintmenu = document.createElement('DIV');
	hintmenu.id = hintmenuid;
	document.body.appendChild(hintmenu);
	hintmenu.style.position="absolute";
	hintmenu.setAttribute('ishintmenu',1);
	hintmenu.className = "hintmenu";
	hintmenu.style.display = "none";
	hintmenu.style.zIndex = 98;
	registerHint(hintmenu);
	return hintmenu;
}
function createHintMenuFromUrl(url)
{
	hintmenu = createHintMenu();
	hintmenu.innerHTML = "loading.......";
	loadArea(url,hintmenu,'refreshHintMenu()');	
	return hintmenu;
}

function createHintMenuFromText(txt)
{
	hintmenu = createHintMenu();
	hintmenu.innerHTML = txt;
	return hintmenu;
}
//{/literal};
//{literal}
var ab2Sort_dir;

var lastShownPage = 0;

var albumImage = 0; 

function alertTrafficExceded()
{
	alert('You have exceeded your download allowance for this month. Please go to the "Your account" tab for more info. ');
};

// cristi - 10.09;
function hideLightbox()
{	
	$('overlay').style.display = "none";
	$('loadingImage').style.display = "none";	
	$('lightbox').style.display = "none";
	$('lightboxLink').innerHTML = "";
	albumImage.onAbort = destroyImage();	

	var combos = document.body.getElementsByTagName("select");
	for(var i=0;i<combos.length;i++) combos[i].style.display = 'block';
	
	$('divLightBoxMenu').style.display='none';
}

function destroyImage(){
	albumImage = null;
}

function showWaitOverlay()
{
	$('overlay_wait').style.display = 'block';
	$('overlay_waittext').style.display = 'block';
	$('overlay_wait').style.height = getPageSize()[1];
}

function lightboxImageClick()
{
	setPixelTop(divLightBoxMenu,window.event.y-10+getScrollTop(document.body));
	setPixelLeft(divLightBoxMenu,window.event.x-10+getScrollLeft(document.body));
	$('divLightBoxMenu').style.display='block';	
	return false;
}

function loadLightbox(id,url,sslink){
	pageSize = getPageSize()
	
	$('overlay').style.display = "block"
	$('loadingImage').style.top = getScrollTop(document.body) + 200 + "px"
	$('loadingImage').style.display = "block"
	$('overlay').style.height = pageSize[1]
	$('aPhotoZoomSlideshow').setAttribute('sslink',sslink)
	
	var combos = document.body.getElementsByTagName("select")
	for ( var i=0; i<combos.length; i++ )
		combos[i].style.display = 'none'
	
	albumImage = new Image()
	albumImage.width = 800
	albumImage.src = url
	albumImage.setAttribute("hintmenu", "hmenu_click_to_close_lightbox")
	albumImage.hintmenu = "hmenu_click_to_close_lightbox"
	albumImage.onclick = lightboxImageClick
	
	if ( albumImage.complete ) {
		showLightbox()
	} else {
		albumImage.onload  = showLightbox
	}	
}

function showLightbox(){
	if ( albumImage ) {

		pageSize = getPageSize()
		
		if ( albumImage.height > (pageSize[3] - 125) )
			albumImage.height = pageSize[3] - 125
		
		var objImage = document.createElement("img")
		objImage.setAttribute('id','lightboxImage')

		$('lightboxLink').appendChild(albumImage)
		$('lightbox').style.display = "block"
		$('lightbox').style.marginLeft= "-" + $('lightbox').offsetWidth / 2 + "px"
//		$('lightbox').style.marginLeft= "-" + 830 / 2 + "px"
		$('lightbox').style.top = getScrollTop(document.body) + 15 + "px"
		$('loadingImage').style.display = "none"
	}
}

function bnPagesDynClick(what,pname)
{
	what = what*1.0;
	var current = $("bn_pages_"+pname+"_aux_current").value;
	var total = $("bn_pages_"+pname+"_aux_count").value;
	current*=1.0;
	total*=1.0;
	if(what == "f") current = 0;
	else if(what == "p") current--;
	else if(what == "n") current++;
	else if(what == "l") current = total - 1;
	else current = what;
	$("bn_pages_"+pname+"_aux_current").value = current;

	var startpage = current - 10.0;
	if(startpage<0) startpage = 0;
	var endpage = current*1.0 + 10.0;
	if(endpage>=total) endpage = total*1.0;

	if(current>0) 		var prev = 1;
	if(startpage>1) 	var first = 1;
	if(current<total-1) var next = 1;
	if(endpage<total-1) var last = 1;
	
	var onclick = sprintf($("bn_pages_"+pname+"_aux_onclick").value,current);
	if(onclick) eval(onclick);
	
	$("bn_pages_"+pname+"f").innerHTML = "&nbsp;";
	$("bn_pages_"+pname+"l").innerHTML = "&nbsp;";
	$("bn_pages_"+pname+"n").innerHTML = "&nbsp;";
	$("bn_pages_"+pname+"p").innerHTML = "&nbsp;";
	for(var i=0;i<=20;i++)
	{
		$("bn_pages_"+pname+i).innerHTML = "";
		$("bn_pages_"+pname+i).style.display = "none";
	}
	if(total>1)
	{
		for(var i=0;i<=20;i++)
		{
			if(i+startpage!=current)
			{
				$("bn_pages_"+pname+i).innerHTML = '<a href="javascript:bnPagesDynClick(\''+(i+startpage)+'\',\''+pname+'\');" class="page">'+(i+startpage+1)+'</a>';
			}
			else
			{
				$("bn_pages_"+pname+i).innerHTML = '<span class="page_current">'+(i+startpage+1)+'</span>';		
			}
			$("bn_pages_"+pname+i).style.display = "";		
			if(i+startpage+1>=endpage) break;
		}
	
		if(first) 	$("bn_pages_"+pname+"f").innerHTML = '<a href="javascript:bnPagesDynClick(\''+(0)+'\',\''+pname+'\');" class="page">&lt;&lt;</a>';
		if(prev) 	$("bn_pages_"+pname+"p").innerHTML = '<a href="javascript:bnPagesDynClick(\''+(current*1.0-1.0)+'\',\''+pname+'\');" class="page">&lt;</a>';
		if(next) 	$("bn_pages_"+pname+"n").innerHTML = '<a href="javascript:bnPagesDynClick(\''+(current*1.0+1.0)+'\',\''+pname+'\');" class="page">&gt;</a>';
		if(last) 	$("bn_pages_"+pname+"l").innerHTML = '<a href="javascript:bnPagesDynClick(\''+(total*1.0-1.0)+'\',\''+pname+'\');" class="page">&gt;&gt;</a>';
	}
}


function showPhotosPage(pageId)
{
	hideHintMenu();
	dynloadcount++;
	$("divEventDetailsPhotos").innerHTML = $('divEventDetailsPhotos').pages[pageId];
	dynReloadArrays(null);
};

function showSyndicate(phid,uri,title)
{
	new_uri = "syndicate.php?action=gencodetxt&ident="+phid+"&link="+escape(uri)+"&linkname="+escape(title)+"&includelink=1";
	mwShow(new_uri);
}

function onWidthChange(aspect)
{
	var w = document.getElementById("inpWidth").value;
	w++;w--;
	if(w<300) w = "a";
	if(!((typeof w == 'number') && (isFinite(w))))
	{
		w = 400;
		document.getElementById("inpWidth").value = 400;
	}
	var h = Math.floor(aspect * w);
	document.getElementById("inpHeight").value = h;
};

function onHeightChange(aspect)
{
	var h = document.getElementById("inpHeight").value;
	h++;h--;
	if(Math.floor(1/aspect * h)<300) h = "a";
	if(!((typeof h == 'number') && (isFinite(h))))
	{
		h = 300;
		document.getElementById("inpHeight").value = 300;
	}
	var w = Math.floor(1/aspect * h);
	document.getElementById("inpWidth").value = w;
};	


function clearSlideshow()
{
	selectAllContainer($('slideshow_cont'));
	callDragHandler(0,$('slideshow_remove'));
}

function appletNewWindowOnload()
{
	$('appletContainer').style.display = 'none';
	$('appletMoved').style.display = '';
}


function appletNewWindow()
{
	openWindow('?action=applet&mode=ext','applet','height=450,width=600,status=no,toolbar=no,menubar=no,location=no');
}

function appletBatchFinish()
{	
	mwHideBlock();	
	window.focus();
}

function appletNewPicture(id)
{
}

function uploadOnStart()
{
	mwShowBlock();
}

function uploadOnFirstStart()
{
	showHelpFlash("index.php?action=showpage&page=helpflashes/demo01.tpl&nowrap=1");
}


var uploadFinishPending = 0;
var uploadFinishPendingIDS;
var demo01Visible = 0;
function startDemo01()
{
	demo01Visible =1;
}

function closeDemo01()
{
	demo01Visible = 0;
	if(uploadFinishPending)
	{
		uploadFinishPending = 0;
		uploadOnFinish(uploadFinishPendingIDS);
	}
}

function uploadOnFinish(ids)
{
	if(demo01Visible) 
	{
		uploadFinishPending = 1;
		uploadFinishPendingIDS = ids;
		return;
	}
	if(ids==-1)
	{// html upload
		url = "upload.php?action=createeventfromnewpics";
	}
	else
	{// applet upload, ids is an array containing the newly uploaded photo ids
		ids = ids.split("#");
		popurl = "events.php?action=new";
		for(i=0;i<ids.length;i++)
			popurl+="&photos[]="+ids[i];
		url = "layout.php?action=leftright&left=uploads&pop="+escape(popurl);
	}
	documentGoTo(url);
	//document.location=url;
}

function famSelectSlotA(tag)
{
	url = "family.php?action=setslot&tag="+tag;
	loadArea(url,$('la_leftpanel'));
}

function famSelectSlot(slot,targetid,focusid)
{
	url = "family.php?action=setslot&slot="+slot+"&target_ident="+targetid+"&focus_ident="+focusid;
	loadArea(url,$('la_leftpanel'));
}

function addEventToShoppingCart(evid,follow)
{
	var url = "shop.php?action=addtocart&picture_idents[0][ident]="+evid+"&picture_idents[0][type]=event";
	var callback_string = 
		"loadArea('shop.php?action=modify',$('ordersummary')); "
		+"loadArea('shop.php?action=getcountitems',$('la_countitems')); ";
	
	var _page = document.getElementById('page');	
	var _perpage = document.getElementById('perpage');	
	
	if(_page && _perpage){
		callback_string += 
			"loadArea('shop.php?action=updatepagination&page=" + _page.value + "&perpage=" + _perpage.value + "',$('paginationTop')); "
			+"loadArea('shop.php?action=updatepagination&page=" + _page.value + "&perpage=" + _perpage.value + "',$('paginationBottom'));"
			;
	}
		
	// if we don't have items in shoppingcart we must refresh the page = set follow=true
//	if(!document.getElementById('shop_nav')){
		follow = true;
//	}
		
	if(!follow)
	{
		loadArea(url,0);	
		setTimeout(callback_string,2000);		
	}
	else
	{
		document.location = url+"&nexturl="+escape('shop.php?page=0');
	}
}

function removeEventFromShoppingCart(evid,follow)
{
	var url = "shop.php?action=removefromcart&ev_ident="+evid;
	var callback_string = 
		"loadArea('shop.php?action=modify',$('ordersummary')); "
		+"loadArea('shop.php?action=getcountitems',$('la_countitems')); ";
	
	var _page = document.getElementById('page');	
	var _perpage = document.getElementById('perpage');	
	
	if(_page && _perpage){
		callback_string += 
			"loadArea('shop.php?action=updatepagination&page=" + _page.value + "&perpage=" + _perpage.value + "',$('paginationTop')); "
			+"loadArea('shop.php?action=updatepagination&page=" + _page.value + "&perpage=" + _perpage.value + "',$('paginationBottom'));"
			;
	}
		
	// if we don't have items in shoppingcart we must refresh the page = set follow=true
//	if(!document.getElementById('shop_nav')){
		follow = true;
//	}
		
	if(!follow)
	{
		loadArea(url,0);	
		setTimeout(callback_string,2000);		
	}
	else
	{
		document.location = url+"&nexturl="+escape('shop.php?page=0');
	}
}

function addPictureToShoppingCart(picid)
{
	url = "shop.php?action=addtocart&picture_idents[0][ident]="+picid+"&picture_idents[0][type]=photo";
	loadArea(url,0);
	
	setTimeout("loadAreaClean('shop.php?action=getcountitems',$('la_countitems'))",2000);		
}


function addPersonToEvent(objects_ident,events_ident)
{
		objparam = "";
		objparam+='&person[0]='+objects_ident;
		url = 'events.php?action=addobjects&drg_type=ep&event='+events_ident+objparam;
		mwShow(url);
}

function hideOobject(type,ident)
{
	for(i=0;i<dragdestinations.length;i++)
		if((dragdestinations[i].getAttribute('ab2type')==type)&&(dragdestinations[i].getAttribute('ident')==ident))
		{
			dragdestinations[i].style.display = 'none';
			break;
		}
}

function setEventIcon(event_ident,photo_ident)
{
	for(i=0;i<dragdestinations.length;i++)
		if((dragdestinations[i].getAttribute('ab2type')=="photo")&&(dragdestinations[i].getAttribute('ident')==photo_ident))
		{
			photo = dragdestinations[i];
			break;
		}
	for(i=0;i<dragdestinations.length;i++)
		if((dragdestinations[i].getAttribute('ab2type')=="event")&&(dragdestinations[i].getAttribute('ident')==event_ident))
			dragdestinations[i].src = photo.src;
	loadArea('events.php?action=seticon&ev_ident='+event_ident+'&photo_ident='+photo_ident,0);
	
}

function setObjectIcon(object_ident,photo_ident)
{
	for(i=0;i<dragdestinations.length;i++)
		if((dragdestinations[i].getAttribute('ab2type')=="photo")&&(dragdestinations[i].getAttribute('ident')==photo_ident))
		{
			photo = dragdestinations[i];
			break;
		}
	for(i=0;i<dragdestinations.length;i++)
		if(((dragdestinations[i].getAttribute('ab2type')=="person")||(dragdestinations[i].getAttribute('ab2type')=="object"))&&(dragdestinations[i].getAttribute('ident')==object_ident))
			dragdestinations[i].src = photo.src;
	loadArea('objects.php?action=seticon&obj_ident='+object_ident+'&photo_ident='+photo_ident,0)		
}

function setObjectIconURL(object_ident,photo_ident,url)
{
	var images = document.getElementsByTagName("IMG");
	for(i=0;i<images.length;i++)
		if(((images[i].getAttribute('ab2type')=="person")||(images[i].getAttribute('ab2type')=="object"))&&(images[i].getAttribute('ident')==object_ident))
			images[i].src = url;
	loadArea('objects.php?action=seticon&obj_ident='+object_ident+'&photo_ident='+photo_ident,0)		
}


function selectAllContainer(container)
{
	childs = container.getElementsByTagName("*");	
	for(i=0;i<childs.length;i++)
		if(childs[i].getAttribute('draggable'))
			selectDraggable(childs[i]);
}

function recyclePhotos(idents)
{
	for(var i=0;i<draggableimages.length;i++)
	{
		if(draggableimages[i].getAttribute('ab2type')=="photo")
		{
			var ident = draggableimages[i].getAttribute('ident');
			for(var j=0;j<idents.length;j++)
			{
				if(ident==idents[j])
				{
					destroyDraggable(draggableimages[i]);
					break;
				}
			}
		}
	}
	loadHintMenus();
	loadDraggables();
}

function clearContainer(container)
{
 	for(i=0;i<draggableimages.length;i++)
		if(draggableimages[i].getAttribute('container')==container)
		{
			destroyDraggable(draggableimages[i]);
		}
	loadHintMenus();
	loadDraggables();
}
 
function clearContainerPosCache(container)
{
 	for(i=0;i<draggableimages.length;i++)
		if(draggableimages[i].getAttribute('container')==container)
		{
	 		draggableimages[i].absolute_offsetTop = 0;
			draggableimages[i].absolute_offsetLeft = 0;
		}
} 

function ab2Filter(container,attribute,value)
{
	childs = container.getElementsByTagName("*");
	for(i=0;i<childs.length;i++)
	{
		childs[i].absolute_offsetLeft = 0;
		childs[i].absolute_offsetTop = 0;
		if(childs[i].getAttribute(attribute))
		{
			hay = childs[i].getAttribute(attribute).toLowerCase();
			ned = value.toLowerCase();
			strpos = hay.indexOf(ned);
			if(strpos==-1)
				childs[i].style.display = 'none';
			else
				childs[i].style.display = '';		
		}
	}
}

function ab2Sort_C(obj1,obj2)
{
	var rv = 1;

	if(obj1.getAttribute('ab2sort_attribute')<obj2.getAttribute('ab2sort_attribute')) 
		rv = -1;
	rv = rv*ab2Sort_dir;
	return rv;
}

function ab2Sort(container,attribute,dir)
{
	ab2Sort_dir=dir;
	childs = container.getElementsByTagName("*");
	a = new Array();
	for(i=0;i<childs.length;i++)
	{
		childs[i].absolute_offsetLeft = 0;
		childs[i].absolute_offsetTop = 0;
		if(childs[i].getAttribute(attribute))
		{
			childs[i].setAttribute('ab2sort_attribute',childs[i].getAttribute(attribute));
			a[a.length] = childs[i];
		}
	}
	
	a.sort(ab2Sort_C);
	for(i=0;i<a.length;i++)
		container.appendChild(a[i]);
	
}

function dragHandlerTreeSlot(check, obj)
{
	
	if(check)
	{
		// only pictures
		var can = 1;
		for(i=0;i<dragselected.length;i++)
			if(dragselected[i].getAttribute('ab2type')!='photo') 
			{
				can=0;
				break;
			}
		return can;
	}	
	else
	{
		if(!dragHandlerTreeSlot(1,obj))
		{
			hideDragged();		
			return 0;
		}
		url = 'objects.php?action=newperson&ftslot='+obj.getAttribute('slotid')+'&focus='+obj.getAttribute('focusid')+'&photo_ident='+dragselected[0].getAttribute('ident');
		hideDragged();
		mwShow(url);
	}
}

function dragHandlerAddEventsToTimeline(check,obj)
{
	if(check)
	{
		// only persons and objects
		var can = 1;
		for(i=0;i<dragselected.length;i++)
			if(dragselected[i].getAttribute('ab2type')!='event') 
			{
				can=0;
				break;
			}
		if(!can)
		{
			can = 1;
			for(i=0;i<dragselected.length;i++)
				if(dragselected[i].getAttribute('ab2type')!='photo') 
				{
					can=0;
					break;
				}			
		}
		return can;
	}
	else
	{
		if(!dragHandlerAddEventsToTimeline(1,obj)) 
		{
			hideDragged();		
			return 0;
		}
		
		type = "photo";
		for(i=0;i<dragselected.length;i++)
			if(dragselected[i].getAttribute('ab2type')=='event') 
			{
				type = "event";
				break;
			}
			
		if(type=="event")
		{
			evlist = new Array();
			oblist = new Array();
			for(i=0;i<dragselected.length;i++)
				evlist[i] = dragselected[i].getAttribute('ident');
			oblist[0] = obj.getAttribute('ident');
			addObjectsToEvents(oblist,evlist);
		}
		else
		{
			photosurl = "";
			for(i=0;i<dragselected.length;i++)
				photosurl += "&photos[]="+dragselected[i].getAttribute('ident');
			mwShow("events.php?action=new&focus="+obj.getAttribute('ident')+photosurl);
		}
		
		hideDragged();
		return 1;
	}	
}

function dragHandlerAddPersonsToEvent(check,obj)
{
	if(check)
	{
		// only persons and objects
		var can = 1;
		for(i=0;i<dragselected.length;i++)
			if((dragselected[i].getAttribute('ab2type')!='person') 
			 	&&(dragselected[i].getAttribute('ab2type')!='object'))
			{
				can=0;
				break;
			}
		return can;
	}
	else
	{
		if(!dragHandlerAddPersonsToEvent(1,obj)) 
		{
			hideDragged();		
			return 0;
		}
		
		evlist = new Array();
		oblist = new Array();
		for(i=0;i<dragselected.length;i++)
			oblist[i] = dragselected[i].getAttribute('ident');
		evlist[0] = obj.getAttribute('ident');
		addObjectsToEvents(oblist,evlist);
		
		hideDragged();
		return 1;
	}
}

function dragHandlerAddPhotosToEvent(check,obj)
{
	if(check)
	{
		// only photos
		var can = 1;
		for(i=0;i<dragselected.length;i++)
			if(dragselected[i].getAttribute('ab2type')!='photo') 
			{
				can=0;
				break;
			}
		return can;
	}
	else
	{
		if(!dragHandlerAddPhotosToEvent(1,obj)) 
		{
			hideDragged();		
			return 0;
		}
		eventslist = new Array();
		photoslist = new Array();
		eventslist[0] = obj.getAttribute('ident');
		for(i=0;i<dragselected.length;i++)
		    photoslist[i] = dragselected[i].getAttribute('ident');
		addPhotosToEvents(photoslist,eventslist);
        
		
		hideDragged();
		return 1;
	}
}
// WARNING, PARAMS FOR SOME REASON INVERSED!!!
function dragHandlerSlideShowPhotoPhoto(obj,check)
{
	url = "slideshows.php?action=insertbefore&photo_ident="+obj.getAttribute('ident')+"&slideshow_ident="+$('ident').value;
	for(i=0;i<dragselected.length;i++)
	{
		e = dragselected[i];
		if(!e) continue;
		pe = getParent(e);
		oe = pe.removeChild(e);
		pe.insertBefore(oe,obj);
		url=url+"&moved_ident["+i+"]="+dragselected[i].getAttribute('ident');
	}
	clearContainerPosCache("slideshow");
	hideDragged();

	loadArea(url,0);
}

function dragHandlerSlideshow(check,obj)
{
	if(check)
	{
		// only photos and events
		var can = 1;
		for(i=0;i<dragselected.length;i++)
			if((dragselected[i].getAttribute('ab2type')!='photo') 
			 	&&(dragselected[i].getAttribute('ab2type')!='event'))can=0;
		for(i=0;i<dragselected.length;i++)
			if(dragselected[i].getAttribute('container')=='slideshow') 
				can=0;
		return can;
	}
	else
	{
		if(!dragHandlerSlideshow(1,obj)) 
		{
			hideDragged();		
			return 0;
		}
		var contains_events = 0;
		url = "?action=addphotos&slideshow_ident="+$('ident').value;
		for(i=0;i<dragselected.length;i++)
		{
			url=url+"&type["+i+"]="+dragselected[i].getAttribute('ab2type')+"&ident["+i+"]="+dragselected[i].getAttribute('ident');			
			if(dragselected[i].getAttribute('ab2type')=='event') 
				contains_events = 1;
		};
		hideDragged();		
		if(contains_events)
			mwShow(url);
		else
			loadArea(url,0);
		dragHandlerAddToContainer(obj,"slideshow");
	}
}

function dragHandlerSlideshowRemove(check,obj)
{
	if(check)
	{
		// only photos and events
		var can = 1;
		for(i=0;i<dragselected.length;i++)
			if(dragselected[i].getAttribute('container')!='slideshow') 
			 	can=0;
		return can;
	}
	else
	{
		if(!dragHandlerSlideshowRemove(1,obj)) 		
		{
			hideDragged();		
			return 0;
		}
		dragHandlerAddToContainer(obj,"slideshowremoved");
		url = "?action=removephotos&slideshow_ident="+$('ident').value;
		for(i=0;i<dragselected.length;i++)
		{
			dragselected[i].style.display='none';
			url=url+"&type["+i+"]="+dragselected[i].getAttribute('ab2type')+"&ident["+i+"]="+dragselected[i].getAttribute('ident');			
		}
		loadArea(url,0);
		hideDragged();		
	}
}

function dragHandlerAddToContainer(obj,containername)
{
	var rv = new Array();
	for(i=0;i<dragselected.length;i++)
	{
		if(dragselected[i])
		{
			var e = cloneAB2Obj(dragselected[i],obj);
			rv[rv.length] = e;
			if(containername) e.setAttribute("container",containername);
		}
	}
	return rv;
}

//--- exactly like the previous one but made the check and don't add persons without email
function dragHandlerAddToContainerforEmail(obj,containername)
{
	var alert_no_email = 0; // alert if some of the dragged persons don't have email completed	
	 
	for(i=0;i<dragselected.length;i++)
	{
		if(!dragselected[i].getAttribute('ab2us_email')) 
		{ 
			alert_no_email = 1;
		} 
		else
		{
		  e = cloneAB2Obj(dragselected[i],obj);
		  if(containername) e.setAttribute("container",containername);
		}  
	}
	if(alert_no_email == 1) alert("The profile you dragged has no e-mail address.");
}

function cloneAB2Obj(obj,container,id)
{
	var e = obj.cloneNode(true);
	createDraggable(e);
	createDragDestination(e);
	if(!id)
		e.id = findID(e.id);
	else
		e.id = id;
	e.popmenuparams = "";

/*	e.width = (e.width*30.0/e.height*1.0);
	e.style.width = "auto";//(e.width*36.0/e.height*1.0);
	e.height= 30;
	e.style.height=30;*/

	container.appendChild(document.createTextNode(" "));
	container.appendChild(e);
	
	// clone hint
	hc = cloneHint($(e.getAttribute('hintmenu')),container);

	e.setAttribute('hintmenu',hc.id);
	e.setAttribute('absolute_offsetTop',0);
	e.setAttribute('absolute_offsetLeft',0);
	return e;
}

function dragHandlerComposeEmailTo(check,obj)
{
	if(check)
	{
		// only persons
		var can = 1;
		for(i=0;i<dragselected.length;i++)
			if(dragselected[i].getAttribute('ab2type')!='person') can=0;
    
	 //--- check if some dragged person appear in the current_persons list; if it appears don't allow adding
   var current_persons = new Array();
   if($('persons_list').value != "")
   {
      current_persons = $('persons_list').value.split("/");
      current_persons.pop(); // an extra element(empty) will appear at the end of the array due to split; remove it
   }
	 for(i=0;i<dragselected.length;i++)			
	 { 
	    for(j=0;j<current_persons.length;j++)
		  {
		  	if( current_persons[j] == dragselected[i].getAttribute('ident') )
		  	{
		  	  can=0;
		  	  break;
		  	}
		  }
	 }
   return can;
	}
	else
	{
		if(!dragHandlerComposeEmailTo(1,obj)) 
		{
			hideDragged();
			return;
		}

		dragHandlerAddToContainerforEmail(obj,"composeemailto");
		hideDragged();	
	 
//--------------------

   var current_persons = new Array();
   if($('persons_list').value != "")
   {
      current_persons = $('persons_list').value.split("/");
      current_persons.pop(); // an extra element(empty) will appear at the end of the array due to split; remove it
   }
        
 		for(i=0;i<dragselected.length;i++)
		{
			var person_already_exists = 0;
      
		  for(j=0;j<current_persons.length;j++)
		  { 
		  	if( current_persons[j] == dragselected[i].getAttribute('ident') )
		  	{
		  	  person_already_exists = 1;
		  	  break;
		  	}
		  };
      
		  if(person_already_exists == 0 && dragselected[i].getAttribute('ab2us_email') ) // add the person
		  {
		  	 $("text_persons_list").value += " "+dragselected[i].getAttribute('ab2us_email');  // add the person's email to the text_persons_list
		     current_persons.push(dragselected[i].getAttribute('ident'));
		  }
			
		}
		
		var final_persons = "";
	  for(i=0;i<current_persons.length;i++)
       final_persons += current_persons[i]+"/";		
		
    $('persons_list').value = final_persons;  // add all the persons into the hidden input 

	}
	
}

/*
function dragHandlerComposeEmailToRemove(check,obj)
{
	if(check)
	{
		// only persons
		var can = 1;
		for(i=0;i<dragselected.length;i++)
			if(dragselected[i].getAttribute('ab2type')!='person') can=0;
		for(i=0;i<dragselected.length;i++)
			if(dragselected[i].getAttribute('container')!='composeemailto') can=0;	
		return can;
	}
	else
	{
		if(!dragHandlerComposeEmailToRemove(1,obj)) 
		{
			hideDragged();
			return;
		}
		hideDragged();	
//--------------------
   var current_persons = new Array();
   if($('persons_list').value != "")
   {
      current_persons = $('persons_list').value.split("/");
      current_persons.pop(); // an extra element(empty) will appear at the end of the array due to split; remove it
   }

		var final_persons = "";
	  for(i=0;i<current_persons.length;i++)
	  {
	     var deleted = 0;
	     for(j=0;j<dragselected.length;j++)
	     {
	       if(dragselected[j].getAttribute('ident') == current_persons[i]) // remove the person (do not add in the final persons)
	       {
       	   $("text_persons_list").value =  $("text_persons_list").value.replace(dragselected[j].getAttribute('ab2us_email'),"");  // remove the person's email from the text_persons_list
       	   dragselected[j].style.display='none';
	         deleted = 1;
	         break;
	       } 
	     }
	     
	     if(deleted == 0)
	       	final_persons += current_persons[i]+"/";		
	  }
		
    $('persons_list').value = final_persons;  // add all the persons into the hidden input 

	}
	
}
*/


function dragHandlerComposeEmailAttchm(check,obj)
{
	if(check)
	{
		// only photos or events
		var can = 1;
		for(i=0;i<dragselected.length;i++)
			if((dragselected[i].getAttribute('ab2type')!='photo')&&(dragselected[i].getAttribute('ab2type')!='event')) can=0;
	 //--- check if some dragged events appear in the current_events list; if it appears don't allow adding
   var current_events = new Array();
   if($('events_list').value != "")
   {
      current_events = $('events_list').value.split("/");
      current_events.pop(); // an extra element(empty) will appear at the end of the array due to split; remove it
   }
	 for(i=0;i<dragselected.length;i++)		
	 {
	 	  if(dragselected[i].getAttribute('ab2type') =='event') 
	 	  {
	 	  	for(j=0;j<current_events.length;j++)
		  	{
		  		if( current_events[j] == dragselected[i].getAttribute('ident') )
		  		{
		  	  	can=0;
		  	  	break;
		  		}
		  	}
	 	  }	
	 }
	 //--- check if some dragged photos appear in the current_photos list; if it appears don't allow adding
   var current_photos = new Array();
   if($('photos_list').value != "")
   {
      current_photos = $('photos_list').value.split("/");
      current_photos.pop(); // an extra element(empty) will appear at the end of the array due to split; remove it
   }
	 for(i=0;i<dragselected.length;i++)		
	 {
	 	  if(dragselected[i].getAttribute('ab2type') =='photo') 
	 	  {
	 	  	for(j=0;j<current_photos.length;j++)
		  	{
		  		if( current_photos[j] == dragselected[i].getAttribute('ident') )
		  		{
		  	  	can=0;
		  	  	break;
		  		}
		  	}
	 	  }	
	 }
	return can;
	}
	else
	{
		if(!dragHandlerComposeEmailAttchm(1,obj)) 
		{
			hideDragged();
			return;
		}
		dragHandlerAddToContainer(obj,"dd_composeattchm");
		hideDragged();	
		
   //-------- add the events dragged
   var current_events = new Array();
   if($('events_list').value != "")
   {
      current_events = $('events_list').value.split("/");
      current_events.pop(); // an extra element(empty) will appear at the end of the array due to split; remove it
   }
        
 		for(i=0;i<dragselected.length;i++)
		{
			if(dragselected[i].getAttribute('ab2type') =='event') 
			{
				var event_already_exists = 0;

				for(j=0;j<current_events.length;j++)
				{
					if( current_events[j] == dragselected[i].getAttribute('ident') )
					{
						event_already_exists = 1;
						break;
					}
				};

				if(event_already_exists == 0) // add the event
				{
					current_events.push(dragselected[i].getAttribute('ident'));
				}
			}
		}
		
		var final_events = "";
	  for(i=0;i<current_events.length;i++)
       final_events += current_events[i]+"/";		
		
    $('events_list').value = final_events;  // add all the events into the hidden input 
		
   //-------- add the photos dragged
   var current_photos = new Array();
   if($('photos_list').value != "")
   {
      current_photos = $('photos_list').value.split("/");
      current_photos.pop(); // an extra element(empty) will appear at the end of the array due to split; remove it
   }
        
 		for(i=0;i<dragselected.length;i++)
		{
			if(dragselected[i].getAttribute('ab2type') =='photo') 
			{
				var photo_already_exists = 0;

				for(j=0;j<current_photos.length;j++)
				{
					if( current_photos[j] == dragselected[i].getAttribute('ident') )
					{
						photo_already_exists = 1;
						break;
					}
				};

				if(photo_already_exists == 0) // add the photo
				{
					current_photos.push(dragselected[i].getAttribute('ident'));
				}

			}
		}
		var final_photos = "";
	  for(i=0;i<current_photos.length;i++)
       final_photos += current_photos[i]+"/";		
		
    $('photos_list').value = final_photos;  // add all the photos into the hidden input 
	}	
}


function dragHandlerComposeEmailAttchmRemove(check,obj)
{
	if(check)
	{
		// only photos or events
		var can = 1;
		for(i=0;i<dragselected.length;i++)
			if((dragselected[i].getAttribute('ab2type')!='photo')&&(dragselected[i].getAttribute('ab2type')!='event')) can=0;
    for(i=0;i<dragselected.length;i++)
			if(dragselected[i].getAttribute('container')!='dd_composeattchm') can=0;	
		return can;
	}
	else
	{
		if(!dragHandlerComposeEmailAttchmRemove(1,obj)) 
		{
			hideDragged();
			return;
		}
		hideDragged();	
//-------------------- handle the events removal
   var current_events = new Array();
   if($('events_list').value != "")
   {
      current_events = $('events_list').value.split("/");
      current_events.pop(); // an extra element(empty) will appear at the end of the array due to split; remove it
   }

    var final_events = "";
	  for(i=0;i<current_events.length;i++)
	  {
	     var deleted = 0;
	     for(j=0;j<dragselected.length;j++)
	     {
	     	 if(dragselected[j].getAttribute('ab2type') =='event')
	     	 { 
	         if(dragselected[j].getAttribute('ident') == current_events[i]) // remove the event (do not add in the final events)
	         {
	       	   dragselected[j].style.display='none';
	           deleted = 1;
	           break;
	         }
	     	 }   
	     }
	     
	     if(deleted == 0)
	       	final_events += current_events[i]+"/";		
	  }
		
    $('events_list').value = final_events;  // add all the events into the hidden input 
//-------------------- handle the photos removal
   var current_photos = new Array();
   if($('photos_list').value != "")
   {
      current_photos = $('photos_list').value.split("/");
      current_photos.pop(); // an extra element(empty) will appear at the end of the array due to split; remove it
   }

		var final_photos = "";
	  for(i=0;i<current_photos.length;i++)
	  {
	     var deleted = 0;
	     for(j=0;j<dragselected.length;j++)
	     {
	     	 if(dragselected[j].getAttribute('ab2type') =='photo')
	     	 { 
	         if(dragselected[j].getAttribute('ident') == current_photos[i]) // remove the photo (do not add in the final photos)
	         {
	       	   dragselected[j].style.display='none';
	           deleted = 1;
	           break;
	         }
	     	 }   
	     }
	     
	     if(deleted == 0)
	       	final_photos += current_photos[i]+"/";		
	  }
		
    $('photos_list').value = final_photos;  // add all the photos into the hidden input 

	}
	
}


function dragHandlerEventPermissions(check,obj)
{
	if(check)
	{
		// only persons
		var can = 1;
		for(i=0;i<dragselected.length;i++)
			if(dragselected[i].getAttribute('ab2type')!='person') can=0;
		return can;
	}
	else
	{
		if(!dragHandlerEventPermissions(1,obj)) 
		{
			hideDragged();
			return;
		}
		dragHandlerAddToContainer(obj,0);
		hideDragged();	
	}	
}

function dragHandlerColaboration(check,obj)
{
	if(check)
	{
		// only persons
		var can = 1;
		for(i=0;i<dragselected.length;i++)
			if(dragselected[i].getAttribute('ab2type')!='person') can=0;
		return can;
	}
	else
	{
		if(!dragHandlerColaboration(1,obj)) 
		{
			hideDragged();
			return;
		}
		var url = "users.php?action=addcolaboration&";
		for(i=0;i<dragselected.length;i++)
			  url+="persons_idents["+i+"]="+dragselected[i].getAttribute('ident')+"&";
		url+="sl_ident="+obj.getAttribute('sl_ident');
		loadArea(url,$('la_rightpanel'));
		hideDragged();	
	}	
}

function dragHandlerCheckRelationPad(check,obj)
{
	if(check)
	{
		// only 1
		if(dragselected.length>1)
			return 0;
		if(obj.getAttribute('ab2type')=='person')
		{
			// persons or objects
			var can = 1;
			for(i=0;i<dragselected.length;i++)
				if((dragselected[i].getAttribute('ab2type')!='person')&&(dragselected[i].getAttribute('ab2type')!='object')&&(dragselected[i].getAttribute('ab2type')!='photo')) can=0;
	
			return can;
		}
		else if(obj.getAttribute('ab2type')=='object')
		{
			// persons 
			var can = 1;
			for(i=0;i<dragselected.length;i++)
				if(dragselected[i].getAttribute('ab2type')!='person') can=0;
	
			return can;
		}
		else return 0;
	}
	else
	{
		if(!dragHandlerCheckRelationPad(1,obj)) 
		{
			hideDragged();
			return;
		}
		if(dragselected[0].getAttribute('ab2type') =='photo') // create new person
		  mwShow('objects.php?action=newperson&photo_ident='+dragselected[0].getAttribute('ident'));
		else // change relation
		dhab2o_PerPer(obj);
		hideDragged();
	}	
}


function dhab2o_PerPer(obj)
{
	mwShow('objects.php?action=changerelation&target_object='+obj.getAttribute('ident')+'&focus='+dragselected[0].getAttribute('ident'));
};

function dhab2o_PerObj(obj)
{
	dhab2o_PerPer(obj);
};

function dhab2o_PerEv(obj)
{
	evlist = new Array();
	oblist = new Array();
	if(dhab2o_GetDestinationType(obj)=="event")
	{
		for(i=0;i<dragselected.length;i++)
			oblist[i] = dragselected[i].getAttribute('ident');
		evlist[0] = obj.getAttribute('ident');
	}
	else
	{
		for(i=0;i<dragselected.length;i++)
			evlist[i] = dragselected[i].getAttribute('ident');
		oblist[0] = obj.getAttribute('ident');		
	}
	addObjectsToEvents(oblist,evlist);	
};

function dhab2o_PerPh(obj)
{
	phlist = new Array();
	oblist = new Array();
	if(dhab2o_GetDestinationType(obj)=="person")
	{
		for(i=0;i<dragselected.length;i++)
			phlist[i] = dragselected[i].getAttribute('ident');
		oblist[0] = obj.getAttribute('ident');
	}
	else
	{
		for(i=0;i<dragselected.length;i++)
			oblist[i] = dragselected[i].getAttribute('ident');
		phlist[0] = obj.getAttribute('ident');		
	}	
	addObjectsToPictures(phlist,oblist);
};

function dhab2o_ObjObj(obj)
{
};

function dhab2o_ObjEv(obj)
{
	dhab2o_PerEv(obj);
};

function dhab2o_ObjPh(obj)
{
	phlist = new Array();
	oblist = new Array();
	if(dhab2o_GetDestinationType(obj)=="object")
	{
		for(i=0;i<dragselected.length;i++)
			phlist[i] = dragselected[i].getAttribute('ident');
		oblist[0] = obj.getAttribute('ident');
	}
	else
	{
		for(i=0;i<dragselected.length;i++)
			oblist[i] = dragselected[i].getAttribute('ident');
		phlist[0] = obj.getAttribute('ident');		
	}	
	addObjectsToPictures(phlist,oblist);	
};

function dhab2o_EvEv(obj)
{
	if (confirm ('Are you sure you want to merge these albums?')) mwShow('events.php?action=merge&ev1='+obj.getAttribute('ident')+'&ev2='+dragselected[0].getAttribute('ident'));
};

function dhab2o_EvPh(obj)
{
	evlist = new Array();
	phlist = new Array();
	var urlparams = "";
	if(dhab2o_GetDestinationType(obj)=="event")
	{
		for(i=0;i<dragselected.length;i++)
			urlparams+="&photos_idents[]="+ dragselected[i].getAttribute('ident');
		urlparams+="&events_idents[]="+ obj.getAttribute('ident');		
	}
	else
	{
		for(i=0;i<dragselected.length;i++)
			urlparams+="&photos_idents[]="+ dragselected[i].getAttribute('ident');
		urlparams+="&events_idents[]="+ obj.getAttribute('ident');		
	}
	alert("aaaaaaa")
	displayPopMenu(window.event,'popmenus.php?action=copymovephotos'+urlparams);
	//addPhotosToEvents(phlist,evlist);
	
};

function dhab2o_GetDestinationType(obj)
{
	return obj.getAttribute('ab2type');
}

function dhab2o_GetDraggedType()
{
	return dragselected[0].getAttribute('ab2type');
}


function dragHandlerAB2Obj(check,obj)
{
	if(check)
	{
		// first do not allow to drop over myself
		var can = 1;
		for(i=0;i<dragselected.length;i++)
			if(dragselected[i].getAttribute('ident')==obj.getAttribute('ident')) can=0;
		if(!can) return 0;
		// now type compatibilities
		if(obj.getAttribute('ab2type')=="photo")
		{
			// we only allow photo->photo if only photos in slideshow selected
			pins = 1;
			if(obj.getAttribute('container')!="slideshow") pins = 0;
			if(pins)
				for(i=0;i<dragselected.length;i++)
					if(dragselected[i].getAttribute('ab2type')=="photo")
						if(dragselected[i].getAttribute('container')!="slideshow")
							pins = 0;
			// check that we have no photos selected
			if(!pins)
				for(i=0;i<dragselected.length;i++)
					if(dragselected[i].getAttribute('ab2type')=="photo") can=0;
		}
		if(!can) return 0;
		// check that we don't have more types
		type = 0;
		for(i=0;i<dragselected.length;i++)
			if(!type) type=dragselected[i].getAttribute('ab2type');
			else
				if(dragselected[i].getAttribute('ab2type')!=type) can=0;
		if(!can) return 0;
		// if we drop over a person or object, we can't have more than 1 person or object selected
		numpers = 0;
		if((obj.getAttribute('ab2type')=='person')||(obj.getAttribute('ab2type')=='object'))
			for(i=0;i<dragselected.length;i++)
				if(((dragselected[i].getAttribute('ab2type')=="person")||(dragselected[i].getAttribute('ab2type')=="object"))&&(numpers)) can=0;
				else if((dragselected[i].getAttribute('ab2type')=="person")||(dragselected[i].getAttribute('ab2type')=="object")) numpers++;
		if(!can) return 0;
		// if we drop over an event, we can't have more than 1 event selected
		numev = 0;
		if(obj.getAttribute('ab2type')=='event')
			for(i=0;i<dragselected.length;i++)
				if((dragselected[i].getAttribute('ab2type')=="event")&&(numev)) can=0;
				else if(dragselected[i].getAttribute('ab2type')=="event") numev++;
		if(!can) return 0;		
		// no object-object on left drag
		if(obj.getAttribute('ab2type')=="object")
			if(dragselected[0].getAttribute('ab2type')=="object") if (dragtype!=2) can = 0;
		if(!can) return 0;		
		return 1;
	}
	else
	{
		if(!dragHandlerAB2Obj(1,obj)) 
		{
			hideDragged();
			return;
		}
		// check for 'special cases
		nomenu = 0;
		if(!nomenu)
		{// photo over photo in slideshow
			pins = 1;
				if(obj.getAttribute('container')!="slideshow") pins = 0;
				if(pins)
					for(i=0;i<dragselected.length;i++)
						if(dragselected[i].getAttribute('ab2type')=="photo")
							if(dragselected[i].getAttribute('container')!="slideshow")
								pins = 0;
			if(pins)
				dragHandlerSlideShowPhotoPhoto(obj,check);
			nomenu = pins;
		}
		if(!nomenu)
		{
			/*
			// commented because now all drags should behave like right-drag => resulting in menu
			if(dragtype==1)
			{
				deotype = dhab2o_GetDestinationType(obj);
			   	drotype = dhab2o_GetDraggedType();					
				if(deotype=="person")
				{
					if(drotype=="person")  dhab2o_PerPer(obj);
					else if(drotype=="object")  dhab2o_PerObj(obj);
					else if(drotype=="event")   dhab2o_PerEv(obj);
					else if(drotype=="photo")   dhab2o_PerPh(obj);
				}
				else if(deotype=="object")
				{
					if(drotype=="person")  dhab2o_PerObj(obj);
					else if(drotype=="object")  dhab2o_ObjObj(obj);
					else if(drotype=="event")   dhab2o_ObjEv(obj);
					else if(drotype=="photo")   dhab2o_ObjPh(obj);
				}
				else if(deotype=="event")
				{
					if(drotype=="person")  dhab2o_PerEv(obj);
					else if(drotype=="object")  dhab2o_ObjEv(obj);
					else if(drotype=="event")   dhab2o_EvEv(obj);
					else if(drotype=="photo")   dhab2o_EvPh(obj);
				}
				else if(deotype=="photo")
				{
					if(drotype=="person")  dhab2o_PerPh(obj);
					else if(drotype=="object")  dhab2o_ObjPh(obj);
					else if(drotype=="event")   dhab2o_EvPh(obj);
				};
			}
			else if(dragtype==2)
			{*/
				var dobj = "dest_type="+obj.getAttribute('ab2type')+"&dest_ident="+obj.getAttribute('ident')+"&objcount="+dragselected.length;
				for(i=0;i<dragselected.length;i++)
					dobj += "&obj_type["+i+"]="+dragselected[i].getAttribute('ab2type')+"&obj_ident["+i+"]="+dragselected[i].getAttribute('ident');
				displayPopMenu(event,'popmenus.php?action=dropmenu&'+dobj);
			//}
			hideDragged();			
		}
	}
}

function dragHandlerShop(check,obj)
{
	if(check)
	{
		// only photos and events
		var can = 1;
		for(i=0;i<dragselected.length;i++)
			if((dragselected[i].getAttribute('ab2type')!='photo')&&(dragselected[i].getAttribute('ab2type')!='event')) can=0;
		return can;
	}
	else
	{	
		if(!dragHandlerShop(1,obj)) 
		{
			hideDragged();
			return;
		}
		var url = "shop.php?action=addtocart&";
		for(i=0;i<dragselected.length;i++)
		{
		  if(dragselected[i].getAttribute('ab2type') == 'photo')
		    url += "picture_idents["+i+"][ident]="+dragselected[i].getAttribute('ident')+"&picture_idents["+i+"][type]=photo&";
		  else
		    url += "picture_idents["+i+"][ident]="+dragselected[i].getAttribute('ident')+"&picture_idents["+i+"][type]=event&";
		}
		loadArea(url,0);
		hideDragged();
		setTimeout("loadArea('shop.php?action=getcountitems',$('la_countitems'))",2000);		
	}	
}

function dragHandlerEditObjectPicture(check,obj)
{
	if(check)
	{
		// only 1 photo
		if(dragselected.length > 1) return 0;
	  if(dragselected[0].getAttribute('ab2type')!='photo') return 0;
		return 1;
	}
	else
	{	
		if(!dragHandlerEditObjectPicture(1,obj)) 
		{
			hideDragged();
			return;
		}
		
		$('photo_ident').value = dragselected[0].getAttribute('ident');
		$('photo_src').src = dragselected[0].src;
		
		hideDragged();
	}	
}


function dragHandlerMail(check,obj)
{
	if(check)
	{
		// only photos, events and persons
		var can = 1;
		for(i=0;i<dragselected.length;i++)
			if(dragselected[i].getAttribute('ab2type') == 'object') can=0;
		return can;
	}
	else
	{
		if(!dragHandlerMail(1,obj)) 
		{
			hideDragged();
			return;
		}
		hideDragged();
		
		var persons = "";
		var textpersonslist = "";
		var events = "";
		var photos = "";
		for(i=0;i<dragselected.length;i++)
		{
		  if(dragselected[i].getAttribute('ab2type') == 'person' && dragselected[i].getAttribute('ab2us_email') != "")
		  {
		    persons += dragselected[i].getAttribute('ident')+"/";
		    //textpersonslist += dragselected[i].getAttribute('ab2us_email')+" "; 
		  }  
		  if(dragselected[i].getAttribute('ab2type') == 'event')
		    events += dragselected[i].getAttribute('ident')+"/";
		  if(dragselected[i].getAttribute('ab2type') == 'photo')
		    photos += dragselected[i].getAttribute('ident')+"/";    
		}
		var compose_params = "&persons_list="+persons+"&events_list="+events+"&photos_list="+photos+"&text_persons_list="+textpersonslist;
		famMail(1,compose_params);
	}	
}

function dragHandlerRecycle_A(ids,mode)
{
	ids = ids.split('a');
	phids = "";
	for(var i=0;i<ids.length;i++)
	{
		phids+="a"+ids[i];
		deleteAB2Object(ids[i],"photo");
	}
	url = "photos.php?action=recycle&mode="+mode+"&photoids="+phids;
	loadArea(url,0);
	if(getLeftID()=="uploads")
	{
		loadArea(getLeftURL(),$('la_leftpanel'));
		loadArea(getRightURL(),$('la_rightpanel'));
	}
	loadDraggables();
}

function dragHandlerRecycle(check,obj)
{
	if(check)
	{
		// only photos they own and not recycled
		var can = 1;
		for(i=0;i<dragselected.length;i++)
		{
			if(dragselected[i].getAttribute('ab2type')!='photo') can=0;
			if(dragselected[i].getAttribute('ab2loggedowner')!=1) can=0;
			if(dragselected[i].getAttribute('ab2recycled')==1) can=0;
		}
		return can;
	}
	else
	{		
		if(!dragHandlerRecycle(1,obj)) 
		{
			hideDragged();
			return;
		}		
		if(dragtype==2)
		{
			var dobj = "";
			for(i=0;i<dragselected.length;i++)
				dobj += "&obj_type["+i+"]="+dragselected[i].getAttribute('ab2type')+"&obj_ident["+i+"]="+dragselected[i].getAttribute('ident');
			displayPopMenu(event,'popmenus.php?action=recycle&'+dobj);
		}
		else 
		{
			phids = "";
			for(i=0;i<dragselected.length;i++)
				phids+="a"+dragselected[i].getAttribute('ident');
			dragHandlerRecycle_A(phids,0);
		}
		hideDragged();
	}	
}

function dragHandlerRestore(check,obj)
{
	if(check)
	{
		// only photos they own and are recycled
		var can = 1;
		for(i=0;i<dragselected.length;i++)
		{
			if(dragselected[i].getAttribute('ab2type')!='photo') can=0;
			if(dragselected[i].getAttribute('ab2loggedowner')!=1) can=0;
			if(dragselected[i].getAttribute('ab2recycled')!=1) can=0;
		}
		return can;
	}
	else
	{		
	
		if(!dragHandlerRestore(1,obj)) 
		{
			hideDragged();
			return;
		}		
		var dobj = "";
		for(i=0;i<dragselected.length;i++)
			dobj += "&obj_type["+i+"]="+dragselected[i].getAttribute('ab2type')+"&obj_ident["+i+"]="+dragselected[i].getAttribute('ident');
		displayPopMenu(event,'popmenus.php?action=recycle&mode=1&'+dobj);
		hideDragged();
	}	
}

function showElement(elem, display)
{
	$(elem).style.display = (display ? display : "block");
}

function hideElement(elem, display)
{ 
	$(elem).style.display = (display ? display : "none");
}

function showhideElement(elem, startState) {
	var obj = (typeof elem == 'string') ? document.getElementById(elem) : elem
	var obj_prop = obj.style.display
	
	if (startState && obj_prop=="") obj_prop = startState
	obj_prop = obj_prop=="none" ? "block" : "none"
	
	obj.style.display = obj_prop
}

function a2_show( id_or_obj, forceDisplayAttr ) {
	$( id_or_obj ).style.display = (typeof(forceDisplayAttr) != "undefined") ? forceDisplayAttr : "block";
}

function a2_hide( id_or_obj ) {
	$( id_or_obj ).style.display = "none";
}

function a2_focus( id_or_obj ) {
	$( id_or_obj ).focus();
}

function a2_isEscape( event ) {
	var kC  = (window.event) ? event.keyCode : event.keyCode // MSIE : Firefox
	var Esc = (window.event) ? 27 : event.DOM_VK_ESCAPE // MSIE : Firefox
	
	if ( kC == Esc )
		return true
	
	return false
}

function editAlbumInfoDropdown(yearDropdown, yearInput)
{
	if (yearDropdown.value == '')
	{
		yearDropdown.style.display = "none";
		yearInput.style.display = '';
		yearInput.value = yearDropdown.value;
		yearInput.focus();
	}
	else
	{
		yearInput.value = yearDropdown.value;
	}
}

function addObjectsToPictures(photoslist,objectslist)
{	
   if(!photoslist[photoslist.length-1]) photoslist.pop();
   if(!objectslist[objectslist.length-1]) objectslist.pop();

   var photos = new Array();
   var objects = new Array();
   
   var url = "objects.php?action=addobjectstophotos";
   for(i=0;i<photoslist.length;i++)
   { 
   	 url += "&photoslist["+i+"]="+photoslist[i];
   }
   for(i=0;i<objectslist.length;i++)
   { 
   	 url += "&objectslist["+i+"]="+objectslist[i];
   }

   loadArea(url,0);
}


//------ functions for eventtypes handling
function changeEventTypes(e)
{	

   if(e.value == -1)
   {
     $('et_display').value = -1;
   	 $('eu_type_extend').value = "clearit";
   	 $('eu_type_basic').value = "clearit";
     showElement("et_tr1");
     hideElement("et_tr2");
     hideElement("et_tr3");	
   	 $('eu_type_defined').value = "";
   }   
   else if(e.value == -2)
   {
     $('et_display').value = -2;
   	 $('eu_type_extend').value = "clearit";
   	 $('eu_type_basic').value = "clearit";
     showElement("et_tr2");
     hideElement("et_tr1");
     hideElement("et_tr3");	
   	 $('eu_type_defined').value = "";
   }
   else if(e.value == -3)
   {
     $('et_display').value = -3;
   	 $('eu_type_extend').value = "clearit";
   	 $('eu_type_basic').value = "clearit";
     showElement("et_tr3");
     hideElement("et_tr1");
     hideElement("et_tr2");	
   	 $('eu_type_defined').value = "";
   }

}   
   
function backToShort()
{	
     $('et_display').value = -3;
   	 $('eu_type_extend').value = "clearit";
   	 $('eu_type_basic').value = "clearit";
     showElement("et_tr3");
     hideElement("et_tr1");
     hideElement("et_tr2");	
   	 $('eu_type_defined').value = "";
}
//--- end eventtypes functions   
function registrationexpand() // e pt OLD registration .. se poate sterge cred
{	
	if($('more').value == 1)
	{
		hideElement("extra_link");
		$('more').value = 0;
	}
	else
	{ 
		showElement("extra_link");
		$('more').value = '1';
	}
}

function messageexpand() // display on/off permisions in compose message 
{	
	if($('more').value == 1)
	{
		hideElement("permissions_table");
		$('more').value = 0;
	}
	else
	{ 
		showElement("permissions_table");
		$('more').value = '1';
	}
}

function leftrelationchange() // change the relation display(left person) in change collaboration
{
	$("target_diplay").innerHTML = "";
	/*if($("suggestedrel").value != "")
	{
	  if(!allinvertedrelations[$("suggestedrel").value*(-1)]) 
	    $("target_diplay").innerHTML = allinvertedrelations[$("suggestedrel").value];
	  else
	    $("target_diplay").innerHTML = allinvertedrelations[$("suggestedrel").value*(-1)];
	}    */
	if($("allrel").value != "")
	{
	  if(!allinvertedrelations[$("allrel").value*(-1)]) 
	  {
	    if(!allinvertedrelations[$("allrel").value]) // it's SRT_NEGGED or SRT_DELETE
       	$("target_diplay").innerHTML = "";
      else 	
	    $("target_diplay").innerHTML = allinvertedrelations[$("allrel").value];
	  }  
	  else 
	        $("target_diplay").innerHTML = allinvertedrelations[$("allrel").value*(-1)];
	}
}

/*
* sends user to compose message to ask for picture permission
* @input user_ident int user that will receive the email
*/
function permissionMail(user_ident)
{
	document.location = 'messages.php?action=compose&from_where=permissions&user_ident='+user_ident;
	/*
	if(currentPage == "layout_left_right")
	{
		loadArea('messages.php?action=compose&from_where=permissions&user_ident='+user_ident,$('la_rightpanel'));
	}
	else
	{ 
	  document.location = "layout.php?action=leftright&left=mail&right=compose&from_where=permissionmail&user_ident="+user_ident;
	}*/
}	




//------------NEW email functions


function emailPictureCloning(e,ph_ident)
{ 	
	if(e.isclone)
	{
		e.hintmenu = "";
	  //showElement(e.isclone);
	   removePicture(ph_ident);	
	   destroyDraggable(e);
	   
	  hideHintMenu();
	  
	  //----
	  
	  var current_photos = new Array();
	  if($('photos_list').value != "")
	  {
	  	current_photos = $('photos_list').value.split("/");
	  	current_photos.pop(); // an extra element(empty) will appear at the end of the array due to split; remove it
	  }

	  var final_photos = "";
	  for(i=0;i<current_photos.length;i++)
	  {
	  	if(ph_ident != current_photos[i]) 
	    	final_photos += current_photos[i]+"/";
	  }
	  	
		$('photos_list').value = final_photos;  // add all the photos into the hidden input 
	}
	else
	{
		var x = cloneAB2Obj(e,$('dd_composeattchm'));
		x.isclone = e.id;
		x.width = (x.width*30.0/x.height*1.0);
		x.style.border = "3px solid #FFF";
		x.style.margin = "1px";		
		x.style.width = "auto";
		x.height= 60;
		x.style.height=60; 
		changeHintText($(x.getAttribute('hintmenu')),"Click to remove from the attachment list");
  
		x.setAttribute("draggable",0);
		addPicture(e.getAttribute("ident"),e.id);
		//hideElement(e.id);
		$('photos_list').value += ph_ident+"/";		
	}
	
	checkEventAccessInEmailSending();
	
}




function emailAlbumCloning(e,album_ident)
{ 	
	if(e.isclone)
	{ 
		e.hintmenu = "";
		//showElement(e.isclone);
		removeAlbum(album_ident);	
		destroyDraggable(e);
		
		hideHintMenu();
	  
		//----
	  
		var current_events = new Array();
		if($('events_list').value != "")
		{
			current_events = $('events_list').value.split("/");
			current_events.pop(); // an extra element(empty) will appear at the end of the array due to split; remove it
		}

		var final_events = "";
		for(i=0;i<current_events.length;i++)
		{
			if(album_ident != current_events[i]) 
				final_events += current_events[i]+"/";
		}
		$('events_list').value = final_events;  // add all the events into the hidden input 
	}
	else
	{ 
		var x = cloneAB2Obj(e,$('dd_composeattchm'));
		x.isclone = e.id;
		x.setAttribute("draggable",0);
		x.setAttribute("hintmenu","hintmenu_removealbums"+x.getAttribute('ident'));
		x.style.border = "3px solid #91C3E6";
		x.style.margin = "1px";
		x.width = (x.width*30.0/x.height*1.0);
		x.style.width = "auto";
		x.height= 60;
		x.style.height=60; 
    	//changeHintText($(x.getAttribute('hintmenu')),"Click to remove the album from the attachment list");

		addAlbum(e.getAttribute("ident"),e.id,x.id);
	
		//hideElement(e.id);
		$('events_list').value += album_ident+"/";
	}
	
	checkEventAccessInEmailSending();
	
}

/*
* Check the email photo's access
* Author MihaiA
*/
function checkEventAccessInEmailSending()
{
	if(!document.getElementById('photos_list') && !document.getElementById('events_list')){
		document.getElementById('askphotoaccess').style.display='none';
		document.getElementById('em_askphotoaccess').checked=false;
		return;
	}
	
	photos_list = document.getElementById('photos_list').value;
	events_list = document.getElementById('events_list').value;
	
	if(photos_list=='' && events_list==''){
		document.getElementById('askphotoaccess').style.display='none';
		document.getElementById('em_askphotoaccess').checked=false;
		return;
	}
	
	// get events and photo ids
	var check_url = "messages.php?action=cansendphotos&photos_list="+photos_list+"&events_list="+events_list;
	loadArea(check_url,0);
}

/*
@ showit=> to show the object in the "to" mwshow
use it to send params for viewing the email address
*/
function emailPersonCloning(e,object_ident,object_name,showit)
{ 	
	if(e.id.search("name_") != -1)
	{ 
	  
	  removePerson(object_ident);		  
	  
	  $('dd_persons_display').removeChild(e);
	  //----
	  var current_persons = new Array();
	  if($('persons_list').value != "")
	  {
	  	current_persons = $('persons_list').value.split("/");
	  	current_persons.pop(); // an extra element(empty) will appear at the end of the array due to split; remove it
	  }

	  var final_persons = "";
	  for(i=0;i<current_persons.length;i++)
	  {
	  	if(object_ident != current_persons[i]) 
	    	final_persons += current_persons[i]+"/";
	  }
	  	
		$('persons_list').value = final_persons;  // add all the persons into the hidden input 
	}
	else
	{
		
		//--- replace " " with &nbsp; if " " appears will break js
		var obj_name = object_name;
  		while (obj_name.indexOf(" ") > -1) 
  		 		obj_name = obj_name.replace(" ", "&nbsp;");
		//--- replace "'" with "" if "'" appears will break js 
  		while (obj_name.indexOf("'") > -1) 
    		obj_name = obj_name.replace("'", "");
    	//---- 
    	var email_string = ((showit==1 && e.getAttribute('ab2us_email'))?" ("+e.getAttribute('ab2us_email')+")":"")
    
		$('dd_persons_display').innerHTML += "<div class='email_prs_to' id='name_"+e.id+"' title='Click to remove' onclick=\"emailPersonCloning(this," + object_ident + ",'" + obj_name + "',1);\"><span class='email_prs_removeleft'></span><span class='email_prs_content'>" +obj_name+email_string+"</span><span class='email_prs_removeright'></span></div>";
		addPerson(e.getAttribute("ident"),e.id);
		$('persons_list').value += object_ident+"/";
	}
	toggleClearRecipients();
}


function emailGroupCloning(e,group_ident,group_name,showit)
{ 		
	if(e.id.search("name_") != -1)
	{ 
	  removeGroup(group_ident);	
	
	  $('dd_groups_display').removeChild(e);
	  //----
	  var current_groups = new Array();
	  if($('groups_list').value != "")
	  {
	  	current_groups = $('groups_list').value.split("/");
	  	current_groups.pop(); // an extra element(empty) will appear at the end of the array due to split; remove it
	  }

	  var final_groups = "";
	  for(i=0;i<current_groups.length;i++)
	  {
	  	if(group_ident != current_groups[i]) 
	    	final_groups += current_groups[i]+"/";
	  }
	  	
		$('groups_list').value = final_groups;  // add all the groups into the hidden input 
	}
	else
	{
		//--- replace " " with &nbsp; if " " appears will break js
		var gr_name = group_name;
  		while (gr_name.indexOf(" ") > -1) 
  		 		gr_name = gr_name.replace(" ", "&nbsp;");
		//--- replace "'" with "" if "'" appears will break js 
  		while (gr_name.indexOf("'") > -1) 
    		gr_name = gr_name.replace("'", "");
    	//---- 
		$('dd_groups_display').innerHTML += "<div class='email_gr_to' id='name_"+e.id+"'  title='Click to remove' onclick=\"emailGroupCloning(this," + group_ident + ",'" + group_name + "',1);\" ><span class='email_gr_removeleft'></span><span class='email_gr_content'>" +group_name+"</span><span class='email_gr_removeright'></span></div>";
		//addGroup(e.getAttribute("ident"),e.id);   old .. not working
		addGroup(group_ident,e.id);
		
		$('groups_list').value += group_ident+"/";
	}
	toggleClearRecipients();
}


function checkall(prefix,total)
{ 
	for(i=1;i<=total;i++)
	  if($(prefix+i)) $(prefix+i).checked = true;
	  

}

function uncheckall(prefix,total)
{ 
	for(i=1;i<=total;i++)
	  if($(prefix+i)) $(prefix+i).checked = false;
}

function emShowPersonsLetter(c,z,firstchar)
{
	if(z) zoom = 1;
	else zoom = 0;
	loadArea("messages.php?action=showmodepersonsletter&string="+c+"&zoom="+zoom+"&firstchar="+firstchar,$('divPersonsLetter'));
}

function groupsShowPersonsLetter(tag,c,z,firstchar)
{
	if(z) zoom = 1;
	else zoom = 0;
	loadArea("groups.php?action=showmodepersonsletter&tag="+tag+"&string="+c+"&zoom="+zoom+"&firstchar="+firstchar,$('divPersonsLetter'));
}

function alertNullSubject()
{
	if(($('email_subject').value == '') || ($('email_subject').value == ' ') || ($('email_subject').value == null))
	{
		mwShow('messages.php?action=subjectprompt');
	}
	else
	{
		document.location = 'messages.php?action=compose'+composeFormGet($('frm_compose'));disableSubmits(this);
	}
}

/*function alertNullSubject()
{
	if(($('email_subject').value == '') || ($('email_subject').value == ' ') || ($('email_subject').value == null))
	{
		var subject = prompt('Your e-mail has no subject. If you want to enter one, do it now...', ' ');
		if(subject==null){
			// user hits cancel button
			return true;
		} else {
			// user hits ok button
			if(subject!=' ') $('email_subject').value = subject;
			return false;
		}
	}
	return false;
}*/

function getSubjectValue()
{
	var subject = $('subject').value;
	$('email_subject').value = subject;
	document.location = 'messages.php?action=compose'+composeFormGet($('frm_compose'));disableSubmits(this);
	/*if(subject==null || subject==' '){
		// user hits cancel button
		//return true;
	} else {
		// user hits ok button
		if(subject!=' ') $('email_subject').value = subject;
		//return false;
		
	}*/
}

function alertNullTextarea(ta_id,message)
{
	if((ta_id.value == '') || (ta_id.value == ' ') || (ta_id.value == null))
		alert(message);
}


//---- groups
var toGroups = new Array();

function registerGroup(ident,id)
{
//	debugString("<br>registerPerson("+ident+","+id+");",1);
	if(getGroupId(ident))
	{
		$(id).style.display = 'none';
		toGroups[ident] = id;
	}
}

function addGroup(ident,id)
{
//	debugString("<br>addPerson("+ident+","+id+");",1);	
	toGroups[ident] = id;
	$(id).style.display = 'none';
}

function removeGroup(ident)
{
//	debugString("<br>removePerson("+ident+");",1);	
	if($(toGroups[ident])) $(toGroups[ident]).style.display = 'block';
	toGroups[ident] = 0;
}

function getGroupId(ident)
{
//	debugString("<br>getPersonId("+ident+");",1);	
	return toGroups[ident];
}




//---- persons
var toPersons = new Array();

function registerPerson(ident,id)
{
//	debugString("<br>registerPerson("+ident+","+id+");",1);
	if(getPersonId(ident))
	{
		$(id).style.display = 'none';
		toPersons[ident] = id;
	}
}

function addPerson(ident,id)
{
//	debugString("<br>addPerson("+ident+","+id+");",1);	
	toPersons[ident] = id;
	
	$(id).style.display = 'none';
	
	toggleClearRecipients();
}

function removePerson(ident)
{
//	debugString("<br>removePerson("+ident+");",1);	
	if($(toPersons[ident])) $(toPersons[ident]).style.display = 'inline';
	toPersons[ident] = 0;
	toggleClearRecipients();
}

function getPersonId(ident)
{
//	debugString("<br>getPersonId("+ident+")="+toPersons[ident]+";",1);	
	return toPersons[ident];
}



//---- pictures
var toPictures = new Array();

function registerPicture(ident,id)
{
//	debugString("<br>registerPerson("+ident+","+id+");",1);
	if(getPictureId(ident))
	{
		alert('ident = ' + getPictureId(ident));
		$(id).style.display = 'none';
		toPictures[ident] = id;
	} else {
		toPictures[ident] = id;
	}
}

function checkPicture(ident,id)
{
//	debugString("<br>registerPerson("+ident+","+id+");",1);
	if(getPictureId(ident))
	{
		$(id).style.display = 'none';
	}
}

function addPicture(ident,id)
{
//	debugString("<br>addPicture("+ident+","+id+");",1);	
	toPictures[ident] = id;
	$(id).style.display = 'none';
}

function removePicture(ident)
{
//	debugString("<br>removePicture("+ident+");",1);	
	if($(toPictures[ident])) $(toPictures[ident]).style.display = 'inline';
	toPictures[ident] = 0;
}

function getPictureId(ident)
{
	return toPictures[ident];
}



//----albums
var toAlbums = new Array();

function registerAlbum(ident,id)
{
	if(getAlbumId(ident))
	{
		$(id).style.display = 'none';
		toAlbums[ident] = id;
	} else
	{
		toAlbums[ident] = id;
	}
}

function addAlbum(ident,id,new_img_id)
{
	toAlbums[ident] = id;
	$(id).style.display = 'none';
	//---- "+" image become "-", change href to remove, change name href to remove, hide "show pics" link
	$("img_"+id).src = "images/remove.gif";
	$("imglink_"+id).href = "javascript:emailAlbumCloning($('"+new_img_id+"'),"+ident+")";
	$("anamelink_"+id).href = "javascript:emailAlbumCloning($('"+new_img_id+"'),"+ident+")";
	$("seepicslink_"+id).style.display = "none";
}

function removeAlbum(ident)
{ 
	if($("attachements_area").style.display == "none")
	{
	  showElement('attachements_area');
	  hideElement('btn_emailAddPictures');
	} 
	if(toAlbums[ident] && $(toAlbums[ident]).getAttribute('isclone')!='-1')
	{
		if($(toAlbums[ident])) $(toAlbums[ident]).style.display = 'inline';
		//---- "-" image become "+", change href to add, , change name href to add, display "show pics" link
	
		$("imglink_"+$(toAlbums[ident]).id).href = "javascript:emailAlbumCloning($('"+($(toAlbums[ident]).id)+"'),"+ident+")";
		$("img_"+$(toAlbums[ident]).id).src = "images/add2.gif";
		$("anamelink_"+$(toAlbums[ident]).id).href = "javascript:emailAlbumCloning($('"+($(toAlbums[ident]).id)+"'),"+ident+")";
		$("seepicslink_"+$(toAlbums[ident]).id).style.display = "block";
	}
	
	toAlbums[ident] = 0;
	
}

function getAlbumId(ident)
{
//	debugString("<br>getPersonId("+ident+");",1);	
	return toAlbums[ident];
}

// clear All recipients from To list
function clearAllRecipients()
{
	// brute force method
	$('dd_persons_display').innerHTML = '';
	$('persons_list').value = '';
	$('groups_list').value = '';
	$('text_persons_list').value = '';
	toGroups = new Array();
	toPersons = new Array();
	toggleClearRecipients();
}

function toggleClearRecipients(){
	if(trim($('text_persons_list').value)!="" || trim($('dd_persons_display').innerHTML)!="")
		$('clearRecipients').style.display='block';
	else 
		$('clearRecipients').style.display='none';
}

// buttons toggle in Emails > Compose > Add recipients > Type or paste email popup
function toggleButtonsAddEmails(){
	if(trim($('add_text_persons_list').value)!="")
	{
		$('addemails').disabled = false;
		$('addemails').className='submit';
		$('clearemails').style.display='';
	}
	else
	{ 
		$('addemails').disabled = true;
		$('addemails').className='submitdisabled';
		$('clearemails').style.display='none';
	}
}
//------------end NEW email functions


function a2_addHoverDinLength( sender_obj, target_obj ) {
	sender_obj = (typeof sender_obj == 'string') ? document.getElementById(sender_obj) : sender_obj;
	target_obj = (typeof target_obj == 'string') ? document.getElementById(target_obj) : target_obj;
	
	if (sender_obj.isA2HoverDinLength) return; //A2 special hover already added, skip sequence
	sender_obj.isA2HoverDinLength = true;
	
	target_lineHeight = getCSSProp(target_obj, 'lineHeight');
	target_lineHeight = target_lineHeight.toLowerCase();
	target_lineHeight = trim(target_lineHeight.replace("px", "")); //trim defined in common.js
	
	var cssClass_left_id_str = "_left";
	var cssClass_right_id_str = "_right";
	var input_left_obj = null;
	var input_right_obj = null;
	
	var allChildDivs = target_obj.getElementsByTagName( "div" );
	for (var i=0; i<allChildDivs.length; i++) {
		var childDiv = allChildDivs[i];
		if (childDiv.className.indexOf(cssClass_left_id_str) == childDiv.className.length - cssClass_left_id_str.length) input_left_obj = childDiv;
		else
		if (childDiv.className.indexOf(cssClass_right_id_str) == childDiv.className.length - cssClass_right_id_str.length) input_right_obj = childDiv;
	}
	
	sender_obj.input_left_part = input_left_obj;
	sender_obj.input_right_part = input_right_obj;
	
	sender_obj.onmouseover = function() {
		this.input_left_part.style.backgroundPosition = "left -" + target_lineHeight + "px";
		this.input_right_part.style.backgroundPosition = "right -" + target_lineHeight + "px";
	}
	
	sender_obj.onmouseout = function() {
		this.input_left_part.style.backgroundPosition = "left top";
		this.input_right_part.style.backgroundPosition = "right top";
	}
	
	sender_obj.onmouseover();
}

function getCSSProp(element, prop) {
	if (element.style[prop]) {
		// inline style property
		return element.style[prop];
	} else if (element.currentStyle) {
		// external stylesheet for Explorer
		return element.currentStyle[prop];
	} else if (document.defaultView && document.defaultView.getComputedStyle) {
		// external stylesheet for Mozilla and Safari 1.3+
		prop = prop.replace(/([A-Z])/g,"-$1");
		prop = prop.toLowerCase();
		return document.defaultView.getComputedStyle(element,"").getPropertyValue(prop);
	} else {
		// Safari 1.2
		return null;
	}
}


//{/literal};
//{literal}
var dynloaddebug = 0;
var wrapper = "main";
var dynloadcount = 0;


var divLoadingMessage = 0;
var divLoadingMessageDots = 0;
function dynHandlerLoadingMessage()
{
	if(!divLoadingMessage) divLoadingMessage= $('dynload_loadingmsg');
	if(!divLoadingMessageDots) divLoadingMessageDots =$('dynload_loadingmsgdot');
	
	if(dynloadcount>0) 
	{
		divLoadingMessage.style.display = '';
		strd = "";
		for(i=0;i<dynloadcount;i++) strd+=".";
		divLoadingMessageDots.innerHTML = strd;
	}
	else 
	{
		divLoadingMessage.style.display = 'none';
		if($('overlay_wait'))
		{
			$('overlay_wait').style.display = 'none';
			$('overlay_waittext').style.display = 'none';
		}
	}
}

function dynReloadArrays( e ) {
	if ( wrapper != "main" ) return
	restoreChildren()
	loadHintMenus()
	loadDraggables()
	elems = document.getElementsByTagName('*')
	posCacheCounter++
	if ( e )
		if ( $(e).onload_callback )
			try {
				eval( $(e).onload_callback )
			} catch (e) {}
	mwHideCombos()
}

function loadAreaOnLoadFF(e)
{ //alert("alma"+$(e).contentWindow.ab2onload); 
	if(!$(e)) return;
	if(!$(e).clean)
	{
		dynloadcount--;
		dynHandlerLoadingMessage();
	}
	if($(e).displayobj)
	{
		$(e).displayobj.contentID = $(e).contentWindow.contentID;
		$(e).displayobj.contentTAG = $(e).contentWindow.contentTAG;
		$(e).displayobj.contentTAG2 = $(e).contentWindow.contentTAG2;
		$(e).displayobj.innerHTML = $(e).contentDocument.body.innerHTML;
		$(e).displayobj.dynurl = $(e).contentWindow.uri;
		dynReloadArrays(e);
	}
	
	ifdiv = getParent($(e));
	if($(e).contentWindow.ab2onload) eval($(e).contentWindow.ab2onload);
//	if(!dynloaddebug)setTimeout('ifdiv = getParent($("'+e+'")); getParent(ifdiv).removeChild(ifdiv);',3000);
	if(!dynloaddebug)setTimeout('ifdiv = getParent($("'+e+'")); if(ifdiv) getParent(ifdiv).removeChild(ifdiv);',3000); // MihaiA
}

function loadAreaOnLoadIE(e)
{
	if(!$(e)) return;	
	if(!$(e).clean)
	{
		dynloadcount--;
		dynHandlerLoadingMessage();
	}
	if($(e).displayobj)
	{
		$(e).displayobj.contentID = document.frames(e).contentID;
		$(e).displayobj.contentTAG = document.frames(e).contentTAG;
		$(e).displayobj.contentTAG2 = document.frames(e).contentTAG2;
		$(e).displayobj.dynurl = document.frames(e).uri;
		$(e).displayobj.innerHTML = document.frames(e).document.body.innerHTML;
		dynReloadArrays(e);
	}
	if(document.frames(e).ab2onload) eval(document.frames(e).ab2onload);
	if(!dynloaddebug)setTimeout('ifdiv = getParent($("'+e+'"));getParent(ifdiv).removeChild(ifdiv);',3000);
}

var myif_counter = 0;

function loadAreaClean(url,displayobj,onload_callback)
{
	loadArea_A(url,displayobj,onload_callback,1);
}

function loadArea(url,displayobj,onload_callback)
{
	loadArea_A(url,displayobj,onload_callback,0);
}

function loadArea_A(url,displayobj,onload_callback,clean)
{
	hideHintMenu();
	
	if(!clean) 
	{
		dynHandlerLoadingMessage();
		dynloadcount++;
	}
	hintmenus_loaded = 0;
	
	ifid = "myif"+myif_counter;
	myif_counter++;
	var mydiv = document.createElement("DIV");
	if((brv=="IE")&&(!dynloaddebug))
		mydiv.style.display = 'none';
	ifdim = 0;
	if(dynloaddebug)
	{
		ifdimw = "60%";
		ifdimh = 300;
	}
	else	
	{
		ifdimw = 0;
		ifdimh = 0;
	}
	document.body.appendChild(mydiv);
	mydiv.innerHTML = "<IFRAME ID="+ifid+" NAME="+ifid+" width="+ifdimw+" height="+ifdimh+" frameborder=0></IFRAME>";
	var myif = $(ifid);
	myif.clean = clean;
	if(displayobj)
	{
		myif.displayobj = displayobj;
		myif.onload_callback = onload_callback;
		if(wrapper=="main")
			restoreChildren();
	}
	strpos = url.indexOf('?');
	if(strpos==-1) url+="?dynload_ifid="+myif.id;
	else url+="&dynload_ifid="+myif.id;
	if(url.length>1000)// use post for long urls, IE limitation
		postTo(url,myif.id);
	else
		myif.src = url;
}
//{/literal}
;
//{literal}
var inmovable = 0;
var cl_offx = 0;
var cl_offy = 0;

var mwolcb = 0; // on load callback
if(!mwoccb)
	var mwoccb = 0; // close
if(!mwomcb)
	var mwomcb = 0; // move
var disablecenter = 0;
var mw = 0;
var mwvisible = 0;


function mwHideHelp() {
	$("divHelpContent").style.display = "none";
}


function mwShowHelp(id,e) {
	$("divHelpContent").style.display = "block";

	$("divHelpContent").style.left = getPosLeft(e)+e.width-400;
	$("divHelpContent").style.top = getPosTop(e)+e.height;
	correctPositionX($("divHelpContent"));
	correctPositionY($("divHelpContent"));
	$("divHelpContent").innerHTML = "";
	loadArea("help.php?action=inpage&id="+id,$("divHelpContent"));
}


function mwShowBlock() {
	$('mwblockbehind').style.display='';
}


function mwHideBlock() {
	$('mwblockbehind').style.display='none';
}

function mwSetTitle(title) {
	$('mwtitle').innerHTML = title;
}


function mwInMW(e) {
	if(e==document) return 0;
	if(e.getAttribute('inmw')==1) return 1;
	if(getParent(e))
		e.setAttribute('inmw',mwInMW(getParent(e)));
	else	
		e.setAttribute('inmw',0);
	return e.getAttribute('inmw');
}


function mwIsMovable(e) {
	if(e==document) return 0;
	if(e.getAttribute('mwmovable')==1) return 1;
	if(getParent(e))
		e.setAttribute('mwmovable',mwIsMovable(getParent(e)));
	else	
		e.setAttribute('mwmovable',0);
	return e.getAttribute('mwmovable');
}


function mwShow(url,onload_callback,onmove_callback,onclose_callback,nocookie) {	
	$('mwdisplay').className = 'mwdisplaystyle'; // add loading class
	
	if(!mw) mw = $('movablewindow');
	if(disablerefresh) return;
	omwvisible = mwvisible;
	if(url)
		mwHide(1);
	mwvisible = 1;
	mw.style.display = '';
	mw.style.zIndex = 150;
/*	mwtop = (document.body.clientHeight-mw.clientHeight)/2;
	mwleft = (document.body.clientWidth-mw.clientWidth)/2;
	if(mwtop<100) mwtop = 100;
	mw.style.width = mw.clientWidth;
	mw.style.height = mw.clientHeight;
	setPixelLeft(mw,mwleft);
	setPixelTop(mw,mwtop);*/
	setPixelTop(mw,getScrollTop(document.body)+100);
	if((!omwvisible)&&(url))
	{
		restoreChildren();
		$('mwdisplay').innerHTML = '';
		dynReloadArrays(0);
	}
	if(url)
	{
		mwSetTitle("Working on it...");
		if(onload_callback)
			mwolcb = onload_callback;
		if(onclose_callback)
			mwoccb = onclose_callback;
		if(onmove_callback)
			mwomcb = onmove_callback;
		loadArea(url,$('mwdisplay'),"mwOnLoad()");
		if(!nocookie)
		{
			setCookie('popwindow',url);
		}
		else
		{
			setCookie('popwindow','');
		}

	}
	else mwOnLoad();
//	hideComboboxesRect(mwGetLeft(),mwGetTop(),mwGetLeft()+mwGetWidth(),mwGetTop()+mwGetHeight());	
}


function mwCenter() {
	correctPositionX($('movablewindow'));
	correctPositionY($('movablewindow'));
//	hideComboboxesRect(mwGetLeft(),mwGetTop(),mwGetLeft()+mwGetWidth(),mwGetTop()+mwGetHeight());	
}


function mwOnLoad() {

	if(!mwvisible) mwHideBlock();
	if(!disablecenter)
	{
		setPixelTop(mw,((document.body.clientHeight-mw.clientHeight)/2)+getScrollTop(document.body));
		setPixelLeft(mw,(document.body.clientWidth-mw.clientWidth)/2);

		//correctPositionX($('movablewindow'));
		//correctPositionY($('movablewindow'));
		if(mwGetTop()<50) setPixelTop(mw,50);
	}
	else disablecenter = 0;
	if(mwolcb) eval(mwolcb);
//	hideComboboxesRect(mwGetLeft(),mwGetTop(),mwGetLeft()+mwGetWidth(),mwGetTop()+mwGetHeight());	
	
	$('movablewindow').style.width = '';
	$('movablewindow').style.height = '';
	$('mwdisplay').className = ''; // remove loading class
}


function mwHide(e) {
	disablerefresh = 0;
	
	if(mwoccb) 
	{
		eval(mwoccb);
	}
	mwoccb = 0;
	onmove_callback = 0;
	onload_callback = 0;
	$('movablewindow').style.display = 'none';

	mwvisible = 0;
	if(!e)
		mwHideBlock();
	setCookie('popwindow','');		
	
}


function mwMove(event) {
	if(!inmovable) return;
	mw = $('movablewindow');
	
	setPixelTop(mw,event.y-cl_offy);
	setPixelLeft(mw,event.x-cl_offx);
}


function mwEndMove() {
	if(!inmovable) return;
	if(mwomcb) eval(mwomcb);
	inmovable = 0;
	cl_offx = 0;
	cl_offy = 0;
	$('movablewindow').className = 'movablewindow';
//	hideComboboxesRect(mwGetLeft(),mwGetTop(),mwGetLeft()+mwGetWidth(),mwGetTop()+mwGetHeight());
}


function mwStartMove(event) {
	inmovable = 1;
	cl_offy = event.y-getPixelTop($('movablewindow'));
	cl_offx = event.x-getPixelLeft($('movablewindow'));
	$('movablewindow').className = 'movablewindow_inmove';
}


function mwGetWidth() {
	return $('movablewindow').clientWidth;
}


function mwGetHeight() {
	return $('movablewindow').clientHeight;
}


function mwGetTop() {
	
	return getPixelTop($('movablewindow'));
}


function mwGetLeft() {
	return getPixelLeft($('movablewindow'));
}


function mwHideCombos() {
	if(!mwvisible) return;
//	hideComboboxesRect(mwGetLeft(),mwGetTop(),mwGetLeft()+mwGetWidth(),mwGetTop()+mwGetHeight());
}


function mwMoveTo(left,top) {
	disablecenter = 1;
	setPixelTop(mw,left);
	setPixelLeft(mw,top);
//	hideComboboxesRect(mwGetLeft(),mwGetTop(),mwGetLeft()+mwGetWidth(),mwGetTop()+mwGetHeight());
}

//{/literal}
;
//{literal}
var epw_nexte;
var epw_preve;

var uploadItemSelected = 0;

var albumTimelineCount = 0; // Timeline count the size of all albums and years
var container_width = 0; // Timeline albums container width
var timelineTabOpen = 0;
var timelineIsOpen = 0;
var albumChooser = 0; // 0 if the div is not moved

function showInfo(text)
{
	$('divInfoBoxContent').innerHTML = text;
	$('divInfoBox').style.display = 'block';
	setTimeout("hideInfo()",10000);
}

function hideInfo()
{
	$('divInfoBox').style.display = 'none';
}

function showFamilyMenu()
{
	if(getRightID()=="eventoverview")
	{
		$("liPersonsThatAppearInTheAlbum").style.display = 'inline';
	}
	else
	{
		$("liPersonsThatAppearInTheAlbum").style.display = 'none';
	}
	showElement('downdown_persons_list');
}

function timelineFilter(filter,filterparam)
{ 	
	var url = getRightURL();
	if(!url) url = requestURL;
	url = removeUrlParam(url,"timelinefilter");
	url = removeUrlParam(url,"timelinefilterparam");
	url = removeUrlParam(url,"dynload_ifid");
	url = url+"&timelinefilter="+filter+"&timelinefilterparam="+filterparam;
	if(getRightURL())
		loadArea(url,$('la_rightpanel'));
	else document.location = url;
}

function newsMerge(doit,obj1,obj2)
{
	if(doit==0)
	{
		$("divMerge"+obj1+"_"+obj2).className = "mergeno";
		$("tdMergeResult"+obj1+"_"+obj2).innerHTML = "Kept as separate profiles";
		$("btnMergeY"+obj1+"_"+obj2).style.display = 'none';
		$("btnMergeN"+obj1+"_"+obj2).style.display = 'none';
		loadArea('news.php?action=domerge&objects_ident[1]='+obj1+'&objects_ident[2]='+obj2+'&decline=1');
	}
	else
	{
		loadArea('news.php?action=domerge&objects_ident[1]='+obj1+'&objects_ident[2]='+obj2);
		$("divMerge"+obj1+"_"+obj2).className = "mergeyes";
		$("tdMergeResult"+obj1+"_"+obj2).innerHTML = "Merged into one profile";
		$("btnMergeY"+obj1+"_"+obj2).style.display = 'none';
		$("btnMergeN"+obj1+"_"+obj2).style.display = 'none';
	}
}

function toggleHelp(helpid,jsid)
{
	if(!$(jsid).loaded)
	{
		loadArea('help.php?action=inpage&id='+helpid+'&ab2jsid='+jsid,$(jsid));
		$(jsid).loaded = 1;
	}
	if($(jsid).style.display == 'none')
	{
		$(jsid).style.display ='';
	}
	else
	{
		$(jsid).style.display = 'none';
	}
}

function hideEventChooser()
{
	$("divWsEventChooser").style.display = "none";
	$("aPutInAlbum").className = "";
}

/*
function showEventChooser()
{
	$("divWsEventChooser").innerHTML = $("divWsEventChooserLoading").innerHTML;
	loadArea("events.php?action=eventchooser",$("divWsEventChooser"));
	$("divWsEventChooser").style.top = getPosTop($("aPutInAlbum")) - $("divWsEventChooser").clientHeight - 400;
	$("divWsEventChooser").style.left = getPosLeft($("aPutInAlbum"));
	$("divWsEventChooser").style.display = "";
	
	$("aPutInAlbum").className = "active";
	
}
*/

function showEventChooser()
{
	$("divWsEventChooser").innerHTML = $("divWsEventChooserLoading").innerHTML;
	loadArea("events.php?action=eventchooser",$("divWsEventChooser"));

	
	if(document.all) { // If IE		
		
		if(albumChooser==0){
			document.body.appendChild($('divWorkspaceBlock').removeChild($("divWsEventChooser")));		
			albumChooser=1; // moved
		}
		
		$("divWsEventChooser").style.position = "absolute";
		$("divWsEventChooser").style.marginLeft = 0;
		$("divWsEventChooser").style.marginTop = 0;
		$("divWsEventChooser").style.top = getPosTop($("aPutInAlbum")) - 405;
		$("divWsEventChooser").style.left = getPosLeft($("aPutInAlbum")) - 195;
	}

	$("divWsEventChooser").style.display = "";
	
	$("aPutInAlbum").className = "active";
	
}

function showSlideshow( url ) {
	$("container_frame").style.display = "none";
	$("ifrSlideshowViewer").style.display = "";
	$("ifrSlideshowViewer").style.zIndex = 10000;
	$("ifrSlideshowViewer").src = url;
	$("ifrSlideshowViewer").style.width = document.body.clientWidth;
	$("ifrSlideshowViewer").style.height = document.body.clientHeight;
}

function hideSlideshow()
{
	if($("container_frame"))
	{
		$("container_frame").style.display = "block"
		$("ifrSlideshowViewer").style.display = "none"
		$("ifrSlideshowViewer").src = "null.html"
		return 1
	}
	return 0
}

function topSearch()
{
  var str = $("inpTopTextSearch").value;
  mwShow('users.php?action=usersearch&fromfamily=1&name=' + str,0,0,0,1);
}

function selectUpload(date,annotated,userid,e)
{
	if($('tdUploadItemFirst'))
		$('tdUploadItemFirst').className = 'uploadstd';
	if(uploadItemSelected)
		uploadItemSelected.className = 'uploadstd';
	e.className = 'uploadstd_selected';
	uploadItemSelected = e;
	url = 'family.php?action=uploaddetails&uploads_date='+date+'&notanotated='+annotated+'&user_ident='+userid;
	if(currentPage == "layout_left_right")
		loadArea(url,$('la_rightpanel'));
	else
		document.location = "layout.php?action=leftright&righturl="+escape(url)+"&lefturl="+escape("family.php?action=emptyfamilyleft");
	
	
}

function checkUploadApplet(redir)
{
	if(getCookie('extupld')==1)
	{
		$('appletMoved').style.display = '';
		$('tblAppletLoading').style.display = 'none';
		return;
	}
	else $('appletMoved').style.display = 'none';
	var ok = 1;
	try
	{
		applet = $('uploadApplet');
		if(applet)
		{
			applet.getAppletInfo();
		}
		else ok =0;
	}
	catch (e)
	{
		ok = 0;
	}
	if(!ok)
	{
		if(redir)
		{
			document.location = 'upload.php?action=html';
		}
		else
		{
			$("tblAppletCantLoad").style.display = "";
			$('tblAppletLoading').style.position = 'absolute';
			$('tblAppletLoading').style.display = 'none';
		}
	}
	else
	{
		$('tblAppletLoading').style.position = 'absolute';
		$('tblAppletLoading').style.display = 'none';
		setPixelTop($('appletContainer'),0);
		$('appletContainer').style.display = '';
		$('appletContainer').style.position = '';
		
	}
}






function qmm_personsexpand(val)
{
	if(val==0)
	{
		$('fam_expand_options').style.display='none';
		$('fam_expand_main').style.display='';
	}
	if(val==1)
	{
		loadArea('family.php?action=familyleft&show=persons&zoom=1',$('la_leftpanel'));
	}
	if(val==2)
	{
		loadArea('family.php?action=familyleft&show=objects',$('la_leftpanel'));
	}	
	if(val==3)
	{
		$('fam_expand_options').style.display='';
		$('fam_expand_main').style.display='none';
	}
	if(val==4)
	{
		openWindow('help.php?action=main&help_ident=202','help');
	}	
	if(val==5)
	{
		loadArea('family.php?action=familyleft&show=familytree',$('la_leftpanel'));
	}	
	
}

function qmm_personsexpandZ1(val)
{
	if(val==0)
	{
		loadArea('family.php?action=familyleft&show=persons&zoom=0',$('la_leftpanel'));
	}
	if(val==1)
	{
		$('fam_expand_options').style.display='none';
		$('fam_expand_main').style.display='';
	}
	if(val==2)
	{
		loadArea('family.php?action=familyleft&show=objects',$('la_leftpanel'));
	}	
	if(val==3)
	{
		$('fam_expand_options').style.display='';
		$('fam_expand_main').style.display='none';
	}
	if(val==4)
	{
		openWindow('help.php?action=main&help_ident=202','help');
	}	
	if(val==5)
	{
		loadArea('family.php?action=familyleft&show=familytree',$('la_leftpanel'));
	}	
}

function qmm_familytree(val)
{
	if(val==0)
	{
		loadArea('family.php?action=familyleft&show=persons&zoom=0',$('la_leftpanel'));
	}
	if(val==1)
	{
		loadArea('family.php?action=familyleft&show=persons&zoom=1',$('la_leftpanel'));
	}
	if(val==2)
	{
		loadArea('family.php?action=familyleft&show=objects',$('la_leftpanel'));
	}	
	if(val==4)
	{
		openWindow('help.php?action=main&help_ident=202','help');
	}	
	if(val==5)
	{
		return;
	}		
}

function qmm_objectsexpand(val)
{
	if(val==0)
	{
		loadArea('family.php?action=familyleft&show=persons&zoom=0',$('la_leftpanel'));
	}
	if(val==1)
	{
		loadArea('family.php?action=familyleft&show=persons&zoom=1',$('la_leftpanel'));
	}
	if(val==2)
	{
		loadArea('family.php?action=familyleft&show=objects',$('la_leftpanel'));
	}	
	if(val==3)
	{
		$('fam_expand_options').style.display='';
		$('fam_expand_main').style.display='none';
	}
	if(val==4)
	{
		openWindow('help.php?action=main&help_ident=202','help');
	}	
	if(val==5)
	{
		loadArea('family.php?action=familyleft&show=familytree',$('la_leftpanel'));
	}		
}

function writeUploadApplet()
{
	/*appb = '<applet code=mainApplet archive="java/DragUpload.jar" width=250 height=35>';
	appb+= '<PARAM NAME="ServerUpload"	vALUE="http://82.208.130.50/album2/site/uploadpoint/upload.php">				';
	appb+= '<PARAM NAME="url"		vALUE="http://82.208.130.50/album2/site/">				;'
	appb+= '<PARAM NAME="uid"		vALUE="'+$('inpAppletUID').value+'">				';
	appb+= '<PARAM NAME="uidhash"		vALUE="'+$('inpAppletUIDH').value+'">                 ';
	appb+= '<PARAM NAME="picture_upload"	VALUE="appletPictureUploadDone">';
	appb+= '<PARAM NAME="batch_upload"	VALUE="appletBatchDone">';
	appb+= '<param name="url_params"	value="&events_ident='+$('inpAppletEVID').value+'">			';
	appb+= '</applet>';
	$('divAppletContainer').innerHTML=appb;*/
}

function deleteEvent(ident,with_photos)
{
	url = "events.php?action=delevent&ev_ident="+ident;
	if(with_photos) url += "&with_photos=1";
	
	if(getRightID()=="eventoverview")
	{
		evid = getRightTAG();
		if((!evid)||(evid==ident)) evid = -1;
		if(evid!=-1) url+= "&nexturl="+escape(getRightURL());
		else url+= "&nexturl="+escape('events.php?action=eventdetails&focusid='+getRightTAG2()+'&events_ident='+evid);
		loadArea(url,$('la_rightpanel'));
		return;
	}
	
	if($('divTimelinePageMarker'))
	{
		url+= "&nexturl="+escape(getRightURL());
		loadArea(url,$('la_rightpanel'));
		return;		
	}

	loadArea(url,0);
}

function removePhotoFromAlbum(photo_ident,album_ident)
{
	url = "photos.php?action=removefromevent&photo_ident="+photo_ident+"&event_ident="+album_ident;
	url+= "&nexturl="+escape(getRightURL());
	//escape('events.php?action=eventdetails&focusid='+getRightTAG2()+'&events_ident='+album_ident);
	loadArea(url,$('la_rightpanel'));
}


function addObjectsToEvents_composeURL(objectslist,eventslist)
{
	url = "events.php?action=addobjects";
	if(eventslist.length>1) 
	{
		url+="&person="+objectslist[0];
		for(i=0;i<eventslist.length;i++)
			url+="&event["+i+"]="+eventslist[i];
	}
	else
	{
		url+="&drg_type=ep";
		url+="&event="+eventslist[0];
		for(i=0;i<objectslist.length;i++)
			url+="&person["+i+"]="+objectslist[i];
	}
	return url;
}

function removeNextUrl(url)
{
	eurl = url.split("&");
	rv = eurl[0];
	for(i=1;i<eurl.length;i++)
	{
		eurl_piece = eurl[i].split("=");
		if(eurl_piece[0]!="nexturl")
		{
			rv+="&"+eurl[i];
		}
	}
	return rv;
}
			

function addObjectsToEvents(objectslist,eventslist)
{
	if(!objectslist[objectslist.length-1]) objectslist.pop();
	if(!eventslist[eventslist.length-1]) eventslist.pop();
	url = addObjectsToEvents_composeURL(objectslist,eventslist);
	url+="&nexturl="+escape(getCurrentUrl());
	documentGoTo(url);
/*	if(getRightID()=="eventoverview")
	{
		evid = -1;
		if(getRightTAG()) evid = getRightTAG();
		url = url+"&nexturl="+escape(removeNextUrl($('la_rightpanel').dynurl));
		loadArea(url,$('la_rightpanel'));
	}
	else loadArea(url,0);*/
}

function addPhotosToEvents(photoslist,eventslist) 
{
	addPhotosToEventsA(photoslist,eventslist,0);
}

function movePhotosToEvents(photoslist,eventslist) 
{
	addPhotosToEventsA(photoslist,eventslist,1);
}


/*--- 
Select the type of refresh that needs to be done in dd_event_photo.tpl    
the 2 arrays have an unnecessary last element with value "0" - needs to be ignored
---*/
function addPhotosToEventsA(photoslist,eventslist,move) 
{   
   if(!photoslist[photoslist.length-1]) photoslist.pop();
   if(!eventslist[eventslist.length-1]) eventslist.pop();
	
   var message = "";
   if(move)
     message = "Photos moved to album";
   else
     message = "Photos copied to album";
   
	
   //---- building the photos events url
   var urlgo = "";
   if(eventslist.length == 1) // 1 event 1 or more pictures
   {
   		urlgo = "events.php?action=addphotos&move="+move+"&drg_type=ep&event="+eventslist[0];
       	for(i=0;i<photoslist.length;i++)
       	  urlgo += "&photo["+i+"]="+photoslist[i];
   }
   else // more events 1 picture
   {
	 urlgo = "events.php?action=addphotos&move="+move+"&drg_type=pe&photo="+photoslist[0];
     for(i=0;i<eventslist.length;i++)
     	urlgo += "&event["+i+"]="+eventslist[i];
   }
   if(currentPage == "layout_left_right")
   {
	   var found = 0;
	   var currenturl = escape(removeNextUrl($('la_rightpanel').dynurl)+"&showmessage="+message);
	   var righttag = getRightTAG(); 
	   //----
	   if(getRightID() == "eventoverview") 
	   { 
		 for(i=0;i<eventslist.length;i++)
		   if(eventslist[i] == righttag) 
		   {
			  found = 1;
			  break;
		   }    
	  	  //if(found == 0) // event not selected, executing in the background
		  //  loadArea(urlgo,0);
		  //else  // event selected, reloading the rightpanel for update
			
			loadArea(urlgo+"&nexturl="+currenturl,$('la_rightpanel'));
			
		
	   }
	   else if(getRightID() == "uploaddetails") 
	   { 
		 if(righttag == 1) // refresh it
			 loadArea(urlgo+"&nexturl="+currenturl,$('la_rightpanel'));
		 else     
			loadArea(urlgo+"&showmessage="+message,0);
	   }
	   else // don't reload anything, just run the script
	   { 
		 loadArea(urlgo+"&showmessage="+message,0);
	   }
   }
   else loadArea(urlgo+"&showmessage="+message,0);
}

function eventDetailsOnLoad(tlpos)
{
	tlEventsOnLoad(tlpos);	
}

function tlEventsOnLoad(tlpos)
{
	var ct_width = 230
	if ( ! $('content_left') )
		ct_width = 350
	else if ( $('content_left').style.display != 'none' )
		ct_width = 540
	
	$('timelinecontainer').style.width = document.body.clientWidth - ct_width
	
	if ( $('tlevents_selected') && (!tlpos) ) {
		boxScrollOnce($('tlevents_selected').offsetLeft-200,'timelinecontainer','album_prev','album_next')
	} else
		if ( tlpos ) boxScrollOnce( tlpos, 'timelinecontainer', 'album_prev', 'album_next' )
	
	boxCheckPosition( 'timelinecontainer', 'album_prev', 'album_next' )
}

function boxScrollOnce( speed, mainEl, pBut, nBut ) {
	boxScrollA( speed, mainEl, pBut, nBut, 0 )
	boxCheckPosition( mainEl, pBut, nBut )
}

function boxScrollAuto(dir,mainEl,pBut,nBut)
{
	var speed = 1;
	var tscroll = 1;
	var twidth = $(mainEl).clientWidth - 100;

	while(tscroll<twidth-100)
	{
		speed++;
		tscroll+=speed;
	}
	boxScroll(speed*dir,mainEl,pBut,nBut);
}

function boxScroll(speed,mainEl,pBut,nBut)
{
	boxScrollA(speed,mainEl,pBut,nBut,1);
}

function boxCheckPosition(mainEl,pBut,nBut)
{
	var mel = $(mainEl);
	
	if((mel.scrollLeft <= 1)&&($(pBut).scrollBoxButtonDisabled != true))
	{	
		$(pBut).scrollBoxButtonDisabled = true;
		$(pBut).scrollBoxButtonMainClass = $(pBut).className;
		$(pBut).className += "_disabled";
	}
	if((mel.scrollLeft > 1)&&($(pBut).scrollBoxButtonDisabled == true))
	{
		$(pBut).scrollBoxButtonDisabled = false;
		$(pBut).className = $(pBut).scrollBoxButtonMainClass;	
	}

	var endRight = 0;
	var opos = mel.scrollLeft;
	mel.scrollLeft++;
	if(opos == mel.scrollLeft)
		endRight = 1;
	mel.scrollLeft--;
	
	if((endRight)&&($(nBut).scrollBoxButtonDisabled != true))
	{	
		$(nBut).scrollBoxButtonDisabled = true;
		$(nBut).scrollBoxButtonMainClass = $(nBut).className;
		$(nBut).className += "_disabled";
	}
	if((!endRight)&&($(nBut).scrollBoxButtonDisabled == true))
	{
		$(nBut).scrollBoxButtonDisabled = false;
		$(nBut).className = $(nBut).scrollBoxButtonMainClass;		
	}
	
	loadAreaClean('?action=setpref&name=tlpos&value='+$(mainEl).scrollLeft,0);
}

function boxScrollA(speed,mainEl,pBut,nBut,anim)
{
	var oPos = $(mainEl).scrollLeft;
	$(mainEl).scrollLeft += speed;
	if(speed<0)
	{
		speed++;
	}
	if(speed>0)
	{
		speed--;
	}
	if($(mainEl).scrollLeft == oPos) 
	{
	}
	else
		if((speed!=0)&&(anim==1)) window.setTimeout("boxScrollA("+speed+",'"+mainEl+"','"+pBut+"','"+nBut+"',1)",10);
	if((speed == 0) || ($(mainEl).scrollLeft == oPos) )
		boxCheckPosition(mainEl,pBut,nBut);
}



function activateTabA(id)
{
	if(!$("dd_welcome_tab")) return;
	var tabids = new Array();
	tabids[tabids.length] = "dd_family_tab";
	//tabids[tabids.length] = "dd_events_tab";
	tabids[tabids.length] = "dd_people_tab";
	tabids[tabids.length] = "dd_upload_tab";
	tabids[tabids.length] = "dd_welcome_tab";
	tabids[tabids.length] = "dd_ft_tab";
	tabids[tabids.length] = "dd_mail_tab";
	tabids[tabids.length] = "dd_cart_tab";
	tabids[tabids.length] = "dd_myaccount";
	
	
	var tabpanel = new Array();
	tabpanel["dd_family_tab"]	= -1;
	//tabpanel["dd_events_tab"] 	= 1;
	tabpanel["dd_people_tab"] = 0;
	tabpanel["dd_upload_tab"] 	= 0;
	tabpanel["dd_welcome_tab"] 	= 0;
	tabpanel["dd_ft_tab"] 	= 0;
	tabpanel["dd_mail_tab"] 	= 0;
	tabpanel["dd_cart_tab"] 	= 0;		
	tabpanel["dd_eventsleft_tab"] = -1;		
	//tabpanel["dd_search_tab"] = 1;	
	

	for(var i=0;i<tabids.length;i++)
	{
		if(id == tabids[i])
		{
			$(tabids[i]).className = 'active';
		}
		else/* if(tabpanel[id] == tabpanel[tabids[i]])*/
		{
			$(tabids[i]).className = '';	
		}
	}	
}

function famUploads()
{
	/*if(currentPage == "layout_left_right")
	{
		loadArea('family.php?action=uploadsleft&notanotated=1',$('la_leftpanel'));
//		loadArea('family.php?action=uploaddetails',$('la_rightpanel'));
	}
	else
	{
		document.location = "layout.php?action=leftright&left=uploads";
	}*/

	//$("divUnorganizedDates").style.top = getPosTop($("aUnorgPhotos")) - $("divUnorganizedDates").clientHeight + 15;
	//$("divUnorganizedDates").style.left = getPosLeft($("aUnorgPhotos"))- $("divUnorganizedDates").clientWidth - 190;
	$("divUnorganizedDates").style.display = "block";
	
	loadArea('family.php?action=uploadsleft&notanotated=1',$("divUnorganizedDates"));					
	
}

function famSearch()
{/*
	if(currentPage == "layout_left_right")
	{
		loadArea('family.php?action=searchleft',$('la_leftpanel'));
		loadArea('family.php?action=searchempty',$('la_rightpanel'));
	}
	else
	{
		document.location = "layout.php?action=leftright&left=search";
	}
	
	*/
  if(currentPage == "layout_left_right")
  { 
		loadArea('family.php?action=searchempty',$('la_rightpanel'));
		loadArea('family.php?action=familyleft',$('la_leftpanel'));
	}
	else
	{
		var srurl = 'family.php?action=searchempty';
		document.location = "layout.php?action=leftright&left=search&righturl="+escape(srurl);
	}
	
	
}

function famFamily()
{

	if(currentPage == "layout_left_right")
	{
		loadArea('family.php?action=familyleft',$('la_leftpanel'));
	}
	else
	{
		document.location = "layout.php?action=leftright&left=family";
	}
}

function famGroups()
{
	if(currentPage == "layout_left_right")
	{
		loadArea("groups.php",$('la_rightpanel'));
	}
	else
	{
		document.location = "layout.php?action=leftright&right=groups";
	}	
}

function famMail(newmsg,compose_params,loadfromsession)
{
		if(newmsg==1)
		{
		  if(loadfromsession==1)
			  document.location = "messages.php?action=compose&from_where=nopanels&loadfromsession=1&newmsg=1"+compose_params;
			else
				document.location = "messages.php?action=compose&from_where=nopanels&newmsg=1"+compose_params;
		}	
		else
			document.location = "messages.php?action=inbox";
}

function readMail(emident)
{
	if(emident)
	  document.location = 'messages.php?action=read&email_ident='+emident; 
	else
	  document.location = 'messages.php?action=inbox';
	  /* 
	if(currentPage == "layout_left_right")
	{
		loadArea('messages.php?action=inbox',$('la_leftpanel'));
		loadArea('messages.php?action=read&email_ident='+emident,$('la_rightpanel'));
	}
	else
	{ 
		document.location = "layout.php?action=leftright&left=mail&right=reademail&email_ident="+emident;
	}*/
}

function famEvents(showTimeline)
{
	famShowEvent(-1,-1,showTimeline);
}



function famShowEvent(events_ident,focusid,showTimeline)
{ 
	var lefturl = "family.php?action=eventpersons";
	var righturl = "events.php?action=eventdetails";
	if(events_ident) 
	{
		lefturl+="&events_ident="+events_ident;
		righturl+="&events_ident="+events_ident;
	}
	if(focusid) 
	{
		lefturl+='&focusid='+focusid;
		righturl+='&focusid='+focusid;
	}
	if(showTimeline) righturl+="&showtimeline="+showTimeline;
	
	// added &hideleft=1
	var url = "layout.php?action=leftright&hideleft=1&lefturl="+escape(lefturl)+"&righturl="+escape(righturl);
	document.location = url;
}



function famShowObject(objects_ident)
{
	if(currentPage == "layout_left_right")
	{
		loadArea('family.php?action=familyleft&objects_ident='+objects_ident,$('la_leftpanel'));
	}
	else
	{
		document.location = "layout.php?action=leftright&left=family&objects_ident="+objects_ident;
	}
	
}

function famShowPersonFull(objects_ident)
{
/*	if(currentPage == "layout_left_right")
	{
		loadArea('family.php?action=familyleft&objects_ident='+objects_ident,$('la_leftpanel'));
		loadArea('events.php?action=personphotos&focusid='+objects_ident,$('la_rightpanel'));
	}
	else
	{*/
		document.location = "layout.php?action=leftright&lefturl="+escape('family.php?action=familyleft&objects_ident='+objects_ident)+"&righturl="+escape('events.php?action=personphotos&focusid='+objects_ident);
		
	//}
}

function famShowPerson(objects_ident)
{
	if(currentPage == "layout_left_right")
	{
		loadArea('family.php?action=familyleft&objects_ident='+objects_ident,$('la_leftpanel'));
	}
	else
	{ 
		document.location = "layout.php?action=leftright&left=family&objects_ident="+objects_ident;
	}
}

function searchRelationLists()
{
	sel = $('objectsex').value;
	$('relA').style.display = 'none';
	$('rel0').style.display = 'none';
	$('relM').style.display = 'none';
	$('relF').style.display = 'none';
	$('rel'+sel).style.display = '';

}

function setHeight(area,a_width) {

	scroll_area = $(area).style.width.replace('px','');
	scroll_inside = $(a_width).offsetWidth;
	
	if(scroll_inside > scroll_area){
		$(area).style.height = parseInt($(area).style.height.replace('px',''))+ 20; //add scrollbar hight
	}		
}

function setWidth(area,area_parent) {

	//scroll_area = $(area).style.width.replace('px','');
	scroll_area = $(area).offsetWidth;
	scroll_inside = $(area_parent).offsetWidth;
	
	alert(scroll_area);
	alert(scroll_inside);
	
	$(area).style.width = scroll_inside; //add scrollbar width
	alert($(area).style.width);
	
	//if(scroll_inside > scroll_area){
	//	$(area).style.width = parseInt($(area).style.width.replace('px','')); //add scrollbar width
		
	//}
	
	
}


function toggleTimeline(type,sel)
{						
	
	if($('timelinecontainer').style.height != '310px'){
		
		timelineTabOpen = sel;
		
		container_width = $('timelineContainerOutline').offsetWidth;
		$('timelineConainerBack').style.display = 'none';
		$('timelineConainerPrev').style.display = 'none';	
		$('timelineContainerInside2').style.width ='auto';
		
		if(timelineTabOpen==1){
			$('albumList').className = 'albumListOpen';
			$('albumAll').className = 'albumAll';
			$('timelineContainerInside1').style.display ='block';	
			$('timelineContainerInside2').style.display ='none';
			$('timelinecontainer').style.height ='310px';	
			$('timelinecontainer').style.overflow ='auto';
			$('timelinecontainer').style.width = $('timelineContainerOutline').offsetWidth - 8 + "px";	
			
			
			timelineTabOpen = 1;
			timelineIsOpen = 1;
		}else{
			$('albumList').className = 'albumList';
			$('albumAll').className = 'albumAllOpen';
			$('timelineContainerInside1').style.display ='none';
			$('timelineContainerInside2').style.display ='block';
			$('timelinecontainer').style.height ='310px';	
			$('timelinecontainer').style.overflow ='auto';
			$('timelinecontainer').style.width = $('timelineContainerOutline').offsetWidth - 8 + "px";		
			
			var el = getElementsByClass('timelinedivider',$('timelineContainerInside2'),'*');
			for (var item in el) {  el[item].style.display = 'block'; }
			
			timelineTabOpen = 2;
			timelineIsOpen = 1;
		};

	
	}else{
		
		if(timelineTabOpen!=sel){
			if(timelineTabOpen==1){
				if(timelineIsOpen==0){
					$('albumList').className = 'albumList';
					$('albumAll').className = 'albumAll';
					$('timelineContainerInside1').style.display ='none';
					$('timelineContainerInside2').style.display ='block';
					$('timelinecontainer').style.height ='105px';
					$('timelineContainerInside2').style.width = albumTimelineCount;
					$('timelinecontainer').style.width = container_width + 'px';
					$('timelinecontainer').style.overflow ='hidden';
					$('timelineConainerBack').style.display = '';
					$('timelineConainerPrev').style.display = '';
					
					var el = getElementsByClass('timelinedivider',$('timelineContainerInside2'),'*');
					for (var item in el) {  el[item].style.display = 'none'; }
					
					timelineTabOpen = 1;
					timelineIsOpen = 0;
				}else{				
					$('albumList').className = 'albumList';
					$('albumAll').className = 'albumAllOpen';
					$('timelineContainerInside1').style.display ='none';	
					$('timelineContainerInside2').style.display ='block';	
					$('timelinecontainer').style.height ='310px';	
					$('timelinecontainer').style.overflow ='auto';
					$('timelinecontainer').style.width = $('timelineContainerOutline').offsetWidth - 8 + "px";	
					
					var el = getElementsByClass('timelinedivider',$('timelineContainerInside2'),'*');
					for (var item in el) {  el[item].style.display = 'block'; }
					
					timelinestatus = 1;
					timelineTabOpen = 2;
					timelineIsOpen = 1;
				}
			}else{
				if(timelineIsOpen==1){					
					$('albumList').className = 'albumListOpen';
					$('albumAll').className = 'albumAll';
					$('timelineContainerInside1').style.display ='block';
					$('timelineContainerInside2').style.display ='none';
					$('timelinecontainer').style.height ='310px';	
					$('timelinecontainer').style.overflow ='auto';
					$('timelinecontainer').style.width = $('timelineContainerOutline').offsetWidth - 8 + "px";
					timelineTabOpen = 1;
					timelineIsOpen = 1;
				}else{					
					$('albumList').className = 'albumList';
					$('albumAll').className = 'albumAll';
					$('timelineContainerInside1').style.display ='none';
					$('timelineContainerInside2').style.display ='block';
					$('timelinecontainer').style.height ='105px';
					$('timelineContainerInside2').style.width = albumTimelineCount;
					$('timelinecontainer').style.width = container_width + 'px';
					$('timelinecontainer').style.overflow ='hidden';
					$('timelineConainerBack').style.display = '';
					$('timelineConainerPrev').style.display = '';
					
					var el = getElementsByClass('timelinedivider',$('timelineContainerInside2'),'*');
					for (var item in el) {  el[item].style.display = 'none'; }
					
					timelineTabOpen = 0;
					timelineIsOpen = 0;
				}
			}
		}else{
			if(timelineTabOpen==1){

				if(timelineIsOpen==0){
					$('albumList').className = 'albumListOpen';
					$('albumAll').className = 'albumAll';
					$('timelineContainerInside1').style.display ='block';	
					$('timelineContainerInside2').style.display ='none';
					$('timelinecontainer').style.height ='310px';	
					$('timelinecontainer').style.overflow ='auto';
					$('timelinecontainer').style.width = $('timelineContainerOutline').offsetWidth - 8 + "px";	
					timelineTabOpen = 1;
					timelineIsOpen=1;
				}else{				
					$('albumList').className = 'albumList';
					$('albumAll').className = 'albumAll';
					$('timelineContainerInside1').style.display ='none';
					$('timelineContainerInside2').style.display ='block';
					$('timelinecontainer').style.height ='105px';
					$('timelineContainerInside2').style.width = albumTimelineCount;
					$('timelinecontainer').style.width = container_width + 'px';
					$('timelinecontainer').style.overflow ='hidden';
					$('timelineConainerBack').style.display = '';
					$('timelineConainerPrev').style.display = '';
					
					var el = getElementsByClass('timelinedivider',$('timelineContainerInside2'),'*');
					for (var item in el) {  el[item].style.display = 'none'; }
					
					timelineTabOpen = 0;
					timelineIsOpen=0;
				}
			}else{
				if(timelineIsOpen==0){
					$('albumList').className = 'albumList';
					$('albumAll').className = 'albumAllOpen';
					$('timelineContainerInside1').style.display ='none';
					$('timelineContainerInside2').style.display ='block';
					$('timelinecontainer').style.height ='310px';	
					$('timelinecontainer').style.overflow ='auto';
					$('timelinecontainer').style.width = $('timelineContainerOutline').offsetWidth - 8 + "px";
					
					var el = getElementsByClass('timelinedivider',$('timelineContainerInside2'),'*');
					for (var item in el) {  el[item].style.display = 'block'; }
					
					timelineTabOpen = 2;
					timelineIsOpen=1;					
				}else{
					$('albumList').className = 'albumList';
					$('albumAll').className = 'albumAll';
					$('timelinecontainer').style.height ='105px';
					$('timelineContainerInside1').style.display ='none';
					$('timelineContainerInside2').style.display ='block';
					$('timelineContainerInside2').style.width = albumTimelineCount;
					$('timelinecontainer').style.width = container_width + 'px';
					$('timelinecontainer').style.overflow ='hidden';	
					$('timelineConainerBack').style.display = '';
					$('timelineConainerPrev').style.display = '';
					
					var el = getElementsByClass('timelinedivider',$('timelineContainerInside2'),'*');
					for (var item in el) {  el[item].style.display = 'none'; }
					
					timelineTabOpen = 0;
					timelineIsOpen=0;
				}
				
			}	
		}	
		
	}
	
}
//////////////////////////////////
// FAMILY Tree related functions
//////////////////////////////////

function ftReload(AB2SMP_id){
	mwHide();
	//window.location.reload( false );	
	js_noticeFlashAboutCmdDone('success');
}



//{/literal}
;
//{literal}
function setColaboration(object_ident)
{
	var sl_ident = $('select_colaboration').value;
	
	var url = "users.php?action=addcolaboration&from_popup=1&persons_idents[0]="+object_ident+"&sl_ident="+sl_ident;
	mwShow(url);

};

function completeEmail(user_email)
{
  $('relative_email').value = user_email;
}

//{/literal};
//{literal}

function sendSlideshow()
{
	if(!checkSendSlideshow()) return 0;
	if(checkSendSlideshow())
	{
		var url = "slideshows.php?action=dosendshow"+composeFormGet($('frmSendSlideShow'));
		loadArea(url,$("tdSendSlideshowResults"));
		$("tdSendSlideshowResults").innerHTML = "sending...";
		$("name0").value = "";		$("email0").value = "";
		$("name1").value = "";		$("email1").value = "";
		$("name2").value = "";		$("email2").value = "";
		$("name3").value = "";		$("email3").value = "";
		$("name4").value = "";		$("email4").value = "";

	};
}

function checkSendSlideshow()
{
	if($('ownemail'))
	if(!checkEmail($('ownemail').value))
    {
		alert("Please enter your e-mail");
		return false;
	}
	if($('ownname'))	
	if($('ownname').value=='')
    {
		alert("Please fill in your name");
		return false;
	}
	validemails = 0;
	for(i=0;i<5;i++)
		if(checkEmail($('email'+i).value))
			validemails++;
	if(validemails==0)
    {
		alert("Please fill at least one e-mail address");
		return false;
	}
	return true;
}

function createObject()
{
	var url = "objects.php?action=doadd&type="+
            "&obj_name="+$('obj_name').value+
	          "&obj_description="+$('obj_description').value+
	          "&obj_type="+$('obj_type').value+
	          "&obj_type_defined="+$('obj_type_defined').value+
	          "&obj_sex="+$('obj_sex').value+
	          "&obj_relm="+$('rel_m').value+
	          "&obj_relf="+$('rel_f').value+
	          "&focus="+$('focus').value+
	          "&events_ident="+$('events_ident').value+
	          "&taid="+$('taid').value+
	          '&onfinish='+$('onfinish').value+
	          "&photo_ident="+$('photo_ident').value;
	mwShow(url);          
}

function editObject()
{
  var url = "objects.php?action=doedit"+
            "&obj_ident="+$('obj_ident').value+
  					"&obj_name="+$('obj_name').value+
	          "&obj_description="+$('obj_description').value+
	          "&obj_type="+$('obj_type').value+
	          "&obj_type_defined="+$('obj_type_defined').value+
	          "&obj_sex="+$('obj_sex').value+
	          "&photo_ident="+$('photo_ident').value;
	mwShow(url);
}

function createPerson(step)
{ 	
	//console.info("createPerson");
	if(step==0)
	{
		// check for new person age
		age = 0;
		
		if(document.getElementById('bndp_day_1').value && document.getElementById('bndp_month_1').value && document.getElementById('bndp_year_1').value){
			objBirthDate = new Date();
			objBirthDate.setMonth(document.getElementById('bndp_month_1').value);
			objBirthDate.setDate(document.getElementById('bndp_day_1').value);
			objBirthDate.setYear(document.getElementById('bndp_year_1').value);
			age = getAge(objBirthDate);
			
		} else {
			age = 13; //force showing no email=no sharing
		}
		
		if($('obj_email').value=="" && age>12 && $('approveobjmayexits').value=='1')
		{
			$('frmPerson0').style.display='none';	
			$('frmPerson1').style.display='block';
			
			if($('obj_firstname').value!="")
			{
				$('pers_name').innerHTML = $('obj_firstname').value;
			}
			else
			{
				$('pers_name').innerHTML = 'the person';
			}
			
			if($('obj_sex').value=="M")
			{
				$('pers_gender').innerHTML = 'him';
			}
			else
			{
				$('pers_gender').innerHTML = 'her';
			}
					
		}
		else
		{
			var url = "objects.php?action=doadd"+composeFormGet($('frmPerson')) ;
			mwShow(url);
		}		
		
		if($('obj_firstname').value=="") 	$('rowFirstName').style.display='table-row';					
		if($('obj_lastname').value=="") 	$('rowLastName').style.display='table-row';
		
	}
	else
	{
		$('obj_email').value = $('obj_emailfake').value;
		
		if($('obj_firstname').value=="")  	$('obj_firstname').value = $('obj_firstnamefake').value;
		if($('obj_lastname').value=="") 	$('obj_lastname').value = $('obj_lastnamefake').value;			
		 
		var url = "objects.php?action=doadd"+composeFormGet($('frmPerson')) ;
		mwShow(url);          
	}
}

function obj_email_exists(){
	document.getElementById('frmPerson0').style.display="none";
	document.getElementById('frmPerson1').style.display="none";
	document.getElementById('frmPerson3').style.display="none";
	document.getElementById('frmPerson2').style.display="block";
	
}

function cancel_obj_email_exists(){
	document.getElementById('frmPerson0').style.display="block";
	document.getElementById('frmPerson1').style.display="none";
	document.getElementById('frmPerson2').style.display="none";
	document.getElementById('frmPerson3').style.display="none";
}

function approve_obj_email_exists(){
//	document.getElementById('frmPerson0').style.display="block";
//	document.getElementById('frmPerson1').style.display="none";
//	document.getElementById('frmPerson2').style.display="none";
	document.getElementById('approverelation').value = "1";
	document.getElementById('approveobjmayexits').value = "1";
	if($('persontable').style.display != 'none') toggleExtraPersonFields();
	createPerson(0); disableSubmits(this);
}

function cancel_obj_may_exists(){
	document.getElementById('frmPerson0').style.display="block";
	document.getElementById('frmPerson1').style.display="none";
	document.getElementById('frmPerson2').style.display="none";
	document.getElementById('frmPerson3').style.display="none";
}

function approve_obj_may_exists(){
	document.getElementById('approveobjmayexits').value = "1";
	document.getElementById('approverelation').value = "1";
	if($('persontable').style.display != 'none') toggleExtraPersonFields();
	$('frmPerson3').style.display='none';
	createPerson(0); disableSubmits(this);
}

function set_relation_obj_may_exists(focus,obj){
	var set_rel_link = 'objects.php?action=changerelation&target_object='+obj+'&focus='+focus;
	// check for ft request
	if ($('from_ft')) {
		set_rel_link += '&from_ft=' + $('from_ft').value;
		if($('rel_type')) set_rel_link += '&rel_type=' + $('rel_type').value;
		if($('onfinish')) set_rel_link += '&onfinish=' + $('onfinish').value;
	}
//	alert(set_rel_link);
		
	mwShow(set_rel_link);hidePopMenu();
}


/*
function createPerson()
{ 
	var url = "objects.php?action=doadd"+composeFormGet($('frmPerson')) ;    
	mwShow(url);          
}
*/

function editPerson()
{
	var url = "objects.php?action=doedit"+composeFormGet($('frmEditPerson')) ;    
	mwShow(url);          
}

function changeRelation()
{
  var url = "objects.php?action=changerelation"+
            "&dochangerelation=1"+
            "&focus="+$('focus').value+
            "&target_object="+$('target_object').value+
	        "&allrel="+$('allrel').value;
	if($('suggestedrel'))
            url+="&suggestedrel="+$('suggestedrel').value;
  
  mwShow(url);          
}

function createAnEvent()
{
  var url = "events.php?action=doaddpop&pop=1"+composeFormGet($('frm_edit')) ;
  mwShow(url);          
}

function editAnEvent()
{
	var url = "events.php?action=doedit"+composeFormGet($('frm_edit')) ;     
	mwShow(url);          
}


function createBlog()
{

   var url = "slideshows.php?action=addblog&rec_ident="+$('rec_ident').value+"&dateinphoto="+$('dateinphoto').value;
   if($('custom').checked)
   {
   	 if(document.getElementsByName('bday')[0].value==0 || document.getElementsByName('bmonth')[0].value==0 || document.getElementsByName('byear')[0].value==0)
   	 {  
   	   url = "";
   	   alert("Please complete the date");
   	 }
   	 else
   	 {
     		url += "&week=custom";      
		 		url += "&bday="+document.getElementsByName('bday')[0].value+"&bmonth="+document.getElementsByName('bmonth')[0].value+"&byear="+document.getElementsByName('byear')[0].value;        
   	 }		
   }     
   else if($('previous').checked)
     url += "&week=previous";
   else if($('photo_date').checked)
     url += "&week=photo_date";
   else
     url += "&week=current"; 
	           
  
  if(url)
  	loadArea(url,$('blog_tools'));

}

function createFeedback()
{ 
	var url = "index.php?action=dosendfeedback"+composeFormGet($('frmFeedback')) ;    
	mwShow(url);          
}

function subscriptionWarning(upgradegb)
{
	if (upgradegb > 20)
	{
		if (!confirm('Are you sure you want to order more than 20 GB of storage space?')) 
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	else
	{
		if (upgradegb == 0)
		{
			alert('Invalid value for storage space!');
			return false;
		}
		if (isNaN(upgradegb))
		{
			alert('Invalid value for storage space!');
			return false;
		}
	}
	
	return true;
}

function cancelWarning(cancelgb)
{
	if (cancelgb > 0)
	{
		var str="Are you sure you want to cancel %s GB from your paid storage space?";
		str = str.replace("%s",cancelgb);
		if (!confirm(str))
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	else
	{
		if (cancelgb == 0)
		{
			alert('Invalid value!');
			return false;
		}
		if (isNaN(cancelgb))
		{
			alert('Invalid value!');
			return false;
		}
	}
	
	return true;
}

function sendSimpleMsg()
{
	var url = "messages.php?action=dosendsimple"+composeFormGet($('msg_form')) ;     
	mwShow(url);          
}

	// messages/aftersend update newUser info from new user div
	function updateNewUserAfterMsgSend(user_div){
		div = $(user_div);
		var okbutton = null; var ident = null; var fname = null; var lname = null; var sex = null; var relation = null;
		
		//inputs = div.getElementsByTagName('input');
		ident = user_div.match(/newPersonDiv_([0-9]+)/i)[1];
		
		sex = $("gender_"+ident);
		okbutton = $("okButton1_"+ident);
		fname = $("fname_"+ident);
		lname = $("lname_"+ident);
		if($("relationsM_"+ident).value != "") relation = $("relationsM_"+ident);
		else relation = $("relationsF_"+ident);
		 
		if(ident){
			update_url = "messages.php?action=updatecontact&ident="+ident;
			if(sex.value) update_url += "&gender="+sex.value;
			if(fname.value) update_url += "&firstname="+fname.value;
			if(lname.value) update_url += "&lastname="+lname.value;
			if(relation.value) update_url += "&rel_ident="+relation.value;
//			alert(update_url);
			loadArea(update_url,0);
			
//			okbutton.style.display = 'none';	
//			labels = div.getElementsByTagName('label');
//			for(i=0;i<labels.length;i++){
//				if(labels[i].id.match(/ok_msg(.*)/i)) labels[i].style.display='block';
//			}
		}
	}

	// messages/aftersend update old user relation from user div
	function updateExistingUserAfterMsgSend(user_div){
		div = $(user_div);
		var ident=null; var okbutton = null; var relation = null;
		
		ident = user_div.match(/oldPersonDiv_([0-9]+)/i)[1];
		
		if($("relationsM_"+ident).value != "") relation = $("relationsM_"+ident);
		else relation = $("relationsF_"+ident);
		okbutton = $("okButton2_"+ident);
		
		if(ident){
			update_url = "messages.php?action=relchange&userident="+ident;
			if(relation) update_url += "&rel_ident="+relation.value;
//			alert(update_url);
			loadArea(update_url,0);
			
//			okbutton.style.display = 'none';
//			labels = div.getElementsByTagName('label');
//			for(i=0;i<labels.length;i++){
//				if(labels[i].id.match(/ok_msg(.*)/i)) labels[i].style.display='block';
//			}
		}
	}

	
// MihaiA
// update the label containing the text for access	
function inlinePhAccessLabelUpdate(ph_id){
	// on initial page we must have an elelmnt id = 'phAccessLabel'
	parent_label = $('phAccessLabel_'+ph_id);
	
	if(!parent_label) return;
	
	// parse for new access and get new access string
	new_access_label = "";
	accessFrm = $('frmAccess');
	labels = accessFrm.getElementsByTagName('label');
	for(i=0;i<labels.length;i++){
		// get checkbox in label
		checkbox = labels[i].getElementsByTagName('input')[0];
		access_name = labels[i].getElementsByTagName('span')[0].innerHTML;
		if(checkbox.checked && access_name) {
			access_name = trim(access_name);
			access_name = access_name.charAt(0).toUpperCase()+access_name.substring(1); // capitalize the string
			new_access_label += access_name+", ";
		}
	}
	
	if(parent_label && new_access_label){
		parent_label.innerHTML = new_access_label.substring(0,new_access_label.length-2);
	}
		
}

function getdata()
{
	var data = $('data').value;
	var url = "shop.php?action=doftree&data=" + data; 
	mwShow(url);
}
	
//{/literal}
;
//{literal}

function getParentByName(e,name)
{
//	debugString("<br>"+e.getAttribute('name'),1);
	if(e.getAttribute("name")==name) 
	{
		return e;
	}
	e = getParent(e);
	if(e==null) 
	{
		return null;
	}
	return getParentByName(e,name);
}

function getFirstElementByName(parent,name,tag)
{
	if(!tag) tag = "*";
//	var children = parent.getElementsByTagName("*");
	var children = parent.getElementsByTagName(tag); // Mihai's change, old is commented
	for(var i=0;i<children.length;i++) 
	{
		if(children[i].getAttribute("name")==name) return children[i];
	}
	return null;
}

function isChildOf(e,p)
{
	if(!e) return 0;
	if(!p) return 0;
	if(e==p) return 1;
	e = getParent(e);
	if(!p) return 0;
	return isChildOf(e,p);
}

function boolToInt(value)
{
	if(value) return 1;
	else return 0;
}

function savePref(name,value)
{
	loadArea('?action=setpref&name='+name+'&value='+value,0);
	
}

function removeInLabel(e)
{
	if(!e.inlabel==1) return;
	else 
	{
		e.value = "";
		e.inlabel = 0;
	}
}

function showHelpFlash(src)
{
	return;
	$('tdFlashHelpContent').src = src;
	$('tblFlashHelpBlock').style.display = '';
	$('tblFlashHelpContainer').style.display = '';
	 
}

function hideHelpFlash()
{
	$('tdFlashHelpContent').src = 'about:blank';
	$('tblFlashHelpBlock').style.display = 'none';
	$('tblFlashHelpContainer').style.display = 'none';
}



function togglePersonsFilter()
{
	e = $('fam_expand_options');
	if(e.style.display!='none')
	{
		$('imgperfiltcollapse').style.display = 'none';
		$('imgperfiltexpand').style.display = '';
		$('title_filter').style.color = '#FFF';
		e.style.display = 'none';
	}
	else
	{
		$('imgperfiltcollapse').style.display = '';
		$('imgperfiltexpand').style.display = 'none';
		$('title_filter').style.color = '#000';
		e.style.display = '';
		e.scrollIntoView();
	}	
}


function toggleAlbumPersons()
{
	e = $('album_persons');
	if(e.style.display!='none')
	{
		$('imgalbumperscollapse').style.display = 'none';
		$('imgalbumpersexpand').style.display = '';
		$('header_person').className = 'box_header_close';
		e.style.display = 'none';
	}
	else
	{
		$('imgalbumperscollapse').style.display = '';
		$('imgalbumpersexpand').style.display = 'none';
		$('header_person').className = 'box_header';
		e.style.display = '';
		e.scrollIntoView();
	}
	
}

function toggleAlbumPictures()
{
	e = $('album_pictures');
	if(e.style.display!='none')
	{
		$('imgalbumpiccollapse').style.display = 'none';
		$('imgalbumpicexpand').style.display = '';
		$('header_albumpictures').className = 'box_header_close';
		e.style.display = 'none';
	}
	else
	{
		$('imgalbumpiccollapse').style.display = '';
		$('imgalbumpicexpand').style.display = 'none';
		$('header_albumpictures').className = 'box_header';
		e.style.display = '';
		e.scrollIntoView();
	}
	
}



function toggleAdvSearch()
{
	e = $('adv_search_tb');
	if(e.style.display!='none')
	{
		$('imgadvscollapse').style.display = 'none';
		$('imgadvsexpand').style.display = '';
		$('header_advsearch').className = 'box_header_close';
		e.style.display = 'none';
	}
	else
	{
		$('imgadvscollapse').style.display = '';
		$('imgadvsexpand').style.display = 'none';
		$('header_advsearch').className = 'box_header';
		e.style.display = '';
		e.scrollIntoView();
	}
	
}

/* No use 04.09.2007 - Cristain 
function toggleTimeline(prefname)
{
	e = $('timelinetr');
	if(e.style.display!='none')
	{
		$('imgtimelinecollapse').style.display = 'none';
		$('imgtimelineexpand').style.display = '';
		$('header_timeline').className = 'box_header_close';
		$('timelinelks').style.display = 'none';
		e.style.display = 'none';
		loadArea('?action=setpref&name='+prefname+'&value=1',0);
	}
	else
	{
		$('imgtimelinecollapse').style.display = '';
		$('imgtimelineexpand').style.display = 'none';
		$('header_timeline').className = 'box_header';
		$('timelinelks').style.display = '';
		e.style.display = '';
		loadArea('?action=setpref&name='+prefname+'&value=0',0);
	}
	
}
*/


function toggleExtraPersonFields()
{
	e = $('persontable');
	if(e.style.display!='none')
	{
		e.style.display = 'none';
		$('hideextrafields').value = 1;
	}	
	else
	{
		e.style.display = '';
  	$('hideextrafields').value = 0;
	}	
}


function toggle(box,header)
{
	e = $(box);
	
	if(e.style.display!='none')
	{
		$('imgcollapse_'+box).style.display = 'none';
		$('imgexpand_'+box).style.display = '';
		$(header).className = 'box_header_close';
		e.style.display = 'none';
		//$('hideextrafields').value = 1;
	}	
	else
	{
		$('imgcollapse_'+box).style.display = '';
		$('imgexpand_'+box).style.display = 'none';
		$(header).className = 'box_header';
		e.style.display = '';
  		//$('hideextrafields').value = 0;
	}	
}

function toggleBox(box)
{
	e = $(box);
	if(e.style.display!='none')
	{
		e.style.display = 'none';
	}	
	else
	{
		e.style.display = '';
	}	
}


function changeTab(el,tab)
{
	container = document.getElementById(el);
	tabs = container.getElementsByTagName("a"); 	
		for (var i = 0; i < tabs.length; i++) { 
			if(tabs[i].className=='active'){
				if((i+1)!=tab){
					//tabs[i].removeAttribute("class");
					tabs[i].className = '';
					toggleBox(el+'_content_'+(i+1));
					toggleBox(el+'_faq_'+(i+1));
				}
			}else if(i+1==tab){
				//tabs[i].setAttribute("class","active");
				tabs[i].className = 'active';
				toggleBox(el+'_content_'+(i+1));
				toggleBox(el+'_faq_'+(i+1));
			}
		}
}


function onEnterDateInput(e)
{
	e.oldval = e.value;
	e.value = '';
}

function onEnterDateInputYear(e)
{
	e.oldval = e.value;
}

function onChangeDayInput(e,bnpc)
{
	e.value++;
	e.value--;
	if((e.value=="0")||(e.value=="1")||(e.value=="2")||(e.value=="3")) return;
	
	if(isNaN(e.value)) e.value = 0;
	if(e.value<0) e.value="01";
	else if(e.value>31) e.value="31";
	else if(e.value<10) e.value="0"+e.value;
	if(e.value.length) $("bndp_month_"+bnpc).focus();
}

function onBlurDayInput(e)
{
	if(e.value=='') e.value=e.oldval;
	e.value++;
	e.value--;
	if(isNaN(e.value)) e.value = '01';
	if(e.value<=0) e.value="01";
	else if(e.value>31) e.value="31";
	else if(e.value<10) e.value="0"+e.value;
}

function onChangeMonthInput(e,bnpc)
{
	e.value++;
	e.value--;
	if((e.value=="0")||(e.value=="1")) return;
	
	if(isNaN(e.value)) e.value = 0;
	if(e.value<0) e.value="01";
	else if(e.value>12) e.value="12";
	else if(e.value<10) e.value="0"+e.value;
	if(e.value.length) $("bndp_year_"+bnpc).focus();
}

function onBlurMonthInput(e)
{
	if(e.value=='') e.value=e.oldval;
	e.value++;
	e.value--;
	if(isNaN(e.value)) e.value = '01';
	if(e.value<=0) e.value="01";
	else if(e.value>12) e.value="12";
	else if(e.value<10) e.value="0"+e.value;
}

function onChangeYearInput(e,bnpc)
{
	if(e.value=='') return;
	e.value++;
	e.value--;
	if(e.value<=0) e.value=e.oldval;
	else if(e.value>2100) e.value=e.oldval;
	if(isNaN(e.value)) e.value = e.oldval;
}

function onBlurYearInput(e)
{
	if(e.value=='') return; //e.value=e.oldval;
	e.value++;
	e.value--;
	if(e.value<=0) e.value=e.oldval;
	else if(e.value>2100) e.value=e.oldval;
	if(isNaN(e.value)) e.value = e.oldval;

}


function showEmailPersIcon()
{
	
	if($('mailfrompersicon').style.display == "none")
		 $('mailfrompersicon').style.display = "block";
	else
		$('mailfrompersicon').style.display = "none";
		
	if($('mailtopersicon').style.display == "none")
		 $('mailtopersicon').style.display = "block";
	else
		$('mailtopersicon').style.display = "none";
		
	if($('emailviewpersicon').style.display == "none")
		 $('emailviewpersicon').style.display = "block";
	else
		$('emailviewpersicon').style.display = "none";
		
	if($('emailhidepersicon').style.display == "none")
		 $('emailhidepersicon').style.display = "block";
	else
		$('emailhidepersicon').style.display = "none";
	

}

function setFavIcon(p) // Change the photo fav icon state
{
	if($(p).className == "fav_off" )
	{
		$(p).className = "fav_on";	
	}else{
		$(p).className = "fav_off";
	}
}

function getAge(birthDate){
	crt_date = new Date();
	
	birth_month = birthDate.getDate(); birth_year = birthDate.getYear();
	crt_month = crt_date.getDate(); crt_year = crt_date.getYear();
	
	month_diff = crt_month - birth_month;
	year_diff = crt_year - birth_year;
	
	if(month_diff < 0) year_diff --;
	
	return year_diff;
}

//
function getJava()
{
	var result = { 
	    javaEnabled: false,
	    version: ''
  	};
  	if (typeof navigator != 'undefined' && typeof navigator.javaEnabled != 'undefined') 
    	result.javaEnabled = navigator.javaEnabled();
  	else
    	result.javaEnabled = 'unknown';
  	if (navigator.javaEnabled() && typeof java != 'undefined')
    	result.version = java.lang.System.getProperty("java.version");
	return result;
}

function checkVistaIEJavaProblem()
{

  	result = getJava();
  	// if no vista_ie_message we don't need to go further.
  	var vista_ie_tab_visible = true;
  	if(result.javaEnabled && $('vista_ie_tab') && result.version!='') {
  		//check java version
		if(result.version >= "1.6.0_10")
			vista_ie_tab_visible = "false";
  	}
  	if($('vista_ie_tab')) {
	  	if(vista_ie_tab_visible) $('vista_ie_tab').style.display = "block"; 
		else $('vista_ie_tab').style.display = "none";
	}
}

//{/literal};
var eventHandlers = new Array();
//--------------------------------------------------------------------------------------------------------------------------------------------	
function registerHandler(eventName,functionName)
{
	if(!eventHandlers[eventName]) eventHandlers[eventName] = new Array();
	eventHandlers[eventName][eventHandlers[eventName].length] = functionName;
}
//--------------------------------------------------------------------------------------------------------------------------------------------	
function raiseEvent(eventName,eventData)
{
	if(eventHandlers[eventName])
		for(i=0;i<eventHandlers[eventName].length;i++)
			eval(eventHandlers[eventName]+"(eventData);");
};
CApplication = function()
{
	this.includedScripts = new Array();
	this.pages = new Array();
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.addScript = function(src)
	{
		var head = document.getElementsByTagName('head').item(0);
		if(this.includedScripts[src]) 
		{
			//head.removeChild(this.includedScripts[src]);
			return;
		}
		var script = document.createElement("script");
		script.type = "text/javascript";
		script.src = src;
		head.appendChild(script);		
		this.includedScripts[src] = script;
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.addPage = function(name)
	{
		this.pages[name] = null;
		this.pages[name] = eval("new "+name+"();");
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.getPage = function(name)
	{
		return this.pages[name];
	}
}
//--------------------------------------------------------------------------------------------------------------------------------------------
var Application = new CApplication();
//--------------------------------------------------------------------------------------------------------------------------------------------
function page(name)
{
	return Application.getPage(name);
};
CPage = function()
{

};
/* menu v.2009.01 */
var shownMenus = new Array();
var shownMenusCount = 0;
var menuElements = new Array();
var assocElements = new Array();

function showMenu(id,btn) {
	//debugString(getPosTop(btn)+" "+getPosLeft(btn));
	if (shownMenus[id]==1) return;
	$(id).style.display = "block";
	shownMenus[id] = 1;
	shownMenusCount++;
	
	menuElements[id] = $(id);
	//menuElements[id].style.top = getPosTop(btn) + btn.clientHeight; //rmb_a
	//menuElements[id].style.left = getPosLeft(btn); //rmb_a
	
	assocElements[id] = btn;
}

function hideMenu(id) {
	if(shownMenus[id]==0) return;
	$(id).style.display = "none";
	shownMenus[id] = 0;
	shownMenusCount--;	
	menuElements[id] = 0;
	assocElements[id] = 0;	
}

function menusOnMouseMove(event) {
	var hideMargin = 10;
	
	for(var i in shownMenus)
	{
		if(shownMenus[i]==1)
		{
			var el = menuElements[i];
			var as = assocElements[i];
			/*//adb_a
			var a2event = new A2_Event( event, el )
			var event_x_rel_2_el = a2event.relativeX
			var event_y_rel_2_el = a2event.relativeY

			var a2event = new A2_Event( event, as )
			var event_x_rel_2_as = a2event.relativeX
			var event_y_rel_2_as = a2event.relativeY
			*/
			//console.info( "x1: " + event_x_rel_2_as + ", y1: " + event_y_rel_2_as )
			//console.info( "x2: " + event_x_rel_2_el + ", y2: " + event_y_rel_2_el )
			/*
			if(
			   ((event_x_rel_2_el < -hideMargin)
			   ||(event_y_rel_2_el < -hideMargin)
			   ||(event_x_rel_2_el > el.clientWidth*1 + hideMargin)
			   ||(event_y_rel_2_el > el.clientHeight*1 + hideMargin))
			   &&
   			   ((event_x_rel_2_as < -hideMargin)
			   ||(event_y_rel_2_as < -hideMargin)
			   ||(event_x_rel_2_as > as.clientWidth*1 + hideMargin)
			   ||(event_y_rel_2_as > as.clientHeight*1 + hideMargin))
			   )
			*/
			if(
			   ((event.x<getPixelLeft(el)*1-hideMargin*1)
			   ||(event.y<getPixelTop(el)*1-hideMargin*1-document.body.scrollTop*1)
			   ||(event.x>getPixelLeft(el)*1+el.clientWidth*1+hideMargin)
			   ||(event.y>getPixelTop(el)*1+el.clientHeight*1+hideMargin-document.body.scrollTop*1))
			   &&
   			   ((event.x<getPosLeft(as)*1-hideMargin*1)
			   ||(event.y<getPosTop(as)*1-hideMargin*1-document.body.scrollTop*1)
			   ||(event.x>getPosLeft(as)*1+as.clientWidth*1+hideMargin)
			   ||(event.y>getPosTop(as)*1+as.clientHeight*1+hideMargin-document.body.scrollTop*1))
			   )
			
/*			debugString("<br>a"+event.x+","+event.y,1);
			debugString("<br>c"+(getPixelLeft(el)+el.clientWidth)+","+(getPixelTop(el)+el.clientHeight),1);
			debugString("<br>b"+getPixelLeft(el)+","+getPixelTop(el),1);
/*			debugString("<br>d"+getPosLeft(as)+","+getPosTop(as),1);
			debugString("<br>e"+(getPosLeft(as)+as.clientWidth)+","+(getPosTop(as)+as.clientHeight),1);*/
			hideMenu(i);
		}
	}
}


function openMenu(e, s) {
	$(e).style.display = "block";
}

function closeMenu(e, s) {
	$(e).style.display = "none";
}
;
function goToPage(url)
{
	document.location = url; 
}

function searchFriends(name)
{
	if($(name).value!='Name or e-mail address'){
		mwShow('users.php?action=usersearch&fromfamily=1&name=' + $(name).value,0,0,0,1);
	}
}

function setRelation(box,url){
	
	hideElement(box);	
	loadArea(url,0);
	
	if($('noRelations').innerHTML==1){
		$('noRelations').innerHTML = $('noRelations').innerHTML - 1;
		hideElement('newsRelations1');
		showElement('newsRelations2');
	}else{
		$('noRelations').innerHTML = $('noRelations').innerHTML - 1;
	}
	
}

;
CGroups = function()
{
	this.groupObjects = new Array();
	this.cantSeeGroupId = 0;
	this.editingGroupId = 0;
	this.shownGroupId = 0;
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.hideEdit = function()
	{
		if(!this.editingGroupId) return;
		$("divGroupEdit"+this.editingGroupId).style.display = "none";
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.saveEdit = function()
	{
		//$("spanGroupTitle"+this.editingGroupId).innerHTML = $("inpEditGroup").value;
		$("divGroupTitle"+this.editingGroupId).innerHTML = $("inpEditGroup").value;
		loadArea("groups.php?action=editgroup&name="+$("inpEditGroup").value+"&ident="+this.editingGroupId,0);
		this.hideEdit();
	}	
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.editGroup = function(groupid)
	{
		this.hideEdit();
		
	//	alert(groupid);
		
		this.editingGroupId = groupid;
		var gem = $("divGroupEditMain");
		var pd = getParent(gem);
		pd.removeChild(gem);
		$("divGroupEdit"+groupid).appendChild(gem);
		$("divGroupEdit"+groupid).style.display = "block";
		
		//$("inpEditGroup").value = $("spanGroupTitle"+groupid).innerHTML;
		$("inpEditGroup").value = $("divGroupTitle"+groupid).innerHTML;
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.removeObjectFromGroup = function(objectid,groupid,elementid,noserverupdate)
	{
		var url = "groups.php?action=removefromgroup&ident="+groupid;
		if(this.groupObjects[groupid])
		{
			url+="&persons_ident="+objectid;
			this.groupObjects[groupid][objectid] = 0;
			//$(elementid).style.display = "none";
			var ptd = getParent($(elementid));
			ptd.style.display = "none";
		}
		if(!noserverupdate)
			loadArea(url,0);
		
		// show person in user search frame if needed
		if($('usersearchresult_'+objectid)){
			$('usersearchresult_'+objectid).style.display='block';
		}
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.createObjectToGroup = function(elementid,groupid)
	{
		if(this.addObjectToGroup($(elementid).getAttribute("ident"),groupid))
		{
			var url = "groups.php?action=addtogroup&ident="+groupid+"&persons_ident[]="+$(elementid).getAttribute("ident");
			loadArea(url,0);
			
			/*var e = cloneAB2Obj($(elementid),$("tdGroup"+groupid),"imgGroupPerson_"+groupid+"_"+$(elementid).getAttribute("ident"));
		 	e.setAttribute("popmenuparams", "&groupid="+groupid);
			e.style.display = "";*/
			this.cloneToGroup($(elementid),$("trGroup"+groupid),"imgGroupPerson_"+groupid+"_"+$(elementid).getAttribute("ident"));
			
			// 
			if($(elementid).getAttribute("ident")){
				$(elementid).style.display='none';
			}
		}
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.addObjectToGroup = function(objectid,groupid)
	{
		if(groupid == this.cantSeeGroupId)
		{// remove from all other groups
			for(var i in this.groupObjects)
			{
				if(this.groupObjects[i][objectid])
				{
					this.removeObjectFromGroup(objectid,i,"imgGroupPerson_"+i+"_"+objectid,1);
				}
			}
		}
		else
		{// remove from can't see if there
			if(this.groupObjects[this.cantSeeGroupId]) 
				if(this.groupObjects[this.cantSeeGroupId][objectid])
					this.removeObjectFromGroup(objectid,this.cantSeeGroupId,"imgGroupPerson_"+this.cantSeeGroupId+"_"+objectid,1);
		}
		if(!this.groupObjects[groupid]) this.groupObjects[groupid] = new Array();
		if(this.groupObjects[groupid][objectid])
			return 0;
		else {
			this.groupObjects[groupid][objectid] = 1;
//			toPersons[objectid] = "imgGroupPerson_"+this.cantSeeGroupId+"_"+objectid;
		}
		return 1;
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.showNew = function()
	{
		$("divNewGroup").style.display = "block";
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.hideNew = function()
	{
		$("divNewGroup").style.display = "none";
		$("inpNewGroup").value = "";
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.saveNew = function()
	{
		var newSpan = document.createElement("span");
		$("tdGroupsContainer").appendChild(newSpan);
		
		loadArea("groups.php?action=newgroup&name="+$("inpNewGroup").value,newSpan);
		this.hideNew();
	}	
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.deleteGroup = function(ident)
	{
		$("groupContent").style.display = "block";		
		$("divContentGroup"+ident).parentNode.removeChild( $("divContentGroup"+ident) );
		
		var el = $("tblGroup"+ident);
		var ddiv = getParent(el);
		var dspan = getParent(ddiv);
		getParent(dspan).removeChild(dspan);
		loadArea("groups.php?action=deletegroup&ident="+ident,0);
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.cloneToGroup = function (obj,container,id)
	{
//	  var e = cloneAB2Obj(dragselected[i],obj,"imgGroupPerson_"+obj.getAttribute("ident")+"_"+dragselected[i].getAttribute('ident'));
	  var ptd = document.createElement("div");
	  ptd.className = "frame";
//	  ptd.style.padding = "2px";  	  
//	  ptd.style.margin = "3px";  
	  container.appendChild(ptd);
	  
	  var e = cloneAB2Obj(obj,ptd,id);
	  e.setAttribute("popmenuparams", "&groupid="+container.getAttribute("ident"));
	  e.style.display = "";		
//	  e.height = 50;
//	  e.style.height = 50;
	  e.onmouseup = null;
	  e.onclick = function() {page("CGroups").removeObjectFromGroup(e.getAttribute("ident"),container.getAttribute("ident"),id)};
  	  changeHintText($(e.getAttribute('hintmenu')),"Click to remove from the group");
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.hideGroup = function(id)
	{
		$("divContentGroup"+id).style.display = "none";
		$("spanGroupTitle"+id).className = "groupTitle";		
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.showGroup = function(id)
	{
		/*
		$("groupContent").innerHTML = "";
		$("divContentGroup"+id).style.display = "block";
		$("divContentGroup"+id).style.top = getPosTop($("groupContent"))-70;
		$("divContentGroup"+id).style.left = getPosLeft($("groupContent"))-14;
		$("divContentGroup"+id).style.width = $("groupContent").clientWidth+11;
		$("divContentGroup"+id).style.height = $("groupContent").clientHeight;
		$("spanGroupTitle"+id).className = "groupTitle_selected";
		if((this.shownGroupId!=0)&&(this.shownGroupId!=id)&&($("divContentGroup"+this.shownGroupId)))
			this.hideGroup(this.shownGroupId);
		this.shownGroupId = id;	
		*/
		
		grElem = $("divContentGroup"+id).parentNode.removeChild( $("divContentGroup"+id) );
		
		$("groupContent").style.display = "none";		
		$("groupContent").parentNode.appendChild(grElem);		
		$("divContentGroup"+id).style.display = "block";
		
		$("spanGroupTitle"+id).className = "groupTitle_selected";
		if((this.shownGroupId!=0)&&(this.shownGroupId!=id)&&($("divContentGroup"+this.shownGroupId)))
			this.hideGroup(this.shownGroupId);
		this.shownGroupId = id;	
			
		
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.createNewPersonToGroup = function(group_id)
	{
		var url = "objects.php?action=newperson";
		url+= "&type=1&noobject=1";
		url+= "&onfinish=page(\"CGroups\").addObjectToCrtGroup";
		mwShow(url);
	}

//--------------------------------------------------------------------------------------------------------------------------------------------	
	this.getCrtViewableGroupId = function()
	{
		var right_panel_divs = $('la_rightpanel').getElementsByTagName('div');
		for(i=0;i<=right_panel_divs.length;i++){
			if (right_panel_divs[i].id.match(/divContentGroup[0-9]+/i) && right_panel_divs[i].style.display!="none") {
				var group_id = right_panel_divs[i].id.match(/divContentGroup([0-9]+)/i)[1]
				return group_id; 
			}
		}
		
		return null;
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.addObjectToCrtGroup = function(objectid)
	{
		var group_id = this.getCrtViewableGroupId();
		if(group_id!=null)
			this.createObjectToGroup(objectid,group_id);
		mwHide();
	}
	
//--------------------------------------------------------------------------------------------------------------------------------------------
}
//--------------------------------------------------------------------------------------------------------------------------------------------
CGroups.prototype = new CPage();
//--------------------------------------------------------------------------------------------------------------------------------------------
function dragHandlerGroup(check, obj)
{
	var i;
	if(check)
	{
		// only persons
		var can = 1;
		for(i=0;i<dragselected.length;i++)
			if(dragselected[i].getAttribute('ab2type')!='person') 
			{
				can=0;
				break;
			}
		return can;
	}	
	else
	{
		if(!dragHandlerGroup(1,obj)) 
		{
			hideDragged();
			return;
		}
		var url = "groups.php?action=addtogroup&ident="+obj.getAttribute("ident")+"&";
		for(i=0;i<dragselected.length;i++)
		{
			if(page("CGroups").addObjectToGroup(dragselected[i].getAttribute('ident'),obj.getAttribute("ident")))
			{
			  url+="persons_ident["+i+"]="+dragselected[i].getAttribute('ident')+"&";
			  page("CGroups").cloneToGroup(dragselected[i],obj,"imgGroupPerson_"+obj.getAttribute("ident")+"_"+dragselected[i].getAttribute('ident'));

			}
		}
		loadArea(url,0);
		hideDragged();			
	}
};
// we need to use this from a non OO context as well
function textingSetCoordinate(x1,y1,x2,y2,phid,zoom)
{
	var url = "photos.php?action=cutrectangle&photos_ident="+phid+
				  "&x1="+x1+
				  "&x2="+x2+
				  "&y1="+y1+
				  "&y2="+y2+
				  "&zoom="+zoom+
				  "&seticon=1";
			loadArea(url,0);			
}
//--------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------
CTCoordinate = function(px1,py1,px2,py2,pparent,protected)
{
	this.parent = pparent;
	this.x1 = px1*this.parent.zoom;
	this.y1 = py1*this.parent.zoom;
	this.x2 = px2*this.parent.zoom;
	this.y2 = py2*this.parent.zoom;
	//alert (this.x1+"|"+this.y1+"|"+this.x2+"|"+this.y2);
	this.ox1 = px1*this.parent.zoom;
	this.oy1 = py1*this.parent.zoom;
	this.ox2 = px2*this.parent.zoom;
	this.oy2 = py2*this.parent.zoom;
	
	this.mid = findID("divCoordinate"+Math.floor(Math.random()*1000) );
	
	this.div = null;
	this.hintMenuId = '';
	this.editMode = 0;
	this.objectId = 0;
	this.objectName = "";
	this.oobjectId = 0;
	this.inMove = 0;
	
	this.moveMDX = 0;
	this.moveMDY = 0;
	
	this.canEditObject = 0;
	
	this.changedMarkingSize = 0;
	this.protected = protected;
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.free = function()
	{
		this.endEdit();
		this.releaseMarking();
		this.parent.deleteCoordinate(this);
		this.parent.parent.personChooser.listener = null;
	}	
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.updateOnline = function()
	{
		var url = "photos.php?action=updatecoordinate&photos_ident="+this.parent.photoIdent+	
			  "&coordinates_x1="+this.ox1+
			  "&coordinates_x2="+this.ox2+
			  "&coordinates_y1="+this.oy1+
			  "&coordinates_y2="+this.oy2+
			  "&zoom="+this.parent.zoom+
			  "&objects_ident="+this.oobjectId+
			  "&ncoordinates_x1="+this.x1+
			  "&ncoordinates_x2="+this.x2+
			  "&ncoordinates_y1="+this.y1+
			  "&ncoordinates_y2="+this.y2+
			  "&nobjects_ident="+this.objectId;
		loadArea(url,0);
		this.ox1 = this.x1;
		this.ox2 = this.x2;
		this.oy1 = this.y1;
		this.oy2 = this.y2;
		this.oobjectId = this.objectId;
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.setPortrait = function()
	{
		var url = "photos.php?action=cutrectangle&photos_ident="+this.parent.photoIdent+	
			  "&x1="+this.ox1+
			  "&x2="+this.ox2+
			  "&y1="+this.oy1+
			  "&y2="+this.oy2+
			  "&zoom="+this.parent.zoom+
			  "&seticon=1";
		loadArea(url,0);
	}	
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.deleteOnline = function()
	{
		var url = "photos.php?action=deletecoordinate&photos_ident="+this.parent.photoIdent+	
			  "&coordinates_x1="+this.ox1+
			  "&coordinates_y1="+this.oy1+
			  "&zoom="+this.parent.zoom;
		loadArea(url,0);
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.showPersonChooser = function()
	{
		this.parent.parent.personChooser.listener = this;
		var a2_pos = calcAbsolutePos(this.parent.div);
		this.parent.parent.personChooser.show(this.x2+a2_pos.offsetLeft,this.y1+a2_pos.offsetTop);
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onPersonChooserSelect = function(e)
	{
		this.setPerson(e.id);
		this.hidePersonChooser();
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.hidePersonChooser = function()
	{
		this.parent.parent.personChooser.hide();
	}	
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onNewPerson = function(id)
	{
		var e = $(id);
		this.parent.parent.personChooser.addPerson(id);
		this.hidePersonChooser();
		this.setPerson(id);
		mwHide();
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onPersonChooserNew = function()
	{
		var zoom = this.parent.zoom;
		var phident = this.parent.photoIdent;
		var url = "objects.php?action=newperson&";
		url+= "&x1="+this.x1+
			  "&x2="+this.x2+
			  "&y1="+this.y1+
			  "&y2="+this.y2+
			  "&zoom="+(zoom)+
			  "&photo_ident="+phident+
			  "&cutrectangle=1&onfinish=$(\""+this.div.id+"\").coordinate.onNewPerson";
		mwShow(url);
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.hide = function()
	{
		this.endEdit();
		this.div.style.display = 'none';
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.show = function()
	{
		this.div.style.display = 'block';
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.setHintMenu = function(id)
	{
		getFirstElementByName(this.div,"imgCover","IMG").setAttribute('hintmenu',id);		
		this.hintMenuId = id;
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.releaseMarking = function()
	{
		if(this.div)
		{
			var children = this.div.getElementsByTagName("*");
			for(var i=0;i<children.length;i++) children[i].coobj = null;
			
			getParent(this.div).removeChild(this.div);
			this.div.coordinate = null;
			this.div = null;
		}
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.createMarking = function(srcel)
	{
		this.releaseMarking();
		var div = srcel.cloneNode(true);
		div.id = this.mid;
		div.coordinate = this;
		div.style.display = 'block';
		this.parent.div.appendChild(div);		
		var children = div.getElementsByTagName("*");
		for(var i=0;i<children.length;i++) children[i].coobj = this;
		this.div = div;
		this.setCoord(this.x1,this.y1,this.x2,this.y2);
		this.setHintMenu(this.hintMenuId);
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.createViewMarking = function()
	{
		this.createMarking($('divTextingCoordinateView'));
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.createEditMarking = function()
	{
		this.createMarking($('divTextingCoordinateEdit'));
		if(!this.canEditObject)
		{
			getFirstElementByName(this.div,"btnPortrait","BUTTON").style.display = 'none';
		}
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.createEditObjectMarking = function()
	{
		this.createMarking($('divTextingCoordinateEditObject'));
	}	
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.setPerson = function(ab2id,noupdate)
	{
		var e = $(ab2id);		
		var objectId = e.getAttribute('ident');
		var url = e.src;
		var name = e.getAttribute('ab2obj_name');
		var relation = e.getAttribute('ab2relation');
				
		var hintMenu = createHintMenuFromText($('divTextingMarkingHint').innerHTML);				
		this.setHintMenu(hintMenu.id);
		var img = getFirstElementByName(hintMenu,"imgPortrait","IMG");
		img.src = url;
		img.setAttribute('ab2type','person');
		img.setAttribute('ident',objectId);
		getFirstElementByName(hintMenu,"spanName","SPAN").innerHTML = name;
		getFirstElementByName(hintMenu,"spanRelation","SPAN").innerHTML = relation;
		this.objectId = objectId;
		this.objectName = name;		
		this.canEditObject = e.getAttribute('canedit')
		if(!noupdate) 
		{
			this.updateOnline();
		}
		if(this.editMode == 1)
		{
			this.endEdit();
			this.startEdit();
		}
		if(!noupdate)
		{
			// and show the hint for a bit
			// noupdate means it's not one of the initialization set person
			var divHint =  getFirstElementByName(this.div,"divCoordinateViewHint","DIV");			
			//mihair divHint.innerHTML='<iframe src="javascript:false;" frameborder="0" tabindex="-1" style="filter:Alpha(Opacity=\'0\'); display:block;position:absolute;top:0;left:0;z-Index:-1;border:none;width:300px;height:58px"></iframe>'+hintMenu.innerHTML;								
			divHint.innerHTML='<iframe src="javascript:return false;" frameborder="0" tabindex="-1" style="filter:Alpha(Opacity=\'0\'); display:block;position:absolute;top:0;left:0;z-Index:-1;border:none;width:300px;height:58px"></iframe>'+hintMenu.innerHTML;
								
			//divHint.innerHTML = hintMenu.innerHTML;
			divHint.style.display = "block";
			divHint.id = this.div.id+"_markingHint";
			setTimeout("if($('"+divHint.id+"')) $('"+divHint.id+"').style.display='none';",5000);		
		}		
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.startEdit = function()
	{
		if(this.protected == 1) 
		{
			if(confirm('You cannot edit this tag. Instead you may want to focus ' + this.objectName + ' in a new window. '))
			{
				window.open('layout.php?action=leftright&lefturl=family.php%3Faction%3Dfamilyleft%26objects_ident%3D'+this.objectId,'Album2').focus();
			};
			return;

		};
		if(this.editMode == 0)
		{
			this.parent.endEdits();
			if(this.parent.editMode) 
			{
				this.createEditMarking();
			}
			else 
			{
				if(this.canEditObject) this.createEditObjectMarking();
				else return;
			}
			this.editMode = 1;
			if(!this.objectId) this.showPersonChooser();
		}
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.endEdit = function()
	{
		if(this.editMode == 1)
		{
			this.createViewMarking();
			this.editMode = 0;
			this.hidePersonChooser();
			if (hideHintMenu) hideHintMenu();
		}		
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.deleteCoordinate = function()
	{
		this.deleteOnline();
		this.endEdit();
		this.releaseMarking();
		this.parent.deleteCoordinate(this);
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.setCoord = function(x1,y1,x2,y2)
	{
//		debugString("<br>"+x2+" "+y2+" === "+this.parent.div.offsetWidth+" "+this.parent.div.offsetHeight);
		if(x2>this.parent.div.offsetWidth) x2 = this.parent.div.offsetWidth;
		if(y2>this.parent.div.offsetHeight) y2 = this.parent.div.offsetHeight;
//		debugString("<br>"+x2+" "+y2+" === "+this.parent.div.offsetWidth+" "+this.parent.div.offsetHeight,1);
		var cc = 0; // corner change
		if(x1>x2) 
		{
			var a = x1;
			x1 = x2;
			x2 = a;
			cc = 1;
		}
		if(y1>y2)
		{
			var a = y1;
			y1 = y2;
			y2 = a;
			cc+=2;
		}		
		setPixelLeft(this.div,x1);
		setPixelTop(this.div,y1);
		this.div.style.width = (x2-x1);
		this.div.style.height = (y2-y1);
		this.x1 = x1;
		this.x2 = x2;
		this.y1 = y1;
		this.y2 = y2;
		return cc;
	}	
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onClick = function()
	{
		this.startEdit();
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onMouseOver = function()
	{
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onMouseOut = function()
	{
	}	
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onMouseMove = function(event)
	{
		if(this.inMove) this.onMouseMoveMarking(event);
	}	
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onMouseUp = function(event)
	{
		if(this.inMove) this.onMouseUpMarking(event);
	}		
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onMouseDown = function(event)
	{
		var nx = 0;
		var ny = 0;
		if(document.all)
		{// IE style
			nx = event.x;
			ny = event.y;
			this.moveMDX = nx;
			this.moveMDY = ny;
		} else {// FF style
		    var a2_pos = calcAbsolutePos(this.parent.div);
			nx = event.pageX - a2_pos.offsetLeft;//this.parent.div.offsetLeft;
			ny = event.pageY - a2_pos.offsetTop;//this.parent.div.offsetTop;
			this.moveMDX = nx-this.x1;
			this.moveMDY = ny-this.y1;
		}		
		this.inMove = 5;
		this.parent.setMoveMarking(this);
		getFirstElementByName(this.div,"imgCover","IMG").style.display = 'none';
		getFirstElementByName(this.div,"divButtons","DIV").style.display = 'none';	
		this.hidePersonChooser();		
	}		
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onMouseDownMarking = function(event,corner)
	{
		this.inMove = corner;
		this.parent.setMoveMarking(this);
		getFirstElementByName(this.div,"imgCover","IMG").style.display = 'none';
		getFirstElementByName(this.div,"divButtons","DIV").style.display = 'none';	
		this.hidePersonChooser();
	}	
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onMouseMoveMarking = function(event)
	{
		if(this.inMove)
		{
			this.changedMarkingSize = 1;
			var nx = 0;
			var ny = 0;
			if(document.all)
			{// IE style
				nx = event.x;
				ny = event.y;
			}
			else
			{// FF style
		        var a2_pos = calcAbsolutePos(this.parent.div);
				nx = event.pageX - a2_pos.offsetLeft;//this.parent.div.offsetLeft;
				ny = event.pageY - a2_pos.offsetTop;//this.parent.div.offsetTop;
			}
			var cc; // change corner
			if(this.inMove == 5)
			{
				this.setCoord(nx-this.moveMDX,ny-this.moveMDY,nx-this.moveMDX+this.x2-this.x1,ny-this.moveMDY+this.y2-this.y1);
			}
			else if(this.inMove == 1)  
			{
				cc = this.setCoord(nx,ny,this.x2,this.y2);
				if(cc == 1) this.inMove = 2; 
				if(cc == 2) this.inMove = 3;
				if(cc == 3) this.inMove = 4;
			}
			else if(this.inMove == 2)
			{
				cc = this.setCoord(this.x1,ny,nx,this.y2);
				if(cc == 1) this.inMove = 1; 
				if(cc == 2) this.inMove = 4;
				if(cc == 3) this.inMove = 3;				
			}
			else if(this.inMove == 3) 
			{
				cc = this.setCoord(nx,this.y1,this.x2,ny);
				if(cc == 1) this.inMove = 4; 
				if(cc == 2) this.inMove = 1;
				if(cc == 3) this.inMove = 2;				
			}
			else if(this.inMove == 4)  
			{
				cc =  this.setCoord(this.x1,this.y1,nx,ny);
				if(cc == 1) this.inMove = 3; 
				if(cc == 2) this.inMove = 2;
				if(cc == 3) this.inMove = 1;				
			}
		}
	}	
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.checkMinSize = function()
	{
		if(this.changedMarkingSize)
		{
			var x1 = this.x1;
			var x2 = this.x2;
			var y1 = this.y1;
			var y2 = this.y2;
			if(this.x2-this.x1<10) x2 = this.x1+10;
			if(this.y2-this.y1<10) y2 = this.y1+10;
			if((x2!=this.x2)||(y2!=this.y2)) this.setCoord(x1,y1,x2,y2);
		}
		else
		{
			var x1 = this.x1;
			var y1 = this.y1;
			
			var x2 = this.x1+this.parent.div.offsetWidth*this.parent.defaultMarkPerc;
			var y2 = this.y1+this.parent.div.offsetHeight*this.parent.defaultMarkPerc;
			if((x2!=this.x2)||(y2!=this.y2)) this.setCoord(x1,y1,x2,y2);
		}		
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onMouseUpMarking = function(event)
	{
		if(this.inMove!=0)
		{
			this.checkMinSize();
			this.inMove = 0;
			this.parent.setMoveMarking(null);
			getFirstElementByName(this.div,"divButtons","DIV").style.display = 'block';
			getFirstElementByName(this.div,"imgCover","IMG").style.display = 'block';
			if(!this.objectId)
			{
				this.showPersonChooser();			
			}
			if((this.editMode == 1)&&(this.objectId!=0)) this.updateOnline();
		}
	}	
}
//--------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------
CTImage = function(pid,peditMode,pzoom,pparent,pphotoId)
{
	this.zoom = pzoom;
	this.follow = 1;
	this.following = 0;
	this.followObj = $('divTextingCoordinateFollow');
	this.followObjCover = $('divTextingCoordinateFollowCover');
	this.div = null;
	this.coordinates = new Array();
	this.editMode = peditMode;
	this.moveMarking = null;
	this.defaultMarkPerc = 0.12;
	
	this.inDrag = 0;
	this.inDragX = 0;
	this.inDragY = 0;
	this.parent = pparent;
	this.photoIdent = pphotoId;
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.free = function()
	{
		for(var i=this.coordinates.length-1;i>=0;i--) 
		{
			this.coordinates[i].free();
		}
		this.div.ctimage = null;
		this.div = null;
		this.followObjCover.followWhat = null;
		this.followObj = null;
		this.followObjCover = null;		
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.endEdits = function()
	{
		for(var i=0;i<this.coordinates.length;i++)
			this.coordinates[i].endEdit();
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.deleteCoordinate = function(e)
	{
		for(var i=0;i<this.coordinates.length;i++)
			if(this.coordinates[i] == e)
			{
				this.coordinates.splice(i,1);
				return;
			}
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.addNewCoordinate = function()
	{
		var x1 = this.div.offsetWidth*.3;
		var y1 = this.div.offsetHeight*.3;
		var x2 = this.div.offsetWidth*.3+this.div.offsetWidth*this.defaultMarkPerc;
		var y2 = this.div.offsetHeight*.3+this.div.offsetHeight*this.defaultMarkPerc;
		this.showCoordinates();
		return  rv = this.addCoordinate(x1/this.zoom,y1/this.zoom,x2/this.zoom,y2/this.zoom,0);
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.setMoveMarking = function(e)
	{
		this.moveMarking = e;
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.hideCoordinates = function()
	{
		for (var i = 0; i < this.coordinates.length; i++) this.coordinates[i].hide()
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.showCoordinates = function()
	{
		for(var i=0;i<this.coordinates.length;i++) this.coordinates[i].show()
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.setDOMId = function(id)
	{
		this.div = $(id);
		this.div.ctimage = this;
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.addCoordinate = function(x1,y1,x2,y2,protected)
	{
		this.follow = 0;
		var coord = new CTCoordinate(x1,y1,x2,y2,this,protected);
		coord.createViewMarking();
		this.coordinates[this.coordinates.length] = coord;
		return coord;
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.startFollow = function()
	{
		if(!this.follow) return;
		this.following = 1;
		this.followObjCover.followWhat = this;
		this.followObj.style.display = 'block';
		this.followObjCover.onmousemove = this.onMouseMoveFollow;
		this.followObjCover.onmouseup = this.onMouseUpFollow;
		this.followObjCover.onmouseout = this.onMouseOutFollow;
		this.followObj.style.width = this.div.offsetWidth*this.defaultMarkPerc;
		this.followObj.style.height = this.div.offsetWidth*this.defaultMarkPerc;
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.endFollow = function()
	{
		this.following = 0;
		this.followObj.style.display = 'none';
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onMouseOver = function()
	{
		//console.info("img mousemove");
		this.showCoordinates();
		if(this.editMode) this.startFollow();
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onMouseMoveFollow = function(event)
	{
		if(!event) event = window.event;
		var target = null;
		if(event.srcElement) target = event.srcElement;
		if(event.target)     target = event.target;
		if(target)	target.followWhat.onMouseMove(event);
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onMouseOutFollow = function(event)	
	{
		if(!event) event = window.event;
		var target = null;
		if(event.srcElement) target = event.srcElement;
		if(event.target)     target = event.target;
		if(target)	target.followWhat.onMouseOut(event);
	}	
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onMouseUpFollow = function(event)	
	{
		if(!event) event = window.event;
		var target = null;
		if(event.srcElement) target = event.srcElement;
		if(event.target)     target = event.target;
		if(target)	target.followWhat.onMouseUp(event);
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onMouseMove = function(event) {
		event = new A2_Event(event, this.div);
		
		if ( this.moveMarking )
			this.moveMarking.onMouseMoveMarking(event.event);
		
		var nx = event.pageX;
		var ny = event.pageY;
		
		var follow_obj_middleX = this.followObj.offsetWidth * .5;
		var follow_obj_middleY = this.followObj.offsetHeight * .5;
		
		if ( this.following ) {
			if (event.relativeX <= follow_obj_middleX) nx = event.pageX + follow_obj_middleX - event.relativeX;
			if (event.relativeY <= follow_obj_middleY) ny = event.pageY + follow_obj_middleY - event.relativeY;
			if (event.relativeX + follow_obj_middleX >= this.div.offsetWidth) nx = event.pageX - ( event.relativeX + follow_obj_middleX - this.div.offsetWidth );
			if (event.relativeY + follow_obj_middleY >= this.div.offsetHeight) ny = event.pageY - ( event.relativeY + follow_obj_middleY - this.div.offsetHeight );
			setPixelLeft( this.followObj, nx - follow_obj_middleX );
			setPixelTop( this.followObj, ny - follow_obj_middleY );
		}
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onMouseUp = function(event)	
	{
		if(this.moveMarking)
		{
			this.moveMarking.onMouseUpMarking(event);
		}
		if(this.following)
		{
			var nx = 0;
			var ny = 0;
			if(document.all)
			{// IE style
				nx = event.x ;
				ny = event.y ;
			}
			else
			{// FF style
		        var a2_pos = calcAbsolutePos(this.div);
				nx = event.pageX - a2_pos.offsetLeft;
				ny = event.pageY - a2_pos.offsetTop;
			}				
			var x1 = nx - this.followObj.offsetWidth*.5;
			var x2 = nx + this.followObj.offsetWidth*.5;
			var y1 = ny - this.followObj.offsetHeight*.5;
			var y2 = ny + this.followObj.offsetHeight*.5;
			
			this.addCoordinate(x1/this.zoom,y1/this.zoom,x2/this.zoom,y2/this.zoom,0).startEdit();
			this.endFollow();
		}
	}	
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onMouseDown = function(event)	
	{
		//event = new A2_Event(event, this.div);
		var nx = 0;
		var ny = 0;
		if(document.all)
		{// IE style
			nx = event.x ;
			ny = event.y ;
		}
		else
		{// FF style
		    var a2_pos = calcAbsolutePos(this.div);
			nx = event.pageX - a2_pos.offsetLeft;
			ny = event.pageY - a2_pos.offsetTop;
		}		
		if(!this.editMode ){
			if(this.parent.noMoreSlideshowAlerts != 1)
				mwShow('slideshows.php?action=popmessage&msg_type=invalidtagging&photo='+this.photoIdent);
		}
		if(!(this.moveMarking)&&(!this.following)&&(this.editMode))
		{
			this.inDrag = this.addCoordinate(nx/this.zoom,ny/this.zoom,nx/this.zoom,ny/this.zoom,0);
			this.inDrag.startEdit();
			this.inDrag.onMouseDownMarking(event,4);
		}
	}	
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onMouseOut = function(event)
	{
		var rt = event.toElement;
		if(!rt) rt = event.relatedTarget;
		var cfo = 0;
		if(this.following) cfo = isChildOf(rt,this.followObjCover); // child of follow obj
		if(!isChildOf(rt,this.div))	
		{
			if(!cfo)	
			{
				if(!isChildOf(rt,this.parent.personChooser.div))
				{
					this.parent.personChooser.hide();
					this.hideCoordinates();
				}
			}
		}
		if(!cfo) this.endFollow();
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.setDOMId(pid);
}
//--------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------
CTexting2 = function()
{
	this.images = new Array();
	this.personChooser = new CPersonChooser();
	this.ids = new Array();
	this.dontshowalerts = 0;
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.getPersonChooser = function()
	{
		return this.personChooser;
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.getImage = function(id)
	{
		return this.images[id];
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.freeTextings = function()
	{
		for(var i=0;i<this.ids.length;i++) 
		{
			this.images[this.ids[i]].free();
		}
		
		this.images = new Array();
		this.ids = new Array();
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.addTexting = function(id,edit,zoom,photoId)
	{
		var ctImage = new CTImage(id,edit,zoom,this,photoId);
		this.images[id] = ctImage;
		this.ids[this.ids.length] = id;
		return ctImage;
	}
}
//--------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------
CTexting2.prototype = new CPage();
;
//--------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------
CPersonChooser = function()
{
	this.persons = new Array();
	this.div = $('divPersonChooser').cloneNode(true);
	
	this.div.id = findID(this.div.id);
	this.div.pc = this;
	this.divPersons = getFirstElementByName(this.div,"divPersons","DIV");
	this.divYourself = getFirstElementByName(this.div,"divYourself","DIV");
	document.body.appendChild(this.div);
	this.listener = null;
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.loadLetter = function(filter,zoom,fc)
	{	
		if(zoom == true){
			zoom = "1";
		}
		else zoom = "";
		var divPersonsLetter = getFirstElementByName(this.div,"divPersonsLetter","DIV");
		loadArea("personchooser.php?action=letter&string="+filter+"&firstchar="+fc+"&zoom="+zoom,divPersonsLetter);
	};
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onNewPersonClick = function(event)
	{
		this.listener.onPersonChooserNew();
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onLetterClick = function(event)
	{
		if(!event) event = window.event;
		var target = null;
		if(event.srcElement) target = event.srcElement;
		if(event.target)     target = event.target;

		var divPersonsLetter = getFirstElementByName(getParentByName(target,"divPersonChooser"),"divPersonsLetter","DIV");
		loadArea("personchooser.php?action=letter&string="+target.getAttribute("letter")+"&firstchar=1",divPersonsLetter);
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.show = function(x,y)
	{
		setPixelTop(this.div,y);
		setPixelLeft(this.div,x);
		this.div.style.display = 'block';
		correctPositionX(this.div);
		correctPositionY(this.div);
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.hide = function()
	{
		this.div.style.display = 'none';
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.chooseLetterPerson = function(AB2Id)
	{	
		this.addPerson(AB2Id);
		this.listener.onPersonChooserSelect($(AB2Id));
		this.hide();
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.addPerson = function(AB2Id)
	{
		var objectId = $(AB2Id).getAttribute('ident');
		if(this.persons[objectId]) return;
		this.persons[objectId] = 1;
		var divB = document.createElement("DIV");
		divB.className = 'person_thumb';
		this.divPersons.appendChild(divB);
		var e = cloneAB2Obj($(AB2Id),divB);
		e.onmouseup = this.onItemClick;
		// added to prevent set a the default size on a non processed thumb
		e.height = 48;
		// for resolving bug #3349
		e.width = 48;
		return e;
	}
//---------------------------------------------------------------------------------------------------------------------------------------------
	this.addMe = function (AB2Id)
	{
		var objectId = $(AB2Id).getAttribute('ident');
		if(this.persons[objectId]) return;
			this.persons[objectId] = 1;
		
		var divB = document.createElement("DIV");
		divB.className = 'person_thumb';
		this.divYourself.appendChild(divB);
		var e = cloneAB2Obj($(AB2Id),divB);
		e.onmouseup = this.onItemClick;
		// added to prevent set a the default size on a non processed thumb
		e.height = 48;
		// for resolving bug #3349
		e.width = 48;
		return e;
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.onItemClick = function(event)
	{		
		if(!event) event = window.event;
		var target = null;
		if(event.srcElement) target = event.srcElement;
		if(event.target)     target = event.target;
		if(getParentByName(target,"divPersonChooser").pc.listener) getParentByName(target,"divPersonChooser").pc.listener.onPersonChooserSelect(target);
		getParentByName(target,"divPersonChooser").pc.hide();
	}
//--------------------------------------------------------------------------------------------------------------------------------------------
	this.init = function()
	{
	}
	this.init();

//--------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------
}
//--------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------

;
// JavaScript Document;
/** 
* Image comments
*/
var commentStrings = new Array();

var openAreas = new Array();

/*  */
CommentObj = function(comment_div,comment_date)
{
	this.div = comment_div;
	this.date = comment_date;
}

function newComment()
{
	if(!($("divNewComment"))) return;
	openAreas["comment"] = 1;
	$("divNewComment").style.display = "block";
	$("txtaNewComment").value = "";	
}

function saveNewComment()
{
	$("txtaNewComment").value = $("txtaNewComment").value.replace(/(<([^>]+)>)/ig,"");
	//$("txtaNewComment").value = $("txtaNewComment").value.replace(/^\s+|\s+$/g, ''); left right trim.. if will be needed
	
	if($("txtaNewComment").value)
	{
		var commentText = $("txtaNewComment").value;
		commentText = encodeURIComponent(commentText);
		$("divNewComment").style.display = "none";
		var phident = $('inpPhIdent').value;
		var url = "photos.php?action=newcomment&photos_ident="+phident+"&com_text="+commentText;
		var newSpan = document.createElement("SPAN");
		$("divNewComments").appendChild(newSpan);
		newSpan.innerHTML = "<p style='margin-top:5px; padding:5px; background-color: #fafafa; border:1px solid #eaf3f9;'><img src='images/loading_blue.gif' align='absmiddle'> &nbsp;<strong>Loading ...</strong>";
		loadArea(url,newSpan);
	}
	else alert("The comment was empty. Please write something.");	
}

function cancelNewComment()
{
	openAreas["comment"] = 0;
	$("divNewComment").style.display = "none";
}

function clearComments()
{
	commentStrings = new Array();
}

function setComment(id,string)
{
	commentStrings[id] = string;
}

function deleteComment(id)
{
	getParent($("tblComment"+id)).removeChild($("tblComment"+id));
	var url = "photos.php?action=deletecomment&ident="+id;
	loadArea(url,0);
}

function editComment(id)
{
	$("spanComment"+id).style.display = "none";
	$("divEditComment"+id).style.display = "block";
	$("txtaEditComment"+id).value = commentStrings[id];
}

function saveEditComment(id)
{
	$("txtaEditComment"+id).value = $("txtaEditComment"+id).value.replace(/(<([^>]+)>)/ig,"");
	//$("txtaEditComment"+id).value = $("txtaEditComment"+id).value.replace(/^\s+|\s+$/g, ''); left right trim.. if will be needed

	if($("txtaEditComment"+id).value)
	{
		$("divEditComment"+id).style.display = "none";
		$("spanComment"+id).style.display = "block";
		var commentText = $("txtaEditComment"+id).value;
		commentText = encodeURIComponent(commentText);		
		commentStrings[id] = $("txtaEditComment"+id).value;
		$("spanComment"+id).innerHTML = commentStrings[id];
	
		var url = "photos.php?action=setcomment&ident="+id+"&com_text="+commentText;
		loadArea(url,0);
	}
	else alert("The comment was empty. Please write something.");	 	
}

function cancelEditComment(id)
{
	$("divEditComment"+id).style.display = "none";
	$("spanComment"+id).style.display = "block";
}

function editPhotoCommentSave(comid)
{
	$('divCommentText_'+comid).getElementsByTagName("div")[0].innerHTML = $('divCommentTextarea_'+comid).value;
	$('divCommentText_'+comid).style.display = 'block';
	$('divCommentEdit_'+comid).style.display = 'none';
	var editedText = $('divCommentTextarea_'+comid).value;
	editedText = encodeURIComponent(editedText);	
	var url = "photos.php?action=setcomment&ident="+comid+"&com_text="+editedText;
	loadArea(url,0);
}

function deletePhotoComment(comid)
{
	$('divCommentWrap_'+comid).style.display = 'none';
	var url = "photos.php?action=deletecomment&ident="+comid;
	loadArea(url,0);
}

/**
* Album comments
*/

function newAlbumComment(aid)
{
	var commentText = $('txtNewComment').value;
	//commentText = encodeURIComponent(commentText);
	commentText = escape(commentText);
	$('txtNewComment').value = "";
	var div = document.createElement("DIV");
	$("divNewComments").appendChild(div);
	div.id = "divAlbumComment"+Date();
	//alert(commentText);
	loadArea('slideshows.php?action=addalbumcomment&aid='+aid+'&text='+commentText,div,'albumThumbsOrderComments()');
}
function deleteAlbumComment(comid)
{
	$('divCommentWrap_'+comid).style.display = 'none';
	loadArea('slideshows.php?action=deletealbumcomment&ident='+comid,0);
}
function editAlbumComment(comid)
{
	$('divCommentText_'+comid).style.display = 'none';
	$('divCommentEdit_'+comid).style.display = 'block';
}
function editAlbumCommentCancel(comid)
{
	$('divCommentText_'+comid).style.display = 'block';
	$('divCommentEdit_'+comid).style.display = 'none';
}
function editAlbumCommentSave(comid)
{
	$('divCommentText_'+comid).innerHTML = $('divCommentTextarea_'+comid).value;
	$('divCommentText_'+comid).style.display = 'block';
	$('divCommentEdit_'+comid).style.display = 'none';
	var editedText = $('divCommentTextarea_'+comid).value;
	editedText = encodeURIComponent(editedText);
	loadArea('slideshows.php?action=editalbumcomment&ident='+comid+'&text='+editedText,0);
}

function albumThumbsOrderComments()
{
	if (!$('com_order')) {
		return;
	}
	
	showElement('com_order');
	
	var order_direction = $('com_order').value;
	var commentsTables = new Array();
	
	var comment_objs = new Array();
	
	// get all comments new and old
	var oldCommentsTd = document.getElementById('oldComments');
	var newCommentsTd = document.getElementById('newComments');
	
	if(!newCommentsTd) return;
	
	var oldCommentsDivContainer = oldCommentsTd.getElementsByTagName('div')[0];
	var newCommentsDivContainer = newCommentsTd.getElementsByTagName('div')[0];
	
	var oldComments = oldCommentsTd.getElementsByTagName('table');
	var newComments = newCommentsTd.getElementsByTagName('table');
	
	for(i=0;i<oldComments.length;i++){
		var match = oldComments[i].id.match(/divCommentWrap_([0-9]+)/i);
		if(match){
			// get comment date
			var comm_date = oldComments[i].getElementsByTagName("input")[0].value;
			var comm_date_int = parseInt(comm_date);
			comment_objs.push(new CommentObj(oldComments[i],comm_date_int))
		}
	}
	for(i=0;i<newComments.length;i++){
		var match = newComments[i].id.match(/divCommentWrap_([0-9]+)/i);
		if(match){
			// get comment date
			var comm_date = newComments[i].getElementsByTagName("input")[0].value;
			var comm_date_int = parseInt(comm_date);
			comment_objs.push(new CommentObj(newComments[i],comm_date_int))
		}
	}
	
	sortCommentObjs(comment_objs);
	
	// clear comment divs
//	oldCommentsDivContainer.innerHTML = '';
//	newCommentsDivContainer.innerHTML = '';
	if(order_direction=='-1'){
		// reverse order, last comment is seen first
		for(i=comment_objs.length-1;i>=0;i--){
			if(comment_objs[i]){
				oldCommentsDivContainer.appendChild(comment_objs[i].div);
			}
		}
	}
	else if(order_direction=='1'){
		// normal order, last comment is seen last
		for(i=0;i<comment_objs.length;i++){
			if(comment_objs[i]){
				oldCommentsDivContainer.appendChild(comment_objs[i].div);
			}
		}
	}
	 
}

function sortCommentObjs(comm_objs){
	var tmp = null;
	for(i=0;i<comm_objs.length;i++){
		for(j=0;j<comm_objs.length;j++){
			if(comm_objs[i].date < comm_objs[j].date){
				tmp = comm_objs[i];
				comm_objs[i] = comm_objs[j];
				comm_objs[j] = tmp;
			}
		}
	}
};
function makeSpecialButton( senderObj, height ) {
	if (senderObj.specialButton) return;
	senderObj.onmouseover = null;
	
	var childrens = senderObj.getElementsByTagName("div");
	senderObj.leftPart = (childrens[0].className.indexOf('join_btn_left')==-1) ? childrens[1] : childrens[0];
	senderObj.rightPart = (childrens[0].className.indexOf('join_btn_right')==-1) ? childrens[1] : childrens[0];
	senderObj.style.cursor = "hand";
	
	senderObj.onmouseover = function() {
		this.leftPart.style.backgroundPosition = "left -" + height + "px";
		this.rightPart.style.backgroundPosition = "right -" + height + "px";
	}
	
	senderObj.onmouseout = function() {
		this.leftPart.style.backgroundPosition = "left top";
		this.rightPart.style.backgroundPosition = "right top";
	}
	
	senderObj.onmouseover();
}

function addHover( senderObj ) {
	if (!senderObj.hasHover) {
		senderObj.normalImg = senderObj.src;
		var dotPos = senderObj.src.lastIndexOf(".");
		var ext = senderObj.src.substr(dotPos);
		senderObj.hoverImg = senderObj.src.replace(ext,"_hover"+ext);
		senderObj.hasHover = true;
		
		senderObj.onmouseover = function() {
			this.src = this.hoverImg;
		}
		
		senderObj.onmouseout = function() {
			this.src = this.normalImg;
		}
		
		senderObj.onmouseover();
	}
}




// used to hide the text field containing the gray text "password" and show the real password field
// if there was no password entered in the password field, hide it and show the text field again
// senderObj should be the text field and pwdInputID should be the real password field
function readPassword( senderObj, pwdInputID, doNotSetFocus ) {
//	return true;
	var pwdIF = document.getElementById( pwdInputID );
	if (!pwdIF) return;
	
	senderObj.style.display = "none";
	pwdIF.style.display = "inline";
	if (!doNotSetFocus) pwdIF.focus();
	pwdIF.txtInputField = senderObj;
	
	pwdIF.onblur = function() {
		if (this.value == "") {
			this.style.display = "none";
			this.txtInputField.style.display = "inline";
		}
	}
}

function check4tab(evt, txtID, pswFldID) {
	var _evt = (evt ? evt : window.event);
	if (_evt.keyCode == 9) {
		var textField = document.getElementById(pswTxtID);
		readPassword(textField, pswFldID);
	}
}

function check4Autocompleted( txtID, pswFldID ) {
//	return true;
	var textField = document.getElementById(txtID);
	var pswField = document.getElementById(pswFldID);
	
	if (pswField.value != "")
		readPassword(textField, pswFldID, true);
}



function clearNote( senderObj ) {
	if (!senderObj) return;
	
	if (senderObj.value.indexOf('@')==-1) {
		if (!senderObj.savedValue) senderObj.savedValue = senderObj.value;
		senderObj.value = '';
		
		senderObj.onblur = function() {
			if (this.value.indexOf('@')==-1)
				this.value = this.savedValue;
		}
	}
}

function jsSubmit(evt, formID) {
//	return true;
	var _evt = (evt ? evt : window.event);
	if (_evt.keyCode == 13) {
		document.getElementById( formID ).submit();
	}
}



function __hide( id ) {
	var elem = document.getElementById( id );
	elem.style.display = 'none';
	//elem.style.backgroundColor = "#ffffff";
}

function __show( id, displayStyle ) {
	var elem = document.getElementById( id );
	elem.style.display = (displayStyle ? displayStyle : "block");
	//elem.style.backgroundColor = "#00FFFF";
}

function __focus( id ) {
	var elem = document.getElementById( id );
	elem.focus();
}



// direction = normal - will hide txt and show & focus pwd
// direction = backward - will hide pwd and show & focus txt
function pwdFieldTrick( evt, txt, pwd, direction ) {
	var _evt = (evt ? evt : window.event);
	if (direction == "normal" || !direction) {
		if (_evt.keyCode == 9 || _evt.keyCode == 13) {
			__hide(txt);
			__show(pwd,'inline');
			__focus(pwd);
		}
	} else
	if (direction == "backward") {
		__hide(pwd);
		__show(txt,'inline');
		__focus(txt);
	}
}

function pwdFieldTrick2( txt, pwd ) {
	__hide(txt);
	__show(pwd,'inline');
	__focus(pwd);
}

function pwdFieldTrick3( txt, pwd ) {
	var pwd_obj = document.getElementById( pwd );
	if ( pwd_obj.value.length == 0 ) {
		__hide(pwd);
		__show(txt,'inline');
	}
}

function setup_login_input( senderObj, userID, pwdTxtID, pwdID ) {
	var _user = document.getElementById( userID );
	var _pwdTxt = document.getElementById( pwdTxtID );
	var _pwd = document.getElementById( pwdID );
	
	if ( _user.loginInputInstalled ) return;
	_user.loginInputInstalled = true;
	
	_pwdTxt.realInput = _pwd;
	_pwdTxt.container = _pwd.parentNode;
	_pwd.container = _pwd.parentNode;
	_pwd.msgObj = _pwdTxt;
	_pwd._form = _user.parentNode;
	_pwd.parentNode.removeChild( _pwd );
	
	
	_user.onblur = function() { clearNote( this ); }
	_user.onclick = function() { clearNote( this ); }
	if (senderObj == _user) _user.onclick(); // also, trigger the event if the case
	_user.msgObj = _pwdTxt;
	
	_user.onkeyup = function(evt) {
		var _evt = (evt ? evt : window.event);
		if (_evt.keyCode == 9 || _evt.keyCode == 13) {
			try {
				// 1. remove msg
				var obj2Add2 = this.msgObj.container;
				obj2Add2.removeChild( this.msgObj );
				// 2. add pwd
				obj2Add2.appendChild( this.msgObj.realInput );
			} catch (e) {
				//means there was no msg in the obj2Add2
			}
			// 3. focus pwd
			this.msgObj.realInput.focus();
		}
	}
	
	
	_pwdTxt.onfocus = function() {
		var obj2Add2 = this.container;
		// 1. remove msg
		obj2Add2.removeChild( this );
		// 2. add pwd
		obj2Add2.appendChild( this.realInput );
		// 3. focus pwd
		this.realInput.focus();
	}
	_pwdTxt.onclick = _pwdTxt.onfocus;
	
	
	_pwd.onblur = function() {
		if ( this.value == "" ) {
			var obj2Add2 = this.container;
			// 1. remove msg
			obj2Add2.removeChild( this );
			// 2. add pwd
			obj2Add2.appendChild( this.msgObj );
		}
	}
	
	_pwd.onkeyup = function(evt) {
		var _evt = (evt ? evt : window.event);
		if (_evt.keyCode == 13) {
			this._form.submit();
		}
	}
}
;
/*

	his file should be used for sturtup javascripts
	at this moment there are problems in FF and IE's
	(FF only works with plain js, while IE only works
	with ab2onload="...")

*/
/*
	will calculate the viewport of the browser
	CROSBROWSER!
 */
//var a2_viewPort = a2_getViewPortWH();


/*
	Array of strings.
	Enter html element id's here for which you wish not
	to consider body_onmousemove to act.
*/
var arr_skip_body_mousemove_on = [
	"flash_container"
];;
