function ToggleDiv(sDiv)
{
	var oDiv = document.getElementById(sDiv);
	var oToggle = document.getElementById('t' + sDiv);
	if (oDiv)
	{
		if (oDiv.style.display == 'none')
		{
			oDiv.style.display = 'block';
			oToggle.innerHTML = '<img src="../media/images/minus_12.jpg" border="0" onclick="ToggleDiv(\'' + sDiv + '\');" />';
		}
		else
		{
			oDiv.style.display = 'none';
			oToggle.innerHTML = '<img src="../media/images/plus_12.jpg" border="0" onclick="ToggleDiv(\'' + sDiv + '\');" />';
		}
	}
}

function GraphRequest(sAddIDs, sRemoveIDs, iTab)
{
	var currentTime = new Date()
	var DateTime = currentTime.getTime();
	var sTargetURL = './genealogy/fetch_graph.php?aids=' + sAddIDs + "&rids=" + sRemoveIDs + "&Tab=" + iTab + "&Now=" + DateTime;
	var sDiv = 'timeline_div';
	xmlhttp = CreateXMLHttp();

	if (xmlhttp)
	{	
		xmlhttp.open("GET", sTargetURL, false);
		xmlhttp.send(null);

		if (xmlhttp.readyState==4)
		{
			UpdateContent(xmlhttp.responseText, sDiv);
			oTable = document.getElementById('content_table');
			iTableHeight = oTable.offsetHeight;
			
			oTimeline = document.getElementById("timeline_line");
			iTimelineHeight = oTimeline.offsetHeight;
			if (iTimelineHeight > iTableHeight)
			{
				oTable.style.height = iTimelineHeight + 'px';
			}
			
			var aEvents = document.getElementsByName('timeline_event');
			var iCnt = aEvents.length;
			for (i = 0; i < iCnt; ++i)
			{
				var iYLimit = aEvents[i].offsetTop;
				Drag.init(aEvents[i], null, 0, 400, iYLimit, iYLimit);
				sID = aEvents[i].id;
				iID = sID.substring(14);
				aEvents[i].onDrag = function (x,y) {DrawTimelineEventLine(iID, x, y);};
			}
		}
	}
}

function DrawTimelineEventLine(iEvent, iTargetX, iTargetY)
{
	var oImg = document.getElementById('timeline_event_line' + iEvent);
	var iStartX = 35;
	iTargetY += 11;
	iTargetX += 50;
	var iStartY = iTargetY;
    var
        xMin        = Math.min( iStartX, iTargetX ),
        yMin        = Math.min( iStartY, iTargetY ),
        xMax        = Math.max( iStartX, iTargetX ),
        yMax        = Math.max( iStartY, iTargetY ),
        boxWidth    = Math.max( xMax-xMin, 1 ),
        boxHeight   = Math.max( yMax-yMin, 1 ),
        tmp         = Math.min( boxWidth, boxHeight ),
        smallEdge   = 1,
        newSrc;
	if (boxWidth < 0)
	{
		boxWidth = 0;
	}
	
    while( tmp>>=1 )
        smallEdge<<=1;
	
    newSrc = '../media/images/' + smallEdge +( (iTargetX-iStartX)*(iTargetY-iStartY)<0?"up.gif":"down.gif" );
    if( oImg.src.indexOf( newSrc )==-1 )
        oImg.src = newSrc;

    with( oImg.style )
    {
        width   = boxWidth	+"px";
        height  = boxHeight	+"px";
        left    = xMin		+"px";
        top     = yMin		+"px";
    }
}

function TimelineSearch(iStart, iTab)
{
	var currentTime = new Date()
	var DateTime = currentTime.getTime();
	var sDiv = 'timeline_search';
	var sURL = "../main/genealogy/fetch_timeline_search.php?s=" + iStart + "&Tab=" + iTab + "&Now=" + DateTime;

	xmlhttp = CreateXMLHttp();

	if (xmlhttp)
	{
		xmlhttp.open("POST", sURL, false);
		xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-13');
		var sPostVars = "";

		sField = "firstname";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "condition_firstname";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "lastname";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "condition_lastname";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "searchajaxfunction";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value;
		}
		xmlhttp.send(sPostVars);

		if (xmlhttp.readyState==4)
		{
			UpdateContent(xmlhttp.responseText, sDiv);
		}
	}
}

function SimpleSearch(iStart)
{
	var currentTime = new Date()
	var DateTime = currentTime.getTime();
	var sDiv = 'ajax_content';
	var sURL = "../main/genealogy/fetch_search_results.php?s=" + iStart + "&Now=" + DateTime;

	xmlhttp = CreateXMLHttp();

	if (xmlhttp)
	{
		xmlhttp.open("POST", sURL, false);
		xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-13');
		var sPostVars = "";

		sField = "firstname";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "condition_firstname";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "lastname";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "condition_lastname";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "searchajaxfunction";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value;
		}
		xmlhttp.send(sPostVars);

		if (xmlhttp.readyState==4)
		{
			UpdateContent(xmlhttp.responseText, sDiv);
		}
	}
}

function StatisticsRequest()
{
	var currentTime = new Date()
	var DateTime = currentTime.getTime();
	var sTargetURL = '../main/genealogy/fetch_statistics.php?Now=' + DateTime;
	var sDiv = 'ajax_content';
	xmlhttp = CreateXMLHttp();

	if (xmlhttp)
	{	
		xmlhttp.open("GET", sTargetURL, false);
		xmlhttp.send(null);

		if (xmlhttp.readyState==4)
		{
			UpdateContent(xmlhttp.responseText, sDiv)
		}
	}
}

function AdvancedSearch(iStart)
{
	var currentTime = new Date()
	var DateTime = currentTime.getTime();
	var sDiv = 'ajax_content';
	var sURL = "../main/genealogy/fetch_search_results.php?s=" + iStart + "&Now=" + DateTime;

	xmlhttp = CreateXMLHttp();

	if (xmlhttp)
	{
		xmlhttp.open("POST", sURL, false);
		xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-13');
		var sPostVars = "";

		sField = "adv_firstname";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "adv_condition_firstname";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.options[oEle.selectedIndex].value + "&";
		}

		sField = "adv_lastname";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "adv_condition_lastname";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.options[oEle.selectedIndex].value + "&";
		}

		sField = "adv_nickname";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "adv_condition_nickname";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.options[oEle.selectedIndex].value + "&";
		}

		sField = "adv_birthplace";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "adv_condition_birthplace";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.options[oEle.selectedIndex].value + "&";
		}

		sField = "adv_deathplace";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "adv_condition_deathplace";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.options[oEle.selectedIndex].value + "&";
		}

		sField = "adv_birthyear_from";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "adv_birthyear_to";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "adv_birthyear_blank";
		oEle = document.getElementById(sField);
		if (oEle && oEle.checked)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "adv_deathyear_from";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "adv_deathyear_to";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "adv_deathyear_blank";
		oEle = document.getElementById(sField);
		if (oEle && oEle.checked)
		{
			sPostVars += oEle.name + "=" + oEle.value + "&";
		}

		sField = "adv_searchajaxfunction";
		oEle = document.getElementById(sField);
		if (oEle)
		{
			sPostVars += oEle.name + "=" + oEle.value;
		}
		xmlhttp.send(sPostVars);

		if (xmlhttp.readyState==4)
		{
			UpdateContent(xmlhttp.responseText, sDiv);
		}
	}
}

function AdvancedSearchForm()
{
	var currentTime = new Date()
	var DateTime = currentTime.getTime();
	var sTargetURL = '../main/genealogy/advanced_search.php?Now=' + DateTime;
	var sDiv = 'ajax_content';
	xmlhttp = CreateXMLHttp();

	if (xmlhttp)
	{	
		xmlhttp.open("GET", sTargetURL, false);
		xmlhttp.send(null);

		if (xmlhttp.readyState==4)
		{
			UpdateContent(xmlhttp.responseText, sDiv)
		}
	}
}

function findLeftEdge(oEle)
{
	var LeftEdge = 0;
	LeftEdge = findPosX(oEle);
	return LeftEdge;
}

function findMiddleY(oEle)
{
	var MiddleY = 0;
	MiddleY = findPosY(oEle);
	MiddleY += (oEle.offsetHeight / 2) + iYOffset;
	return MiddleY;
}

function findTopEdge(oEle)
{
	var TopEdge = 0;
	TopEdge = findPosY(oEle);
	return TopEdge;
}

function findPosX(obj)
{
	var curleft = 0;
	if(obj.offsetParent)
	{
		while(1)
		{
			curleft += obj.offsetLeft;
			if (!obj.offsetParent)
			{
				break;
			}
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
	{
		curleft += obj.x;
	}
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while(1)
		{
			curtop += obj.offsetTop;
			if(!obj.offsetParent)
			{
				break;
			}
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
	{
		curtop += obj.y;
	}
	return curtop;
}