// global variables
var tellafriendRequest = false;
var tellafriendURL = "";
var tf_loadingDiv="";
var tf_formDiv="";
var tf_alpha = 1;

//submit the form via ajax
function tf_makeRequest(parameters) {
  tf_createRequestObject();
  tellafriendRequest.setVar("email", parameters["tf_email"]);
  tellafriendRequest.setVar("tell", parameters["tell"]);
  tellafriendRequest.method = 'GET';
  tellafriendRequest.element = tf_formDiv;
  tellafriendRequest.onCompletion = tf_alertContents;
  tellafriendRequest.runAJAX();
}

//create the communication object
function tf_createRequestObject() {
  tellafriendRequest = new sack(tellafriendURL);
}

//act on the server response
function tf_alertContents() {
	tf_FadeIn();
	
	tf_evalscripts( document.getElementById(tf_formDiv) );
}

//prints the server response
function tf_printResponse(){
  alert(http_request.responseText);
  var response = http_request.responseXML.documentElement;
  var n = response.tf_getElementsByTagName('result')[0].firstChild.nodeValue;
  
  message= response.tf_getElementsByTagName('message')[0].firstChild.nodeValue;
  fd = document.getElementById(tf_formDiv);
  fd.innerHTML = message;
}

function tf_evalscripts(obj) {
	var scripts = obj.getElementsByTagName('script');
	
	for (var i = 0; i < scripts.length; i++) {
		var scrip = scripts[i];                  
		var txt = '';                            
		
		if (scrip.text) {                        
			txt = scrip.text;                
		}                                        
		else {                                   
			if (scrip.childNodes) {          
				txt = dojox.data.dom.textContent(scrip);
			}                                               
		}
		
		eval(txt);                                              
	}                                                               
}

//fade out the form
function tf_StartFade(url,fdiv,ldiv) {
   tellafriendURL = url;
   tf_formDiv = fdiv;
   tf_loadingDiv = ldiv;
   tStart   = new Date();
   tf_showDiv();
   timerID  = setTimeout("tf_FadeOut()", 100);
}

//handles the fadeout of the tf_formDiv element
function tf_FadeOut(){
  tf_alpha -= 0.1;
  if(tf_alpha < 0){
    tf_alpha = 0;
    tf_get();
  }else{
    obj = document.getElementById(tf_formDiv);
    tf_setOpacity(obj, tf_alpha);
    setTimeout("tf_FadeOut()", 100);
  }
}

//handles the fadein of the tf_formDiv element
function tf_FadeIn(){
  tf_alpha += 0.1;
  if(tf_alpha > 1){
    tf_hideDiv();
    tf_alpha = 1;
  }else{
    obj = document.getElementById(tf_formDiv);
    tf_setOpacity(obj, tf_alpha);
    setTimeout("tf_FadeIn()", 100);
  }
}

//tf_gets the values inserted in the tellafriendFormDiv
function tf_get() {
  var obj = document.getElementById("tellafriendFormDiv");
  
  var tf_getstr = "?";
  var params = new Array();
  for (i=0; i<obj.childNodes.length; i++) {
     if (obj.childNodes[i].tagName == "INPUT") {
        if (obj.childNodes[i].type == "text") {
           //tf_getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
           params[obj.childNodes[i].name] = obj.childNodes[i].value;
           
        }
        if (obj.childNodes[i].type == "checkbox") {
           if (obj.childNodes[i].checked) {
              //tf_getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
              params[obj.childNodes[i].name] = obj.childNodes[i].value;
           } else {
              //tf_getstr += obj.childNodes[i].name + "=&";
              params[obj.childNodes[i].name] = "";
           }
        }
        if (obj.childNodes[i].type == "radio") {
           if (obj.childNodes[i].checked) {
              //tf_getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
              params[obj.childNodes[i].name] = obj.childNodes[i].value;
           }
        }
        if (obj.childNodes[i].type == "hidden") {
           //tf_getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
           params[obj.childNodes[i].name] = obj.childNodes[i].value;
        }
     }   
     if (obj.childNodes[i].tagName == "SELECT") {
        var sel = obj.childNodes[i];
        //tf_getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
        params[sel.name] = sel.options[sel.selectedIndex].value;
     }
     
  }
  tf_makeRequest(params);
}

//shows a div for progress information
function tf_showDiv(){
  if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(tf_loadingDiv).style.display = 'block';
	}
	else {
		if (document.layers) { // Netscape 4
			document.tf_loadingDiv.display = 'block';
		}
		else { // IE 4
			document.all.tf_loadingDiv.style.display = 'block';
		}
	}
}

//hides a div with the progress information
function tf_hideDiv(){
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(tf_loadingDiv).style.display = 'none';
	}
	else {
		if (document.layers) { // Netscape 4
			document.tf_loadingDiv.display = 'none';
		}
		else { // IE 4
			document.all.tf_loadingDiv.style.display = 'none';
		}
	}
}

/*
* Function to put the new input in the document
*/
function tf_setOuterHTML(element, toValue)
{
	if (typeof(element.outerHTML) != 'undefined')
		element.outerHTML = toValue;
	else
	{
		var range = document.createRange();
		range.setStartBefore(element);
		element.parentNode.replaceChild(range.createContextualFragment(toValue), element);
	}
}		

/**
Method:       tf_setOpacity(HTMLElement, Int)
Description:  Sets the opacity of an element
Parameters:
     HTMLElement aElm  - The HTML element to set the opacity for
     Float aOpac       - The value for the element's opacity. 0.0 - 1.0
                         Where 0.0 is invisible and 1.0 is completely 
                         visible
*/
function tf_setOpacity(aElm,aOpac) {
    var object = aElm.style; 
    object.opacity = (aOpac ); 
    object.MozOpacity = (aOpac ); 
    object.KhtmlOpacity = (aOpac ); 
    object.filter = "tf_alpha(opacity=" + aOpac*100 + ")"; 

}
