// JavaScript Document

var img_path = '/images/';
var streems = $$('div.streem');
var thumbnails = $$('img.streem_thumbnail');
var thumbnail_frame = img_path+'/streem_thumbnail_overlay.png';
var language_code = $$('meta[name="language_code"]')[0].content;


/* /////////////////////////////////// PRELOAD COMMON IMAGES /////////////////////////////////// */

function loadImage(vName,vWidth,vHeight,vSource) {
	var vName = new Image(vWidth,vHeight); vName.src = vSource;
}

function preLoadImages() {
	loadImage("header_bg_01",1,32,"/images/header_bg_01.png");
}


//Macromedia Functions

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


// Custom Functions

function streem_toolbar_toggle(target_div,state) {
	var toolbar = $$('#'+ target_div +' .streem_heading_toolbar')[0];
	switch (state) {
		case "show" : toolbar.show(); break
		case "hide" : toolbar.hide(); break
	}
}

function toolbar_toggle(state,content) {
	var toolbar = $('toolbar');
	var toolbar_item_hide = function() {
		var toolbar_items = $$('div.toolbar_item_buttons');
		for (i=0; i<toolbar_items.length; i++) {
			toolbar_items[i].hide();
		}
	}
	switch (state) {
		case "show" :
			if ($('toolbar_'+ content +'').style.display == 'none') {
				toolbar_item_hide();
				$('toolbar_'+ content +'').show();
				Effect.BlindDown(toolbar, { duration: 0.75 });
			}
		break
		case "hide" : 
			Effect.BlindUp(toolbar, { duration: 0.75 });
			setTimeout(toolbar_item_hide,1200);
		break
	}
}

function toolbar_contacts_init(context) {
	
	$('li_contact_list').innerHTML = '';
	
	var contacts = $$('li.toolbar_contact','li.toolbar_network');
	for (i=0; i<contacts.length; i++) {
		switch(context) {
			case "checkbox" :
				contacts[i].onclick = function() { 
					toolbar_contacts_checkbox_toggle(this.id);
				};
			break
			case "browse" :
			break
		}
		disable_selection($(contacts[i].id));
	}
	
	
	var contact_names = $$('#myaccount_contact_list li.myaccount_contact');
	for (i=0; i<contact_names.length; i++) {
		disable_selection(contact_names[i]);
		switch(context) {
			case "update" :
				if($('myaccount_contact_list')) {
					contact_names[i].onclick = function() {
						contact_edit_toolbar('update_myaccount');
						contact_update(this.id,'prep');
						myaccount_contact_highlight(this.id);
					};
				} else {
					contact_names[i].onclick = function() {
						contact_edit_toolbar('update'); 
						contact_update(this.parentNode.id,'prep');
						toolbar_contacts_checkbox_toggle(this.parentNode.id);
					};
				}
			break
			case "reset" :
				contact_names[i].onclick = function() { };
			break
		}
	}
	
	disable_selection($('toolbar_contacts'));
	
}

function toolbar_contacts_all(check_type) {
	var contacts = $$('li.toolbar_contact');
	for (i=0; i<contacts.length; i++) {
		switch (check_type) {
			case ('check') :
				contacts[i].removeClassName('list_item_unchecked');
				contacts[i].addClassName('list_item_checked');
			break
			case ('uncheck') :
				contacts[i].removeClassName('list_item_checked');
				contacts[i].addClassName('list_item_unchecked');
			break
		}
	}
}

function toolbar_contacts_checkbox_toggle(target) {
	if ($(target).hasClassName('list_item_checked') == true) {
		$(target).removeClassName('list_item_checked');
		$(target).addClassName('list_item_unchecked');
		
	}
	else {
		$(target).addClassName('list_item_checked');
		$(target).removeClassName('list_item_unchecked');
	}
}

function streems_hide(exception) {
	var streems = $$('div.streem');
	for (i=0; i<streems.length; i++) {
		if (streems[i].id != exception) {
			Effect.BlindUp(streems[i], { duration: 0.25 });
		}
	}
}

function network_edit(stage,target) {
	var edit_form = $$('#'+ target +' div.network_edit')[0];
	switch (stage) {
		case "show":
			if (edit_form.style.display == 'none') {
				Effect.Grow(edit_form, { duration: 0.25, direction: 'top-left' });
			}
		break
		case "hide":
			if (edit_form.style.display != 'none') {
				Effect.Shrink(edit_form, { duration: 0.25, direction: 'top-left' });
			}
		break
		case "update":
		break
	}
}

function streems_show(exception) {
	var streems = $$('div.streem');
	for (i=0; i<streems.length; i++) {
		if (streems[i].style.display == 'none') {
			Effect.BlindDown(streems[i], { duration: 0.25 });
		}
	}
}

function streem_collect_ids(target_streem,type) {
	// update for revised thumbnail layout
	var thumbnails = $$('#'+ target_streem +' div.streem_thumbnail_container');
	//var thumbnails = $$('#'+ target_streem +' img.streem_thumbnail');
	var share_ids = new Array;
	for (i=0; i<thumbnails.length; i++) {
		// Ignore unchecked thumbnails
		var thumb_id = thumbnails[i].getAttribute('photoid');
		//var overlay = $('overlay_'+ thumb_id +'');
		//if (!overlay.src.match('streem_thumbnail_overlay_unchecked')) {
		switch(type) {
			case "unchecked" :
				if (thumbnails[i].innerHTML.match('streem_thumbnail_overlay_unchecked')) {
					share_ids.push(thumb_id);
				}
			break
			default :
				if (!thumbnails[i].innerHTML.match('streem_thumbnail_overlay_unchecked')) {
					var thumbnail_rotation = $('rotate_'+ thumb_id +'').getAttribute('rotation');
					if (thumbnail_rotation) { thumb_id = thumb_id+'-'+thumbnail_rotation; }
					share_ids.push(thumb_id);
				}
			break
		}
	}
	//alert(share_ids);
	return share_ids;
	
}

function toolbar_collect_contacts() {
	var contacts = $$('#toolbar_contacts li.toolbar_contact.list_item_checked');
	var contact_ids = new Array;
	for (i=0; i<contacts.length; i++) {
		contact_ids.push(contacts[i].id.replace(/contact_/,''));
	}
	return contact_ids;
}

// I can limit number of new photos requested from Cliff
// I will wait until all new photos are rendered in the browser before going back to Cliff and asking for more
// I will report the number I'm at (out of the total number of photos) when asking Cliff for new photos

// I will keep track of the total number of photos and the current iteration in a seperate object
// I can load the new photos into an array
// Render the new photos 1 at a time
// init onclick functions for photo
// After finish delete object from array
// When array is empty ask Cliff for more photos

var streem_photo_data_object = new Object;
var streem_photo_count_object = new Object;
var streem_photo_ids = new Array;
var share_new_loader = '';

function streem_share_new() {
	
	new Ajax.Request('/json/share_list', {
		method : "post",
		onSuccess : function (transport) {
			$('loading_table').hide();
			$('streem_new_share').appear({ duration: 0.5});
		},
		onFailure : function(transport) { ajax_error_message(); },
		onComplete : function(transport) {
			var ajax_response = transport.responseText.evalJSON();
			//streem_share_load_photos(ajax_response);
			streem_photo_data_object = ajax_response;
			streem_photo_count_object = {
				total_results : ajax_response.photos_ready,
				remaining : ajax_response.photos_remaining,
				current_photo_count : 0
			}
			
			share_new_loader = setInterval('streem_share_new_progressive_loader()', 100);
			
			
		}	
		
	});

}

function streem_share_new_progressive_loader() {
	
	if (streem_photo_count_object.current_photo_count < streem_photo_count_object.total_results) {
		streem_photo_count_object.current_photo_count++;
		var current_photo_count = streem_photo_count_object.current_photo_count;
		
		var photo_id = eval('streem_photo_data_object.photos.photo_'+ streem_photo_count_object.current_photo_count +'.photo_id');
		var photo_duplicate = false;
		
		if (streem_photo_ids) {
			for (i=0; i<streem_photo_ids.length; i++) {
				if (streem_photo_ids[i] == photo_id) {
					photo_duplicate = true;
				}
			}
		}
		if (photo_duplicate == false) {
			streem_photo_ids.push(photo_id);
			streem_share_load_photos(current_photo_count);
		}
		
	} else {
		clearInterval(share_new_loader);
		if (streem_photo_ids) {
			if (streem_photo_count_object.remaining > 0) {
				streem_share_new();
				
			} 
			else { 
				//streem_photo_ids.length = 0;
				streem_share_new();
			}
		}
	}
}

function streem_share_load_photos(current_photo_count) {
	
	if ($('streem_new_share').style.display == 'none') {
		$('streem_new_share').appear({ duration: 0.5});
	}
	var target_div = $$('#streem_new_share div.streem_thumbnails')[0];
	var picture_to_print = '';
	var picture_template = $('layout_template_streem_thumb').innerHTML;
	// FOREACH PICTURE ATTRIBUTE REPLACEMENT - img src, id
	
	picture_to_print = picture_template;
	
	var picture_id = eval('streem_photo_data_object.photos.photo_'+ current_photo_count +'.photo_id');
	var picture_thumbnail = eval('streem_photo_data_object.photos.photo_'+ current_photo_count +'.photo_tiny_url');
	
	picture_to_print = picture_to_print.replace(/%PICTURE_ID%/g,''+ new String(picture_id) +'');
	picture_to_print = picture_to_print.replace(/%PICTURE_THUMBNAIL_SRC%/g,''+ new String(picture_thumbnail) +'');
	
	
	if ($('toolbar_share').style.display == 'none') {
		toolbar_share('streem_new_share');
	}
	
	target_div.innerHTML += picture_to_print;
	streem_picture_count('streem_new_share');
	share_new_init();
	rotate_init('streem_new_share');
	
	
	// Fix canvas rotations during load
	
	/*
	// Remove all canvas rotations
	var rotation_canvases = $$('#streem_new_share div.streem_thumbnail_container canvas');
	for (i=0; i<rotation_canvases.length; i++) {
		var rotation_canvas_parent = rotation_canvases[i].parentNode;
		var current_canvas = $(rotation_canvases[i].id);
		rotation_canvas_parent.removeChild(current_canvas);
	}
	*/
	
	// get current rotations
	var rotations = $$('#streem_new_share .streem_thumbnail');
	for (i=0; i<rotations.length; i++) {
		var rotation_value = rotations[i].getAttribute('rotation');
		if (rotation_value) {
			var rotation_id = rotations[i].id.substring(rotations[i].id.lastIndexOf("_")+1);
			var current_canvas = $('canvas_'+ rotation_id +'');
			if (current_canvas) {
				var parent_div = rotations[i].parentNode;
				parent_div.removeChild(current_canvas);
				// re-apply rotation
				switch (rotation_value) {
					case '0' : for (r=0; r<4; r++) { canvas_thumbnail_rotate(rotation_id); } break
					case '90' : canvas_thumbnail_rotate(rotation_id); break
					case '180' : for (r=0; r<2; r++) { canvas_thumbnail_rotate(rotation_id); } break
					case '270' : for (r=0; r<3; r++) { canvas_thumbnail_rotate(rotation_id); } break
				}
				
			}
		}
	}
	
	
	
	
	
	
}

function streem_picture_count(target_streem) {
	var count_label = $$('#'+ target_streem +' span.streem_heading_count')[0];
	// var target_to_count = $$('#'+ target_streem +' div.streem_thumbnails img');
	var target_to_count = $$('#'+ target_streem +' div.streem_thumbnail_container');
	count_label.update(target_to_count.length);
}

function share_collect_ids() {
	// update for revised thumbnail layout
	var thumbnails = $$('input.thumbnail_checkbox');
	
	var share_ids = new Array;
	for (i=0; i<thumbnails.length; i++) {
		var thumb_id = thumbnails[i].value;
		if (thumbnails[i].checked == true) {
			var thumbnail_rotation = $('thumbnail_'+ thumb_id +'').getAttribute('rotation');
			if (thumbnail_rotation) { thumb_id = thumb_id+'-'+thumbnail_rotation; }
			share_ids.push(thumb_id);
		}
	}
	return share_ids;
	
}


function share_collect_contacts() {
	// update for revised thumbnail layout
	var contacts = $$('input.contact_checkbox');
	
	var contact_ids = new Array;
	contact_ids.length = 0;
	for (i=0; i<contacts.length; i++) {
		var contact_id = contacts[i].value;
		if (contacts[i].checked == true) {
			contact_ids.push(contact_id);
		}
	}
	return contact_ids;
	
}

function share_contacts_preload() {
	if ($$('div.dialog')[0]) {
		$('share_controls').hide();
		$$('a.modal_window_footer_button_2')[0].onmouseup = function() { $('share_controls').show(); };
	}
	new Ajax.Request('/html/get_contacts', {
		method : "post",
		onSuccess : function (transport) { },
		onFailure : function(transport) { ajax_error_message(); },
		onComplete : function(transport) {
			var ajax_response = transport.responseText;
			$('myaccount_contact_list').update(ajax_response);
			
			if ($$('#files input.contact_checkbox')[0]) {
				var contact_checkboxes = $$('#files input.contact_checkbox');
				var contact_checkboxes_length = contact_checkboxes.length;
				for (var i=0; i<contact_checkboxes_length; i++){
					Element.setStyle(contact_checkboxes[i], {display: 'none'});
				}
			}
			toolbar_contacts_init('update');
		}	
	});	
}

function select_contacts(scope) {
	var contacts_checkboxes = $$('.contact_checkbox');
	for (i=0; i<contacts_checkboxes.length; i++) {
		
		switch(scope) {
			case "all":
				contacts_checkboxes[i].setAttribute('checked','checked');
				contacts_checkboxes[i].checked = true;
			break
			case "none":
				contacts_checkboxes[i].checked = false;
				contacts_checkboxes[i].removeAttribute('checked');
			break
		}
	}
}

function select_pictures(scope) {
	var picture_checkboxes = $$('.thumbnail_checkbox');
	for (i=0; i<picture_checkboxes.length; i++) {
		
		var target_container = picture_checkboxes[i].parentNode;
		var target_thumbnail = picture_checkboxes[i].parentNode.firstChild;
		while (target_thumbnail.nodeType !=1){ target_thumbnail = target_thumbnail.nextSibling; }
		
		switch(scope) {
			case "all":
				picture_checkboxes[i].setAttribute('checked','checked');
				picture_checkboxes[i].checked = true;
				target_container.addClassName('selected');
				target_thumbnail.addClassName('selected');
			break
			case "none":
				picture_checkboxes[i].checked = false;
				picture_checkboxes[i].removeAttribute('checked');
				target_container.removeClassName('selected');
				target_thumbnail.removeClassName('selected');
			break
		}
	}
}

function select_picture(target) {
	var target_checkbox = $('thumbnail_checkbox_'+ target +'');
	var target_thumbnail = $('thumbnail_'+ target +'');
	var target_container = $('thumbnail_container_'+ target +'');
	if(target_checkbox.checked == false) {
		target_checkbox.checked = true;
		target_container.addClassName('selected');
		target_thumbnail.addClassName('selected');
	} else {
		target_checkbox.checked = false;
		target_container.removeClassName('selected');
		target_thumbnail.removeClassName('selected');
	}
}

function share_pictures() {
	
	if(share_collect_ids().length <= 0){
		alert('Please select a photo to share.');
	} 
	if(share_collect_contacts().length <= 0){
		alert('Please select atleast one contact.');
	}
	
	if(($('share_user_comment').getAttribute('valueDefault')) && ($('share_user_comment').value != $('share_user_comment').getAttribute('valueDefault'))){
		//var user_comment = $('share_user_comment').value;
		var user_comment = encodeURIComponent($F('share_user_comment'));
		//alert(user_comment);
		
	} else {
		var user_comment = '';	
	}
	//if (document.all) { alert('Contacts = '+ share_collect_contacts()) +''; }
	if((share_collect_contacts().length > 0) && (share_collect_ids().length > 0)){
		
		modal_loading('show'); 
		
		var ajax_url = '/json/share_initiate?share_items='+ share_collect_ids() +'&contacts='+ share_collect_contacts() +'&user_comment='+ user_comment +'';
		
		new Ajax.Request(ajax_url, {
			method : "post",
			onSuccess : function (transport) { },
			onFailure : function(transport) { modal_loading('hide'); ajax_error_message(); },
			onComplete : function(transport) {
				var ajax_response = transport.responseText.evalJSON();
				if (ajax_response.share_initiate == 'OK') {
					modal_close_window();
					$('share_controls').show();
					status_message($('text_share_confirmation').innerHTML,20000);
				}
			}
		});
	}
}


function streem_share(target_streem,share_type) {
	
	// remember to add rotation value to end of the id in share_items=
	// add : -270,-180,-90
	
	var share_ids = streem_collect_ids(target_streem);
	var share_collection = '';
	for (i=0; i<share_ids.length; i++) {
		if (i>0) { share_collection += ',' }
		share_collection += share_ids[i];
	}
	
	var no_share_ids = streem_collect_ids(target_streem,'unchecked');
	var no_share_collection = '';
	for (i=0; i<no_share_ids.length; i++) {
		if (i>0) { no_share_collection += ',' }
		no_share_collection += no_share_ids[i];
	}
	
	var all_share_collection = share_collection+','+no_share_collection;
	
	var contact_ids = toolbar_collect_contacts();
	var contact_collection = '';
	for (i=0; i<contact_ids.length; i++) {
		if (i>0) { contact_collection += ',' }
		contact_collection += contact_ids[i];
	}
	
	var ajax_url;
	
	
	switch(share_type) {
		case 'delivery' :
			ajax_url = '/json/deliver?share_items='+ share_collection +'&no_share_items='+ no_share_collection +'&contacts='+ contact_collection +'';
		break
		case 'dont_share' :
			ajax_url = '/json/share_initiate?no_share_items='+ all_share_collection +'';
		break
		default :
			ajax_url = '/json/share_initiate?share_items='+ share_collection +'&no_share_items='+ no_share_collection +'&contacts='+ contact_collection +'';
		break
	}
	
	new Ajax.Request(ajax_url, {
		method : "post",
		onSuccess : function (transport) { },
		onFailure : function(transport) { modal_loading('hide'); ajax_error_message(); },
		onComplete : function(transport) {
			var ajax_response = transport.responseText.evalJSON();
			if (share_new_loader) { clearInterval(share_new_loader); }
			//setTimeout("window.location.href = '/"+ $('viewing_username').innerHTML +"';",4000);
			window.location.href = '/share/success';
		}
	});
	
	//toolbar_cancel();
	if (share_new_loader) { clearInterval(share_new_loader); }
	
	switch(share_type) {
		case 'delivery' :
			status_message($('text_deliver_confirmation').innerHTML);
		break
		default :
			status_message($('text_share_confirmation').innerHTML);
		break
	}
	
}

function status_message(message_txt,time_offset,level) {
	
	
	
	switch(level) {
		case "modal" :
			var target = $$('div.dialog #status_message_text')[0];
			var target_parent = $$('div.dialog #status_message')[0];
		break
		default:
			var target = $('files_status_message_text');
			var target_parent = $('files_status_message');
		break
	}
	target.update(message_txt);
	
	
	// if contacts list - adjust height
	
	
	//$('status_message').appear({ duration: 0.5});
	
	
	if ($('myaccount_contact_list')) {
		var contacts_window_list_height = $('myaccount_contact_list').getHeight();
		var contacts_window_status_height = 80;
		if (document.all) { contacts_window_status_height = parseInt((contacts_window_status_height)+20 )}
		var contacts_window_remaining_height = parseInt(contacts_window_list_height-contacts_window_status_height);
		
		$('myaccount_contact_list').style.height = contacts_window_remaining_height+('px');
	}
	target_parent.show();
	/*
	if (document.all) {
		$('status_message').show();	
	}
	*/
	
	var status_message_hide = function() {
		target_parent.hide();
		//$('status_message').hide();
		if ($('myaccount_contact_list')) { $('myaccount_contact_list').style.height = '240'+'px'; }
		//Effect.BlindUp('status_message', { duration: 0.5 });
	}
	if (time_offset) {
		if (time_offset != 'fixed') {
			setTimeout(status_message_hide,time_offset);
		}
	} else {
		setTimeout(status_message_hide,10000);
	}
	
}


function viewer_signup_calltoaction() {
	var target = $('viewer_signup_calltoaction');
	target.show();
	var status_message_hide = function() {
		target.hide();
	}
}



function streem_init() {
	var streems = $$('div.streem');
	for (i=0; i<streems.length; i++) {
		/*
		if ($('viewing_username').innerHTML == $('username').innerHTML) {
			streems[i].onmouseover = function() { streem_toolbar_toggle(this.id,'show'); };
			streems[i].onmouseout = function() { streem_toolbar_toggle(this.id,'hide'); };
			streems[i].addClassName('streem_owner');
		}
		*/
		disable_selection($(streems[i].id));
	}
}

function toolbar_desktop_delivery(target) {
	$('toolbar_contacts').show();
	toolbar_toggle("show","deliver");
	$('profile_header').hide();
	streems_hide(target);
	$('toolbar_deliver_button').onclick = function () { streem_share(target,'delivery'); }
	//toolbar_contacts_all('uncheck');
	share_init(target);
	toolbar_contacts_init('checkbox');
}

function toolbar_share_contact_prep(target) {
	
	if (!target) {
		var streems = $$('div.streem');
		for (i=0; i<streems.length; i++) {
			if (streems[i].style.display != 'none') {
				var target = streems[i].id;
			}
		}
	}
	
	if (target.match("streem_new_share")) {
		toolbar_toggle('show','share_new');
	} else {
		toolbar_toggle('show','share');
	}
	$('toolbar_share_button').onclick = function () { streem_share(target); }
	$('toolbar_dontshare_button').onclick = function () { streem_share(target,'dont_share'); }
	toolbar_contacts_init('checkbox');	
	
}

function toolbar_share(target) {
	// Check to make sure contact list has entries
	$('toolbar_contacts').show();
	if ($('profile_header')) { $('profile_header').hide(); }
	streems_hide(target);
	
	var contacts = $$('#toolbar_contacts li.toolbar_contact');
	if (contacts.length > 0) {
		toolbar_share_contact_prep(target);
	} else {
		toolbar_toggle('show','nocontacts');
	}
	
	rotate_init(target);
	share_init(target);
}

// SCROLL
// ****************************************************************
scrollStep=20;

timerLeft="";
timerRight="";

function toLeft(id){
  document.getElementById(id).scrollLeft=0;
}

function scrollDivLeft(id){
  clearTimeout(timerRight) 
  document.getElementById(id).scrollLeft+=scrollStep
  timerRight=setTimeout("scrollDivLeft('"+id+"')",10)
}

function scrollDivRight(id){
  clearTimeout(timerLeft)
  document.getElementById(id).scrollLeft-=scrollStep
  timerLeft=setTimeout("scrollDivRight('"+id+"')",10)
}

function toRight(id){
  document.getElementById(id).scrollLeft=document.getElementById(id).scrollWidth
}

function stopMe(){
  clearTimeout(timerRight) 
  clearTimeout(timerLeft)
}

function toolbar_preview(target) {
	var preview_height = '';
	
	/*
	var preview_previous_button_active = '';
	var preview_previous_button_deactive = '';
	*/
		
	if (self.innerHeight) { // all except Explorer
	preview_height = self.innerHeight;
	preview_width = self.innerWidth;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
	preview_height = document.documentElement.clientHeight;
	preview_width = document.documentElement.clientWidth;
	} else if (document.body) { // other Explorers
	preview_height = document.body.clientHeight;
	preview_width = document.body.clientWidth;
	}
	$('toolbar_preview_img').src = $(''+ target +'').getAttribute('photolargeurl');
	// .85 for no thumbs
	$('toolbar_preview_img').height = Math.round(parseInt(preview_height)-350);
	$('toolbar_contacts').hide();
	// photolargeurl phototinyurl
	
	
	streem_id = $(''+ target +'').parentNode.parentNode.id;
	var streem = $(''+ streem_id +'');
	toolbar_toggle('show','preview');
	
	var streem_title = $$('#'+ streem_id +' .streem_heading')[0];
	streem_title.hide();
	if ($('profile_header')) { $('profile_header').hide(); }
	if ($('streem_owner')) { $('streem_owner').hide(); }
	
	
	// Move to CSS classes
	var streem_thumbnails = $$('#'+ streem_id +' .streem_thumbnails')[0];
	streem_thumbnails.style.height = "148px";
	streem_thumbnails.style.overflow = "hidden";
	streem_thumbnails.style.whiteSpace = "nowrap";
	streem.style.marginRight = "40px";
	streem.style.marginLeft = "40px";
	document.body.style.height = preview_height+'px';
	document.body.style.overflow = 'hidden';
	
	
	var button_left = $$('#'+ streem_id +' img.button_scroll_left')[0];
	var button_right = $$('#'+ streem_id +' img.button_scroll_right')[0];
	
	button_left.show();
	button_right.show();
	
	var slides = $$('#'+ streem_id +' div.streem_thumbnail_container');
	for (i=0; i<slides.length; i++) {
		if (target == slides[i].id) {
			
			var next_slide = slides[i+1];
			if ((i+1 <= slides.length) && slides[i+1]) {
				$('toolbar_preview_next').onclick = function() { toolbar_preview(''+ next_slide.id +''); }
			}
			else {
				$('toolbar_preview_next').onclick = function() { toolbar_preview(''+ slides[0].id +''); }
			}
			
			var previous_slide = slides[i-1]
			if (i-1 >= 0) {
				$('toolbar_preview_previous').onclick = function() { toolbar_preview(''+ previous_slide.id +''); }
			}			
			else if (i-1 < 0) {
				$('toolbar_preview_previous').onclick = function() { toolbar_preview(''+ slides.last().id +''); }
			}
			
		}
	}
	
	$('footer').hide();
	scroll(0,0);
	// Remember scroll position for preview collapse
	
	streems_hide(streem_id);
	toolbar_contacts_init('checkbox');
}

function toolbar_cancel(target) {
	clearInterval(share_new_loader);
	toolbar_toggle('hide');
	
	// Move these to CSS classes
	var streems = $$('div.streem');
	for (i=0; i<streems.length; i++) {
		streems[i].style.marginRight = "";
		streems[i].style.marginLeft = "";
	}
		
	var streem_title = $$('div.streem_heading');
	for (i=0; i<streem_title.length; i++) {
		streem_title[i].show();
	}
	
	var streem_thumbnails = $$('div.streem_thumbnails');
	for (i=0; i<streem_thumbnails.length; i++) {
		streem_thumbnails[i].style.height = "auto";
		streem_thumbnails[i].style.overflow = "visible";
		streem_thumbnails[i].style.whiteSpace = "normal";
	}
	
	var scroll_buttons = $$('img.button_scroll_left','img.button_scroll_right');
	for (i=0; i<scroll_buttons.length; i++) {
		scroll_buttons[i].hide();
	}
	
	document.body.style.height = '';
	document.body.style.overflow = 'visible';
	
	$('footer').show();
	if ($('profile_header')) { $('profile_header').show(); }
	if ($('streem_owner')) { $('streem_owner').show(); }
	
	if (share_new_loader) { clearInterval(share_new_loader); }
	if (target) {
		switch (target) {
			case "redirect_myaccount" :
				window.location.href = '/'+ $('viewing_username').innerHTML +'';
			break
			default :
				streems_show(target);
				thumbnail_set_all_default(target);	
			break
		}
	} else {
		streems_show();
		thumbnail_set_all_default();	
	}
	setTimeout('$(\'toolbar_preview_img\').src = \'/images/spacer.gif\'; $(\'toolbar_preview_img\').removeAttribute(\'height\');',1000);
	
}

function thumbnail_overlay_toggle(target,state) {
	var thumbnail_id = target.id.substring(target.id.lastIndexOf("_")+1);
	var rotate_button = $('rotate_button_'+ thumbnail_id +'');
	switch (state) {
		case "show":
			rotate_button.show();
		break
		case "hide":
			rotate_button.hide();
		break
		default:
			if (rotate_button.style.display == 'none') { rotate_button.show(); }
			else { rotate_button.hide(); }
		break
	}
	
	
/*
	thumbnail_id = target.id.substring(target.id.lastIndexOf("_")+1)
	if (target.src.match(img_src_2)) {
		target.src = img_src_1;
		$('rotate_button_'+ thumbnail_id +'').show();
	}
	else { target.src = img_src_2; 
		$('rotate_button_'+ thumbnail_id +'').hide();
	}
*/
}



function thumbnail_set_all_default(target) {
	var thumbnails;
	if (target) {
		thumbnails = $$('#'+ target +' img.streem_thumbnail_overlay');
	} else {
		thumbnails = $$('img.streem_thumbnail_overlay');
	}
	for (i=0; i<thumbnails.length; i++) {
		thumbnails[i].src = thumbnail_frame;
		thumbnails[i].parentNode.onmouseup = function() { toolbar_preview(this.id); };
		thumbnails[i].parentNode.onmouseover = function() { return false; };
		thumbnails[i].parentNode.onmouseout = function() { return false; };
		thumbnails[i].onclick = function() { return false; };
	}
	
	
}

function share_new_init() {
	share_init('streem_new_share');
}

function share_init() {
	var thumbnails = $$('img.thumbnail_img','canvas.thumbnail_img');
	for (i=0; i<thumbnails.length; i++) {
		//thumbnails[i].parentNode.onmouseup = function() { return false; }
		var input = thumbnails[i].parentNode.lastChild;
		while (input.nodeType !=1){ input = input.previousSibling; }
		thumbnails[i].onclick = function() {
			var thumbnail_id = this.getAttribute('photoid');
			select_picture(''+ thumbnail_id +'');
		};
		input.onclick = function() {
			var thumbnail_id = this.value;
			select_picture(''+ thumbnail_id +'');
			select_picture(''+ thumbnail_id +'');
		};
	}
	
}

function rotate_init() {
	var thumbnail_containers = $$('div.streem_thumbnail_container');
	for (i=0; i<thumbnail_containers.length; i++) {
		thumbnail_containers[i].onmouseover = function() {
			thumbnail_overlay_toggle(this,'show');
		};
		thumbnail_containers[i].onmouseout = function() { 
			thumbnail_overlay_toggle(this,'hide');
		};
	}
	var rotate_button = $$('div.streem_thumbnail_button_rotate');
	for (i=0; i<rotate_button.length; i++) {
		rotate_button[i].onmousedown = function() {
			var thumbnail_id = this.getAttribute('photoid');
			canvas_thumbnail_rotate(''+ thumbnail_id +''); 
			this.parentNode.onmouseup = function() { return false; };
		};
	}
	
	/*
	for (i=0; i<thumbnail_containers.length; i++) {
		thumbnail_containers[i].onmouseover = function() {
			var thumbnail_id = this.id.substring(this.id.lastIndexOf("_")+1);
			if (!$('thumbnail_overlay_'+ thumbnail_id +'').src.match('streem_thumbnail_overlay_unchecked.png')) {
				$('rotate_button_'+ thumbnail_id +'').show(); 
			}
		};
		thumbnail_containers[i].onmouseout = function() { 
			$('rotate_button_'+ this.id.substring(this.id.lastIndexOf("_")+1) +'').hide();
		};
		
		//var rotate_button = $$('#'+ thumbnail_containers[i].id +' div.streem_thumbnail_button_rotate')[0];
	}
	*/
	
}


// ROTATE
// *********************************************************************

function canvas_thumbnail_create(target,type) {
		
	//var target_image_rotate = document.getElementById('rotate_'+ target +'');
	//var target_image_preload = document.getElementById('thumbnail_'+ target +'');
	var rotate_image = document.getElementById('thumbnail_'+ target +'');
	
	target_width = (rotate_image.width);
	target_height = (rotate_image.height);
	
	var frame_height = target_height;
	var frame_width = target_width;
	
	var target_image = new Image;
	target_image.src = rotate_image.src;
	
	
	/*
	var rotate_value = rotate_image.getAttribute('rotation');
	if (rotate_value) {
		var rotate_value = parseInt(rotate_value)-90;
		alert (target +' = '+ rotate_value);
		if (rotate_value < 0) {
			alert('reset to 270');
			rotate_value = 270;
		}
	}
	*/
	
	
	switch(type) {
		case 'canvas' :
			// Create canvas element
			canvas = document.createElement('CANVAS');
			canvas.setAttribute('width',frame_width);
			canvas.setAttribute('height',frame_height);
			canvas.setAttribute('id','canvas_'+ target +'');
			canvas.setAttribute('photoid',target);
			canvas.addClassName('thumbnail_img');
			//if (rotate_value) {
				//canvas.setAttribute('rotation',rotate_value);
				//rotate_image.setAttribute('rotation',rotate_value);
			//} else {
				canvas.setAttribute('rotation','0');
				rotate_image.setAttribute('rotation','0');
			//}
			/*
			if(canvas.getContext) {
				target_image_rotate.style.visibility = 'hidden';
				target_image_rotate.style.position = 'absolute';
			}
			*/
			// Insert canvas
			//$('thumbnail_container_'+ target +'').appendChild(canvas);
			$('thumbnail_container_'+ target +'').insertBefore(canvas,$('thumbnail_checkbox_'+ target +''));
			ctx = canvas.getContext('2d');
			// Get center coordinates
			var offset_height = Math.round((target_height-frame_height)/2);
			var offset_width = Math.round((target_width-frame_width)/2);
			// Draw image to canvas
			ctx.drawImage(target_image,-offset_width,-offset_height);
		break
	}
}



function canvas_thumbnail_rotate(target) {
	var rotate_image = $('thumbnail_'+ target +'');
	
	if (!document.all) {
		rotate_image.hide();
		if (!$('canvas_'+ target +'')) { 
			canvas_thumbnail_create(target,'canvas'); 
		}
	
		var frame_height = rotate_image.height;
		var frame_width = rotate_image.width;
		
		var canvas = $('canvas_'+ target +'');
		
		var target_image_thumbnail = $('thumbnail_'+ target +'');
		
		target_width = (target_image_thumbnail.width);
		target_height = (target_image_thumbnail.height);
		
		var target_image = new Image;
		target_image.src = rotate_image.src;
		
		// Get center coordinates
		var offset_height = Math.round((target_height-frame_height)/2);
		var offset_width = Math.round((target_width-frame_width)/2);
		
		var current_rotation = parseInt(rotate_image.getAttribute('rotation'))+90;
		if (current_rotation >= 360) {
			current_rotation = 0;
			canvas.setAttribute('rotation','0');
			rotate_image.setAttribute('rotation','0');
		} else {
			canvas.setAttribute('rotation',''+ current_rotation +'');
			rotate_image.setAttribute('rotation',''+ current_rotation +'');
		}
		
		
		switch (current_rotation) {
			case 0 :
				canvas.setAttribute('width',target_width);
				canvas.setAttribute('height',target_height);
			break
			case 90 :
				canvas.setAttribute('width',target_height);
				canvas.setAttribute('height',target_width);
			break
			case 180 :
				canvas.setAttribute('width',target_width);
				canvas.setAttribute('height',target_height);
			break
			case 270 :
				canvas.setAttribute('width',target_height);
				canvas.setAttribute('height',target_width);
			break
		}
		
		var ctx = canvas.getContext('2d');
		
		//alert(current_rotation);
		
		switch (current_rotation) {
			case 0 :
				ctx.rotate(Math.PI*2);
				ctx.drawImage(target_image, -offset_width, -offset_height);
			break
			case 90 :
				ctx.rotate(Math.PI/2);
				ctx.drawImage(target_image, -offset_width, -target_height);
			break
			case 180 :
				ctx.rotate(Math.PI);
				ctx.drawImage(target_image, -(target_width-offset_width), -(target_height -offset_height));
			break
			case 270 :
				ctx.rotate(-Math.PI/2);
				ctx.drawImage(target_image, -(target_width-offset_width), 0);
			break
		}
		
	} else {
	
		var current_rotation = parseInt(rotate_image.getAttribute('rotation'));
		
		if(!current_rotation) {
			current_rotation = 0;
			rotate_image.setAttribute('rotation','0');
		}
		
		current_rotation = current_rotation+90;
		
		if (current_rotation >= 360) {
			current_rotation = 0;
			rotate_image.setAttribute('rotation','0');
		} else {
			rotate_image.setAttribute('rotation',''+ current_rotation +'');
		}
		
		switch (current_rotation) {
			case 0 :
				rotate_image.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(rotation=0)';
			break
			case 90 :
				rotate_image.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(rotation=1)';
			break
			case 180 :
				rotate_image.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(rotation=2)';
			break
			case 270 :
				rotate_image.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(rotation=3)';
			break
		}
		
	}
	share_init();
}



// *********************************************************************
// Ported from tree_007.js
// *********************************************************************


//Run by default

/*
MM_preloadImages('/images/tree_button_standard_bg_green_hover.png','/images/tree_button_standard_bg_green_down.png','/images/tree_button_standard_bg_hover.png','/images/tree_button_standard_bg_down.png','/images/tree_navbar_tab_gray_bg_hover.png','/images/tree_button_sm_green_bg_hover.png','/images/tree_button_sm_gray_bg_hover.png','/images/tree_button_sm_gray_bg_down.png','/images/tree_button_sm_green_bg_down.png','/images/loading.gif');
*/

//Custom Functions
function loading_table() {
	var loading = "\
		<table height=\"100%\" width=\"100%\" border=\"0\">\
			<tr>\
				<td align=\"center\" valign=\"middle\" class=\"center\">\
					<img src=\"/images/loading.gif\" />\
				</td>\
			</tr>\
		</table>\
	";
	return loading;
}



function navbar_breadcrumb_reset() {
	// hide all breadcrumbs and remove text
	var all_breadcrumbs = $$('#navbar_breadcrumb a');
	for (var i=0; i<all_breadcrumbs.length; i++) {
		all_breadcrumbs[i].update('');
		all_breadcrumbs[i].fade({ duration: 0.5, queue: 'front' });
	}
}

function navbar_breadcrumb_update(breadcrumb_number,breadcrumb_text,breadcrumb_url,breadcrumb_select) {
	if($('navbar_breadcrumb')) {
		$('navbar_breadcrumb_'+ breadcrumb_number +'').hide();
		$('navbar_breadcrumb_'+ breadcrumb_number +'').update(unescape(breadcrumb_text));
		$('navbar_breadcrumb_'+ breadcrumb_number +'').href = breadcrumb_url;
		if (breadcrumb_select == true) {
			// deselect all breadcrumbs
			var all_breadcrumbs = $$('#navbar_breadcrumb a');
			for (var i=0; i<all_breadcrumbs.length; i++) {
				all_breadcrumbs[i].removeClassName('navbar_breadcrumb_current');
				all_breadcrumbs[i].addClassName('navbar_breadcrumb_previous');
			}
			// select only current breadcrumb
			$('navbar_breadcrumb_'+ breadcrumb_number +'').removeClassName('navbar_breadcrumb_previous');
			$('navbar_breadcrumb_'+ breadcrumb_number +'').addClassName('navbar_breadcrumb_current');
		} else {
			// deselect breadcrumb
			$('navbar_breadcrumb_'+ breadcrumb_number +'').removeClassName('navbar_breadcrumb_current');	
			$('navbar_breadcrumb_'+ breadcrumb_number +'').addClassName('navbar_breadcrumb_previous');
		}
		$('navbar_breadcrumb_'+ breadcrumb_number +'').show();
	}
}

function navbar_tab_select(target_tab) {
	var all_tabs = $$('#navbar_tabs a.navbar_tab');
	for (var i=0; i<all_tabs.length; i++) {
		all_tabs[i].removeClassName('navbar_tab_selected');
		all_tabs[i].addClassName('navbar_tab_unselected');
	}
	$(''+ target_tab +'').removeClassName('navbar_tab_unselected');	
	$(''+ target_tab +'').addClassName('navbar_tab_selected');	
}

function ajax_error_message() {
	var ajax_error_message_text = $('text_ajax_error').innerHTML;
	alert(ajax_error_message_text);
}

function disable_selection(element) {
    element.onselectstart = function() { return false; };
    element.unselectable = "on";
    element.style.MozUserSelect = "none";
    element.style.cursor = "default";
}

function disable_selection_for_buttons(button_class) {
	var buttons = $$(''+ button_class +'');
	for (var i=0; i<buttons.length; i++) {
		disable_selection(buttons[i]);
	}
}

function disable_folder_selection()
{
//Prevent selecting text in IE
$('folders').onselectstart = new function(){return "false"};

//Prevent selecting text in FF
if (window.sidebar)
{
$('folders').onmousedown = DisableText;
$('folders').onclick = EnableText;
}
}

function DisableText(e)
{
return false;
}

function EnableText()
{
return true;
} 



function signup() {
	alert("You want to show a sign up?");
}

function landing_button_update() {
	var landing_buttons = $$('a[class="landing_register_button"]');
	if (landing_buttons) {
		for (i=0; i<landing_buttons.length; i++) {
			landing_buttons[i].href = '';
			landing_buttons[i].href = 'javascript: modal_window(\'file_action_upload\',\''+ language_code +'\');';
		}
	}
}

function landing_login_check() {
	cookie_status = $$('meta[name="cookie_username"]')[0].content;
	if (cookie_status) {
		landing_button_update();
	} 
}



function modal_window_create(type, lang_code, content, win_title, width, height, cancel_button_text, submit_button, submit_button_text, submit_button_action, onload_action) {
	if (type) {
		var win_width = width;
		var win_height = height;
		var random_num = Math.round(1000000000000*Math.random());
		
		
		
		switch (type) {
			case 'iframe':
				var iframe_src = ''+ content +'';
				var win = new Window('modal_window_'+ random_num +'', {url: iframe_src, cancelButtonText: cancel_button_text, submitButton: submit_button, submitButtonText: submit_button_text, submitButtonOnClick: submit_button_action, title:win_title, width:win_width, height:win_height, draggable:true, resizable:false, minimizable:false, maximizable:false, closable:false, onloadAction: onload_action});
			break
			
			case 'ajax':
				var ajax_src = '';
				ajax_src = ''+ content +'';
				var win = new Window('modal_window_'+ random_num +'', {cancelButtonText: cancel_button_text, submitButton: submit_button, submitButtonText: submit_button_text, submitButtonOnClick: submit_button_action, title:win_title, width:win_width, height:win_height, draggable:true, resizable:false, minimizable:false, maximizable:false, closable:false, onloadAction: onload_action});
				win.setHTMLContent("");
				win.setAjaxContent(ajax_src+'?l='+ lang_code +'&random='+ random_num +'',{ method : "get", onComplete: function(resp) {  } });
			break
		}
		if (!document.all) { win.setDestroyOnClose(); }
		win.showCenter();
	} else {
		alert('Modal Window Error: No window type defined.');
	}
}

function modal_window(page,lang_code,trigger_id,url_parameters) {
	if (!lang_code) { lang_code = language_code; }
	cookie_status = $$('meta[name="cookie_username"]')[0].content;
	
	switch (page) {
		
		case 'login':
			if (url_parameters) {
				modal_url = '/myaccount/login?client_id='+ url_parameters +'';
			} else {
				modal_url = '/myaccount/login';
			}
		
			modal_window_create(
				'iframe',lang_code,
				modal_url,
				''+ $('text_please-sign-in').innerHTML +'',
				'350','275',
				''+ $('text_cancel').innerHTML +'',
				true,
				''+ $('text_sign-in').innerHTML +'',
				'user_login_iframe();',
				''
			);
		break
		
		case 'password_reset_code_check':
			modal_window_create(
				'ajax',lang_code,
				'/static/reset_code_check',
				''+ $('text_reset-password').innerHTML +'',
				'400','150',
				''+ $('text_ok-close').innerHTML +'',
				false,
				'',
				'',
				'user_reset_password_check_code()'
			);
		break
		
		case 'share_reminder':
			modal_window_create(
				'ajax',lang_code,
				'/static/share_reminder',
				'Start Sharing!',
				'550','250',
				''+ $('text_ok-close').innerHTML +'',
				false,
				'',
				''
			);
		break
		
		case 'password_reset':
		
			if (url_parameters) {
				modal_url = '/static/reset?'+ url_parameters +'';
			} else {
				modal_url = '/static/reset';
			}
		
			modal_window_create(
				'ajax',lang_code,
				modal_url,
				''+ $('text_reset-password').innerHTML +'',
				'550','220',
				''+ $('text_cancel').innerHTML +'',
				true,
				''+ $('text_submit').innerHTML +'',
				'user_reset_password();',
				''
			);
		break
		
		case 'logout':
			modal_window_create(
				'iframe',lang_code,
				'/mytrees/logout',
				''+ $('text_sign-out').innerHTML +'',
				'350','225',
				''+ $('text_cancel').innerHTML +'',
				false,'','',''
			);
		break
		
		case 'forgotpassword':
			modal_window_create(
				'ajax',lang_code,
				'/static/forgotpassword',
				''+ $('text_forgot-password').innerHTML +'',
				'600','260',
				''+ $('text_cancel').innerHTML +'',
				true,
				''+ $('text_submit').innerHTML +'',
				'user_forgotpassword();',
				''
			);
		break
		
		case 'forgotpassword_confirmation':
			modal_window_create(
				'ajax',lang_code,
				'/static/forgotpassword_confirmation',
				''+ $('text_forgot-password').innerHTML +'',
				'420','200',
				''+ $('text_ok-close').innerHTML +'',
				false,'','',''
			);
		break
		
		case 'register':
			modal_window_create(
				'ajax',lang_code,
				'/static/register',
				''+ $('text_register').innerHTML +'',
				'540','375',
				''+ $('text_cancel').innerHTML +'',
				true,
				''+ $('text_submit').innerHTML +'',
				'user_register();',
				''
			);
		break
		
		
		
		case 'contact_add':
			modal_window_create(
				'ajax',lang_code,
				'/static/contact_add',
				''+ $('text_add-contact').innerHTML +'',
				'500','250',
				''+ $('text_cancel').innerHTML +'',
				true,
				''+ $('text_add-contact').innerHTML +'',
				'contact_add();',
				''
			);
		break
		
		case 'contact_add_invite':
		break
		
		case 'contact_add_confirmation':
			modal_window_create(
				'ajax',lang_code,
				'/static/contact_add_confirmation',
				''+ $('text_add-contact').innerHTML +'',
				'500','150',
				''+ $('text_ok-close').innerHTML +'',
				true,
				''+ $('text_add-more').innerHTML +'',
				'modal_close_window(); modal_window(\'contact_add\',\''+ language_code +'\');',
				'contact_add_preload(\''+ trigger_id +'\');'
			);
		break
		
		case 'contacts_import':
		break
		
		case 'contacts_import_confirmation':
		break
		
		case 'contacts_found_subscribe':
		break
		
		case 'contacts_invite':
		break
		
		
		
		case 'services_edit':
		break
		
		case 'terms':
			modal_window_create(
				'ajax',lang_code,
				'/terms',
				''+ $('text_terms-of-use').innerHTML +'',
				'420','300',
				''+ $('text_ok-close').innerHTML +'',
				false,'','',''
			);
		break
		case 'privacy':
			modal_window_create(
				'ajax',lang_code,
				'/privacy',
				''+ $('text_privacy-policy').innerHTML +'',
				'420','300',
				''+ $('text_ok-close').innerHTML +'',
				false,'','',''
			);
		break
		case 'contacts_share':
			modal_window_create(		
				'ajax',lang_code,
				'/static/contacts',
				''+ $('text_choose-contacts-share').innerHTML +'',
				'700','410',
				''+ $('text_cancel').innerHTML +'',
				true,
				'Share',
				'if(share_collect_ids().length <= 0){ alert(\'Please select a photo to share.\'); } else { share_pictures(); }',
				'share_contacts_preload();'
			);
		break
		case 'contact':
			modal_window_create(		
				'ajax',lang_code,
				'/contact',
				''+ $('text_contact').innerHTML +'',
				'500','375',
				''+ $('text_cancel').innerHTML +'',
				true,
				''+ $('text_send-message').innerHTML +'',
				'user_contact_message();',
				''
			);
		break
		case 'contact_confirmation':
			modal_window_create(		
				'ajax',lang_code,
				'/static/contact_confirmation',
				''+ $('text_contact').innerHTML +'',
				'420','200',
				''+ $('text_ok-close').innerHTML +'',
				false,'','',''
			);
		break
		case 'learnmore':
			modal_window_create(
				'ajax',lang_code,
				'/static/learnmore',
				''+ $('text_learnmore').innerHTML +'',
				'640','400',
				''+ $('text_ok-close').innerHTML +'',
				false,'','',''
			);
		break
		case 'file_action_edit':
			modal_window_create(
				'ajax',lang_code,
				'/mytrees/edit_tree?tree_id='+ trigger_id +'',
				''+ $('text_edit-file').innerHTML +'',
				'420','300',
				''+ $('text_cancel').innerHTML +'',
				true,
				''+ $('text_save-changes').innerHTML +'',
				'file_action_edit(\''+ trigger_id +'\');',
				''
			);
		break
		case 'file_action_edit_confirmation':
			modal_window_create(
				'ajax',lang_code,
				'/static/file_action_edit_confirmation',
				''+ $('text_edit-file').innerHTML +'',
				'420','200',
				''+ $('text_ok-close').innerHTML +'',
				false,'','',''
			);
		break
		case 'file_action_delete':
			modal_window_create(
				'ajax',lang_code,
				'/static/file_action_delete',
				''+ $('text_delete-file').innerHTML +'',
				'420','100',
				''+ $('text_cancel').innerHTML +'',
				true,
				''+ $('text_delete-file').innerHTML +'',
				'file_action_delete(\''+ trigger_id +'\');',
				'file_action_delete_preload(\''+ trigger_id +'\');'
			);
		break
		case 'file_action_upload':
			if (!cookie_status) {
				modal_window('login',''+ language_code +'');
			} else {
				modal_window_create(
					'iframe',lang_code,
					'/static/file_action_upload',
					''+ $('text_upload-your-family-tree').innerHTML +'',
					'550','350',
					''+ $('text_cancel').innerHTML +'',
					true,
					''+ $('text_upload-file').innerHTML +'',
					'file_action_upload();',
					''
				);
			}
		break
		case 'file_action_update':
			modal_window_create(
				'iframe',lang_code,
				'/static/file_action_update?tree_id='+ trigger_id +'&tree_title='+ $$('#tree_listing_id_'+ trigger_id +' span.list_title a')[0].innerHTML +'',
				''+ $('text_update-file').innerHTML +'',
				'550','350',
				''+ $('text_cancel').innerHTML +'',
				true,
				''+ $('text_update').innerHTML +'',
				'file_action_upload();',
				''
			);
		break
		case 'file_action_update_confirmation':
			modal_window_create(
				'ajax',lang_code,
				'/static/file_action_update_confirmation',
				''+ $('text_update-file').innerHTML +'',
				'420','200',
				''+ $('text_ok-close').innerHTML +'',
				false,'','',''
			);
		break
		case 'file_action_photo':
			modal_window_create(
				'ajax',lang_code,
				'/static/file_action_photo',
				''+ $('text_add-photo').innerHTML +'',
				'420','150',
				''+ $('text_cancel').innerHTML +'',
				true,
				''+ $('text_upload-photo').innerHTML +'',
				'file_action_photo(trigger_id);',
				'file_action_photo_preload(\''+ trigger_id +'\');'
			);
		break
		case 'network_add_auth':
			if (!cookie_status) {
				modal_window('login',''+ language_code +'');
			} else {
				modal_window_create(
					'iframe',lang_code,
					'/static/networks_authorize',
					''+ $('text_upload-your-family-tree').innerHTML +'',
					'550','350',
					''+ $('text_cancel').innerHTML +'',
					true,
					''+ $('text_upload-file').innerHTML +'',
					'networks_authorize();',
					'networks_authorize(\''+ trigger_id +'\');'
				);
			}
		break
		case 'download_client':
			modal_window_create(
				'ajax',lang_code,
				'/static/download_client',
				''+ $('text_download-webtree.com-client').innerHTML +'',
				'420','150',
				''+ $('text_cancel').innerHTML +'',
				true,
				''+ $('text_download').innerHTML +'',
				'download_client();',
				''
			);
		break
		case 'sidebar_email':
			modal_window_create(
				'ajax',lang_code,
				'/static/sidebar_email',
				''+ $('text_email-this-page').innerHTML +'',
				'420','300',
				''+ $('text_cancel').innerHTML +'',
				true,
				''+ $('text_email').innerHTML +'',
				'sidebar_email();',
				''
			);
		break
		case 'sidebar_embed':
			modal_window_create(
				'ajax',lang_code,
				'/static/sidebar_embed',
				'Embed This Page',
				'550','250',
				''+ $('text_ok-close').innerHTML +'',
				false,'','',
				'file_action_sidebar_embed();'
			);
		break
		case 'embed_chart':
			modal_window_create(
				'ajax',lang_code,
				'/static/sidebar_embed',
				'Embed This Page',
				'550','250',
				''+ $('text_ok-close').innerHTML +'',
				false,'','',
				'file_action_embed_chart();'
			);
		break
		case 'sidebar_link':
			modal_window_create(
				'ajax',lang_code,
				'/static/sidebar_link',
				''+ $('text_link-to-this-page').innerHTML +'',
				'550','100',
				''+ $('text_ok-close').innerHTML +'',
				false,'','',
				'file_action_sidebar_link();'
			);
		break
		
		case 'sidebar_api':
			modal_window_create(
				'ajax',lang_code,
				'/static/sidebar_api',
				'API',
				'420','300',
				''+ $('text_ok-close').innerHTML +'',
				false,'','',
				'file_action_sidebar_api();'
			);
		break
		case 'embed_share':
			modal_window_create(
				'ajax',lang_code,
				'/static/embed_share',
				''+ $('text_share-this-page').innerHTML +'',
				'420','300',
				''+ $('text_cancel').innerHTML +'',
				true,
				''+ $('text_share').innerHTML +'',
				'embed_share();',
				''
			);
		break
		case 'embed_print':
			modal_window_create(
				'ajax',lang_code,
				'/static/embed_print',
				''+ $('text_print').innerHTML +'',
				'500','500',
				''+ $('text_cancel').innerHTML +'',
				true,
				''+ $('text_print').innerHTML +'',
				'embed_print();',
				''
			);
		break
	}
}


function modal_window_pop(url_parameters) {
	var pop_flags = $$('#modal_window_pop div.modal_window_pop_flag');
	for (i=0; i<pop_flags.length; i++) {
		if (pop_flags[i].innerHTML == 'yes') {
			modal_window(''+ pop_flags[i].getAttribute('window_name') +'',''+ language_code +'','',''+ url_parameters +'');
		}
	}
}

function modal_get_id() {
	var modal_id = $$('div.dialog')[0].id;
	return modal_id;
}

function modal_close_window() {
	var window_id = modal_get_id();
	Windows.close(''+ window_id +''); return false;
}


function modal_window_close_button(window_id) {
	var button_close_target = $('modal_window_'+ window_id +'').select('a.button_close')[0];
	//alert(button_close_target.innerHTML);
	button_close_target.onclick = function() { Windows.close('modal_window_'+ window_id +''); return false; };
}

function modal_loading(display_state) {
	var modal_loading = $$('img.modal_submit_loading')[0];
	if (modal_loading) {
		if (display_state == "show") { modal_loading.appear({ duration: 0.5}); }
		else if (display_state == "hide") { modal_loading.hide(); }
	}
}

function modal_content_replace(target,replacement) {
	var replacement_string = '/'+ target +'/g';
	var dialog_content = $$('div.dialog_content')[0];
	dialog_content.innerHTML = dialog_content.innerHTML.replace(eval(replacement_string),''+ replacement +'');
}


function form_error_check(ajax_response,form_target,close_window,run_after) {
	var ajax_response_status = ajax_response.status;
	if (ajax_response_status == 'ERROR') {
		modal_loading('hide');
		var error_message = form_error_parse(ajax_response);
		form_error_update(''+ form_target +'', error_message);
	} 
	else if (ajax_response_status == 'OK') {
		modal_loading('hide');
		if (close_window == true) { modal_close_window(); }
		if (run_after) { eval(run_after); }
	}
}

function form_error_parse(ajax_response) {
	var error_message = "";
	error_message = "<ul>";
	for (key in ajax_response.errors) {
		error_message += '<li>'+  ajax_response.errors[key] +'</li>';
	}
	error_message += "</ul>";
	return error_message;
}

function form_error_update(form_name, error_message) {
	var target = $$('#'+ form_name +' .form_errors')[0];
	target.show();
	target.update(error_message);
}

function text_import(lang_code,run_after) {
	var get_text = function() {
		new Ajax.Updater('text','/static/text?l='+ language_code +'',{
			onComplete : function(transport) { 
				if (run_after) { eval(run_after);  }
			}
		});
	};
	// Try to grab cached text
	/*
	var cached_text = window.parent.document.getElementById('text');
	if (cached_text) {
		if (cached_text.innerHTML != '') {
			$('text').innerHTML = cached_text.innerHTML;
		} else { get_text(); }
	} else { get_text(); }
	*/
	get_text();
}

function contacts_preload() {
	if($('toolbar_contacts').innerHTML.match("%CONTACT_LIST%")) {
		var li_contact_list = $('li_contact_list').innerHTML;
		$('toolbar_contacts').innerHTML = $('toolbar_contacts').innerHTML.replace(/%CONTACT_LIST%/,li_contact_list);
		$('li_contact_list').innerHTML = '';
	}
}

function template_import(templates_to_load,target_div,run_after) {
	var lang_code = language_code;
	if (!target_div) {
		target_div = 'layout_templates';
	}
	new Ajax.Updater(target_div,'/static/'+ templates_to_load +'?l='+ lang_code +'',{
		onComplete : function(transport) { if (run_after) { eval(run_after); }}
	});
}

function user_register() {
	modal_loading('show');
	
	// registration object to post
	var registration_details = {
		email: $F('user_register_email'),
		username: $F('user_register_username'),
		password: $F('user_register_password'),
		password_confirm: $F('user_register_password_confirm'),
		first_name: $F('user_register_first_name'),
		last_name: $F('user_register_last_name'),
		last_name: $F('user_register_last_name'),
		source: $F('user_register_source'),
		invite_code: $F('invite_code')
	};
	// Make Ajax JSON request
	new Ajax.Request('/json/register', {
		method : "post",
		postBody: Object.toJSON(registration_details),
		onSuccess : function (transport) { },
		onFailure : function(transport) { modal_loading('hide'); ajax_error_message(); },
		onComplete : function(transport) {
			modal_loading('hide');
			var ajax_response = transport.responseText.evalJSON();
			
			//form_error_check(ajax_response,'form_register',true,'modal_window(\'file_action_upload\',\''+ language_code +'\'); landing_button_update();');
			
			form_error_check(ajax_response,'form_register',false,'window.location.href = \'/contacts\';');
			
		}
	});
}

function user_register_confirmation() {
	alert('you registered');
}

function user_register_username_update(value) {
	// default appearence
	$('form_username_message').removeClassName('form_username_NOTavailable');
	$('form_username_message').addClassName('form_username_available');
	$('user_register_username_available').hide();
	$('user_register_username_NOTavailable').hide();
	$('user_register_username_invalid').hide();
	
	var usename_to_submit = { username: value };
	
	if ($F('user_register_username') != '')  {
		new Ajax.Request('/json/check_username', {
			method : "post",
			postBody: Object.toJSON(usename_to_submit),
			onSuccess : function (transport) { },
			onFailure : function(transport) { ajax_error_message(); },
			onComplete : function(transport) {
				var ajax_response = transport.responseText.evalJSON();
				var username_status = ajax_response.status;
				if (username_status) {
					switch (username_status) {
						case 'OK':
							$('user_register_username_invalid').hide(); 
							$('user_register_username_NOTavailable').hide();
							$('form_username_message').removeClassName('form_username_NOTavailable');
							$('form_username_message').addClassName('form_username_available');
							$('user_register_username_available').show();
						break
						case 'TAKEN':
							$('user_register_username_available').hide();
							$('user_register_username_invalid').hide(); 
							$('form_username_message').removeClassName('form_username_available');
							$('form_username_message').addClassName('form_username_NOTavailable');
							$('user_register_username_NOTavailable').show();
						break
						case 'INVALID':
							$('user_register_username_available').hide();
							$('user_register_username_NOTavailable').hide(); 
							$('form_username_message').removeClassName('form_username_available');
							$('form_username_message').addClassName('form_username_NOTavailable');
							$('user_register_username_invalid').show();
						break
					}
				}
			}
		});
	} 
	else { 
		$('user_register_username_available').hide(); 
		$('user_register_username_NOTavailable').hide(); 
		$('user_register_username_invalid').hide(); 
	}
	// Update the username value
	$('user_register_username_update').update(value);
}

function user_login() {
	modal_loading('show');
	
	// login object to post
	var login_details = {
		username: $F('login_username'),
		password: $F('login_password')
	};
	// Make Ajax JSON request
	
	new Ajax.Request('/json/login', {
		method : "post",
		postBody: Object.toJSON(login_details),
		onSuccess : function (transport) { },
		onFailure : function(transport) { modal_loading('hide'); ajax_error_message(); },
		onComplete : function(transport) {
			var ajax_response = transport.responseText.evalJSON();
			form_error_check(
				ajax_response,
				'form_login',
				false,
				'setTimeout("user_login_check_cookie()",750);'
			);
		}
	});
}

function user_login_iframe(client_id) {
	var iframe_target;
	iframe_target = $$('iframe[src="/myaccount/login]')[0].id;
	var iframe_target_form = $(''+ iframe_target +'').contentWindow.document.form_login;
	var modal_loading = $(''+ iframe_target +'').contentWindow.$('login_loading');
	iframe_target_form.submit(); modal_loading.appear({ duration: 0.5});
}

function user_login_iframe_redirect() {
	/*
	// Preserve current location
	var current_location = top.location.href.split("?",2)[0];
	top.location.href = current_location;
	*/
	//top.location.href = '/myaccount?l='+ language_code +'';
	top.location.href = '/'+ $('viewing_username').innerHTML +'';
	
}

function user_logout_iframe_redirect() {
	top.location.href = '/home?l='+ language_code +'';
}

function user_login_check_cookie() {
	new Ajax.Request('/json/check_login', {
		method : "post",
		onSuccess : function (transport) { },
		onFailure : function(transport) { modal_loading('hide'); ajax_error_message(); },
		onComplete : function(transport) {
			modal_loading('hide');
			var ajax_response = transport.responseText.evalJSON().status;
			switch(ajax_response) {
				case "LOGGED IN":
					modal_close_window();
					landing_button_update();
					login_action_update('logout');
				break
				case "LOGGED OUT":
					form_error_update('form_login', $('text_cookies-required').innerHTML);
				break
			}
		}
	});	
}

function login_check() {
	var cookie_username = $$('meta[name="cookie_username"]')[0].content;
	var cookie_status;
	if (cookie_username) { cookie_status = true;
	} else { cookie_status = false; }
	return cookie_status;
}

function login_action_update(type) {
	
	if ($('navbar_login_action')) {
		switch (type) {
			case 'login':
				$('navbar_login_action').innerHTML = '<a href="javascript: modal_window(\'login\',\'en.us\');">'+ $('text_sign-in').innerHTML +'</a>';	
			break
			case 'logout':
				$('navbar_login_action').innerHTML = '<a href="javascript: modal_window(\'logout\',\'en.us\');">'+ $('text_sign-out').innerHTML +'</a>';	
			break
		}
	}
}

function login_status() {
	var cookie_username = $$('meta[name="cookie_username"]')[0].content;
	if (cookie_username) {
		$('navbar_login_status').innerHTML = (cookie_username);
		login_action_update('logout');
	} else {
		//$('modal_window_pop_login').innerHTML = "yes";
	}
	$('navbar_login_menu').appear({ duration: 1});
}

function user_logout() {
	new Ajax.Request('/json/logout', {
		method : "post",
		onSuccess : function (transport) { },
		onFailure : function(transport) { ajax_error_message(); },
		onComplete : function(transport) {
			var ajax_response = transport.responseText.evalJSON();
			window.location.href = '/home?l='+ language_code +'';
		}
	});
}

function user_forgotpassword() {
	modal_loading('show');
	
	// registration object to post
	var forgotpassword_details = {
		email: $F('user_forgotpassword_email')
	};
	// Make Ajax JSON request
	new Ajax.Request('/json/send_password_reminder', {
		method : "post",
		postBody: Object.toJSON(forgotpassword_details),
		onSuccess : function (transport) { },
		onFailure : function(transport) { modal_loading('hide'); ajax_error_message(); },
		onComplete : function(transport) {
			modal_loading('hide');
			var ajax_response = transport.responseText.evalJSON();
			form_error_check(ajax_response,'form_forgotpassword',true,'modal_close_window(); modal_window(\'forgotpassword_confirmation\',\''+ language_code +'\');');
		}
	});
}

function user_reset_password_check_code() {
	
	var password_reset_code = { code: $('password_reset_code').innerHTML };
	
	new Ajax.Request('/json/check_password_reset_code', {
		method : "post",
		postBody: Object.toJSON(password_reset_code),
		onSuccess : function (transport) { },
		onFailure : function(transport) { $('check_code_loading').hide(); ajax_error_message(); },
		onComplete : function(transport) {
			$('check_code_loading').hide();
			var ajax_response = transport.responseText.evalJSON();
			form_error_check(ajax_response,'form_reset_check',true,'modal_close_window(); modal_window(\'password_reset\',\''+ language_code +'\',\'\',\'code='+ $('password_reset_code').innerHTML +'\');');
		}
	});
}

function user_reset_password() {
	modal_loading('show');
	
	var resetpassword_details = {
		password: $F('user_reset_password'),
		password_confirm: $F('user_reset_password_confirm'),
		code: $('password_reset_code').innerHTML
	};
	// Make Ajax JSON request
	new Ajax.Request('/json/change_password_on_reset', {
		method : "post",
		postBody: Object.toJSON(resetpassword_details),
		onSuccess : function (transport) { },
		onFailure : function(transport) { modal_loading('hide'); ajax_error_message(); },
		onComplete : function(transport) {
			modal_loading('hide');
			var ajax_response = transport.responseText.evalJSON();
			form_error_check(ajax_response,'form_reset',true,'modal_close_window(); $$(\'#form_login .form_errors\')[0].innerHTML = $(\'text_reset-password-successful\').innerHTML;');
			
		}
	});
	// modal_window(\'login\',\''+ language_code +'\',\'\',\'form_error='+ $('text_reset-password-successful').innerHTML +'\');
}

function user_profile_update() {
	modal_loading('show'); 

	// contact message object to post
	var profile_details = {
		first_name: $F('profile_first_name'),
		last_name: $F('profile_last_name'),
		display_name: $F('profile_display_name'),
		email: $F('profile_email'),
		hometown: $F('profile_hometown'),
		website: $F('profile_website'),
		research_interests: $F('profile_research_interests')
	};
	// Make Ajax JSON request
	new Ajax.Request('/json/profile', {
		method : "post",
		postBody: Object.toJSON(profile_details),
		onSuccess : function (transport) { },
		onFailure : function(transport) { modal_loading('hide'); ajax_error_message(); },
		onComplete : function(transport) {
			modal_loading('hide');
			var ajax_response = transport.responseText.evalJSON();
			form_error_check(ajax_response,'form_profile',false);
		}
	});
}

function user_contact_message() {
	modal_loading('show'); 

	// contact message object to post
	var contact_message = {
		name: $F('contact_name'),
		email: $F('contact_email'),
		message: $F('contact_message'),
		browser_height: $F('browser_height'),
		browser_width: $F('browser_width'),
		screen_height: $F('screen_height'),
		screen_width: $F('screen_width')
	};
	// Make Ajax JSON request
	new Ajax.Request('/json/contact', {
		method : "post",
		postBody: Object.toJSON(contact_message),
		onSuccess : function (transport) { },
		onFailure : function(transport) { modal_loading('hide'); ajax_error_message(); },
		onComplete : function(transport) {
			modal_loading('hide');
			var ajax_response = transport.responseText.evalJSON();
			form_error_check(ajax_response,'form_contact',true,'modal_window(\'contact_confirmation\',\''+ language_code +'\');');
		}
	});
}

function contact_add() {
	
	 
	
	var contact_details = {
		contact_first_name : $F('contact_first_name'),
		contact_last_name : $F('contact_last_name'),
		contact_email : $F('contact_email')
	};
	
	var field_blank = false;
	var contact_inputs = $$('#toolbar_contact_add_form input','#myaccount_contact_add_form input');
	for (i=0; i<contact_inputs.length; i++) {
		if (contact_inputs[i].hasClassName('value_default') == true) {
			field_blank = true;
		}
	}
	
	
	if (field_blank == false) {
		modal_loading('show');
		new Ajax.Request('/json/contact_add_edit', {
			method : "post",
			postBody: Object.toJSON(contact_details),
			onSuccess : function (transport) { },
			onFailure : function(transport) { modal_loading('hide'); ajax_error_message(); },
			onComplete : function(transport) {
				
				var ajax_response = transport.responseText.evalJSON();
				
				if (ajax_response.status == 'OK') {
					modal_loading('hide');
					share_contacts_preload();
					status_message($('text_add-contact-success').innerHTML,'','modal');
					contact_edit_toolbar('reset');
				}
				
			}
		});
	} else {
		alert($('text_required-field-missing').innerHTML);
	}
	
}

function contacts_reload(){
	
	var target = ''; 
	
	if ($('toolbar_contacts')) {
		var contacts_height = $('toolbar_contacts').getHeight();
		$('toolbar_contacts').style.height = contacts_height +'px';
		target = $('toolbar_contacts');
	}
	if ($('myaccount_contact_list')) {
		target = $('myaccount_contact_list');
	}
	target.update(loading_table());
	
	new Ajax.Request('/json/contact_list', {
		method : "get",
		onSuccess : function (transport) { },
		onFailure : function(transport) { modal_loading('hide'); ajax_error_message(); },
		onComplete : function(transport) {
			//modal_loading('hide');
			var ajax_response = transport.responseText.evalJSON();
			
			var contact_template = $('layout_template_contacts').innerHTML;
			var contacts_to_print = '';
			
			var total_contacts = ajax_response.total_contacts;
			for (i=1; i<=total_contacts; i++) {
				current_contact = eval('ajax_response.contacts.contact_'+ i +'');
				if (current_contact && current_contact.first_name && current_contact.last_name && current_contact.contact_id && current_contact.email) {
					var contact_to_print = '';
					var contact_li_template = $('layout_template_contact_li').innerHTML;
					var contact_name = current_contact.first_name +' '+ current_contact.last_name;
					contact_to_print = contact_li_template.replace(/%CONTACT_NAME%/g,contact_name);
					contact_to_print = contact_to_print.replace(/%CONTACT_ID%/g,current_contact.contact_id);
					contact_to_print = contact_to_print.replace(/%CONTACT_FIRST_NAME%/g,current_contact.first_name);
					contact_to_print = contact_to_print.replace(/%CONTACT_LAST_NAME%/g,current_contact.last_name);
					contact_to_print = contact_to_print.replace(/%CONTACT_EMAIL%/g,current_contact.email);
					contacts_to_print += contact_to_print;
				}
			}
			contact_list_print = contact_template.replace(/%CONTACT_LIST%/,contacts_to_print);
			//contact_list_print = contact_list_print.replace(/%NETWORK_LIST%/,'');
			
			if ($('toolbar_contacts')) {
				$('toolbar_contacts').style.height = 'auto';
			}
			
			target.update(contact_list_print);
			
			if ($('toolbar_contacts')) {
				toolbar_contacts_init('checkbox');
			}
			
			
			if ($('myaccount_contact_list')) {
				toolbar_contacts_init('update');
			}
			
			if ($('toolbar_contacts')) {
				if ($('toolbar_contact_add_form').style.display != 'none') {
					toolbar_contacts_init('update');
					if ($('contact_edit_instructions')) { $('contact_edit_instructions').appear({ duration : 0.5 }); }
				}
			}
			
		}
	});
	
	
}

function input_focus_reset(field)
{
	if (!field.getAttribute('valueDefault')) {
		field.select();
	}
	
}

function input_value_default(target) {
	
	if (!target.getAttribute('valueDefault')) {
		target.setAttribute('valueDefault',target.value);
	}
	
	if (target.getAttribute('valueDefault')) {
		if (target.value == target.getAttribute('valueDefault')) {
			
			target.value = '';
			if ((target.id) && (document.all)) {
				$(''+ target.id +'').removeClassName('value_default');
			}
			else {
				target.removeClassName('value_default');
			}
		}
	}
	
	target.onblur = function() {
		if (target.value == '') {
			target.value = target.getAttribute('valueDefault');
			target.addClassName('value_default');
		}
	};
	
	target.onfocus = function() {
		if (target.value == target.getAttribute('valueDefault')) {
			target.select();
		}
	};
	
}

function contact_update(trigger_id,state) {
	
	var contact_id = trigger_id.split('contact_',2)[1];
	
	switch (state) {
		case 'prep' :
			var contact_inputs = $$('#toolbar_contact_update_form input','#myaccount_contact_update_form input');
			for (i=0; i<contact_inputs.length; i++) {
				if (!contact_inputs[i].getAttribute('valueDefault')) {
					contact_inputs[i].setAttribute('valueDefault',contact_inputs[i].value);
				}
				contact_inputs[i].removeClassName('value_default');
			}
			$('contact_update_first_name').value = $(trigger_id).getAttribute('contactFirstName');
			$('contact_update_last_name').value = $(trigger_id).getAttribute('contactLastName');
			$('contact_update_email').value = $(trigger_id).getAttribute('contactEmail');
			
			$('contact_update_button_update').onclick = function() {
				contact_update(trigger_id,'submit');
			};
			
			$('contact_update_button_delete').onclick = function() { 
				contact_delete(trigger_id);
			};
			
		break
		case 'submit' :
		
			var contact_details = {
				contact_id : contact_id,
				contact_first_name : $F('contact_update_first_name'),
				contact_last_name : $F('contact_update_last_name'),
				contact_email : $F('contact_update_email')
			};
			
			var field_blank = false;
			var contact_inputs = $$('#toolbar_contact_update_form input','#myaccount_contact_update_form input');
			
			for (i=0; i<contact_inputs.length; i++) {
				if (contact_inputs[i].hasClassName('value_default') == true) {
					field_blank = true;
				}
			}
			
			
			if (field_blank == false) {
				new Ajax.Request('/json/contact_add_edit', {
					method : "post",
					postBody: Object.toJSON(contact_details),
					onSuccess : function (transport) { modal_loading('hide'); },
					onFailure : function(transport) { modal_loading('hide'); ajax_error_message(); },
					onComplete : function(transport) {
						
						var ajax_response = transport.responseText.evalJSON();
						
						
						if (ajax_response.status == 'OK') {
							
							modal_loading('hide');
							share_contacts_preload();
							status_message($('text_save-changes-success').innerHTML,'','modal');
							contact_edit_toolbar('reset');
							
							/*
							if ($('toolbar_contacts')) { 
								contact_edit_toolbar('reset'); 
								status_message($('text_add-contact-success').innerHTML);
							}
							
							else if ($('myaccount_section_contacts')) { 
								contact_edit_toolbar('close_update_myaccount');
							}
							
							
							
							contacts_reload();
							toolbar_share_contact_prep();
							
							if ($('toolbar_contacts')) { $('toolbar_nocontacts').hide(); }
							*/
						}
						
						//form_error_check(ajax_response,'toolbar_contact_add_form',true,'contact_add_inline(\'reset\');');
						
						//modal_close_window();
						//modal_window('contact_add_confirmation',''+ language_code +'',''+ $F('contact_first_name') +'%'+ $F('contact_last_name') +'');
						/*
						form_error_check(ajax_response,'form_contact_add',true,'modal_window(\'contact_add_confirmation\',\''+ language_code +'\',\''+ $F('contact_first_name') +'%'+ $F('contact_last_name') +'\');');
						*/
						
					}
				});
			} else {
				alert($('text_required-field-missing').innerHTML);
			}
		
		break
	}
	
}

function contact_edit_toolbar(state) {
	
	var contact_input_default_state = function() {
			var contact_inputs = $$('#toolbar_contact_add_form input', '#myaccount_contact_add_form input');
			for (i=0; i<contact_inputs.length; i++) {
				if (contact_inputs[i].getAttribute('valueDefault')) {
					contact_inputs[i].value = contact_inputs[i].getAttribute('valueDefault');
					contact_inputs[i].addClassName('value_default');
				}
			}
			if ($('toolbar_contacts')) {
				if ($('toolbar_nocontacts').style.display == 'none') { $('contact_edit_instructions').show(); }
				$('contact_edit_button_add').show();
				$('contact_edit_button_close').show();
			}
			toolbar_contacts_init('update');
			if ($('myaccount_section_contacts')) { myaccount_contact_highlight(); }
	};
	
	var contact_update_input_default_state = function() {
		var contact_update_inputs = $$('#toolbar_contact_update_form input','#myaccount_contact_update_form input');
		for (i=0; i<contact_update_inputs.length; i++) {
			if (contact_update_inputs[i].getAttribute('valueDefault')) {
				contact_update_inputs[i].value = contact_update_inputs[i].getAttribute('valueDefault');
				contact_update_inputs[i].addClassName('value_default');
			}
		}
		if ($('myaccount_section_contacts')) { myaccount_contact_highlight(); }
	}
	
	var scope;
	if ($('toolbar_contacts')) { scope = 'toolbar'; }
	else if ($('myaccount_section_contacts')) { scope = 'myaccount'; }
	
	switch(state) {
		
		case "new" :
			contact_add();
		break
		
		case "update" :
			$('contact_add').hide();
			$('toolbar_contact_add_form').hide();
			$('toolbar_contact_update_form').show();
		break
		
		case "update_myaccount" :
			$('myaccount_contact_add_form').hide();
			$('myaccount_contact_update_form').show();
		break
		
		case "reset_update" :
			contact_update_input_default_state();
		break
		
		case "close_update" :
			new Effect.BlindUp('toolbar_contact_update_form', { duration: 0.5, queue: 'front' });
			$('contact_edit_instructions').fade({ duration: 0.5 });
			$('contact_add').show();
			contact_update_input_default_state();
			toolbar_contacts_init('reset');
		break
		
		case "close_update_myaccount" :
			contact_update_input_default_state();
			$('myaccount_contact_update_form').hide();
			$('myaccount_contact_add_form').show();
			contact_input_default_state();
		break
		
		case "reset" :
			if( $(''+ scope +'_contact_update_form').style.display != 'none' ) {
				$(''+ scope +'_contact_update_form').hide();
				$(''+ scope +'_contact_add_form').show();
			}
			contact_input_default_state();
		break
				
		case "close" :
			new Effect.BlindUp('toolbar_contact_add_form', { duration: 0.5  });
			$('contact_edit_instructions').fade({ duration: 0.5 });
			$('toolbar_contact_update_form').hide();
			$('contact_add').show();
			toolbar_contacts_init('reset');
		break

		default :
		
			if ($('toolbar_contacts')) { $('contact_add').hide(); }
			
			if( $(''+ scope +'_contact_update_form').style.display != 'none' ) {
				$(''+ scope +'_contact_update_form').hide();
				$(''+ scope +'_contact_add_form').show();
			} else {
				new Effect.BlindDown(''+ scope +'_contact_add_form', { duration: 0.5, queue: 'end' });
			}
			
			contact_input_default_state();
			
		break
	}
}

function myaccount_update_info(target,state) {
	
	switch (state) {
		case "show" :
			$(''+ target +'_display').hide();
			$(''+ target +'_edit').show();
		break
		case "cancel" :
			$(''+ target +'_display').show();
			$(''+ target +'_edit').hide();
		break
	
	}

}

function contact_list() {
	new Ajax.Request('/json/contact_list', {
		method : "get",
		onSuccess : function (transport) { },
		onFailure : function(transport) { ajax_error_message(); },
		onComplete : function(transport) {
			modal_loading('hide');
			var ajax_response = transport.responseText.evalJSON();
			
			//modal_close_window();
			//modal_window('contact_add_confirmation',''+ language_code +'',''+ $F('contact_first_name') +'%'+ $F('contact_last_name') +'');
			
		}
	});
	
}



function contact_add_preload(name) {
	var target = $$('.dialog div#contact_name')[0];
	var first_name = name.split('%')[0];
	var last_name = name.split('%')[1];
	var name = target.innerHTML.replace('%FIRST_NAME%',first_name);
	name = name.replace('%LAST_NAME%',last_name);
	target.innerHTML = name;
	target.appear({ duration: 0.5});
}

function contact_add_confirmation() {
	
}

function contact_delete(target) {
	
	var contact_id_to_delete = target.split('contact_',2)[1];
	
	var contact_to_delete = {
		contact_id: contact_id_to_delete
	};
	
	new Ajax.Request('/json/contact_delete', {
		method : "post",
		postBody: Object.toJSON(contact_to_delete),
		onSuccess : function (transport) { },
		onFailure : function(transport) { ajax_error_message(); },
		onComplete : function(transport) {
			
			var ajax_response = transport.responseText.evalJSON();
			
			/*
			if ($('toolbar_contacts')) { contact_edit_toolbar('reset'); }
			if ($('myaccount_section_contacts')) { contact_edit_toolbar('close_update_myaccount'); }
			*/
			
			
			share_contacts_preload();
			status_message($('text_delete-contact-confirmation').innerHTML,'','modal');
			modal_loading('hide');
			contact_edit_toolbar('reset');
			setTimeout('$(\''+ target +'\').fade({ duration: 0.5});',100);
			
			//modal_close_window();
			//modal_window('contact_add_confirmation',''+ language_code +'',''+ $F('contact_first_name') +'%'+ $F('contact_last_name') +'');
			
		}
	});
}


function myaccount_contact_highlight(target) {
	var myaccount_contacts_selected = $$('#myaccount_contact_list li.myaccount_contact.selected');
	for (i=0; i<myaccount_contacts_selected.length; i++) {
		myaccount_contacts_selected[i].removeClassName('selected');
	}
	if (target) { $(target).addClassName('selected'); }
}
	


function file_action_upload() {
	//var iframe_target = $$('iframe[src="/static/file_action_upload"]')[0].id;
	//if (!iframe_target) {
		var iframe_target = $$('iframe')[0].id;
	//}
	var iframe_target_form = $(''+ iframe_target +'').contentWindow.document.form_upload;
	//var file_title = $(''+ iframe_target +'').contentWindow.$('tree_title');
	//alert(file_title);
	//var file_title = iframe_target_form['tree_title'].getValue();
	var modal_loading = $(''+ iframe_target +'').contentWindow.$('upload_loading');
	//var error_message = iframe_target_form.getElementsBySelector('span.form_errors')[0];
	//var form_message = iframe_target_form.getElementsBySelector('span.form_message')[0];
	//if(file_title) {
		//error_message.update('');
	iframe_target_form.submit(); modal_loading.appear({ duration: 0.5});
	//} else {
		//form_message.update('');
		//error_message.innerHTML = $('text_please-enter-title-for-tree').innerHTML;
	//}
}

function file_action_update_preload(tree_listing_target) {
	var file_title = $$('#tree_listing_id_'+ tree_listing_target +' span.list_title a')[0].innerHTML;
	modal_content_replace('%TREE_TITLE%',file_title);
}

function file_action_edit_preload(tree_listing_target) {
	var file_title = $$('#tree_listing_id_'+ tree_listing_target +' span.list_title a')[0].innerHTML;
	var file_description = $$('#tree_listing_id_'+ tree_listing_target +' span.list_tree_description')[0].innerHTML;
	modal_content_replace('%TREE_TITLE%',file_title);
	modal_content_replace('%TREE_DESCRIPTION%',file_description);
}

function file_action_edit(tree_id_target) {
	modal_loading('show');
	
	
	if ($F('tree_edit_hide_notes') == null) { var tree_edit_hide_notes = "No"; } 
	else { var tree_edit_hide_notes = $F('tree_edit_hide_notes'); }
	
	// contact message object to post
	var file_edit_parameters = {
		tree_id: tree_id_target,
		tree_title: $F('tree_edit_title'),
		tree_description: $F('tree_edit_description'),
		tree_hide_notes: tree_edit_hide_notes
	};
	// Make Ajax JSON request
	new Ajax.Request('/json/admin/edit_tree', {
		method : "post",
		postBody: Object.toJSON(file_edit_parameters),
		onSuccess : function (transport) { },
		onFailure : function(transport) { modal_loading('hide'); ajax_error_message(); },
		onComplete : function(transport) {
			modal_loading('hide');
			var ajax_response = transport.responseText.evalJSON();
			form_error_check(ajax_response,'form_edit',true,'modal_window(\'file_action_edit_confirmation\',\''+ language_code +'\'); tree_view_history_process(\'mytrees\',null,\'listings\',\'mytrees\');');
		}
	});
	
}

function file_action_print_chart(menu_item, menu_item_target) {
	var url_target = $('iframe_chart').contentWindow.chart_url_construct();
	var menu_item_text = menu_item_target.innerHTML;
	var menu_item_loading = function() {
		menu_item_target.innerHTML = $('text_working').innerHTML;
		menu_item_target.removeClassName('toolbar_menu_item_'+ menu_item +'');
		menu_item_target.addClassName('toolbar_menu_item_loading');
	};
	var menu_item_restore = function() {
		menu_item_target.innerHTML = menu_item_text;
		menu_item_target.removeClassName('toolbar_menu_item_loading');
		menu_item_target.addClassName('toolbar_menu_item_'+ menu_item +'');
	};
	menu_item_loading();
	var print_image_parameters = {
		url: url_target
	};
	new Ajax.Request('/json/print_image', {
		method : "post",
		postBody: Object.toJSON(print_image_parameters),
		onSuccess : function (transport) { },
		onFailure : function(transport) {  alert($('text_print_chart_error').innerHTML); menu_item_restore(); },
		onComplete : function(transport) {
			var ajax_response = transport.responseText.evalJSON();
			var image_url = ajax_response.image_url;
			var capture_status = ajax_response.capture_status;
			if (capture_status == 'OK') {
				menu_item_restore();
				window.location.href = image_url;
			} else {
				alert($('text_print_chart_error').innerHTML);
				menu_item_restore();
			}
		}
	});
	
}

function file_action_delete_preload(tree_listing_target) {
	var file_title = $$('#tree_listing_id_'+ tree_listing_target +' span.list_title a')[0].innerHTML;
	modal_content_replace('%TREE_TITLE%',file_title);
}

function file_action_delete(tree_id_delete) {
	modal_loading('show');
	var tree_to_delete = { tree_id: (''+ tree_id_delete +'') };	
	new Ajax.Request('/json/admin/delete_tree', {
		method : "post",
		postBody: Object.toJSON(tree_to_delete),
		onSuccess : function (transport) { },
		onFailure : function(transport) { modal_loading('hide'); ajax_error_message(); },
		onComplete : function(transport) {
			modal_loading('hide');
			var tree_delete_response_status = transport.responseText.evalJSON().status;
			if (tree_delete_response_status == 'OK') {
				modal_close_window();
				$('tree_listing_id_'+ tree_id_delete +'').fade({ duration: 0.5 });
			}
		}
	});
}

function tree_search(type,extra_parameters) {
	//$('search_loading').show();
	
	$('tree_listings_search_individuals_results').update();
	$('tree_listings_search_individuals_results').update(loading_table());
	
	var search_parameters = $('form_search_table_container').serialize();
	if (extra_parameters) {
		search_parameters = search_parameters+extra_parameters;
	}
	
	// Make Ajax JSON request
	new Ajax.Request('/json/global_search?'+ search_parameters +'', {
		method : "post",
		onSuccess : function (transport) { },
		onFailure : function(transport) { $('search_loading').hide(); ajax_error_message(); },
		onComplete : function(transport) {
			$('search_loading').hide();
			var ajax_response = transport.responseText.evalJSON();
			switch (type) {
				case "global" : tree_data_process(ajax_response,'listings_search_individuals');break
				case "tree" : tree_data_process(ajax_response,'listings_search_individuals_tree'); break
			}
		}
	});
	
	
}

function file_action_sidebar_email() {
	var sidebar_url = window.location.href;
	$('page_tool_share_email').href = 'mailto: ?Subject='+ $('tree_title').innerHTML +'%20on%20WebTree.com&Body='+ sidebar_url +'';
}

function file_action_sidebar_link() {
	var sidebar_url = window.location.href;
	if (sidebar_url.match("embed.")) { sidebar_url = sidebar_url.replace('embed.',''); }
	modal_content_replace('%SIDEBAR_URL%',sidebar_url);
}

function file_action_sidebar_embed() {
	var embed_url_base = window.location.href.split("http://webtree.com/",2)[1]; 
	var embed_url = 'http://embed.webtree.com/'+ embed_url_base;
	modal_content_replace('%EMBED_URL%',embed_url);
}

function input_select_all(target) {
	$(''+ target +'').focus();
	$(''+ target +'').select();
}

function file_action_embed_chart() {
	var embed_chart_url = ''
	var embed_chart_url_base = window.location.href;
	
	if (embed_chart_url_base.match("http://embed")){ embed_chart_url = embed_chart_url_base; }
	else {
		embed_chart_url_base.split("http://webtree.com/",2)[1];
		var embed_chart_url = 'http://embed.webtree.com/'+ embed_chart_url_base;
	}
	
	var embed_chart_params = chart_url_params();
	embed_chart_url = embed_chart_url+'&'+embed_chart_params;
	
	modal_content_replace('%EMBED_URL%',embed_chart_url);
}

function file_action_sidebar_api(sidebar_api_url) {
	$('page_tool_share_api').href = sidebar_api_url;
	//$('page_tool_share_api').href = "javascript: modal_window('sidebar_api','en.us')";
}

function file_action_sidebar_api_preload() {
	modal_content_replace('%SIDEBAR_API_URL%',sidebar_api_url);
}

function chart_options_generations() {
	var gen_calculator = function(value) {
		var gens;
		if (value == .0) { gens = "1"; } if (value == .1) { gens = "2"; }
		if (value == .2) { gens = "3"; } if (value == .3) { gens = "4"; }
		if (value == .4) { gens = "5"; } if (value == .5) { gens = "6"; }
		if (value == .6) { gens = "7"; } if (value == .7) { gens = "8"; }
		if (value == .8) { gens = "9"; } if (value == .9) { gens = "10"; }
		if (value == 1) { gens = "11"; }	
		return gens;
	}
	var predefined_gen_value = function() {
		var predefined_gens = $('generations').innerHTML;
		var gens;
		if (predefined_gens == "1") { gens = .0; } if (predefined_gens == "2") { gens = .1; }
		if (predefined_gens == "3") { gens = .2; } if (predefined_gens == "4") { gens = .3; }
		if (predefined_gens == "5") { gens = .4; } if (predefined_gens == "6") { gens = .5; }
		if (predefined_gens == "7") { gens = .6; } if (predefined_gens == "8") { gens = .7; }
		if (predefined_gens == "9") { gens = .8; } if (predefined_gens == "10") { gens = .9; }
		if (predefined_gens == "11") { gens = 1; }	
		return gens;
	}
	new Control.Slider('chart_options_slider_handle','chart_options_slider_track', {
		minimum: 0,
		maximum: 150,
		alignX: 0,
		alignY: 0,
		values: [.0, .1, .2, .3, .4, .5, .6, .7, .8, .9, 1],
		sliderValue: predefined_gen_value(),
		onSlide: function(value) {
			var gens = gen_calculator(value);
			$('chart_options_generations_selected').update(gens);
		},
		onChange: function(value) {
			var gens = gen_calculator(value);
			$('generations').innerHTML = gens;
			//var chart_url_new = $('iframe_chart').contentWindow.chart_url_construct();
			//$('iframe_chart').src = chart_url_new;
			$('tree_chart_content').update(loading_table());
			tree_chart_fetch(''+ $('chart_type').innerHTML +'',''+ gens +'');
		}
	});
}

function chart_url_construct() {
	var chart_type = $('chart_type').innerHTML;
	var chart_url = '/chart/'+ chart_type +'?';
	var chart_variables = $$('#chart_options div.chart_options_attribute');
	for (i=0; i<chart_variables.length; i++) {
		var chart_variable_name = chart_variables[i].id;
		var chart_variable_value = chart_variables[i].innerHTML;
		if (chart_variable_value) {
			chart_url += chart_variable_name +'='+ chart_variable_value +''; 
			if (i<chart_variables.length) { chart_url += '&'; }
		}
	}
	return chart_url;
}

function chart_url_params() {
	var chart_url = '';
	var chart_variables = $$('#chart_options div.chart_options_attribute');
	for (i=0; i<chart_variables.length; i++) {
		var chart_variable_name = chart_variables[i].id;
		var chart_variable_value = chart_variables[i].innerHTML;
		if (chart_variable_value) {
			chart_url += chart_variable_name +'='+ escape(chart_variable_value) +''; 
			if (i<chart_variables.length) { chart_url += '&'; }
		}
	}
	return chart_url;
}

function chart_options_toggle() {
	if ($('view_chart_options_ui').style.display == "none") {
		$('view_chart_options').removeClassName('view_chart_options_min');
		$('view_chart_options').addClassName('view_chart_options_max');
		Effect.BlindDown('view_chart_options_ui', { duration: 0.3 });
		setTimeout('chart_options_generations()', 1000);
	} else {
		$('view_chart_options').removeClassName('view_chart_options_max');
		$('view_chart_options').addClassName('view_chart_options_min');
		Effect.BlindUp('view_chart_options_ui', { duration: 0.3 });
	}
	setTimeout('chart_set_height()',800);
}

function iframe_get_content(iframe_target) {
	var iframe_content = $(''+ iframe_target +'').contentWindow.document.body.innerHTML;
	return iframe_content;
}

function iframe_set_content(iframe_target,iframe_new_content) {
	$(''+ iframe_target +'').contentWindow.document.body.innerHTML = iframe_new_content;
}

function chart_options_change_bg_color(chart_new_bg_color) {
	var chart = $('iframe_chart').contentWindow.document.body;
	chart.style.backgroundColor = '#'+ chart_new_bg_color +'';
}

function chart_options_theme_change(chart_theme_name) {
	document.body.innerHTML = document.body.innerHTML.replace(/tree_chart_theme_(.*?)(\b)/g, 'tree_chart_theme_'+ chart_theme_name +'$2');
	$('chart_theme').update(chart_theme_name);
}

function chart_options_theme_clear() {
	document.body.innerHTML = document.body.innerHTML.replace(/tree_chart_theme_(.*?)(\b)/g, 'tree_chart_theme_none$2');
	$('chart_theme').update('');
}

function chart_options_menu_choose(menu_target, menu_value, chart_option_target, chart_option_value) {
	$(''+ menu_target +'').innerHTML = ''+ menu_value +'';
	$(''+ chart_option_target +'').innerHTML = ''+ chart_option_value +'';
	chart_options_theme_clear();
	chart_options_set_box_style();
	timer_set_hide(''+ menu_target +'_menu');
}

function menu_show(menu_template,menu_trigger) {
	var menu = $(''+ menu_template +'');
	var menu_position = $(''+ menu_trigger +'').viewportOffset();
	menu.style.left = (menu_position.left+8)+'px';
	menu.style.top = (menu_position.top+8)+'px';
	menu.appear({ duration: 0.2 });
	menu.style.visibility = "visible";
	timer_set_hide(''+ menu_template +'');
	timer_cancel_hide(''+ menu_template +'');
	$(''+ menu_template +'').onmouseover = function() { timer_cancel_hide(''+ menu_template +''); }
	$(''+ menu_template +'').onmouseout = function() { timer_set_hide(''+ menu_template +''); };
}

function chart_options_menu_show(menu_target) {
	var chart_options_menu = $(''+ menu_target +'_menu');
	var menu_position = $(''+ menu_target +'').viewportOffset();
	chart_options_menu.style.left = (menu_position.left+8)+'px';
	chart_options_menu.style.top = (menu_position.top+8)+'px';
	chart_options_menu.appear({ duration: 0.2 });
	chart_options_menu.style.visibility = "visible";
	timer_set_hide(''+ menu_target +'_menu');
	timer_cancel_hide(''+ menu_target +'_menu');
	$(''+ menu_target +'_menu').onmouseover = function() { timer_cancel_hide(''+ menu_target +'_menu'); }
	$(''+ menu_target +'_menu').onmouseout = function() { timer_set_hide(''+ menu_target +'_menu'); };
}

function box_background_image_options_show(thumb_target) {
	image_options = $('chart_options_box_background_image_menu');
	var position = $(thumb_target).viewportOffset();
	image_options.style.left = (position.left+8)+'px';
	image_options.style.top = (position.top+8)+'px';
	image_options.appear({ duration: 0.2 });
	image_options.style.visibility = "visible";
	timer_set_hide('chart_options_box_background_image_menu');
	timer_cancel_hide('chart_options_box_background_image_menu');
	$('chart_options_box_background_image_menu').onmouseover = function() {
		timer_cancel_hide('chart_options_box_background_image_menu');
	}
	$('chart_options_box_background_image_menu').onmouseout = function() {
		timer_set_hide('chart_options_box_background_image_menu');
	};
}

function box_background_image_choose(image_bg_selected,image_bg_class_name) {
	$('chart_options_box_background_image_thumb').style.backgroundImage = 'url('+ image_bg_selected.src +')';
	$('chart_box_bg_img').innerHTML = image_bg_class_name;
	chart_options_theme_clear();
	chart_options_set_box_style();
	timer_set_hide('chart_options_box_background_image_menu');
}

function chart_options_box_bg_img_add(chart_box_bg_img) {
	chart_options_box_bg_img_clear();
	var boxes = $$('.tree_chart_box_standard');
	for (i=0; i<boxes.length; i++) { boxes[i].addClassName('tree_chart_box_bg_img_'+ chart_box_bg_img +''); }
	$('chart_box_bg_img').update(chart_box_bg_img);
}

function chart_options_box_bg_img_clear() {
	var boxes = $$('.tree_chart_box_standard');
	for (i=0; i<boxes.length; i++) {
		  var box_classes = $w(boxes[i].className);
		  var box_current = boxes[i];
		  for (c=0; c<box_classes.length; c++) {
			if (box_classes[c].match('tree_chart_box_bg_img_')) { box_current.removeClassName(box_classes[c]);}
		  }
	}
	$('chart_box_bg_img').update('');
}

function chart_options_box_color_bg_sex(gender,rgb) {
	$('chart_box_color_bg_'+ gender +'').innerHTML = rgb;
	chart_options_theme_clear();
	//$('chart_options_box_background_image_thumb').style.backgroundImage = 'url(/images/tree_chart_box_NONE.png)';
	chart_options_set_box_style();
}

function chart_options_box_shadow(check_state) {
	if (check_state == true) { $('chart_box_shadow').innerHTML = 'true'; }
	else { $('chart_box_shadow').innerHTML = 'false'; }
	chart_options_set_box_style();
}

function chart_options_box_shadow_visibility(box_id,visibility) {
	if (visibility == 'true') { box_id.addClassName('tree_chart_box_shadow_img'); }
	else { box_id.removeClassName('tree_chart_box_shadow_img'); }
}

function chart_options_box_outline(rgb) {
	$('chart_box_color_outline').innerHTML = rgb;
	chart_options_theme_clear();
	chart_options_set_box_style();
}

function chart_options_box_font_color(rgb) {
	$('chart_box_color_font').innerHTML = rgb;
	chart_options_theme_clear();
	chart_options_set_box_style();
}

function chart_options_set_box_style() {
	
	// establish chart box targets
	var chart_boxes_all = $$('.tree_chart_box_standard');
	var chart_boxes_male = $$('.tree_chart_sex_male');
	var chart_boxes_female = $$('.tree_chart_sex_female');
	//var chart_boxes_unknown_gender = $$('.tree_chart_sex_');
	//if (!chart_boxes_unknown_gender) { 
	var chart_boxes_unknown_gender = $$('.tree_chart_sex'); 
	//}
	var chart_boxes_outline = $$('.tree_chart_box_border');
	var chart_boxes_shadow = $$('div.tree_chart_box_shadow');
	var chart_boxes_name = $$('.tree_chart_box_name');
	var chart_theme = $('chart_theme').innerHTML;
	var chart_box_shadow = $('chart_box_shadow').innerHTML;
	for (i=0; i<chart_boxes_shadow.length; i++) {
		if (chart_box_shadow == 'true') { chart_options_box_shadow_visibility(chart_boxes_shadow[i],'true'); } 
		else { chart_options_box_shadow_visibility(chart_boxes_shadow[i],'false'); }
	}
	if (chart_theme) { chart_options_theme_change(chart_theme); }
	else {
		
		// establish attribute values and apply attributes
		
		if ($('chart_box_color_bg_male')){ 
			var chart_box_color_bg_male = $('chart_box_color_bg_male').innerHTML;
		} else {
			var chart_box_color_bg_male = $('chart_box_color_bg_male').getAttribute('default');
		}
		alert(chart_box_color_bg_male);
		
		if (!chart_box_color_bg_male.match('rgb')) { if (!document.all) { chart_box_color_bg_male = '#'+chart_box_color_bg_male; }}
		for (i=0; i<chart_boxes_male.length; i++) { chart_boxes_male[i].style.backgroundColor = ""+ chart_box_color_bg_male +""; }
		
		
		if ($('chart_box_color_bg_female')){ var chart_box_color_bg_female = $('chart_box_color_bg_female').innerHTML;
			if (!chart_box_color_bg_female.match('rgb')) { if (!document.all) { chart_box_color_bg_female = '#'+chart_box_color_bg_female; }}
			for (i=0; i<chart_boxes_female.length; i++) { chart_boxes_female[i].style.backgroundColor = ""+ chart_box_color_bg_female +""; }
		}
		
		if ($('chart_box_color_bg_unknown_gender')){ var chart_box_color_bg_unknown_gender = $('chart_box_color_bg_unknown_gender').innerHTML;
			if (!chart_box_color_bg_unknown_gender.match('rgb')) { if (!document.all) { chart_box_color_bg_unknown_gender = '#'+chart_box_color_bg_unknown_gender; }}
			for (i=0; i<chart_boxes_unknown_gender.length; i++) { chart_boxes_unknown_gender[i].style.backgroundColor = ""+ chart_box_color_bg_unknown_gender +""; }
		}
		
		if ($('chart_box_color_outline')){ var chart_box_color_outline = $('chart_box_color_outline').innerHTML; 
			if (!chart_box_color_outline.match('rgb')) { if (!document.all) { chart_box_color_outline = '#'+chart_box_color_outline;  }}
			for (i=0; i<chart_boxes_outline.length; i++) { chart_boxes_outline[i].style.background =  ""+ chart_box_color_outline +""; }
		}
		
		if ($('chart_box_color_font')){ var chart_box_color_font = $('chart_box_color_font').innerHTML;
			if (!chart_box_color_font.match('rgb')) { if (!document.all) { chart_box_color_outline = '#'+chart_box_color_font;  }}
			for (i=0; i<chart_boxes_name.length; i++) { chart_boxes_name[i].style.color =  ""+ chart_box_color_font +""; }
		}
		
		if ($('chart_box_font_family')){ var chart_box_font_family = $('chart_box_font_family').innerHTML;
			for (i=0; i<chart_boxes_name.length; i++) { chart_boxes_name[i].style.fontFamily =  ""+ chart_box_font_family +""; }
		}
		
		if ($('chart_box_font_size')){ var chart_box_font_size = $('chart_box_font_size').innerHTML;
			for (i=0; i<chart_boxes_name.length; i++) { chart_boxes_name[i].style.fontSize =  ""+ chart_box_font_size +""; }
		}
		
		var chart_box_bg_img = $('chart_box_bg_img').innerHTML;
		if (chart_box_bg_img) { chart_options_box_bg_img_add(chart_box_bg_img); }
		else { 
			if (parent.$('chart_options_box_background_image_thumb')) {
				parent.$('chart_options_box_background_image_thumb').style.backgroundImage = 'url(/images/tree_chart_box_NONE.png)';
			}
			$('chart_box_bg_img').innerHTML = 'NONE';
		}
	}
}

function chart_set_height() {
	if (($('tree_embed_toolbar')) || (parent.$('tree_embed_toolbar'))) {
		
		var tree_chart_height = '';
		
		if (self.innerHeight) { // all except Explorer
		tree_chart_height = self.innerHeight;
		tree_chart_width = self.innerWidth;
		} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		tree_chart_height = document.documentElement.clientHeight;
		tree_chart_width = document.documentElement.clientWidth;
		} else if (document.body) { // other Explorers
		tree_chart_height = document.body.clientHeight;
		tree_chart_width = document.body.clientWidth;
		} 
		
		var header_height = 0;
		if ($('tree_header')) { header_height = $('tree_header').getHeight(); }
		var embed_toolbar_height  = $('tree_embed_toolbar').getHeight();
		var embed_options_height = Math.round($('view_chart_options').getHeight()+$('tree_chart_header_container').getHeight());
		if (($('view_chart_options_ui').style.display != 'none') && (parseInt(embed_options_height) < 200)) {
			embed_options_height = 150;
		}
		var tree_pagetop_total = Math.round((embed_toolbar_height + embed_options_height) + header_height);
		var embed_content_height = Math.round((tree_chart_height)-(tree_pagetop_total));
		$('tree_chart_container').style.height = tree_chart_height+'px';
		$('tree_chart_container').style.width = tree_chart_width+'px';
		$('tree_chart_content').style.height = embed_content_height+'px';
		$('tree_chart_content_container').height = embed_content_height;
		if ($('tree_header')) { $('tree_header').height = header_height; }
		$('tree_toolbar_container').height = embed_toolbar_height;
		$('tree_chart_options_container').height = embed_options_height;
		//$('iframe_chart').style.height = embed_content_height+'px';
	}
}

function embed_drop_shadow() {
	if ($('tree_embed_toolbar_dropshadow')){
		$('tree_embed_toolbar_dropshadow').show();
	}
}

function color_picker_choose(color,thumb_target) {
	var rgb = color.style.backgroundColor;
	$(thumb_target).style.backgroundColor = rgb;
	switch (thumb_target) {
		case "chart_options_color_box_female" : chart_options_box_color_bg_sex("female",rgb); break
		case "chart_options_color_box_male" : chart_options_box_color_bg_sex("male",rgb); break
		case "chart_options_color_box_unknown_gender" : chart_options_box_color_bg_sex("unknown_gender",rgb); break
		case "chart_options_color_box_outline" : chart_options_box_outline(rgb); break
		case "chart_options_color_box_font" : chart_options_box_font_color(rgb); break
	}
	timer_set_hide('chart_options_color_picker_palette');
	//alert(rgb);
}

function color_picker_show(thumb_target) {
	palette = $('chart_options_color_picker_palette');
	// Initialize colors
	var colors = $$('#chart_options_color_picker_palette .chart_options_color_picker_sq');
	for (i=0; i<colors.length; i++) {
		colors[i].onclick = function() { color_picker_choose(this,thumb_target); };
	}
	var position = $(thumb_target).viewportOffset();
	palette.style.left = (position.left+8)+'px';
	palette.style.top = (position.top+8)+'px';
	palette.appear({ duration: 0.2 });
	palette.style.visibility = "visible";
	timer_set_hide('chart_options_color_picker_palette');
	timer_cancel_hide('chart_options_color_picker_palette');
	$('chart_options_color_picker_palette_table').onmouseover = function() {
		timer_cancel_hide('chart_options_color_picker_palette');
	}
	$('chart_options_color_picker_palette_table').onmouseout = function() {
		timer_set_hide('chart_options_color_picker_palette');
	}
	
}

function timer_set_hide(target) {
	eval( 'timer_hide_' + target + ' = setTimeout("$(\''+ target +'\').fade({duration: 0.2});",100);');
}

function timer_cancel_hide(target) {
	eval('clearTimeout(timer_hide_' + target + ');');
	eval('timer_hide_'+ target + '=false;');
}


/////////////////////////////////////////////////////
// PORTED FROM FAMILYLINK_TREE.JS


// JavaScript Document


// global variables
var new_item_to_print = '';
var children_to_print = '';
var child_to_print = '';
var table_to_print = '';
var table_row_to_print = '';
var table_row_template = '';
var list_count = 0;
var last_json_request = '';


// add load events to page
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') { window.onload = func; } 
	else { window.onload = function() { oldonload(); func(); }}
}

function clean_characters(clean_string) {
	clean_string.replace(/\\/g,'');
	clean_string.replace(/<&#91;^>&#93;*>/g, "");
	clean_string.replace(/</g,"&lt;");
	clean_string.replace(/>/g,"&gt;");
	clean_string.replace(/'/g,"&#39;");
	clean_string.replace(/"/g,"&quot;");
	return clean_string;
}

function addslashes(str) {
	str = str.replace(/\\/g,'');
	str = str.replace(/\\/g,'\\\\');
	str = str.replace(/\'/g,'\\\'');
	str = str.replace(/\"/g,'\\"');
	str = str.replace(/\(/g,'\\(');
	str = str.replace(/\)/g,'\\)');
	return str;
}

function removeslashes(str) {
	str = str.replace(/\\/g,'');	
}


function list_loop(tree_data, assoc_array_data) {
		list_count++;
		table_row_to_print += table_row_template;
		
		for (key in assoc_array_data) {
			var list_object = key.replace(/%LIST_COUNT%/g,parseInt(list_count));
			if (eval(list_object)) {
				list_object_to_print = eval(list_object).replace(/\n/g,'<br />');
				if ((list_object).match("surname")) {
					tree_data_replace('new_item_to_print', '%SURNAME_ESCAPED%', escape(list_object_to_print));
					tree_data_replace('new_item_to_print', '%SURNAME_SLASHES%', addslashes(list_object_to_print));
					list_object_to_print = clean_characters(list_object_to_print);
				}
				if ((list_object).match("person_name")) { list_object_to_print = clean_characters(list_object_to_print); }
				tree_data_replace('table_row_to_print', assoc_array_data[key], list_object_to_print); 
			}
			else {
				listings_link_fallback(tree_data,list_object,assoc_array_data,key);
				tree_data_replace('table_row_to_print', assoc_array_data[key], '&nbsp;'); 
			}
		}
		table_to_print += table_row_to_print;
		table_row_to_print = '';
}




// process generic list data
function tree_data_process_list(tree_data, list_name, json_name, assoc_array_data, tree_template, target_div, seperator_type, multistage) {
	if (json_name != '') { var list_object_name = 'tree_data.'+ json_name +'';
	if (multistage != true) { $(target_div).update(''); }
	} else { var list_object_name = 'tree_data'}
	if (eval(list_object_name)) {
		var list_object_target = eval(list_object_name);
		var list_count = 0;
		
		var list_object_loop = function() {
			
			if (list_count > 1) {
				switch (seperator_type) {
					case 'divider': new_item_to_print = $('tree_template_data_divider').innerHTML; break
				}
			}
			
			new_item_to_print += $(''+ tree_template +'').innerHTML;
			
			for (key in assoc_array_data) {
				
				var list_replacement = '/%'+ list_name +'_COUNT%/g';
				var list_object = key.replace(eval(list_replacement),''+ parseInt(list_count) +'');
				if (eval(list_object)) {
					list_object_to_print = eval(list_object).replace(/\n/g,'<br />');
					if ((list_object).match("surname")) {
						tree_data_replace('new_item_to_print', '%SURNAME_ESCAPED%', escape(eval(list_object)));
						tree_data_replace('new_item_to_print', '%SURNAME_SLASHES%', addslashes(eval(list_object)));
					}
					list_object_to_print = clean_characters(list_object_to_print);
					if ((list_object).match("person_name")) { list_object_to_print = clean_characters(list_object_to_print); }
					if ((list_object).match("tree_status")) { if((list_object_to_print == "UPDATING") || (list_object_to_print == "PROCESSING")) { 
						tree_data_replace('new_item_to_print', 'class="button_sm_label form_errors tree_hidden"', 'class="button_sm_label form_errors"');
					
					}}
					tree_data_replace('new_item_to_print', assoc_array_data[key], list_object_to_print);
				}
				
				else {
					listings_link_fallback(tree_data,list_object,assoc_array_data,key);
					tree_data_replace('new_item_to_print', assoc_array_data[key], '&nbsp;'); 
				}
			}
			tree_data_print (target_div, new_item_to_print, 'yes');
			new_item_to_print = '';
		};
		
		if (multistage == true) {
			list_count = parseInt(tree_data_multistage_cache_object.parse_start);
			if (list_count == 0) { list_count++; }
			for (i=list_count; i<tree_data_multistage_cache_object.parse_end; i++) {
				if ((i<tree_data_multistage_cache_object.parse_end) && (i<=tree_data_multistage_cache_object.total_results)) { 
					list_object_loop();
					list_count++;
					switch(target_div) {
						case "tree_listings_surnames_container":
							if (i<(tree_data_multistage_cache_object.total_results-1)) {
								$('tree_listings_surname_loading').innerHTML = '&nbsp; &nbsp; &nbsp;(LOADING... '+ list_count +' of '+ tree_data_multistage_cache_object.total_results +') ';
							} else {
								$('tree_listings_surname_loading').update('');
							}
						break
					}
				} 
			}
		} else {
			for (key in list_object_target) {
				list_count++;
				list_object_loop(); 
			}
		}
		if (list_count == 0) {
			new_item_to_print = $('tree_template_zero_results').innerHTML;
			tree_data_print (target_div, new_item_to_print, 'no');
			new_item_to_print = '';
		}
		
	} else { new_item_to_print = ''; }
}


function listings_table_create(listings_type, tree_data, assoc_array_data, json_name) {
	// CONSTRUCTS LISTING TABLES
	// ALL TABLE HTML IS EMBEDDED IN JS TO AVOID IE'S INNERHTML ISSUES
			
	table_to_print = '';
	table_row_template = '';
	
	
	switch(listings_type) {
		case 'surnames' :
			target_div = 'tree_listings_table_container';
			table_to_print += '\
				<table border="0" cellspacing="0" cellpadding="0" width="100%" class="page_rounded_header">\
					<thead>\
						<tr>\
							<td width="12" class="page_rounded_header_left">&nbsp;</td>\
							<td class="page_rounded_header_center"><lang>Name</lang>:</td>\
							<td class="page_rounded_header_center tree_list_thead_divider"><lang>Birth</lang>:</td>\
							<td class="page_rounded_header_center tree_list_thead_divider"><lang>Death</lang>:</td>\
							<td width="12" class="page_rounded_header_right">&nbsp;</td>\
						</tr>\
					</thead>\
					<tbody id="tree_listings_content_container">\
			';
			table_row_template += '\
				<tr>\
					<td colspan="2" align="left" class="tree_data_content tree_list_td">\
						<a href="#%PERSON_URL%" onclick="tree_view_history_process(\'%PERSON_URL%\',null,\'tree\'); dhtmlHistory.add(\'%PERSON_URL%\', null);">%PERSON_NAME%</a>\
					</td>\
					<td align="left" class="tree_data_content tree_list_td">\
						%PERSON_BIRTH_DATE% %PERSON_BIRTH_PLACE%\
					</td>\
					<td colspan="2" align="left" class="tree_data_content tree_list_td">\
						%PERSON_DEATH_DATE% %PERSON_DEATH_PLACE%\
					</td>\
				</tr>\
			';
		break
		case 'listings_surname_individuals' :
			target_div = 'tree_listings_surname_individuals_results';
			table_to_print += '\
				<table width="99%" border="0" cellspacing="0" cellpadding="0">\
					<tbody>\
			';
			table_row_template += '\
				<tr>\
					<td width="55"><a href="#%PERSON_URL%" onclick="tree_view_history_process(\'%PERSON_URL%\',null,\'tree\'); dhtmlHistory.add(\'%PERSON_URL%\', null);" class="list_title_thumbnail"><img src="/images/tree_user_avatar_sm_default.png" alt="%PERSON_NAME%" /></a></td>\
					<td class="tree_listings_border_r"><strong><a href="#%PERSON_URL%" onclick="tree_view_history_process(\'%PERSON_URL%\',null,\'tree\'); dhtmlHistory.add(\'%PERSON_URL%\', null);" class="tree_listings_name">%PERSON_NAME%</a></strong></td>\
					<td width="30%" class="tree_listings_border_r">%PERSON_BIRTH_DATE% %PERSON_BIRTH_PLACE%</td>\
					<td width="30%">%PERSON_DEATH_DATE% %PERSON_DEATH_PLACE%</td>\
				</tr>\
			';
		break
		case 'listings_search_individuals_tree' :
			target_div = 'tree_listings_search_individuals_results';
			table_to_print += '\
				<table width="98%" border="0" cellspacing="0" cellpadding="0">\
					<tbody>\
			';
			table_row_template += '\
				<tr>\
					<td width="55"><a href="/%PERSON_USERNAME%/%PERSON_TREE_URL%#%PERSON_URL%" class="list_title_thumbnail"><img src="/images/tree_user_avatar_sm_default.png" alt="%PERSON_NAME%" /></a></td>\
					<td class="tree_listings_border_r" align="left"><strong><a href="/%PERSON_USERNAME%/%PERSON_TREE_URL%#%PERSON_URL%" class="tree_listings_name">%PERSON_NAME%</a></strong></td>\
					<td width="30%" class="tree_listings_border_r">%PERSON_BIRTH_DATE% %PERSON_BIRTH_PLACE%</td>\
					<td width="30%" class="tree_listings_border_r">%PERSON_DEATH_DATE% %PERSON_DEATH_PLACE%</td>\
				</tr>\
			';
		break
		case 'listings_search_individuals' :
			target_div = 'tree_listings_search_individuals_results';
			table_to_print += '\
				<table width="98%" border="0" cellspacing="0" cellpadding="0">\
					<tbody>\
			';
			table_row_template += '\
				<tr>\
					<td width="55"><a href="/%PERSON_USERNAME%/%PERSON_TREE_URL%#%PERSON_URL%" class="list_title_thumbnail"><img src="/images/tree_user_avatar_sm_default.png" alt="%PERSON_NAME%" /></a></td>\
					<td class="tree_listings_border_r" align="left"><strong><a href="/%PERSON_USERNAME%/%PERSON_TREE_URL%#%PERSON_URL%" class="tree_listings_name">%PERSON_NAME%</a></strong></td>\
					<td width="23%" class="tree_listings_border_r">%PERSON_BIRTH_DATE% %PERSON_BIRTH_PLACE%</td>\
					<td width="23%" class="tree_listings_border_r">%PERSON_DEATH_DATE% %PERSON_DEATH_PLACE%</td>\
					<td width="20%"><a href="/%PERSON_USERNAME%/%PERSON_TREE_URL%">%PERSON_TREE_TITLE%</a> <span class="list_metadata"><lang>by: <a href="/%PERSON_USERNAME%">%PERSON_USERNAME%</a></lang></span></td>\
				</tr>\
			';
		break
		case 'notes' :
			target_div = 'tree_notes_container';
			table_to_print += '\
			<table border="0" cellspacing="0" cellpadding="0">\
				<tbody>\
			';
			table_row_template += '\
				<tr>\
					<td class="tree_data_content">%NOTE_VALUE%</td>\
				</tr>\
			';
		break
		case 'events' :
			target_div = 'tree_event_list_container';
			table_to_print += '\
			<table border="0" cellspacing="0" cellpadding="0">\
				<tbody>\
			';
			table_row_template += '\
				<tr>\
					<td class="tree_data_label">%EVENT_NAME%</td>\
					<td>%EVENT_DATE%</td>\
				</tr>\
			';
		break
	}
	// PROCESS JSON
	if (json_name) { var list_object_target = eval('tree_data.'+ json_name +''); } else { var list_object_target = tree_data; }
	if (list_object_target) {
		list_count = 0;
		// Calculate Number of Iterations
		var limit_begin = tree_data.limit_begin;
		var limit_end = tree_data.limit_end;
		if (parseInt(limit_end) > parseInt(tree_data.total_results)) { limit_end = tree_data.total_results; }
		
		if (limit_begin && limit_end) {
			//
			if (listings_type == 'listings_surname_individuals') { var limit_loop = parseInt((tree_data.limit_end-tree_data.limit_begin)+1); }
			else { var limit_loop = (parseInt(limit_end-limit_begin)); }
			for (i=0; i<limit_loop; i++) { list_loop(tree_data, assoc_array_data); }
		}
		else { for (key in list_object_target) { list_loop(tree_data, assoc_array_data); }}
	}
	// GENERIC TABLE FOOTER
	table_to_print += '\
			</tbody>\
		</table>\
	';
	
	// PRINT TABLE
	tree_data_print (target_div, table_to_print);
	if (list_count == 0) {
		new_item_to_print = $('tree_template_zero_results').innerHTML;
		tree_data_print (target_div, new_item_to_print, 'no');
		new_item_to_print = '';
	}
	$(''+ target_div +'').appear({ duration: 1});
	table_row_template = '';
	table_to_print = '';
}

var table_cell_content = '';

function listings_table_multistage(listings_type, tree_data, assoc_array_data, json_name) {
	// CONSTRUCTS LISTING TABLES ONE ROW AT A TIME
	
	switch(listings_type) {
		case 'listings_surnames' : 
			target_div = 'tree_listings_surnames_container';
			target_template = 'tree_listings_surnames_table_template';
			target_table = 'listings_surnames_results_table';
			target_json = 'tree_data.surnames.surname_%LIST_COUNT%';
		break
		case 'listings_surname_individuals' : 
			target_div = 'tree_listings_surname_individuals_results';
			target_template = 'tree_listings_surname_table_template';
			target_table = 'listings_surname_individuals_results_table';
			target_json = 'tree_data.individuals.individual_%LIST_COUNT%';
		break
		case 'listings_search_individuals_tree' : break
		case 'listings_search_individuals' : break
	}
	// PROCESS JSON
	if (json_name) { var list_object_target = eval('tree_data.'+ json_name +''); } else { var list_object_target = tree_data; }
	if (list_object_target) {
		
		var list_count = parseInt(tree_data_multistage_cache_object.parse_start);
		if (list_count == 0) { list_count++; }
		
		if (tree_data_multistage_cache_object.parse_start <= 1) { 
			$(''+ target_div +'').innerHTML = $(''+ target_template +'').innerHTML;
		}
		
		
		for (i=list_count; i<tree_data_multistage_cache_object.parse_end; i++) {
			if ((i<tree_data_multistage_cache_object.parse_end) && (i<=tree_data_multistage_cache_object.total_results)) {
				// create row
				var table_target_body = $(''+ target_table +'').tBodies[0];
				var table_new_row = table_target_body.insertRow(-1);
				var table_row_json = target_json.replace(/%LIST_COUNT%/g,i);
				
				var table_cell_data_replace = function(json_attribute) {
					list_object = ''+ table_row_json +'.'+ json_attribute +'';
					var json_value = '';
					if (eval(list_object)) { json_value = eval(list_object); }
					return json_value;
				};
				
				// Create new cells
				switch(listings_type) {
					case 'listings_surname_individuals' :
					
						var person_name = table_cell_data_replace('person_name');
						var person_url = table_cell_data_replace('person_url');
						var birth_date = table_cell_data_replace('birth_date');
						var birth_place = table_cell_data_replace('birth_place');
						var death_date = table_cell_data_replace('death_date');
						var death_place = table_cell_data_replace('death_place');
					
						
							// Cell 1
							var table_new_cell_01 = table_new_row.insertCell(0);
							table_new_cell_01.width = "55";
							var individual_thumbnail = new Image();
							individual_thumbnail.src = "/images/tree_user_avatar_sm_default.png";
							individual_thumbnail.alt = person_name;
							table_new_cell_01.appendChild(individual_thumbnail);
							// Cell 2
							var table_new_cell_02 = table_new_row.insertCell(1);
							table_new_cell_02.setAttribute('class','tree_listings_border_r');
							var text = document.createTextNode(person_name);
							
							if (person_url != '') {
								var table_new_cell_02_link = document.createElement("a");
								var table_new_cell_02_link_href = '#'+person_url+'';
								table_new_cell_02_link.href = table_new_cell_02_link_href;
								//table_new_cell_02_link.class = "tree_listings_name";
								table_new_cell_02_link.onclick = function() {
									var link_person_url = this.href.split("#",2)[1];
									tree_view_history_process(link_person_url,null,'tree'); dhtmlHistory.add(link_person_url,null);
								};
								table_new_cell_02_link.appendChild(text);
								table_new_cell_02_link.setAttribute('class','tree_listings_name');
								table_new_cell_02.appendChild(table_new_cell_02_link);
							} else {
								table_new_cell_02.appendChild(text);
							}
							
							// Cell 3
							var table_new_cell_03 = table_new_row.insertCell(2);
							table_new_cell_03.width = "30%";
							table_new_cell_03.setAttribute('class','tree_listings_border_r');
							table_new_cell_03.appendChild(document.createTextNode(birth_date +' '+ birth_place));
							
							// Cell 4
							var table_new_cell_04 = table_new_row.insertCell(3);
							table_new_cell_04.width = "30%";
							table_new_cell_04.appendChild(document.createTextNode(death_date +' '+ death_place));
						
					break
					
					case 'listings_surnames' :
					
						var surname_name = table_cell_data_replace('surname');
						var surname_count = table_cell_data_replace('count');
							
						// Cell 1
						var table_new_cell_01 = table_new_row.insertCell(0);
						var table_new_cell_01_link = document.createElement("a");
						var text = document.createTextNode(surname_name +' ('+ surname_count +')');
						table_new_cell_01_link.onclick = function() {
							var surname_data = this.innerHTML.split(" (",2)[0];
							var surname_name_slashes = addslashes(surname_data);	
							tree_ui_element_select(this.id,'tree_listings_surnames');
							load_tree_data('listings_surname_individuals','last_name='+ surname_name_slashes +'&user_id='+ $('user_id').innerHTML +'&tree_id='+ $('tree_id').innerHTML +'');
							return false;
						};
						
						table_new_cell_01_link.setAttribute('id','tree_listings_surname_'+ escape(surname_name) +'');
						table_new_cell_01_link.appendChild(text);
						table_new_cell_01.appendChild(table_new_cell_01_link);
						
						if (i>300) {
						if (i<(tree_data_multistage_cache_object.total_results-1)) {
							$('tree_listings_surname_loading').innerHTML = '&nbsp; &nbsp; &nbsp;(LOADING... '+ list_count +' of '+ tree_data_multistage_cache_object.total_results +') ';
						} else {
							$('tree_listings_surname_loading').update('');
						}
						}
						
						
					break
					
				}
				list_count++;
			}
		}
	}
	
	
	if (list_count == 0) {
		new_item_to_print = $('tree_template_zero_results').innerHTML;
		tree_data_print (target_div, new_item_to_print, 'no');
		new_item_to_print = '';
	}
}


// replace variables in HTML templates
function tree_data_replace(target_item, target_var, tree_value) {
	// contsruct string to search for
	var replace_item = '/'+ target_var +'/g';
	target_item_contents = eval(target_item);
	// update global variable
	this[target_item] = target_item_contents.replace(eval(replace_item), ''+ tree_value +'');
	return this[target_item];
}


// print HTML data to the page
function tree_data_print(target,content,add) {
	// add additional content to container
	if (add == "yes") { $(''+ target +'').innerHTML += content; }
	// replace all content in container
	else { $(''+ target +'').update(content).appear({ duration: 1}); }
}


// manage visibility of specific fields in the HTML
function tree_data_visibility(visibility,target_class, target_item) {
	// show the field
	if (visibility == "show") { tree_data_replace(''+ target_item +'', ''+ target_class +'', 'tree_visible'); } 
	// hide the field
	else { tree_data_replace(''+ target_item +'', ''+ target_class +'', 'tree_hidden'); }
}

function listings_link_fallback (tree_data,list_object,assoc_array_data,key) {
	if ((list_object).match("person_url")) { 
		var list_person_id = list_object.replace(/person_url/,'person_id');
		var link_adjust = '#person_id:'+ eval(list_person_id) +'';
		var link_target = '#'+ assoc_array_data[key] +'';
		var behavior_target = "'"+ assoc_array_data[key] +"'";
		var behavior_adjust = "'person_id:"+ eval(list_person_id) +"'";
		if ((list_object).match("children")) { var print_target = 'child_to_print'; } 
		else { var print_target = 'new_item_to_print'; }
		tree_data_replace(''+ print_target +'',''+ link_target +'',''+ link_adjust +'');
		tree_data_replace(''+ print_target +'',''+ behavior_target +'',''+ behavior_adjust +'');
	}	
}
	
// Listings Pagination
function listings_pagination(tree_data,link_behavior) {
	
	if ($('tree_listings_pagination')) {
		if ($('tree_listings_pagination').innerHTML == '') { 
			//$$('.tree_listings_pagination').invoke("update",""+ $('tree_template_listings_pagination').innerHTML +"");
			$('tree_listings_pagination').update($('tree_template_listings_pagination').innerHTML); 
			$('tree_template_listings_pagination').update(''); 
		}
		if (tree_data.total_results != '0') {
			
			var limit_end = tree_data.limit_end;
			if (parseInt(limit_end) > parseInt(tree_data.total_results)) { limit_end = tree_data.total_results; }
			
			$$('.tree_listings_pagination_limit_begin').invoke('update', ''+ tree_data.limit_begin +'').invoke('show');
			$$('.tree_listings_pagination_limit_end').invoke('update', ''+ limit_end +'').invoke('show');
			$$('.tree_listings_pagination_total_results').invoke('update', ''+ tree_data.total_results +'').invoke('show');
			$$('.tree_listings_pagination_current_page').invoke('update', ''+ tree_data.current_page +'').invoke('show');
			$$('.tree_listings_pagination_total_pages').invoke('update', ''+ tree_data.total_pages +'').invoke('show');
			//$('tree_listings_pagination_limit_begin').update(tree_data.limit_begin).appear({ duration: 1});
			//$('tree_listings_pagination_limit_end').update(tree_data.limit_end).appear({ duration: 1});
			//$('tree_listings_pagination_total_results').update(tree_data.total_results).appear({ duration: 1});
			//$('tree_listings_pagination_current_page').update(tree_data.current_page).appear({ duration: 1});
			//$('tree_listings_pagination_total_pages').update(tree_data.total_pages).appear({ duration: 1});
			//$$('.tree_listings_pagination').invoke('show');
			$('tree_listings_pagination').appear({ duration: 1});
						
			if (parseInt(tree_data.current_page) < parseInt(tree_data.total_pages)) {
				$$('.tree_listings_pagination_next_page').invoke('show');
				//$('tree_listings_pagination_next_page').appear({ duration: 1});
				// IE doesn't like this
				//$$('.tree_listings_pagination_next_page').invoke("setAttribute","href","javascript:load_tree_data("+ link_behavior +"&page="+ (parseInt(tree_data.current_page)+1) +"');");
				
				var link_behavior_next = link_behavior.replace(/%PAGE%/,parseInt(tree_data.current_page)+1)
				$('tree_listings_pagination_next_page').setAttribute("href","javascript:"+ link_behavior_next +";");
			} else {
				$$('.tree_listings_pagination_next_page').invoke('hide');
				//$('tree_listings_pagination_next_page').fade({ duration: 1});
			}
			
			if (parseInt(tree_data.current_page) > 1) {
				$$('.tree_listings_pagination_previous_page').invoke('show');
				//$('tree_listings_pagination_previous_page').appear({ duration: 1});
				// IE doesn't like this
				//$$('.tree_listings_pagination_previous_page').invoke("setAttribute","href","javascript:load_tree_data("+ link_behavior +"&page="+ (parseInt(tree_data.current_page)-1) +"');");
				var link_behavior_previous = link_behavior.replace(/%PAGE%/,parseInt(tree_data.current_page)-1)
				$('tree_listings_pagination_previous_page').setAttribute("href","javascript:"+ link_behavior_previous +";");
				//$('tree_listings_pagination_previous_page').setAttribute("href","javascript:load_tree_data("+ link_behavior +"&page="+ (parseInt(tree_data.current_page)-1) +"');");
			} else {
				$$('.tree_listings_pagination_previous_page').invoke('hide');
				//$('tree_listings_pagination_previous_page').fade({ duration: 1});
			}
		} else {
			// No results
		}
	}
}

// Multistage download of listings and results
var tree_data_multistage_download_object = '';
var tree_data_multistage_cache_object = '';
var tree_data_multistage_cache_data = '';
var multistage_timer = '';

function tree_data_multistage_timer(type, data_type) {
	multistage_timer = '';
	offset = 10;
	multistage_timer = setTimeout('tree_data_multistage_download(\''+ type +'\',\'intermediate\',\''+ data_type +'\')',offset);
}

function tree_data_multistage_download(type, stage, data_type, data_object, data_url, data_array) {
	var limit_results = 2;
	switch(stage) {
		case "initial":
			if (type == "cache") {
				
				tree_data_multistage_cache_data = data_object;
				
				switch (data_type) {			
					case "listings_surnames":
						tree_data_multistage_cache_object = {
							total_results : data_object.surname_count,
							parse_start : 0,
							parse_end : limit_results,
							data_array : data_array
						};
					break
					case "listings_surname_individuals":
						tree_data_multistage_cache_object = {
							total_results : data_object.total_results,
							parse_start : 0,
							parse_end : limit_results,
							data_array : data_array
						};
					break
				}
				
			}
			if (type == "download") {
				tree_data_multistage_download_object = {
					request_url : data_url,
					total_results : data_object.total_results,
					total_pages : data_object.total_results,
					current_page : data_object.current_page
				};
			}
			tree_data_multistage_timer(type, data_type);
		break
		case "intermediate":
			
			if (type == "cache") {
				
				
				if (tree_data_multistage_cache_object.parse_start <= tree_data_multistage_cache_object.total_results) {	
					
					
					switch (data_type) {
						case "listings_surnames":
							//tree_data_process_list(tree_data_multistage_cache_data,'LIST','surnames',tree_data_multistage_cache_object.data_array,'tree_template_listings_surnames','tree_listings_surnames_container','none',true);
							listings_table_multistage('listings_surnames', tree_data_multistage_cache_data, tree_data_multistage_cache_object.data_array,'surnames');
						break
						case "listings_surname_individuals":
							listings_table_multistage('listings_surname_individuals', tree_data_multistage_cache_data, tree_data_multistage_cache_object.data_array);
						break
					}
					
					var parse_start_next = parseInt(tree_data_multistage_cache_object.parse_end);
					
					if (parse_start_next <= tree_data_multistage_cache_object.total_results) {
						var parse_end_next = parseInt(parse_start_next+limit_results);
						tree_data_multistage_cache_object.parse_start = parse_start_next;
						tree_data_multistage_cache_object.parse_end = parse_end_next;
						tree_data_multistage_timer(type, data_type);
					}
					// show loading graphic
				}
				else {
					switch (data_type) {			
						case "listings_surnames":
							$('tree_listings_surname_loading').update('');
						break
					}
					multistage_timer = null;
					tree_data_multistage_cache_object = '';
					// hide loading graphic
				}
			} else if (type == "download") {
				var next_page = parseInt(tree_data_multistage_download_object.current_page)+1;
				if (next_page <= tree_data_multistage_download_object.total_pages) {
					/*
					Make JSON request
					Print results using the += add option in tree_data_print
					Update tree_data_multistage_object.current_page
					*/
					tree_data_multistage_download_object.current_page = next_page;
					tree_data_multistage_timer('download');
					// show loading graphic
				}
				else if (next_page > tree_data_multistage_download_object.total_pages) {
					clearTimeout(multistage_timer);
					tree_data_multistage_download_object = '';
					// hide loading graphic
				}
			}
	}

}

	

// load tree data
function load_tree_data(target_type, target_url, template, multistage) {
	
	// retrieve the JSON data
	var tree_data_request = function(target_type, target_url) {
		var tree_data_url = '';
		var random_number = Math.round(100000000*Math.random());
		
		switch (target_type) {
			// order_by=person_count
			case 'individual': tree_data_url = '/json/individual?'+ target_url +'&random='+ random_number +''; break
			case 'listings_surname': tree_data_url = '/json/search?'+ target_url +'&limit=100&random='+ random_number +''; break
			case 'listings_surnames':
				tree_data_url = '/json/surnames?'+ target_url +'&random='+ random_number +'';
				$('tree_listings_surnames_container').update(loading_table());
				$('tree_listings_surname_individuals_results').update($('tree_template_listings_surname_choose').innerHTML);
			break
			case 'listings_surname_individuals':
				tree_data_url = '/json/search?'+ target_url +'&random='+ random_number +'';
				tree_data_url = addslashes(tree_data_url);
				$('tree_listings_surname_individuals_results').update(loading_table());
			break
			case 'listings_file_latest': tree_data_url = '/json/file_list?order_by=date_created&'+ target_url +'&random='+ random_number +''; break
			case 'listings_file_popular': tree_data_url = '/json/file_list?order_by=popularity&'+ target_url +'&random='+ random_number +''; break
			case 'listings_file_alpha': tree_data_url = '/json/file_list?'+ target_url +'&random='+ random_number +''; break
			case 'listings_file_user': tree_data_url = '/json/file_list?order_by=date_created&'+ target_url +'&random='+ random_number +''; break
			case 'listings_file_user_sidebar': tree_data_url = '/json/file_list?order_by=date_created&'+ target_url +'&random='+ random_number +''; break
			case 'listings_file_mytrees': tree_data_url = '/json/file_list?type=mytrees&'+ target_url +'&random='+ random_number +''; break
			case 'listings_user_active': tree_data_url = '/json/user_list?type=active&'+ target_url +'&random='+ random_number +''; break
			case 'listings_file_featured': tree_data_url = '/json/file_list?type=featured&'+ target_url +'&random='+ random_number +''; break
		}
		
		last_json_request = tree_data_url;
		if ($('tree_loading')) { $('tree_loading').appear({ duration: 0.5 }); }
		
		new Ajax.Request(tree_data_url, {
			method : "get",
			onSuccess : function (transport) {
				var ajax_response = transport.responseText;
				ajax_response = ajax_response.substring(ajax_response.indexOf("{"), ajax_response.lastIndexOf("}")+1);
				ajax_response = ajax_response.evalJSON();
				tree_data_process(ajax_response, target_type);
			},
			onFailure : function(transport) { alert('An error occurred while retrieving data. Please try again later.'); },
			onComplete : function(transport) { if ($('tree_loading')) { $('tree_loading').hide(); } }
		});
		
	};
	
	// initiate request
	tree_data_request(target_type, target_url);
}



// process the JSON data and construct the corresponding HTML
function tree_data_process(tree_data, target_type) {
		
	switch (target_type) {
		// individual page
		case 'individual':

		// CLEAR FIELDS
			$('tree_person_name').update('');
			$('tree_person_container').update('');
			$('tree_family_list_container').update('');
			$('tree_events_timeline_container').update('');
			$('tree_event_list_container').update('');
			$('tree_notes_container').update('');
			
		// PERSON
			var base_url = '/'+ $('tree_username').innerHTML +'/'+ $('tree_url').innerHTML +'/';
			var tree_individual_url = base_url +'#' + tree_data.person_url + '';
			var tree_chart_ancestor_url = base_url + tree_data.person_url + '/ancestors';
			var tree_chart_descendant_url = base_url + tree_data.person_url + '/descendants';
			
			$('person_individual_url').href = tree_individual_url;
			$('person_ancestor_url').href = tree_chart_ancestor_url;
			$('person_descendant_url').href = tree_chart_descendant_url;
	
			// REMOVE UNWANTED CHARACTERS FROM PERSON NAME
			person_name_clean = clean_characters(tree_data.person_name);
			
			navbar_breadcrumb_update('1',$('text_browse_all').innerHTML,'/browse',false);
			navbar_breadcrumb_update('2',$('tree_title').innerHTML,base_url,false);
			navbar_breadcrumb_update('3',person_name_clean,tree_individual_url,true);
			
			if ($('page_tools_share')) {
				file_action_sidebar_email();
				file_action_sidebar_api(last_json_request);
			}	
			
			// print the name
			$('tree_person_name').update(person_name_clean).appear({ duration: 2});
			
			new_item_to_print = $('tree_template_person').innerHTML;
			
			var person_data = {
				"tree_data.birth_date" : "%PERSON_BIRTH_DATE%",
				"tree_data.birth_place" : "%PERSON_BIRTH_PLACE%",
				"tree_data.death_date" : "%PERSON_DEATH_DATE%",
				"tree_data.death_place" : "%PERSON_DEATH_PLACE%"
			};
			var visibility_birth_place = 'hide';
			var visibility_death_place = 'hide';
			for (key in person_data) {
				if (eval(key)) {
					tree_data_replace('new_item_to_print', person_data[key], eval(key));
					if (key.match("birth_place")) { visibility_birth_place = "show"; }
					if (key.match("death_place")) { visibility_death_place = "show"; }
				} 
				else { tree_data_replace('new_item_to_print', person_data[key], ''); }
			}
			tree_data_visibility(visibility_birth_place,'%FAMILY_BIRTH_PLACE_VISIBILITY%', 'new_item_to_print');
			tree_data_visibility(visibility_death_place,'%FAMILY_DEATH_PLACE_VISIBILITY%', 'new_item_to_print');
			
		// PER PARENTS
			var parent_data = {
				"tree_data.mother.person_name" : "%PERSON_MOTHER%",
				"tree_data.mother.person_id" : "%PERSON_MOTHER_LINK%",
				"tree_data.mother.person_url" : "%PERSON_MOTHER_URL%",
				"tree_data.father.person_name" : "%PERSON_FATHER%",
				"tree_data.father.person_url" : "%PERSON_FATHER_URL%",
				"tree_data.father.person_id" : "%PERSON_FATHER_LINK%"
			};
			for (key in parent_data) {
				var tree_data_parent_blank = function(key) { tree_data_replace('new_item_to_print', parent_data[key], ''); };
				var tree_data_process_parent = function(parent_type,key) {
					if (key.match(""+ parent_type +"")) {
						var parent_type_json = 'tree_data.'+ parent_type +'';
						if (eval(parent_type_json)) {
							if (eval(key)) { 
								key_clean = eval(key);
								tree_data_replace('new_item_to_print', parent_data[key], key_clean); 
							} 
							else {
								listings_link_fallback(tree_data,key,parent_data,key);
								tree_data_parent_blank(key); 
							}
						} else { tree_data_parent_blank(key); }
					}
				}
				tree_data_process_parent('father',key);
				tree_data_process_parent('mother',key);
			}
			tree_data_print ('tree_person_container', new_item_to_print);
			new_item_to_print = '';
			
		// PER FAMILY
			if (tree_data.families) {
				$('tree_family').appear({ duration: 1});
				var family_data = {
					"tree_data.families.family_%FAMILY_COUNT%.person_name" : "%FAMILY_SPOUSE_NAME%",
					"tree_data.families.family_%FAMILY_COUNT%.person_id" : "%FAMILY_SPOUSE_LINK%",
					"tree_data.families.family_%FAMILY_COUNT%.person_url" : "%FAMILY_SPOUSE_URL%",
					"tree_data.families.family_%FAMILY_COUNT%.marriage_date" : "%FAMILY_MARRIAGE_DATE%",
					"tree_data.families.family_%FAMILY_COUNT%.marriage_place" : "%FAMILY_MARRIAGE_PLACE%",
					"tree_data.families.family_%FAMILY_COUNT%.person_living" : "%FAMILY_SPOUSE_LIVING%"
				};
				var family_count = 0;
				for (key in tree_data.families) {
					var visibility_spouse = 'show';
					var visibility_marriage = 'hide';
					var visibility_marriage_date = 'hide';
					var visibility_marriage_place = 'hide';
					family_count++;
					if (family_count > 1) {
						new_item_to_print = $('tree_template_data_divider').innerHTML;
					}
					new_item_to_print += $('tree_template_family').innerHTML;
					for (key in family_data) {
						var family_object = key.replace(/%FAMILY_COUNT%/,''+ parseInt(family_count) +'');
						if (eval(family_object)) { 
							if (family_object.match("person_living")) { 
								if (eval(family_object) == "Yes") {
									var visibility_spouse = 'hide';
									var visibility_marriage = 'hide';
									var visibility_marriage_date = 'hide';
									var visibility_marriage_place = 'hide';
								}
							} else {
								tree_data_replace('new_item_to_print', family_data[key], eval(family_object));
								if (family_object.match("marriage_")) { visibility_marriage = "show"; }
								if (family_object.match("marriage_date")) { visibility_marriage_date = "show"; }
								if (family_object.match("marriage_place")) { visibility_marriage_place = "show"; }
							}
						}
						else { 
							listings_link_fallback(tree_data,family_object,family_data,key);
							tree_data_replace('new_item_to_print', family_data[key], ''); 
						}
					}
					tree_data_visibility(visibility_spouse,'%FAMILY_SPOUSE_VISIBILITY%', 'new_item_to_print');
					tree_data_visibility(visibility_marriage_date,'%FAMILY_MARRIAGE_DATE_VISIBILITY%', 'new_item_to_print');
					tree_data_visibility(visibility_marriage_place,'%FAMILY_MARRIAGE_PLACE_VISIBILITY%', 'new_item_to_print');
					tree_data_visibility(visibility_marriage,'%FAMILY_MARRIAGE_VISIBILITY%', 'new_item_to_print');
					
		// PER CHILD
					var visibility_children = "hide";
					if (eval('tree_data.families.family_'+ parseInt(family_count) +'.children')) {
						var child_count = 0;
						visibility_children = "show";
						for (key in eval('tree_data.families.family_'+ family_count +'.children')) {
							var visibility_child_birth_date = 'hide';
							var visibility_child_birth_place = 'hide';
							child_count++;
							var child_data = {
								"tree_data.families.family_%FAMILY_COUNT%.children.child_%CHILD_COUNT%.person_living" : "%FAMILY_CHILD_LIVING%",
								"tree_data.families.family_%FAMILY_COUNT%.children.child_%CHILD_COUNT%.person_name" : "%FAMILY_CHILD_NAME%",
								"tree_data.families.family_%FAMILY_COUNT%.children.child_%CHILD_COUNT%.person_id" : "%FAMILY_CHILD_LINK%",
								"tree_data.families.family_%FAMILY_COUNT%.children.child_%CHILD_COUNT%.person_url" : "%FAMILY_CHILD_URL%",
								"tree_data.families.family_%FAMILY_COUNT%.children.child_%CHILD_COUNT%.birth_date" : "%FAMILY_CHILD_BIRTH_DATE%",
								"tree_data.families.family_%FAMILY_COUNT%.children.child_%CHILD_COUNT%.birth_place" : "%FAMILY_CHILD_BIRTH_PLACE%"
							};
							child_to_print = $('tree_template_child').innerHTML;
							for (key in child_data) {
								var child_object = key.replace(/%FAMILY_COUNT%/,''+ parseInt(family_count) +'');
								child_object = child_object.replace(/%CHILD_COUNT%/,''+ parseInt(child_count) +'');
								
								if (eval(child_object)) {
									if (child_object.match("person_living")) { 
										if (eval(child_object) == "Yes") { child_to_print = ''; }
									} else {
										tree_data_replace('child_to_print', child_data[key], eval(child_object));
										if (child_object.match("birth_date")) { visibility_child_birth_date = "show"; }
										if (child_object.match("birth_place")) { visibility_child_birth_place = "show"; }
									}
								}
								else {
									listings_link_fallback(tree_data,child_object,child_data,key);
									tree_data_replace('child_to_print', child_data[key], ''); 
								}
							}
							tree_data_visibility(visibility_child_birth_date,'%FAMILY_CHILD_BIRTH_DATE_VISIBILITY%', 'child_to_print');
							tree_data_visibility(visibility_child_birth_place,'%FAMILY_CHILD_BIRTH_PLACE_VISIBILITY%', 'child_to_print');
							children_to_print += child_to_print;
						}
						tree_data_replace('new_item_to_print', '%CHILD_TEMPLATE%', children_to_print);
						tree_data_replace('new_item_to_print', '%FAMILY_NAME%','family_'+ family_count +'');
						children_to_print = '';
						child_to_print = '';
					} else {
						//hide the tree_%FAMILY_NAME%_child_list_container
					}
					tree_data_visibility(visibility_children,'%FAMILY_CHILDREN_VISIBILITY%', 'new_item_to_print');
					tree_data_print ('tree_family_list_container', new_item_to_print, 'yes');
				}
				new_item_to_print = '';
			} 
			else {
				$('tree_family').blindUp({ duration: 1 });
			}
		// EVENT TIMELINE
		/*
			new_item_to_print = $('tree_template_events_timeline').innerHTML;
			
			tree_data_replace('new_item_to_print', '%PERSON_NAME%', tree_data.person_name);
			var tree_person_yr_birth = '';
			var tree_person_yr_death = '';
			if (!tree_data.birth_year_first) { tree_person_yr_birth = 'UNKNOWN'; }
			else { tree_person_yr_birth = tree_data.birth_year_first; }
			if (!tree_data.death_year_first) { tree_person_yr_death = 'UNKNOWN'; }
			else { tree_person_yr_death = tree_data.death_year_first; }
			
			if (tree_data.death_year_first && tree_data.birth_year_first) {
				var tree_timeline_yr_increment = Math.round((parseInt(tree_data.death_year_first) - parseInt(tree_data.birth_year_first))/6);
				var tree_timeline_yr_birth = tree_data.birth_year_first;
				var tree_timeline_yr_2 = Math.round(parseInt(tree_timeline_yr_birth)+parseInt(tree_timeline_yr_increment));
				var tree_timeline_yr_3 = Math.round(parseInt(tree_timeline_yr_2)+parseInt(tree_timeline_yr_increment));
				var tree_timeline_yr_4 = Math.round(parseInt(tree_timeline_yr_3)+parseInt(tree_timeline_yr_increment));
				var tree_timeline_yr_5 = Math.round(parseInt(tree_timeline_yr_4)+parseInt(tree_timeline_yr_increment));
			} else {
				var tree_timeline_yr_2 = '&nbsp;'; 
				var tree_timeline_yr_3 = '&nbsp;'; 
				var tree_timeline_yr_4 = '&nbsp;'; 
				var tree_timeline_yr_5 = '&nbsp;';
			}
			
			tree_data_replace('new_item_to_print', '%PERSON_YR_BIRTH%', tree_person_yr_birth);
			tree_data_replace('new_item_to_print', '%PERSON_YR_DEATH%', tree_person_yr_death);
			tree_data_replace('new_item_to_print', '%PERSON_TIMELINE_YR_2%', tree_timeline_yr_2);
			tree_data_replace('new_item_to_print', '%PERSON_TIMELINE_YR_3%', tree_timeline_yr_3);
			tree_data_replace('new_item_to_print', '%PERSON_TIMELINE_YR_4%', tree_timeline_yr_4);
			tree_data_replace('new_item_to_print', '%PERSON_TIMELINE_YR_5%', tree_timeline_yr_5);
			
			tree_data_print ('tree_events_timeline_container', new_item_to_print);
			new_item_to_print = '';
		*/
			
		// PER EVENT
		if (tree_data.individual_events){
			$('tree_events').appear({ duration: 1 });
			$('tree_event_list_container').show();
			var event_data = {
				"tree_data.individual_events.event_%LIST_COUNT%.value" : "%EVENT_DATE%",
				"tree_data.individual_events.event_%LIST_COUNT%.name" : "%EVENT_NAME%",
				"tree_data.individual_events.event_%LIST_COUNT%.description" : "%EVENT_DESCRIPTION%"
			};
			listings_table_create('events',tree_data,event_data,'individual_events');
		} 
		else { $('tree_event_list_container').blindUp({ duration: 1 }); }
		
		// PER NOTE
			if (tree_data.individual_notes) {
				$('tree_notes').appear({ duration: 1 });
				var note_data = { "tree_data.individual_notes.note_%LIST_COUNT%.value" : "%NOTE_VALUE%" };
				listings_table_create('notes',tree_data,note_data,'individual_notes');
				//tree_data_process_list(tree_data, 'NOTE', 'individual_notes', note_data, 'tree_template_note', 'tree_notes_container');
			} 
			else { $('tree_notes').blindUp({ duration: 1 }); }
		// PER SOURCE
			if ($('tree_sources')) { $('tree_sources').blindUp({ duration: 1 }); }
			
		break
		case 'listings_surname':
			table_to_print = '';
			$('tree_listings_table_container').update('');
			
			var tree_data_first_individual = ''+ tree_data.individual_1.person_name +'';
			var tree_search_param_first_letter = tree_data_first_individual.substring(0,1).toLowerCase();
			if (tree_search_param_first_letter == "[") {
				for (i=parseInt(tree_data.limit_begin); i<parseInt(tree_data.limit_end); i++) {
					if (eval('tree_data.individual_'+ [i] +'.person_name')) {
						var this_first_letter = eval('tree_data.individual_'+ [i] +'.person_name').substring(0,1).toLowerCase();
						if (this_first_letter != '[') { tree_search_param_first_letter = this_first_letter;	}
					}
				}
			}
			var link_behavior = 'load_tree_data(\'listings_surname\',\'&user_id='+ $('user_id').innerHTML +'&tree_id='+ $('tree_id').innerHTML +'&page=%PAGE%&first_letter='+ tree_search_param_first_letter +'\')';
			
			listings_pagination(tree_data,link_behavior);
			
			var listings_surname_data = {
				"tree_data.individual_%LIST_COUNT%.person_name" : "%PERSON_NAME%",
				"tree_data.individual_%LIST_COUNT%.person_url" : "%PERSON_URL%",
				"tree_data.individual_%LIST_COUNT%.person_id" : "%PERSON_ID%",
				"tree_data.individual_%LIST_COUNT%.birth_date" : "%PERSON_BIRTH_DATE%",
				"tree_data.individual_%LIST_COUNT%.birth_place" : "%PERSON_BIRTH_PLACE%",
				"tree_data.individual_%LIST_COUNT%.death_date" : "%PERSON_DEATH_DATE%",
				"tree_data.individual_%LIST_COUNT%.death_place" : "%PERSON_DEATH_PLACE%"
			};
			listings_table_create('surnames',tree_data,listings_surname_data);
		break
		
		
		case 'listings_surnames' :
			table_to_print = '';
			$('tree_listings_surnames_container').update('');
			
			var tree_listings_surnames_data = {
				"tree_data.surnames.surname_%LIST_COUNT%.surname" : "%SURNAME%",
				"tree_data.surnames.surname_%LIST_COUNT%.count" : "%SURNAMES_TOTAL_COUNT%"
			};
			
			tree_data_multistage_download("cache", "initial", "listings_surnames", tree_data, "", tree_listings_surnames_data);
			
		break
		
		
		case 'listings_surname_individuals' :
			table_to_print = '';
			
			var tree_listings_surname_individuals_data = {
				"tree_data.individual_%LIST_COUNT%.person_name" : "%PERSON_NAME%",
				"tree_data.individual_%LIST_COUNT%.person_url" : "%PERSON_URL%",
				"tree_data.individual_%LIST_COUNT%.person_id" : "%PERSON_ID%",
				"tree_data.individual_%LIST_COUNT%.birth_date" : "%PERSON_BIRTH_DATE%",
				"tree_data.individual_%LIST_COUNT%.birth_place" : "%PERSON_BIRTH_PLACE%",
				"tree_data.individual_%LIST_COUNT%.death_date" : "%PERSON_DEATH_DATE%",
				"tree_data.individual_%LIST_COUNT%.death_place" : "%PERSON_DEATH_PLACE%"
			};
			
			tree_data_multistage_download("cache", "initial", "listings_surname_individuals", tree_data, "", tree_listings_surname_individuals_data);
			
			//listings_table_create('listings_surname_individuals',tree_data,tree_listings_surname_individuals_data,'');
		break
		
		
		
		
		case 'listings_user_active': break
	}
	
	
	if  ((target_type == 'listings_search_individuals') || (target_type == 'listings_search_individuals_tree')) {
		table_to_print = '';
		
		var tree_listings_surname_individuals_data = {
			"tree_data.individuals.individual_%LIST_COUNT%.person_name" : "%PERSON_NAME%",
			"tree_data.individuals.individual_%LIST_COUNT%.person_name_first" : "%PERSON_NAME_FIRST%",
			"tree_data.individuals.individual_%LIST_COUNT%.person_name_last" : "%PERSON_NAME_LAST%",
			"tree_data.individuals.individual_%LIST_COUNT%.person_url" : "%PERSON_URL%",
			"tree_data.individuals.individual_%LIST_COUNT%.person_id" : "%PERSON_ID%",
			"tree_data.individuals.individual_%LIST_COUNT%.birth_date" : "%PERSON_BIRTH_DATE%",
			"tree_data.individuals.individual_%LIST_COUNT%.birth_place" : "%PERSON_BIRTH_PLACE%",
			"tree_data.individuals.individual_%LIST_COUNT%.birth_years" : "%PERSON_BIRTH_YEARS%",
			"tree_data.individuals.individual_%LIST_COUNT%.birth_year_first" : "%PERSON_BIRTH_YEAR_FIRST%",
			"tree_data.individuals.individual_%LIST_COUNT%.death_date" : "%PERSON_DEATH_DATE%",
			"tree_data.individuals.individual_%LIST_COUNT%.death_place" : "%PERSON_DEATH_PLACE%",
			"tree_data.individuals.individual_%LIST_COUNT%.death_years" : "%PERSON_DEATH_YEARS%",
			"tree_data.individuals.individual_%LIST_COUNT%.death_year_first" : "%PERSON_DEATH_YEAR_FIRST%",
			"tree_data.individuals.individual_%LIST_COUNT%.tree_id" : "%PERSON_TREE_ID%",
			"tree_data.individuals.individual_%LIST_COUNT%.tree_url" : "%PERSON_TREE_URL%",
			"tree_data.individuals.individual_%LIST_COUNT%.tree_title" : "%PERSON_TREE_TITLE%",
			"tree_data.individuals.individual_%LIST_COUNT%.user_id" : "%PERSON_USER_ID%",
			"tree_data.individuals.individual_%LIST_COUNT%.username" : "%PERSON_USERNAME%"
		};
		
		switch(target_type)	{
			case "listings_search_individuals" :
				var link_behavior = 'tree_search(\'global\',\'&page=%PAGE%\')';
				listings_table_create('listings_search_individuals',tree_data,tree_listings_surname_individuals_data,'individuals');
			break
			case "listings_search_individuals_tree" :
				var link_behavior = 'tree_search(\'tree\',\'&page=%PAGE%&user_id='+ $('tree_user_id').innerHTML +'&tree_id='+ $('tree_id').innerHTML +'\')';
				listings_table_create('listings_search_individuals_tree',tree_data,tree_listings_surname_individuals_data,'individuals');
			break
		}
		
		listings_pagination(tree_data,link_behavior);
	}
	
	
	if((target_type == 'listings_file_latest') || (target_type == 'listings_file_popular') || (target_type == 'listings_file_mytrees') || (target_type == 'listings_file_alpha') || (target_type == 'listings_file_user') || (target_type == 'listings_file_user_sidebar')) {
		
		new_item_to_print = '';
		if (($('user_id')) && ($('tree_id'))) {
			
			var link_behavior = 'load_tree_data(\''+ target_type +'\',\'limit=10&user_id='+ $('user_id').innerHTML +'&tree_id='+ $('tree_id').innerHTML +'&page=%PAGE%\')';
		}
		var listings_file_data = {
			"tree_data.trees.tree_%LIST_COUNT%.tree_status" : "%STATUS%",
			"tree_data.trees.tree_%LIST_COUNT%.username" : "%USERNAME%",
			"tree_data.trees.tree_%LIST_COUNT%.tree_title" : "%TREE_TITLE%",
			"tree_data.trees.tree_%LIST_COUNT%.tree_title_first_letter" : "%TREE_TITLE_FIRST_LETTER%",
			"tree_data.trees.tree_%LIST_COUNT%.tree_url" : "%TREE_URL%",
			"tree_data.trees.tree_%LIST_COUNT%.tree_id" : "%TREE_ID%",
			"tree_data.trees.tree_%LIST_COUNT%.tree_popularity_index" : "%TREE_POPULARITY_INDEX%",
			"tree_data.trees.tree_%LIST_COUNT%.tree_person_count" : "%TREE_PERSON_COUNT%",
			"tree_data.trees.tree_%LIST_COUNT%.tree_description" : "%TREE_DESCRIPTION%",
			"tree_data.trees.tree_%LIST_COUNT%.tree_date_created" : "%TREE_DATE_CREATED%",
			"tree_data.trees.tree_%LIST_COUNT%.tree_date_updated" : "%TREE_DATE_UPDATED%"
		};
		switch(target_type)	{
			case 'listings_file_latest':
				$('listings_file_latest').update(loading_table());
				if (!template) { var template = 'tree_template_file_list_block'; }
				tree_data_process_list(tree_data,'LIST','trees',listings_file_data,template,'listings_file_latest');
				listings_pagination(tree_data,link_behavior);
			break
			case 'listings_file_popular':
				$('listings_file_popular').update(loading_table());
				if (!template) { var template = 'tree_template_file_list_basic'; }
				tree_data_process_list(tree_data,'LIST','trees',listings_file_data,template,'listings_file_popular');
				listings_pagination(tree_data,link_behavior);
			break
			case 'listings_file_user':
				$('listings_file_user').update(loading_table());
				if (!template) { var template = 'tree_template_file_list_block'; }
				tree_data_process_list(tree_data,'LIST','trees',listings_file_data,template,'listings_file_user');
				listings_pagination(tree_data,link_behavior);
			break
			case 'listings_file_user_sidebar':
				$('listings_file_user_sidebar').update('');
				if (!template) { var template = 'tree_template_user_tree_list'; }
				tree_data_process_list(tree_data,'LIST','trees',listings_file_data,template,'listings_file_user_sidebar');
			break
			case 'listings_file_mytrees':
				$('listings_file_mytrees').update(loading_table());
				if (!template) { var template = 'tree_template_mytrees_list_block'; }
				tree_data_process_list(tree_data,'LIST','trees',listings_file_data,template,'listings_file_mytrees');
			break
			case 'listings_file_alpha':
				$('listings_file_alpha').update(loading_table());
				if (!template) { var template = 'tree_template_file_list_block'; }
				tree_data_process_list(tree_data,'LIST','trees',listings_file_data,template,'listings_file_alpha');
				listings_pagination(tree_data,link_behavior);
			break
		}
	}	
}




function tree_navigation_update (crumb_target, crumb_title, crumb_href) {
	// Deprecated
	// Port to new breadcrumb menu
	if (crumb_title != 'SAME') {
		$(''+ crumb_target +'').update(crumb_title);
	}
	$(''+ crumb_target +'').href = crumb_href;
}


function tree_toggle_section(target_to_toggle,target_container) {
	var section_arrow_img = $$('#'+ target_container +' img.page_rounded_header_arrow')[0];
	var section_visiblity = $(''+ target_to_toggle +'').style.display;
	if (section_visiblity == "none") { section_arrow_img.src = '/images/tree_arrow_sm_gray_down.gif';}
	else { section_arrow_img.src = '/images/tree_arrow_sm_gray_right.gif'; }
	var tree_toggle_section_effect = function(target_to_toggle) { new Effect.toggle($(''+ target_to_toggle +''),'blind',{duration: 0.3}); }
	tree_toggle_section_effect(target_to_toggle);
}

function tree_sidebar_toggle_tools() {
	// Deprecated
	// Port to new embeddable tool menu
	
	if ($('tree_sidebar_subitem_tools').style.display == "none") {
		$('tree_sidebar_item_tools').removeClassName('tree_sidebar_item_tools_up');
		$('tree_sidebar_item_tools').addClassName('tree_sidebar_item_tools_down');
	}
	else {
		$('tree_sidebar_item_tools').removeClassName('tree_sidebar_item_tools_down');
		$('tree_sidebar_item_tools').addClassName('tree_sidebar_item_tools_up');
	}
	var tree_toggle_section_effect = function(target_to_toggle) { new Effect.toggle($(''+ target_to_toggle +''),'blind',{duration: 0.3}); }
	tree_toggle_section_effect('tree_sidebar_subitem_tools');
}

function tree_ui_element_select(target_tab, target_region) {
	if (target_region) {
		var previous_tab = $$('#'+ target_region +' .tree_ui_element_select');
	} else {
		var previous_tab = $$('.tree_ui_element_select');
	}
	
	for (var i=0; i<previous_tab.length; i++) { previous_tab[i].removeClassName('tree_ui_element_select');}
	if (target_tab) { 
		$(target_tab).addClassName('tree_ui_element_select'); 
	} else {
		this.addClassName('tree_ui_element_select'); 
	}
}

function section_tab_select(target_tab, target_content) {
	var previous_tab = $$('#section_tabs a.section_tab_selected');
	for (var i=0; i<previous_tab.length; i++) { 
		previous_tab[i].removeClassName('section_tab_selected'); previous_tab[i].addClassName('section_tab_unselected');
	}
	if (target_tab) {
		$(''+ target_tab +'').removeClassName('section_tab_unselected'); $(''+ target_tab +'').addClassName('section_tab_selected');
	}
	var tab_content = $$('.section_tab_content');
	for (var i=0; i<tab_content.length; i++) { tab_content[i].hide(); }
	$(''+ target_content +'').appear({ duration: 1.0});
}

// Section Tabs

function section_tab_index() {
	section_tab_select('section_tab_index', 'listings_index');
}

function section_tab_search() {
	section_tab_select('section_tab_search', 'listings_search');
}

function section_tab_popular() {
	section_tab_select('section_tab_popular', 'listings_file_popular'); 
	load_tree_data('listings_file_popular','limit=10','tree_template_file_list_block');
}

function section_tab_latest() {
	section_tab_select('section_tab_latest', 'listings_file_latest'); 
	load_tree_data('listings_file_latest','limit=10','tree_template_file_list_block');
}

function section_tab_alpha() {
	section_tab_select('section_tab_alpha', 'listings_file_alpha'); 
	load_tree_data('listings_file_alpha','limit=10','tree_template_file_list_block');
}

function section_tab_mytrees() {
	section_tab_select('section_tab_mytrees', 'listings_file_mytrees'); 
	load_tree_data('listings_file_mytrees','limit=10&user_id='+ $('user_id').innerHTML +'','tree_template_mytrees_list_block');
}

function section_tab_favorites() {
	section_tab_select('section_tab_favorites', 'listings_file_favorites'); 
	load_tree_data('listings_file_favorites','limit=10','tree_template_file_list_block');	
}

function section_tab_profile() {
	section_tab_select('section_tab_profile', 'section_profile');	
}

function section_tab_settings() {
	section_tab_select('section_tab_settings', 'section_settings');	
}

// Section Tab - RSH

function rsh_history_create() {
	window.dhtmlHistory.create({
		toJSON: function(o) {
			return Object.toJSON(o);
		}
		, fromJSON: function(s) {
			return s.evalJSON();
		}
	});	
}

function tree_view_history_process(location, historyData, page_type, section_type) {
	if (location || window.location.href.match("#")) {
		if (!location) { var location = window.location.href.split("#",2)[1]; }
		switch (page_type) {
			case "tree":
				
				if ($('page_tool_share_api')) { $('page_tool_share_api').show(); }
				$('page_area').update($('tree_template_individual').innerHTML);
				var user_id = $('tree_user_id').innerHTML;
				var tree_id = $('tree_id').innerHTML;
				var request_type;
				if (location.match('person_id:')) {
					request_type = 'person_id';
					location = location.replace(/person_id:/,'');
				} else { request_type = 'person_url';}
				var tree_fetch_url = 'user_id='+ user_id +'&tree_id='+ tree_id +'&'+ request_type +'='+ location +'';
				var tree_fetch = 'load_tree_data(\'individual\',\''+ tree_fetch_url +'\')';
				eval(tree_fetch);
				setTimeout('tree_fetch_check("'+ tree_fetch +'");',500);
				setTimeout('tree_fetch_check("'+ tree_fetch +'");',1000);
				setTimeout('tree_fetch_check("'+ tree_fetch +'");',2000);
				setTimeout('tree_fetch_check("'+ tree_fetch +'");',3000);
				setTimeout('tree_fetch_check("'+ tree_fetch +'");',4000);
				setTimeout('tree_fetch_check("'+ tree_fetch +'");',5000);
			break
			case "listings":
				var tree_listings = '';
				switch(location) {
					case "popular": tree_listings = 'section_tab_popular()'; break
					case "latest": tree_listings= 'section_tab_latest()'; break
					case "alpha": tree_listings = 'section_tab_alpha()'; break
					case "mytrees": tree_listings = 'section_tab_mytrees()'; break
					case "search": tree_listings = 'section_tab_search()'; break
					case "favorites": tree_listings = 'section_tab_favorites()'; break
					case "profile": tree_listings = 'section_tab_profile()'; break
					case "settings": tree_listings = 'section_tab_settings()'; break
				}
				eval(tree_listings);
				setTimeout('tree_fetch_check("'+ tree_listings +'","listings");',500);
				setTimeout('tree_fetch_check("'+ tree_listings +'","listings");',1000);
				setTimeout('tree_fetch_check("'+ tree_listings +'","listings");',2000);
				setTimeout('tree_fetch_check("'+ tree_listings +'","listings");',3000);
				setTimeout('tree_fetch_check("'+ tree_listings +'","listings");',4000);
				setTimeout('tree_fetch_check("'+ tree_listings +'","listings");',5000);
			break
		}
		
	} else {
		switch (page_type) {
			case "tree" :
			
				if ($('page_tool_share_api')) { $('page_tool_share_api').hide(); }
				$('page_area').update($('tree_template_file').innerHTML);
				setTimeout("navbar_breadcrumb_update('1',$('text_browse_all').innerHTML,'/browse',false);",500);
				setTimeout("navbar_breadcrumb_update('2',$('tree_title').innerHTML,'/'+ $('tree_username').innerHTML +'/'+ $('tree_url').innerHTML +'',true);",500);
			break
			case "listings" :
				var tree_listings = '';
				switch(section_type) {
					case "browse" : tree_listings = 'section_tab_latest()'; break
					case "mytrees" : tree_listings = 'section_tab_mytrees()'; break
				}
				eval(tree_listings);
				setTimeout('tree_fetch_check("'+ tree_listings +'","listings");',500);
				setTimeout('tree_fetch_check("'+ tree_listings +'","listings");',1000);
				setTimeout('tree_fetch_check("'+ tree_listings +'","listings");',2000);
				setTimeout('tree_fetch_check("'+ tree_listings +'","listings");',3000);
				setTimeout('tree_fetch_check("'+ tree_listings +'","listings");',4000);
				setTimeout('tree_fetch_check("'+ tree_listings +'","listings");',5000);
			break
		}
	}
}

function tree_fetch_check(task,target_type) {
		var do_work = function() { eval(unescape(task)); };
		
		var check_target_contents = function(target_div) {
			if ($(''+ target_div +'')) { if($(''+ target_div +'').innerHTML.match('loading.gif') || $(''+ target_div +'').innerHTML=='') { do_work(); }}
		};
		
		if (target_type) {
			switch (target_type) {
				case "listings" :
					if (task.match("section_tab_profile")) { /* var target_div = 'section_profile'; */ }
					if (task.match("section_tab_alpha")) { var target_div = 'listings_file_alpha'; }
					if (task.match("section_tab_latest")) { var target_div = 'listings_file_latest'; }
					if (task.match("section_tab_mytrees")) { var target_div = 'listings_file_mytrees'; }
					if (target_div) { check_target_contents(target_div); }
				break
				
				case "tree" :
					if ($('tree_person_name')) { if ($('tree_person_name').match('loading.gif')) { do_work(); }}
				break
				
				case "sidebar" :
					if ($('listings_file_user_sidebar')) { 
						if ($('listings_file_user_sidebar').innerHTML == '') { do_work(); }
					}
				break
				
			}
		} else {
			
			if ($('tree_person_name')) { if ($('tree_person_name').match('loading.gif')) { do_work(); }}
			if ($('listings_file_latest')) { if($('listings_file_latest').innerHTML.match('loading.gif') || $('listings_file_latest').innerHTML=='') { do_work(); }}
			if ($('listings_file_mytrees')) { if($('listings_file_mytrees').innerHTML.match('loading.gif') || $('listings_file_mytrees').innerHTML=='') { do_work(); }}
			if ($('listings_file_user')) { if($('listings_file_user').innerHTML.match('loading.gif') || $('listings_file_user').innerHTML=='') { do_work(); }}
		}
}

function tree_url_individual() {
	var tree_url = window.location.href;
	if (tree_url.match(/\?/)) { tree_url = tree_url.split("?")[0]; }
	url_individual = tree_url.split("/")[5];
	if (url_individual) { return url_individual; }
	else { return false; }
}

function tree_view_history(page_type, section_type) {
	rsh_history_create();
	
	// Build support for embedded pages
	// Look for iframe
	// If present use that href instead of global window href
	// document.getElementById('testiframe').src
	
	var location = window.location.href.split("#",2)[1];
	dhtmlHistory.initialize();
	dhtmlHistory.addListener(tree_view_history_process);
	
	var history_process_request = function() {
		if (page_type && section_type) { tree_view_history_process(location, null, page_type, section_type); }
		else { tree_view_history_process(location, null, 'tree'); }	
	}
	
	if (location) {
		history_process_request();
		//dhtmlHistory.add(''+ location +'', null);
	} else {
		if (page_type && section_type) { 
			switch(section_type) {
				case "browse" : tree_view_history_process('latest',null,page_type,section_type); break
				case "mytrees" : tree_view_history_process('mytrees',null,page_type,section_type); break
			}
		} else {
			
			var is_individual = tree_url_individual();
			if (is_individual) { 
				location = is_individual; 
				history_process_request(); 
			}
			else { 		
				$('page_area').update($('tree_template_file').innerHTML);
				if($('navbar_breadcrumb')) {
					setTimeout("navbar_breadcrumb_update('1',$('text_browse_all').innerHTML,'/browse',false);",500);
					setTimeout("navbar_breadcrumb_update('2',$('tree_title').innerHTML,'/'+ $('tree_username').innerHTML +'/'+ $('tree_url').innerHTML +'',true);",500);
				}
			}
		}
			
	}
}


