var QUOTE='\"';

function doPull(url, id)
{
	doPull(url, id, null, true);
}

function doPull_Sync(url, id)
{
	doPull(url, id, null, false);
}


function doPull(url, id1, id2)
{
	doPull(url, id1, id2, true);
}

function doPull(url, id1, id2, async)
{
	if(async==null)
	{
		async=true;
	}

	// First clear the box (in case it takes a while).
clearDialog(id1);
if(id2 != null)
{
//alert("clear2");
clearDialog(id2);
}

	var sURL;
	
	if(url.indexOf("?") == -1)
	{
		sURL = url+"?rD="+(new Date().getTime() % 100000);
	}
	else
	{
		sURL = url+"&rD="+(new Date().getTime() % 100000);
	}

	ajaxSend(sURL, doAJAX, id1, id2, async);
}




function clearDialog(id)
{
	window.document.getElementById("dialog0").setContent = " ";
}

function pullBalance()
{
	setTimeout("doPull('/S/com.spiff.ajax.S_AJAX_Balance', 'balance')", 1000);
}


function doAJAX(ajaxRequest, id1, id2)
{
	if(id1 != null)
	{
//alert(ajaxRequest.responseText);
//window.document.getElementById(id).innerHTML = "<b>5</b>";
		try
		{
			if(id1=="dialog0")
			{
				dlg0.setContent(ajaxRequest.responseText);
				//dojo.widget.byId(id1).setContent(ajaxRequest.responseText);
			}
			else
			{
				var o = window.document.getElementById(id1);
				if(o.src != null)
				{
//alert(ajaxRequest.responseText);
					window.document.getElementById(id1).src = ajaxRequest.responseText;
				}
				else
				{
					window.document.getElementById(id1).innerHTML = ajaxRequest.responseText;
				}
			}
		}
		catch(err)
		{
//		alert(err);
			alert("Error, couldn't find element: "+id1);
		}
	}

	if(id2 != null)
	{
//alert(ajaxRequest.responseText);
//window.document.getElementById(id).innerHTML = "<b>5</b>";
		try
		{
//alert(window.document.getElementById(id2).innerHTML);
			if(window.document.getElementById(id2))
			{
				window.document.getElementById(id2).innerHTML = ajaxRequest.responseText;
				//window.document.getElementById(id2).firstChild.nodeValue = ajaxRequest.responseText;
			}
		}
		catch(err)
		{
			alert("Error, couldn't find element: "+id2);
		}
	}
}



function ajaxSend(url, callback, id1, id2, async)
{
	function ajaxBindCallback()
	{
		if (ajaxRequest.readyState == 4) 
		{
			if (ajaxRequest.status == 200) 
			{
				if (ajaxCallback)
				{
					ajaxCallback(ajaxRequest, id1, id2);
				} 
				else 
				{
					alert('no callback defined');
				}
			} 
			else 
			{
				//alert("There was a problem retrieving the xml data:\n" + ajaxRequest.status + ":\t" + ajaxRequest.statusText + "\n" + ajaxRequest.responseText);
			}
		}
	}


	// use a local variable to hold our request and callback until the inner function is called...
	var ajaxRequest = null;
	var ajaxCallback = callback;


	// bind our callback then hit the server...
	if (window.XMLHttpRequest) 
	{
		// moz et al
		ajaxRequest = new XMLHttpRequest();
		ajaxRequest.onreadystatechange = ajaxBindCallback;
		ajaxRequest.open("GET", url, async);
		ajaxRequest.send(null);
	}
	else if (window.ActiveXObject) 
	{
		// ie
		ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
		if (ajaxRequest) 
		{
			ajaxRequest.onreadystatechange = ajaxBindCallback;
			ajaxRequest.open("GET", url, async);
			ajaxRequest.send();
		}
	}

	if(!async)
	{
		doAJAX(ajaxRequest, id1,id2);
	}
}


function pullCounts()
{
//alert("RR");
	try
	{
		doPull('/S/com.spiff.comms.center.S_CCenter_AJAXCheckMessages', 'messageNotifier', 'InboxCount'); 
	}
	catch(err){}; 
		
	var l = window.document.getElementById('messageNotifier').innerHTML.length;
	if(l>100)
	{
		// Something went badly wrong, so let's stop trying to update.
		clearInterval(mailCheckerInterval);
	}
}



function getFormValues(fobj,valFunc)
{
//alert(fobj);
	var str = "";
	var valueArr = null;
	var val = "";
	var cmd = "";
	for(var i = 0;i < fobj.elements.length;i++)
	{
		switch(fobj.elements[i].type)
		{
			case "checkbox":
			case "radio":
			{
				if(fobj.elements[i].checked)
				{
					str += fobj.elements[i].name +"=" + escape(fobj.elements[i].value) + "&";
				}
				break;
			}

			case "text":
			default:
				if(valFunc)
				{
					//use single quotes for argument so that the value of
					//fobj.elements[i].value is treated as a string not a literal
					cmd = valFunc + "(" + 'fobj.elements[i].value' + ")";
					val = eval(cmd)
				}
				str += fobj.elements[i].name +"=" + escape(fobj.elements[i].value) + "&";
			 break;

			case "select-one":
				str += fobj.elements[i].name +"=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&";
				break;
		}
	}

	str = str.substr(0,(str.length - 1));
	return str;
}



function getFormValuesPost(fobj,valFunc)
{
//alert(fobj);
	var str = "";
	var valueArr = null;
	var val = "";
	var cmd = "";
	for(var i = 0;i < fobj.elements.length;i++)
	{
		switch(fobj.elements[i].type)
		{
			case "checkbox":
			case "radio":
			{
				if(fobj.elements[i].checked)
				{
					str += fobj.elements[i].name +"=" + escape(encodeURI(fobj.elements[i].value)) + "&";
				}
				break;
			}

			case "text":
			default:
				if(valFunc)
				{
					//use single quotes for argument so that the value of
					//fobj.elements[i].value is treated as a string not a literal
					cmd = valFunc + "(" + 'fobj.elements[i].value' + ")";
					val = eval(cmd)
				}
				str += fobj.elements[i].name +"=" + escape(encodeURI(fobj.elements[i].value)) + "&";
			 break;

			case "select-one":
				str += fobj.elements[i].name +"=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&";
				break;
		}
	}

	str = str.substr(0,(str.length - 1));
//alert(str);
	return str;
}






var http_request = false;
var postDest = "";
function doPullPost(url, parameters, id) 
{
	postDest = id;

	http_request = false;
	if (window.XMLHttpRequest) 
	{ // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) 
		{
			// set type accordingly to anticipated content type
			//http_request.overrideMimeType('text/xml');
			http_request.overrideMimeType('text/html');
		}
	}
	else if (window.ActiveXObject) 
	{ // IE
		try 
		{
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) 
		{
			try 
			{
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) {}
		}
	}
	
	if (!http_request) 
	{
		alert('Cannot create XMLHTTP instance');
		return false;
	}

	http_request.onreadystatechange = alertContents;
	http_request.open('POST', url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
}


function alertContents() 
{
	if (http_request.readyState == 4) 
	{
		if (http_request.status == 200) 
		{
			//alert(http_request.responseText);
			result = http_request.responseText;
			document.getElementById(postDest).innerHTML = result;            
		} 
		else 
		{
			alert('There was a problem with the request.');
		}
	}
}






function sleep(naptime)
{
	var sleeping = true;
	var now = new Date();
	var alarm;
	var startingMSeconds = now.getTime();
	//alert("starting nap at timestamp: " + startingMSeconds + "\nWill sleep for: " + naptime + " ms");
	while(sleeping)
	{
		alarm = new Date();
		alarmMSeconds = alarm.getTime();
		if(alarmMSeconds - startingMSeconds > naptime)
		{ 
			sleeping = false; 
		}
	}      
		//alert("Wakeup!");
}



function limitChars(field, obj)
{
 var value;
 if (field.value.length > 120)
 {
  field.value = field.value.substring(0, 120);
  value = 0;
 }
 else
 {
  value = 120 - field.value.length;
 }
 
 window.document.getElementById(obj).innerHTML = value+" chars remaining";
}


function noWinkSelected(form)
{
	val = "";
	len = form.wt.length;

	for (i = 0; i <len; i++) 
	{
		if (form.wt[i].checked) 
		{
			val = form.wt[i].value;
		}
	}

	if (val == "") 
	{
		return true;
	}
	else 
	{
		return false;
	}	
}


function sendText(form)
{
	var text = form.message.value;
	if(text==null || text=="")
	{
		alert("You must enter some text to send");
		return false;
	}

	doPull('com.spiff.comms.text.S_CT_AJAXSendText?'+getFormValues(form,null), null); 
	dojo.widget.byId('dialog0').hide();  
	mailCheckerInterval = setInterval ( 'checkMail()', 1000 ); 
	pullBalance(); 
	return true;
}

function delayLoad(url, time)
{
	
	setTimeout("window.location = '"+url+"'", time);
}



function vote(uid, num, id, type)
{
	doPull("com.spiff.member.S_M_Vote?oUID="+uid+"&v="+num+"&t="+type+"&id="+id, "overall");
}




var rating=0;
function light(num, name)
{
	rating = num;

	// Light 1 thought num
	for (a=1; a<=num; a++)
	{
		if(a%2 == 1)
		{
			document.getElementById("star"+a+name).src = "/images/star_left_active.gif";
		}
		else
		{
			document.getElementById("star"+a+name).src = "/images/star_right_active.gif";
		}
	}

	for (a=num+1; a<=10; a++)
	{
		if(a%2 == 1)
		{
			document.getElementById("star"+a+name).src = "/images/star_left_inactive.gif";
		}
		else
		{
			document.getElementById("star"+a+name).src = "/images/star_right_inactive.gif";
		}
	}
}



function lightSmall(num, name)
{
	rating = num;

	// Light 1 thought num
	for (a=1; a<=num; a++)
	{
		if(a%2 == 1)
		{
		//alert("star"+a+name);
			document.getElementById("star"+a+name).src = "/images/small_star_left_active.gif";
		}
		else
		{
			document.getElementById("star"+a+name).src = "/images/small_star_right_active.gif";
		}
	}

	for (a=num+1; a<=10; a++)
	{
//alert(num+" "+name+":"+"star"+a+name);
		if(a%2 == 1)
		{
			document.getElementById("star"+a+name).src = "/images/small_star_left_inactive.gif";
		}
		else
		{
			document.getElementById("star"+a+name).src = "/images/small_star_right_inactive.gif";
		}
	}
}


function animateSmall(prev, target, name)
{
	lightSmall(prev, name);

	if(prev==target)
	{
		// All done!
		return;
	}


	cmd = "animateSmall("+(prev+1)+", "+target+", '"+name+"')";
	setTimeout( cmd, 75);
}
