// ajaxManager.js
	
// window.onload = initPage;  
// function initPage() {
//	initPopupLinks();
//	ajaxManager('clear_the_page');
// }	

// code to 
// add this code to the text input code: onclick=\"clickclear(this, 'defaulttext')\" onblur=\"clickrecall(this,'defaulttext')\"
// change defaulttext to the text  you want to be the default text in the input form

function clickclear(thisfield, defaulttext) {
	if (thisfield.value == defaulttext) {
		thisfield.value = '';
	}
}

function clickrecall(thisfield, defaulttext) {
	if (thisfield.value == '') {
		thisfield.value = defaulttext;
	}
}

function pause_exec(ms)
{
	var date = new Date();
	var curDate = null;
	
	do { curDate = new Date(); }
	while(curDate-date < ms);
}


// code for fading a div

// call = face(div_id)

var TimeToFade = 3100.0;

function fade(eid)
{
  var element = document.getElementById(eid);
  if(element == null)
    return;
   
  if(element.FadeState == null)
  {
    if(element.style.opacity == null 
        || element.style.opacity == '' 
        || element.style.opacity == '1')
    {
      element.FadeState = 2;
    }
    else
    {
      element.FadeState = -2;
    }
  }

// set FadeState = 2 to always fade out
element.FadeState = 2;
    
  if(element.FadeState == 1 || element.FadeState == -1)
  {
    element.FadeState = element.FadeState == 1 ? -1 : 1;
    element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
  }
  else
  {
    element.FadeState = element.FadeState == 2 ? -1 : 1;
    element.FadeTimeLeft = TimeToFade;
    setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 33);
  }  
}

function animateFade(lastTick, eid)
{  
  var curTick = new Date().getTime();
  var elapsedTicks = curTick - lastTick;
  
  var element = document.getElementById(eid);
 
  if(element.FadeTimeLeft <= elapsedTicks)
  {
    element.style.opacity = element.FadeState == 1 ? '1' : '0';
    element.style.filter = 'alpha(opacity = ' 
        + (element.FadeState == 1 ? '100' : '0') + ')';
    element.FadeState = element.FadeState == 1 ? 2 : -2;
    return;
  }
 
  element.FadeTimeLeft -= elapsedTicks;
  var newOpVal = element.FadeTimeLeft/TimeToFade;
  if(element.FadeState == 1)
    newOpVal = 1 - newOpVal;

  element.style.opacity = newOpVal;
  element.style.filter = 'alpha(opacity = ' + (newOpVal*100) + ')';
  
  setTimeout("animateFade(" + curTick + ",'" + eid + "')", 33);
}

// end of fade div code

function GetXmlHttpObject() {
	var xmlHttp=null;
	try
	{
		// Firefox, Opera 8.9+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		// Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}

function ajaxManager() {	
 	// alert ("Top");	
		
	var args = ajaxManager.arguments;
	switch(args[0]) {
		
		case "load_data":
		//  args values
		// args[0] = load_data
		// args[1] = url
		// args[2] = div_id to put results into
		// args[3] = equal method:  get or post
		// args[4] = number of name:value data pairs 
		// args[5...] = the name followed by the value
		
		
		var x = GetXmlHttpObject();
		if(x!=null) {
			x.onreadystatechange=function() {
				if(x.readyState==4 && x.status==200) {
					// success
					el=document.getElementById(args[2]);
					el.style.display="block";
					el.style.visibility="visible";
					el.innerHTML=x.responseText;
				}
			}

			switch(args[3]) {
			// switching on method
		
			case "post":
				var data_string = "";
				var url = args[1];
				var count = args[4];
				var i = 1;
				var j = 5;
			
				while (i <= count) {
					if (i == 1) {
						data_string = data_string + args[j] + '=';
						j++;
						data_string = data_string + args[j];
						j++;
					}
					else {
						data_string = data_string + '&' + args[j] + '=';
						j++;
						data_string = data_string + args[j];
						j++;
					}
					i++;
				}
			
				x.open("POST",url,true);
				x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
				x.send(data_string);
				break;

			case "get":
				var url=args[1];
				x.open("GET",url,true);
				x.send(null);
				break;
			}
		}		
		break;
		

		case "never_mind":
			// args[1] = the id of the div to clear
			// alert ("okay - never_mind - " + args[1]);

			document.getElementById(args[1]).style.visibility = "hidden"; 
			document.getElementById(args[1]).style.height ="0";
        break;

		case "hide_div":
			// args[1] = the id of the div to clear
			// alert ("okay - hide_div - " + args[1]);
			cdiv = document.getElementById(args[1]);
			cdiv.style.visibility = "hidden"; 
			cdiv.innerHTML='';
        break;

		case "clear_div":
			cdiv = document.getElementById(args[1]);
			cdiv.innerHTML='';
		break;
		
		case "show_page":
			// alert ("okay - show_page - " + args[1]);
			// need this to make sure that IE does not cache data
			var ts = Math.round((new Date()).getTime() / 1000);
			
			// for content middle
			var result_div_id = "content_middle";
			// clear action_result div
			ajaxManager('clear_div', result_div_id);
			ajaxManager('hide_div', 'thumbnail_viewer');
			// required for post and get - change as required
			var method = "get";
			var data_pair_count = 0;
			var page_name = args[1];
			var normal_page_name = args[2];
			var url = "ajax_show_page.tcl";
			url += '?page_name='+page_name+'&normal_page_name='+normal_page_name+'&ts='+ts;
			if (page_name == 'bridal_registry_page')
			{
				var registry_id = args[3];
				url+= '&registry_id='+registry_id;
			}
			document.body.style.cursor = 'wait';
			ajaxManager('load_data',url,result_div_id,method,data_pair_count);
			
			// for content_right_video_player
			var result_div_id = "content_right_video_player";
			// clear action_result div
			ajaxManager('clear_div', result_div_id);
			var url = "ajax_show_video.tcl";
			url += '?page_name='+page_name+'&ts='+ts;
			ajaxManager('load_data',url,result_div_id,method,data_pair_count);
			document.body.style.cursor = 'auto';
			
			if (page_name == 'designer_jewelry_page')
			{
				var result_div_id = "iframe_wrapper";
				var url = "ajax_iframe_wrapper.tcl";
				url += '?ts='+ts;
				document.body.style.cursor = 'wait';
				ajaxManager('load_data',url,result_div_id,method,data_pair_count);
				document.body.style.cursor = 'auto';
			} else {
				var result_div_id = "iframe_wrapper";
				ajaxManager('clear_div', result_div_id);
			}
		break;

		case "show_thumbnails_edit":
			// alert ('show_thumbnails_edit');
			var result_div_id = "edit_thumbnails";
			var url = "ajax_show_thumbnails_edit.tcl";
			var method = "get";
			var data_pair_count = 0;
			document.body.style.cursor = 'wait';
			ajaxManager('load_data',url,result_div_id,method,data_pair_count);
			document.body.style.cursor = 'auto';
		break;
		
		case "thumbnail_remove":
			// alert ("okay - thumbnail_remove - " + args[1]);
			// clear action_result div
			ajaxManager('clear_div', 'edit_thumbnails');
			// required for post and get - change as required
			var url = "ajax_thumbnail_remove.tcl";
			var result_div_id = "edit_thumbnails";
			var method = "post";
			
			// required for post
			var data_pair_count = 1;
			var data_name_1 = "thumbnail_id";
			var data_value_1 = args[1];
			document.body.style.cursor = 'wait';
			ajaxManager('load_data',url,result_div_id,method,data_pair_count,data_name_1,data_value_1);
			document.body.style.cursor = 'auto';
		break;
		
		case "show_thumbnail_selections":
			// alert ("okay - show_thumbnail_selections - " + args[1]);
			// clear action_result div
			ajaxManager('clear_div', 'thumbnail_left');
			ajaxManager('clear_div', 'thumbnail_right');
			var data_name_1 = "page_name";
			var data_value_1 = args[1];
			// required for post and get - change as required
			var method = "post";
			var data_pair_count = 1;

			// left column - selected thumbnails
			var url = "ajax_show_selected_thumbnails.tcl";
			var result_div_id = "thumbnail_left";
			document.body.style.cursor = 'wait';
			ajaxManager('load_data',url,result_div_id,method,data_pair_count,data_name_1,data_value_1);
			
			// right column - available thumbnails
			var url = "ajax_show_available_thumbnails.tcl";
			var result_div_id = "thumbnail_right";
			ajaxManager('load_data',url,result_div_id,method,data_pair_count,data_name_1,data_value_1);
			document.body.style.cursor = 'auto';
		break;
		
		case "thumbnail_assign":
			// alert ("okay - thumbnail_assign - " + args[1]);
			// clear action_result div
			ajaxManager('clear_div', 'thumbnail_left');
			ajaxManager('clear_div', 'thumbnail_right');
			var data_name_1 = "page_name";
			var data_value_1 = args[1];
			var data_name_2 = "thumbnail_id";
			var data_value_2 = args[2];
			// required for post and get - change as required
			var method = "post";
			var data_pair_count = 2;

			// left column - selected thumbnails
			var url = "ajax_thumbnail_assign.tcl";
			var result_div_id = "thumbnail_left";
			document.body.style.cursor = 'wait';
			ajaxManager('load_data',url,result_div_id,method,data_pair_count,data_name_1,data_value_1,data_name_2,data_value_2);
			
			pause_exec(100);
			
			// right column - available thumbnails
			var url = "ajax_show_available_thumbnails.tcl";
			var result_div_id = "thumbnail_right";
			var data_pair_count = 1;
			ajaxManager('load_data',url,result_div_id,method,data_pair_count,data_name_1,data_value_1);
			document.body.style.cursor = 'auto';
		break;
		
		case "thumbnail_unassign":
			// alert ("okay - thumbnail_unassign - " + args[1]);
			// clear action_result div
			ajaxManager('clear_div', 'thumbnail_left');
			ajaxManager('clear_div', 'thumbnail_right');
			var data_name_1 = "page_name";
			var data_value_1 = args[1];
			var data_name_2 = "thumbnail_id";
			var data_value_2 = args[2];
			// required for post and get - change as required
			var method = "post";
			var data_pair_count = 2;

			// left column - selected thumbnails
			var url = "ajax_thumbnail_unassign.tcl";
			var result_div_id = "thumbnail_left";
			document.body.style.cursor = 'wait';
			ajaxManager('load_data',url,result_div_id,method,data_pair_count,data_name_1,data_value_1,data_name_2,data_value_2);
			
			pause_exec(100);
			
			// right column - available thumbnails
			var url = "ajax_show_available_thumbnails.tcl";
			var result_div_id = "thumbnail_right";
			var data_pair_count = 1;
			ajaxManager('load_data',url,result_div_id,method,data_pair_count,data_name_1,data_value_1);
			document.body.style.cursor = 'auto';
		break;
		
		case "subscribe":
			// alert ("subscribe");
			// clear action_result div
			// ajaxManager('clear_div', 'edit_thumbnails');
			// required for post and get - change as required
			var url = "ajax_subscribe.tcl";
			var result_div_id = "subscribe_results";
			ajaxManager('clear_div', result_div_id);
			var method = "post";
			
			// required for post
			var data_pair_count = 2;
			var data_name_1 = "name";
			var data_value_1 = document.subscribe_form.name.value;
			if (data_value_1 == 'Name') {data_value_1 = ''}
			var data_name_2 = "email_address";
			var data_value_2 = document.subscribe_form.email_address.value;
			if (data_value_2 == 'E-mail') {data_value_2 = ''}
			//alert ('name: '+data_value_1+'  email_address: '+data_value_2);
			document.body.style.cursor = 'wait';
			ajaxManager('load_data',url,result_div_id,method,data_pair_count,data_name_1,data_value_1,data_name_2,data_value_2);
			document.body.style.cursor = 'auto';
			fade(result_div_id);
			// document.getElementById(result_div_id).style.height ="0";
			document.subscribe_form.name.value = 'Name';
			document.subscribe_form.email_address.value = 'E-mail';
		break;
		
		case "thumbnail_viewer":
			// alert ('thumbnail_viewer');
			var result_div_id = "thumbnail_viewer";
			var method = "get";
			var data_pair_count = 0;
			var page_name = args[1];
			var thumbnail_id = args[2];
			var url = "ajax_thumbnail_viewer.tcl";
			url += '?page_name='+page_name+'&thumbnail_id='+thumbnail_id;
			document.getElementById('opaque').style.visibility = "visible";
			document.getElementById(result_div_id).style.visibility = "visible"; 
			document.body.style.cursor = 'wait';
			ajaxManager('load_data',url,result_div_id,method,data_pair_count);
			document.body.style.cursor = 'auto';
		break;
		
		case "thumbnail_close":
			// alert ('thumbnail_close');
			ajaxManager('hide_div', 'thumbnail_viewer');
			ajaxManager('hide_div', 'opaque');
		break;
		
		case "get_item_input":
			// alert ("okay - get_item_input - " + args[1]);
			var url = "ajax_get_item_input.tcl";
			var count = args[1];
			var result_div_id = 'item_input_'+count;
			var method = "get";
			var data_pair_count = 0;
			url += '?item_input_count='+count;
			document.body.style.cursor = 'wait';
			ajaxManager('load_data',url,result_div_id,method,data_pair_count);
			ajaxManager('clear_div', 'item_input_'+count);
			document.body.style.cursor = 'auto';
		break;
		
		case "forward_email":
			// required for post and get - change as required
        	var url = "ajax_forward_email.tcl";
        	var result_div_id = "join_response";
        	var method = "post";
        	// required for post
        	var data_pair_count = 3;
			var data_name_1 = "from_email_address";
			var data_name_2 = "to_email_address";
			var data_name_3 = "note";
			var data_value_1 = document.forms.forward_email_form.from_email_address.value;
			var data_value_2 = document.forms.forward_email_form.to_email_address.value;
			var data_value_3 = document.forms.forward_email_form.note.value;

        	ajaxManager('load_data',url,result_div_id,method,data_pair_count,data_name_1,data_value_1,data_name_2,data_value_2,data_name_3,data_value_3);

	        break;
	}
}
