
/* treeutils.js */
var $trees;if("undefined"==typeof TGN){$trees=YAHOO.namespace("Ancestry.Trees")}else{$trees=TGN.namespace("TGN.Ancestry.Trees")}$trees.res={resourceStrings:null,getString:function(a){var b=(null!=$trees.res.resourceStrings)?$trees.res.resourceStrings[a]:null;return(b)?b:"$$"+a},setString:function(a,b){if(!$trees.res.resourceStrings){$trees.res.resourceStrings={}}$trees.res.resourceStrings[a]=b}};$trees.content={objs:null,getObject:function(a){return(null!=$trees.content.objs)?$trees.content.objs[a]:null},setObject:function(a,b){if(!$trees.content.objs){$trees.content.objs={}}$trees.content.objs[a]=b},getPersonKey:function(b,a){return"person_"+a.toString()},setPerson:function(c,a,b){$trees.content.setObject($trees.content.getPersonKey(c,a),b)},getPerson:function(b,a){return $trees.content.getObject($trees.content.getPersonKey(b,a))},addPerson:function(h,o,a,d,b,q,f,e,g,k,p,n,c,j,i){var l=/"/g;k=k.replace(l,"'");var m={typ:h,rel:o,name:a,gname:d,sname:b,birth:q,birthPlace:f,death:e,deathPlace:g,linkUrl:k,imgUrl:p,gender:n,sid:c,pid:j,tid:i};$trees.content.setPerson(i,j,m);return m}};$trees.util={gotoTemplate:null,setGotoTemplate:function(a){$trees.util.gotoTemplate=a},gotoPerson:function(c,a){if($trees.util.gotoTemplate!=null&&a!=null){var b=$trees.util.gotoTemplate.replace("{t}",c).replace("{p}",a);window.location.href=b}},getShortName:function(b){if(b&&40<b.length){var a=[];a=b.split(" ");b=a[0].charAt(0)+" ";b+=a[a.length-1]}return b},getYearFromDate:function(a){var c="";if(a&&""!=a){var b=validDateSimple(a);if(0==b[0]){c=b[1]}}return c},imposeMaxLength:function(b,a){if(b.value.length>a){b.value=b.value.substring(0,a)}return true},htmlEncode:function(a){var c=document.createElement("div");var b=document.createTextNode(a);c.appendChild(b);return c.innerHTML},htmlDecode:function(a){var b=document.createElement("div");b.innerHTML=a.replace(/<\/?[^>]+>/gi,"");return b.childNodes[0]?b.childNodes[0].nodeValue:""}};
/* hints.js */
function hintHoverUpdate(g,f,d){var e=document.getElementById("hintsTitle"+d);var a=document.getElementById("hintRecordLink"+d);var c=document.getElementById("hintPersonaLink"+d);var b=document.getElementById("hintObjectLink"+d);if(a!=null&&c!=null&&b!=null){if(f){e.style.display="none";a.style.display="none";c.style.display="none";b.style.display="none"}}}function getIEVersion(){version=0;if(navigator.appVersion.indexOf("MSIE")!=-1){var a=navigator.appVersion.split("MSIE");version=parseFloat(a[1])}return version}function hintHover(){showPop("hintHoverDiv")}function hintOut(){hidePop("hintHoverDiv")}var hintURLArray=new Array("","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","");var hintPidArray=new Array("","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","");var hintURLArrayIndex=0;var hintRequestInProgress=false;var onHintRequestComplete=null;function OnHintComplete(m){hintRequestInProgress=false;var w=m.responseXML.documentElement;if(w!=null){var k=w.getElementsByTagName("personaCount")[0];if(k!=null){var n=k.firstChild.data;var i=parseInt(n);k=w.getElementsByTagName("pid")[0];if(k!=null){var l=k.firstChild.data;k=w.getElementsByTagName("recordCount")[0];if(k!=null){n=k.firstChild.data;var c=parseInt(n);k=w.getElementsByTagName("objectCount")[0];if(k!=null){n=k.firstChild.data;var e=parseInt(n);var s=document.getElementById("hintIcon"+l);var v=document.getElementById("hintWorkingIcon"+l);if(s!=null){s.style.display="none"}if(v!=null){v.style.display="none"}if((c>0||i>0)&&s!=null){s.style.display="inline"}var q=document.getElementById("hintRecordCount"+l);var a=document.getElementById("hintPersonaCount"+l);var h=document.getElementById("hintObjectCount"+l);var b=document.getElementById("hintStatus"+l);if(q!=null){q.value=c}if(a!=null){a.value=i}if(h!=null){h.value=e}if(b!=null){b.value=1}var j=document.getElementById("hintHover"+l);if(j==null){j=document.getElementById("hintHover");if(j!=null){l=""}}var t=document.getElementById("hintsTitle"+l);var f=document.getElementById("hintRecordLink"+l);var g=document.getElementById("hintPersonaLink"+l);var p=document.getElementById("hintObjectLink"+l);var u=document.getElementById("phSpan"+l);var d=document.getElementById("rhSpan"+l);var r=document.getElementById("ohSpan"+l);if(t!=null&&f!=null&&g!=null&&p!=null&&u!=null&&d!=null&&r!=null){if(c>0||i>0||e>0){t.style.display=""}else{t.style.display="none"}if(c>0){f.style.display="";d.innerHTML=c}else{f.style.display="none"}if(i>0){g.style.display="";u.innerHTML=i}else{g.style.display="none"}if(e>0){p.style.display="";r.innerHTML=e}else{p.style.display="none"}if(j!=null){if(c>0||i>0||e>0){j.style.display=""}else{j.style.display="none"}}}if(typeof onHintRequestComplete=="function"){onHintRequestComplete(l)}}}}}}initiateHintRequest()}function OnHintError(l){hintRequestInProgress=false;var u=l.responseXML.documentElement;if(u!=null){var q=u.getElementsByTagName("throttled")[0];var j=u.getElementsByTagName("pid")[0];if(j!=null){var k=j.firstChild.data;var d=0;var h=0;var f=0;var s=document.getElementById("hintWorkingIcon"+k);var p=document.getElementById("hintIcon"+k);var m=document.getElementById("hintRecordCount"+k);var a=document.getElementById("hintPersonaCount"+k);var g=document.getElementById("hintObjectCount"+k);var c=document.getElementById("hintStatus"+k);if(m!=null&&m.value.length>0){d=parseInt(m.value)}if(a!=null&&a.value.length>0){h=parseInt(a.value)}if(g!=null&&g.value.length>0){f=parseInt(g.value)}if(c!=null){c.value=1}var i=document.getElementById("hintHover"+k);if(i==null){i=document.getElementById("hintHover");if(i!=null){k=""}}else{var r=document.getElementById("phSpan"+k);var e=document.getElementById("rhSpan"+k);var n=document.getElementById("ohSpan"+k);h=parseInt(r.innerHTML.length>0?r.innerHTML:"0");d=parseInt(e.innerHTML.length>0?e.innerHTML:"0");f=parseInt(n.innerHTML.length>0?n.innerHTML:"0")}var t=d+h+f;if(s!=null){s.style.display="none"}if(p!=null){p.style.display=(t>0)?"":"none"}if(i!=null){i.style.display=(t>0)?"":"none"}if(q!=null){var b=document.getElementById("throttledMsgDiv");if(b!=null){b.style.display=""}}}}initiateHintRequest()}function addHintURL(c,b,a){hintURLArray[c]=b;hintPidArray[c]=a}function clearHintURL(){hintURLArray=new Array("","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","");hintPidArray=new Array("","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","");hintURLArrayIndex=0}function setOnHintRequestComplete(a){onHintRequestComplete=a}function initiateHintRequests(){initiateHintRequest()}function initiateHintRequest(){if(hintRequestInProgress==false){var b=hintURLArray[hintURLArrayIndex];while(hintURLArrayIndex<31&&b.length==0){hintURLArrayIndex++;b=hintURLArray[hintURLArrayIndex]}if(hintURLArrayIndex<31&&b.length>0){hintRequestInProgress=true;YAHOO.util.Connect.asyncRequest("GET",hintURLArray[hintURLArrayIndex],{success:OnHintComplete,failure:OnHintError});var c=document.getElementById("hintWorkingIcon"+hintPidArray[hintURLArrayIndex]);if(c!=null){c.style.display=""}var d=document.getElementById("hintIcon"+hintPidArray[hintURLArrayIndex]);if(d!=null){d.style.display="none"}var e=document.getElementById("hintHover"+hintPidArray[hintURLArrayIndex]);if(e!=null){e.style.display=""}var a=document.getElementById("hintStatus"+hintPidArray[hintURLArrayIndex]);if(a!=null){a.value=0}hintURLArrayIndex++}}};
/* validation.js */
var monthNamesAll=null;var monthAbbrs=null;var aboutAbbr=null;var beforeAbbr=null;var afterAbbr=null;var betweenAbbr=null;var conjunctionAbbr=null;var rangeAbbr=null;var unknown=null;var monthDayYearOrder=null;var warnDateYearTooBig=null;var warnDateTwoMonths=null;var warnDateDayWithoutMonth=null;var warnDateTwoDays=null;var warnDateTwoYears=null;var warnDateDayTooLarge=null;var warnDateMonthTooLarge=null;var warnDateInvalidMonth=null;var warnDateBirthBeforeMother=null;var warnDateBirthAfterMother=null;var warnDateBirthBeforeFather=null;var warnDateBirthAfterFather=null;var warnDateBirth120BeforeDeath=null;var warnDateDeath120AfterBirth=null;var warnDateBeforeBirth=null;var warnDateAfterDeath=null;var warnDateMayBeWrong=null;var warnStillUseIt=null;var warnOfTheSpouse=null;var badBirthDate=null;var badDeathDate=null;var badMarriageDate=null;var warnLastName=null;var warnNameFather=null;var warnNameMaiden=null;var invalidNameChars=null;var errorNameInvalidChar=null;function initValidationStrings(){monthNamesAll=[$trees.res.getString("g.monthNamesJan"),$trees.res.getString("g.monthNamesFeb"),$trees.res.getString("g.monthNamesMar"),$trees.res.getString("g.monthNamesApr"),$trees.res.getString("g.monthNamesMay"),$trees.res.getString("g.monthNamesJun"),$trees.res.getString("g.monthNamesJul"),$trees.res.getString("g.monthNamesAug"),$trees.res.getString("g.monthNamesSep"),$trees.res.getString("g.monthNamesOct"),$trees.res.getString("g.monthNamesNov"),$trees.res.getString("g.monthNamesDec")];monthAbbrs=[$trees.res.getString("g.monthAbbrsJan"),$trees.res.getString("g.monthAbbrsFeb"),$trees.res.getString("g.monthAbbrsMar"),$trees.res.getString("g.monthAbbrsApr"),$trees.res.getString("g.monthAbbrsMay"),$trees.res.getString("g.monthAbbrsJun"),$trees.res.getString("g.monthAbbrsJul"),$trees.res.getString("g.monthAbbrsAug"),$trees.res.getString("g.monthAbbrsSep"),$trees.res.getString("g.monthAbbrsOct"),$trees.res.getString("g.monthAbbrsNov"),$trees.res.getString("g.monthAbbrsDec")];aboutAbbr=$trees.res.getString("g.dateAboutAbbr");beforeAbbr=$trees.res.getString("g.dateBeforeAbbr");afterAbbr=$trees.res.getString("g.dateAfterAbbr");betweenAbbr=$trees.res.getString("g.dateBetweenAbbr");conjunctionAbbr=$trees.res.getString("g.dateConjunctionAbbr");rangeAbbr=$trees.res.getString("g.dateRangeAbbr");unknown=$trees.res.getString("g.unknown");monthDayYearOrder=$trees.res.getString("g.monthDayYearOrder");warnDateYearTooBig=$trees.res.getString("g.warnDateYearTooBig");warnDateTwoMonths=$trees.res.getString("g.warnDateTwoMonths");warnDateDayWithoutMonth=$trees.res.getString("g.warnDateDayWithoutMonth");warnDateTwoDays=$trees.res.getString("g.warnDateTwoDays");warnDateTwoYears=$trees.res.getString("g.warnDateTwoYears");warnDateDayTooLarge=$trees.res.getString("g.warnDateDayTooLarge");warnDateMonthTooLarge=$trees.res.getString("g.warnDateMonthTooLarge");warnDateInvalidMonth=$trees.res.getString("g.warnDateInvalidMonth");warnDateBirthBeforeMother=$trees.res.getString("g.warnDateBirthBeforeMother");warnDateBirthAfterMother=$trees.res.getString("g.warnDateBirthAfterMother");warnDateBirthBeforeFather=$trees.res.getString("g.warnDateBirthBeforeFather");warnDateBirthAfterFather=$trees.res.getString("g.warnDateBirthAfterFather");warnDateBirth120BeforeDeath=$trees.res.getString("g.warnDateBirth120BeforeDeath");warnDateDeath120AfterBirth=$trees.res.getString("g.warnDateDeath120AfterBirth");warnDateBeforeBirth=$trees.res.getString("g.warnDateBeforeBirth");warnDateAfterDeath=$trees.res.getString("g.warnDateAfterDeath");warnDateMayBeWrong=$trees.res.getString("g.warnDateMayBeWrong");warnStillUseIt=$trees.res.getString("g.warnStillUseIt");warnOfTheSpouse=$trees.res.getString("g.warnOfTheSpouse");badBirthDate=$trees.res.getString("g.badBirthDate");badDeathDate=$trees.res.getString("g.badDeathDate");badMarriageDate=$trees.res.getString("g.badMarriageDate");warnLastName=$trees.res.getString("g.warnLastName");warnNameFather=$trees.res.getString("g.warnNameFather");warnNameMaiden=$trees.res.getString("g.warnNameMaiden");invalidNameChars=$trees.res.getString("g.invalidNameCharsJS");errorNameInvalidChar=$trees.res.getString("g.errorNameInvalidChar")}function validDate(g,e,b,h,a,i,d,k,j){var n=g.toLowerCase();var f=false;var m;var l=[0,""];if(n.length>0){if(n.indexOf(unknown.toLowerCase())>=0){n=""}if(!isDigit(n.charAt(0))){var c=parseModifier(n,aboutAbbr);if(c.length<n.length){n=c}else{c=parseModifier(n,beforeAbbr);if(c.length<n.length){n=c}else{c=parseModifier(n,afterAbbr);if(c.length<n.length){n=c}else{if(j){c=parseModifier(n,betweenAbbr);if(c.length<n.length){n=c;f=true}}}}}}if(j){if(f){m=new Array(2);m=splitDateRange(n,true)}else{m=new Array(2);m=splitDateRange(n,false)}if(m[0].length>0&&m[1].length>0){l=validDate(m[0],e,b,h,a,i,d,k);if(l[0]==0){l=validDate(m[1],e,b,h,a,i,d,k)}return l}}l=validateDate(n);if(l[0]==0&&l[1].length>0&&e.length>0){l[0]=checkDates(l[1],l[2],l[3],e,b,h,a,i,d,k)}if(l[0]!=0){l[1]=getWarning(l[0])}}return l}function getWarning(a){switch(a){case 1:return warnDateYearTooBig;case 2:return warnDateTwoMonths;case 3:return warnDateDayWithoutMonth;case 4:return warnDateTwoDays;case 5:return warnDateTwoMonths;case 6:return warnDateTwoYears;case 7:return warnDateDayTooLarge;case 8:return warnDateMonthTooLarge;case 9:return warnDateInvalidMonth;case 101:return warnDateBirthBeforeMother;case 102:return warnDateBirthAfterMother;case 103:return warnDateBirthBeforeFather;case 104:return warnDateBirthAfterFather;case 105:return warnDateBirth120BeforeDeath;case 106:return warnDateDeath120AfterBirth;case 107:return warnDateBeforeBirth;case 108:return warnDateAfterDeath;default:return""}}function splitDateRange(a,e){var c=new Array(2);c[0]="";c[1]="";var g=(e)?conjunctionAbbr:rangeAbbr;var d=g.split("|");for(var b=0;b<d.length;b++){var f=d[b];var h=a.indexOf(f);if(h>0&&a.length>h+f.length){if(a.indexOf(f,h+1)==-1&&(!isLetter(a.charAt(h))||!isLetter(a.charAt(h-1)))&&(!isLetter(a.charAt(h+f.length))||!isLetter(a.charAt(h+f.length-1)))){c[0]=a.substring(0,h);c[1]=a.substring(h+f.length)}}}return c}function validDateOwt(a){return validDate(a,"","","","","","","",false)}function validDateSimple(a){return validDate(a,"","","","","","","",true)}function validateDate(a){var h=new Array(4);var b=getTokens(a);var s=new Array();var p=new Array();var j=0;var n=new Array();var l=0;var e=0;var r=0;var k=false;var m=new Date();var q=m.getFullYear();b=stripDayModifier(b);for(var g=0;g<b.length;g++){var c=b[g];if(isDigit(c.charAt(0))){if(c<=31){s.push(c)}if(c<=12){p.push(c)}if(c<=q){if(s.length==0&&p.length==0){k=true}n.push(c)}else{h[0]=1;return h}}else{var o=monthTextToNumber(c.toLowerCase());if(o>0){if(j>0){h[0]=2;return h}j=o}else{h[0]=9;return h}}}if(j>0){l=j;p.length=0}else{if(p.length==1){l=p[0];removeItem(s,l);removeItem(n,l)}}if(s.length==1){e=s[0];removeItem(n,e);if(l==0){h[0]=3;return h}}else{if(s.length>1){switch(s.length){case 2:if(p.length==2){l=p[0];e=s[1];if(l!=e&&monthDayYearOrder.indexOf("D")<monthDayYearOrder.indexOf("M")&&(k==false||monthDayYearOrder.indexOf("Y")==0)){var f=e;e=l;l=f}s[0]=e;s.length=1;removeItem(n,e);p[0]=l;p.length=1;removeItem(n,l)}else{if(n.length==2){e=s[0];if(monthDayYearOrder.indexOf("Y")<monthDayYearOrder.indexOf("D")){e=s[1];s[0]=e}s.length=1;removeItem(n,e)}else{h[0]=4;return h}}break;case 3:if(n.length==3&&p.length==0){e=s[monthDayYearOrder.indexOf("D")];l=s[monthDayYearOrder.indexOf("M")];n[0]=s[monthDayYearOrder.indexOf("Y")];n.length=1;p[0]=l;p.length=1;s[0]=e;s.length=1}break;default:h[0]=4;return h}}}if(p.length>1){h[0]=5;return h}if(n.length==1){r=n[0]}else{if(n.length>1){if(s.length==0){if(p.length==0){h[0]=6;return h}else{h[0]=7;return h}}else{if(j==0&&p.length==0){h[0]=8;return h}else{h[0]=6;return h}}}}if(l>0&&e>0){if(!isDayInBounds(l,e,r)){h[0]=7;return h}}h[0]=0;if(n.length>0){h[1]=r}else{h[1]=""}h[2]=l;h[3]=e;return h}function stripDayModifier(c){var a=new Array();for(var b=0;b<c.length;b++){if(!isLetter(c[b].charAt(0))){a.push(c[b])}else{if(isLetter(c[b].charAt(0))&&c[b].length>2){a.push(c[b])}else{if(c[b]!="th"&&c[b]!="nd"&&c[b]!="rd"&&c[b]!="st"&&c[b].length>2){a.push(c[b])}}}}return a}function monthTextToNumber(d){var c=0;for(var b=0;b<12;b++){var f=monthAbbrs[b].split(":");for(var a=0;a<f.length;a++){if(d==f[a]){return b+1}}var e=":"+d;if(monthNamesAll[b].indexOf(e)>=0){if(c>0){return 0}c=b+1}}return c}function parseModifier(e,b){var d=e.toLowerCase();var a=b.split("|");for(var c=0;c<a.length;c++){if(d.substring(0,a[c].length+1)==a[c]+" "){return e.substring(a[c].length+1)}}return e}function checkDates(k,j,m,d,b,e,a,f,c,g){var l=null;var i=null;var h=null;var n=null;if(d=="birth"){if(a!=null&&a.length>0){n=validateDate(a);if(n[0]==0&&n[1].length>0){if(k<(parseInt(n[1])+15)){return 101}}}if(f!=null&&f.length>0){n=validateDate(f);if(n[0]==0&&n[1].length>0){if(k>(parseInt(n[1]))){return 102}}}if(c!=null&&c.length>0){h=validateDate(c);if(h[0]==0&&h[1].length>0){if(k<parseInt(h[1])+17){return 103}}}if(g!=null&&g.length>0){h=validateDate(g);if(h[0]==0&&h[1].length>0){if(k>(parseInt(h[1])+1)){return 104}}}if(i==null&&e!=null&&e.length>0){i=validateDate(e)}if(i!=null&&i[0]==0&&i[1].length>0){if(k<parseInt(i[1])-120){return 105}}}else{if(l==null&&b!=null&&b.length>0){l=validateDate(b)}if(d=="death"){if(l!=null&&l[0]==0&&l[1].length>0){if(k>parseInt(l[1])+120){return 106}}}if(l!=null&&l[0]==0){if(dateCompare(k,j,m,l[1],l[2],l[3])==-1){return 107}}}if(d!="death"&&d!="burial"&&d!="cremation"){if(i==null&&e.length>0){i=validateDate(e)}if(i!=null&&i[0]==0){if(dateCompare(k,j,m,i[1],i[2],i[3])==1){return 108}}}return 0}function dateCompare(c,a,f,b,e,d){if(c!=null&&c.length>0&&b!=null&&b.length>0){if(parseInt(c)<parseInt(b)){return -1}else{if(parseInt(c)>parseInt(b)){return 1}else{if(a!=null&&a>0&&e!=null&&e>0){if(parseInt(a)<parseInt(e)){return -1}else{if(parseInt(a)>parseInt(e)){return 1}else{if(f!=null&&f.length>0&&d!=null&&d.length>0){if(parseInt(f)<parseInt(d)){return -1}else{if(parseInt(f)>parseInt(d)){return 1}else{return 0}}}}}}}}}return 0}function getTokens(h){var b=new Array();var f="";var a=false;var g=false;var e=" /-.,:;";for(var d=0;d<h.length;d++){var j=h.charAt(d);if(isDigit(j)){if(!g){f+=j}else{b.push(f);f=j;g=false}a=true}else{if(e.indexOf(j)!=-1){if(f.length>0){b.push(f);f="";g=false;a=false}}else{if(!a){f+=j}else{b.push(f);f=j;a=false}g=true}}}if(f.length>0){b.push(f)}return b}function isDigit(a){if(a<"0"||a>"9"){return false}return true}function isLetter(a){if(a>="a"&&a<="z"){return true}else{if(a>="A"&&a<="Z"){return false}}}function removeItem(d,c){for(var b=0;b<d.length;b++){if(d[b]==c){for(var a=b;a<d.length-1;a++){d[a]=d[a+1]}d.length--}}return d}function isDayInBounds(d,a,c){if(a<1){return false}switch(d){case 4:case 6:case 9:case 11:return(a<=30);case 2:var b=29;if(c>0){if(c%4!=0){b=28}else{if(c%400==0){b=29}else{if(c%100==0){b=28}}}}return(a<=b);default:return(a<=31)}}function checkForInvalidChar(b){for(var a=0;a<b.length;a++){if(invalidNameChars.indexOf(b.charAt(a))>=0){return b.charAt(a)}}return""}function validateSurname(e,d,a){var c=e.toLowerCase();var b=d.toLowerCase();var f=a.toLowerCase();if(b.length>0){if(c!=b){if(nameMatch(c,f)){return warnNameMaiden}else{return warnNameFather}}}else{if(nameMatch(c,f)){return warnNameMaiden}}return""}function nameMatch(a,d){if(a.length>0){var c=d.split(";");for(var b=0;b<c.length;b++){if(a==c[b]){return true}}}return false};
/* AJAX.js */
function AJAXObject()
{
  this.XmlHttp = this.GetXMLHttpObject();
}
 
AJAXObject.prototype.GetXMLHttpObject = function()
{ 
  var xmlhttp;
  /*@cc_on
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
    }
  @else
  xmlhttp = false;
  @end @*/
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined'){
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
    }
  }
  return xmlhttp;
}
 
AJAXObject.prototype.InitiateAsyncRequest =  function(url)
{
  if( this.XmlHttp )
  {
    if( this.XmlHttp.readyState == 4 || this.XmlHttp.readyState == 0 )
    {
      var oThis = this;
      this.XmlHttp.open('GET', url, true);
      this.XmlHttp.onreadystatechange = function()
                                        { oThis.ReadyStateChange(); };
      this.XmlHttp.setRequestHeader('Content-Type', 
                                 'application/x-www-form-urlencoded');
      this.XmlHttp.send(null);
    }
  }
}
 
AJAXObject.prototype.AbortRequest = function()
{
  if( this.XmlHttp )
    this.XmlHttp.abort();
}
 
AJAXObject.prototype.OnLoading = function()
{
  // Loading
}
 
AJAXObject.prototype.OnLoaded = function()
{
  // Loaded
}
 
AJAXObject.prototype.OnInteractive = function()
{
  // Interactive
}
 
AJAXObject.prototype.OnComplete = 
                   function(responseText, responseXml)
{
  // Complete
}
 
AJAXObject.prototype.OnAbort = function()
{
  // Abort
}
 
AJAXObject.prototype.OnError = 
                         function(status, statusText, responseText, responseXml)
{
	// Error
}
 
AJAXObject.prototype.ReadyStateChange = function()
{
  if( this.XmlHttp.readyState == 1 )
  {
    this.OnLoading();
  }
  else if( this.XmlHttp.readyState == 2 )
  {
    this.OnLoaded();
  }
  else if( this.XmlHttp.readyState == 3 )
  {
    this.OnInteractive();
  }
  else if( this.XmlHttp.readyState == 4 )
  {
    if( this.XmlHttp.status == 0 )
    {
      this.OnAbort();
    }
    else if( this.XmlHttp.status == 200)
	{
      this.OnComplete(this.XmlHttp.responseText, this.XmlHttp.responseXML);
	}
    else
    {
      this.OnError(this.XmlHttp.status, this.XmlHttp.statusText, this.XmlHttp.responseText, this.XmlHttp.responseXML);
    }
  }
}


/* hoverbox.js */
var $NS = YAHOO.namespace('hover');

var hoverInfoArray = new Array();
var hoverStoryArray = new Array();
var hoverAudioArray = new Array();
var hoverVideoArray = new Array();

var initHover = function() {
    $NS.hoverbox = new YAHOO.widget.Overlay("hoverbox", {
        visible: false,
        zIndex: 9999,
        width: "300px",
        //effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.5},
        //constraintoviewport:true,
        iframe: false,
        monitorresize: false
    });
    // These 3 lines that set the header, body and footer are done so that the hoverbox gets initialized
    // properly.  Otherwise, the first time it is rendered by the user hovering over an image, the height
    // does not get calculated correctly, and if it should be re-positioned upward because the image being
    // hovered over is at the bottom of the viewport, that doesn't happen the first time the user hovers.
    $NS.hoverbox.setHeader("title");
    $NS.hoverbox.setBody("addedby");
    $NS.hoverbox.setFooter("desc");

    var rendered = $NS.hoverbox.render(document.body);
};

var onHover = function(type, el, idx) {
	if ($NS.hoverbox != undefined) {
		var hoverArray;
		switch (type) {
			case 'audio':
				hoverArray = hoverAudioArray;
				break;
			case 'video':
				hoverArray = hoverVideoArray;
				break;
			case 'application':
				hoverArray = hoverStoryArray;
				break;
			case 'photo':
			default:
				hoverArray = hoverInfoArray;
				break;
		}
		var knob = "knob-lt";
		var hoverLeft = YAHOO.util.Dom.getX(el) + el.offsetWidth + 8;
		var viewWidth = YAHOO.util.Dom.getViewportWidth() + document.documentElement.scrollLeft;
		if ((hoverLeft + 240) > viewWidth) {
			hoverLeft = hoverLeft - 322 - 8 * 2 - el.offsetWidth - 1;
			knob = "knob-rt";
		}
		$NS.hoverbox.setHeader("<span class=\"" + knob + "\"></span><h4>" + hoverArray[idx].name + "</h4>");

		var bodySection = '';
		// set the "added by" - using the body
		if (hoverArray[idx].addedby != undefined) {
			bodySection = hoverArray[idx].addedby;
		}

		// set the description
		if (hoverArray[idx].desc != undefined) {
			var desc = hoverArray[idx].desc.substring(0, 200);
			if (desc.length < hoverArray[idx].desc.length) desc += "...";
			bodySection = bodySection + '<br /><br />' + desc;
		}
		$NS.hoverbox.setBody(bodySection);

		// use the footer for community type information
		var footerSection = '';
		if (hoverArray[idx].copied != undefined) {
			// list other users who copied this object to their tree
			footerSection = hoverArray[idx].copied.title;
			var copiers = hoverArray[idx].copied.copiers;
			for (var i = 0; i < copiers.length; i++) {
				footerSection += "<br />" + copiers[i];
			}
			if (hoverArray[idx].copied.more != undefined) {
				footerSection += "<br />" + hoverArray[idx].copied.more;
			}
		}
		if (hoverArray[idx].comments != undefined) {
			footerSection += "<br />" + hoverArray[idx].comments;
		}
		$NS.hoverbox.setFooter(footerSection);

		var hoverTop = YAHOO.util.Dom.getY(el) + 10;
		var viewHeight = YAHOO.util.Dom.getViewportHeight() + document.documentElement.scrollTop;
		var hoverHeight = document.getElementById("hoverbox").offsetHeight;

		var overlap = (hoverTop + hoverHeight) - viewHeight;
		if (overlap > 0) {
			hoverTop = viewHeight - hoverHeight - 8;
			if (overlap > 20) {
				knob = knob.substring(0, knob.length - 1) + "b"; // switch the knob to the bottom
				$NS.hoverbox.setHeader("<span class=\"" + knob + "\"></span><h4>" + hoverArray[idx].name + "</h4>");
			}
		}

		$NS.hoverbox.cfg.setProperty("xy", [hoverLeft, hoverTop]);
		$NS.hoverbox.render(document.body);
		$NS.hoverbox.cfg.setProperty("visible", true);

		//Deal with setting up mouseover and mouseout to hoverbox
		removeListnr();
		hoverBoxLstnr();
	}
};

var hoverboxitem = null;
var version = navigator.userAgent;
var findIE7 = version.indexOf('MSIE 7');

var hoverBoxLstnr = function() {
    hoverboxitem = document.getElementById('hoverbox');

    if (hoverboxitem != null) {
        if (findIE7 != -1) {
            clearHoverboxTimer();
            hoverboxitem.setAttribute("onmouseover", "javscript:clearHoverboxTimer();");
            hoverboxitem.setAttribute("onmouseout", "javscript:clearHoverboxTimer();javscript:hoverboxTimeout();");
            hoverboxitem.onmouseover = "javscript:clearHoverboxTimer();";
            hoverboxitem.onmouseout = "javscript:clearHoverboxTimer();javscript:hoverboxTimeout();";

            YAHOO.util.Event.addListener("hoverbox", "mouseover", clearHoverboxTimer);
//            YAHOO.util.Event.addListener(document, "mousedown", offHover);
            YAHOO.util.Event.addListener("hoverbox", "mouseout", hoverboxTimeout);
        }
        else {
            hoverboxitem.setAttribute("onmouseover", "javscript:clearHoverboxTimer();");
            hoverboxitem.setAttribute("onmouseout", "javscript:clearHoverboxTimer();javscript:hoverboxTimeout();");
        }

        hoverboxitem.style.zIndex = "9999";
    }
};

var removeListnr = function() {
    if (findIE7 != -1) {
        YAHOO.util.Event.removeListener("hoverbox", "mouseover", clearHoverboxTimer);
        YAHOO.util.Event.removeListener("hoverbox", "mouseout", hoverboxTimeout);
    }
    hoverboxitem = null;
};

var offHover = function() {
    removeListnr();
    if ($NS.hoverbox != undefined) {
        $NS.hoverbox.cfg.setProperty("visible", false);
    }
};

var timerHB = 0;

var clearHoverboxTimer = function() {
    if (timerHB != 0 && timerHB != null) {
        clearTimeout(timerHB);
        timerHB = 0;
        if ($NS.hoverbox != undefined) {
            $NS.hoverbox.cfg.setProperty("visible", true);
        }
    }
};

var hoverboxTimeout = function() {
    timerHB = setTimeout(function() {
        removeListnr();
        if ($NS.hoverbox != undefined) {
            $NS.hoverbox.cfg.setProperty("visible", false);
        }
    }, 750);
};
/* carouselHelper.js */
TreesCarousel=function(a){this.init(a);initHover()};var imageTagIdx=1;TreesCarousel.prototype={init:function(a){this.ajaxHandler=a.ajaxHandler;this.ajaxParams=a.ajaxParams!=undefined?a.ajaxParams:"";this.type=a.type;this.treeId=a.treeId;this.personId=a.personId;this.userId=a.userId;this.userName=a.userName;this.ancestryDomain=a.ancestryDomain;this.treesDomain=a.treesDomain;this.currPgArgs=a.currPgArgs;this.rightArrow=a.rightArrow;this.rightArrowDisabled=a.rightArrowDisabled;this.leftArrow=a.leftArrow;this.leftArrowDisabled=a.leftArrowDisabled;this.storyIcon=a.storyIcon;this.audioIcon=a.audioIcon;this.videoIcon=a.videoIcon;this.showTitle=a.showTitle;this.addPhotoImg=a.addPhotoImg;this.addPhotoUrl=a.addPhotoUrl;this.viewId=a.viewId;this.isReadonly=a.isReadonly;this.totalCount=a.totalCount;this.maxCount=a.maxCount;this.useIndex=a.useIndex!=undefined?a.useIndex:true;this.canGetMore=a.canGetMore!=undefined?a.canGetMore:false;this.includeTitle=a.includeTitle!=undefined?a.includeTitle:false;this.showViewAll=a.showViewAll!=undefined?a.showViewAll:false}};function getObjects(carousel,carouselData,begIndex){var begVal=(typeof begIndex!="undefined")?begIndex:1;var sUrl="/"+carouselData.ajaxHandler+"?typ="+carouselData.type+"&tid="+carouselData.treeId+"&pid="+carouselData.personId+"&uid="+carouselData.userId+"&unm="+carouselData.userName+"&beg="+begVal+"&num="+carouselData.maxCount+"&sva="+carouselData.showViewAll;YAHOO.util.Connect.asyncRequest("GET",sUrl,{success:function(o){var i,r=eval("("+o.responseText+")");var numRetrieved=r.whatsnew.objects.length;var numPreviouslyRetrieved=carousel.get("numItems");objectsCarousel.set("numItems",(numPreviouslyRetrieved+numRetrieved));if(typeof objectsCarousel!="undefined"){if(typeof objectsQueue=="undefined"){objectsQueue=new carouselObjectsQueue()}for(i=0;i<numRetrieved;i++){var item=r.whatsnew.objects[i];if(numPreviouslyRetrieved==0&&i<objectsCarousel.get("numVisible")){var el=fmtInnerHTML(item,carouselData);objectsCarousel.addItem(el)}else{objectsQueue.add(item)}switch(item.type){case"audio":hoverArray=hoverAudioArray;break;case"video":hoverArray=hoverVideoArray;break;case"application":hoverArray=hoverStoryArray;break;case"photo":default:hoverArray=hoverInfoArray;break}item.idx=parseInt(item.idx)+parseInt(numPreviouslyRetrieved);hoverArray[item.idx]=item}objectsCarousel.set("selectedItem",0)}},failure:function(o){}})}function fmtInnerHTML(m,j){var f="";var k="";var b="";var d='class="withLabel"';var e=(m.label!=null&&m.label.length>0)?'<div class="imgText">'+m.label+"</div>":"";switch(m.type){case"image":var l="&oid="+m.oid;f="/pt/ViewPhoto.aspx";k="http://"+j.treesDomain+f+"?tid="+m.tid+"&pid="+m.pid+l+j.currPgArgs;if(j.useIndex){k+="&idx="+m.idx}if(j.viewId!=undefined){k+="&vid="+photoTreesCarousel.viewId}b=m.url;d="";break;case"audio":f="/pt/ViewAudio.aspx";k="http://"+j.treesDomain+f+"?tid="+m.tid+"&pid="+m.pid+"&oid="+m.oid+j.currPgArgs;b=j.audioIcon;e=(m.label!=null&&m.label.length>0)?'<div class="imgText audioLabel">'+m.label+"</div>":"";break;case"video":f="/pt/Video/ViewVideo.aspx";k="http://"+j.treesDomain+f+"?tid="+m.tid+"&pid="+m.pid+"&oid="+m.oid+j.currPgArgs;b=j.videoIcon;e=(m.label!=null&&m.label.length>0)?'<div class="imgText videoLabel">'+m.label+"</div>":"";break;case"application":f="/pt/ViewStory.aspx";k="http://"+j.treesDomain+f+"?tid="+m.tid+"&pid="+m.pid+"&oid="+m.oid+j.currPgArgs;b=j.storyIcon;break;case"link":k=m.link;d="";break}var a="<a "+d+' href="'+k+'">';var g="";if(b.length>0){g='<span id="imageTag'+imageTagIdx+'" onmouseover="javascript:onHover(\''+m.type+"', this, '"+m.idx+'\');javascript:clearHoverboxTimer();" onmouseout="javascript:hoverboxTimeout();" style="background-image: url('+b+');" >'+e+"</span>"}else{g='<div class="justTextDiv"><div class="justText">'+m.name+"</div></div>";m.name=""}var h='<div class="actImage largeImg couterdiv">'+a+g+"</a></div>";imageTagIdx++;var c="";if(j.includeTitle){var i=m.name;if(i.length>15){i=i.substring(0,13)+"..."}c='<div class="thumb-title"><span>'+i+"</span></div>"}return h+c}var objectsQueue;function carouselObjectsQueue(){this.queue=new Array();this.add=addObjectToQueue;this.getObj=getFirstObject;this.len=getLength}function addObjectToQueue(a){this.queue.push(a)}function getFirstObject(){return this.queue.shift()}function getLength(){return this.queue.length}function loadFromQueue(g,f){var d=g.get("numVisible");var a=objectsQueue.len();if(a>0){for(var b=0;b<d&&b<a;b++){var e=objectsQueue.getObj();if(e!=undefined){var c=fmtInnerHTML(e,f);g.addItem(c)}}}if(f.canGetMore){a=objectsQueue.len();var h=g.get("numItems");if(a<=d&&h<f.totalCount){getObjects(g,f,h+1)}}};