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


function popup(mylink, windowname, width, height)
{
if (! window.focus)return true;
var href;
if (typeof(mylink) == 'string')
   href=mylink;
else
   href=mylink.href;
window.open(href, '', 'width='+width+',height='+height+',scrollbars=yes');
return false;
}


function get_featured_event_next_id ()
{
	var y = window['document']['getElementById']('home_featured_events_right_arrow');
	var e = y.innerHTML;
	// alert ('e: '+e);
	var re_next_id = /^[^']+'featured_event_viewer', ([0-9]+).*$/;
	var next_id = e.replace(re_next_id, '$1');
	// alert ('next_id: '+next_id);
	return next_id;
}

	

// 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 "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 "event_calendar":
			// alert ("event_calendar");
			var url = "ajax_event_calendar.tcl";
			var method = "get";
			var result_div_id = args[1];
			var date = args[2];
			var event_table = args[3];
			var data_pair_count = 0;
			url += '?date='+date+'&event_table='+event_table+'&calendar_div_id='+result_div_id;
			document.body.style.cursor = 'wait';
			ajaxManager('load_data',url,result_div_id,method,data_pair_count);
			document.body.style.cursor = 'auto';
		break;
		
		case "featured_event_viewer":
			// alert ('featured_event_viewer');
			var result_div_id = "home_featured_events";
			// ajaxManager('show_wait', result_div_id);
			var method = "get";
			var data_pair_count = 0;
			var passed_featured_event_id = args[1];
			var url = "ajax_featured_event_viewer.tcl";
			url += '?passed_featured_event_id='+passed_featured_event_id;
			// alert ('url: '+url);
			document.body.style.cursor = 'wait';
			ajaxManager('load_data',url,result_div_id,method,data_pair_count);
			document.body.style.cursor = 'auto';
		break;
		
		case "show_page_not_used":
			// alert ('show_page');
			var method = "get";
			var data_pair_count = 0;
			var page_id = args[1];
			
			// the following divs need to be filled: template_content_left_menu, template_content_right
			var result_div_id = "template_content_left_menu";
			var url = "ajax_template_content_left_menu.tcl";
			url += '?page_id='+page_id;
			// alert ('url: '+url);
			document.body.style.cursor = 'wait';
			ajaxManager('load_data',url,result_div_id,method,data_pair_count);
			// document.body.style.cursor = 'auto';
			
			var result_div_id = "template_content_right";
			var url = "ajax_template_content_right.tcl";
			url += '?page_id='+page_id;
			// alert ('url: '+url);
			// document.body.style.cursor = 'wait';
			ajaxManager('load_data',url,result_div_id,method,data_pair_count);
			document.body.style.cursor = 'auto';
		break;
		
		case "show_wait":
			// alert ('show_wait');
			var method = "get";
			var data_pair_count = 0;
			var result_div_id = args[1];
			var url = "ajax_show_wait.tcl";
			document.body.style.cursor = 'wait';
			ajaxManager('load_data',url,result_div_id,method,data_pair_count);
			document.body.style.cursor = 'auto';
		break;
		
	}
}
