//Custom Javascript functions by Dominic Scaife, d.scaife@website-design-studio.net

function sf()
//formfocusfunction
{
document.getElementById('_q5').focus();
}


//this method is needed due to the inheritance of attributes in IE, you can have multiple class attributes on an object, which leads to problem when changing them via traditional DOM methods
function changeClass (objectName, newClassName)
{
	if (objectName.getAttributeNode("class")) 
	{
	  for (var i = 0; i < objectName.attributes.length; i++) {
		if (objectName.attributes[i].name.toUpperCase() == 'CLASS') {
		  objectName.attributes[i].value = newClassName;
		}
	  }
	// otherwise create a new attribute
	} 
	else 
	{
	  objectName.setAttribute("class", newClassName);
	}
return true;
}

function findparentDiv(o)
{
// traverse the document tree upwards till we find a div	
	if (o.nodeName.toUpperCase() == 'DIV')
		{
		//alert ("The object passed to checkDiv is a " + o.nodeName);
		parentDiv = o;	
		//alert ("CheckDiv is about to return a " + divobject.nodeName);
		return parentDiv;
		}
	else
	{
	findparentDiv(o.parentNode);
	}

}

function findnextDiv(div_object)
{
	var divarray = document.getElementsByTagName('div');
	//alert ("Div_object id = " + div_object.attributes.getNamedItem("id").value);
	//find the div that matches this one
	//alert ("There are: " + divarray.length + " divs in this document "); 
	for (var z = 0; z < divarray.length; z++)
	{
		if (div_object === divarray[z])
			{
			//alert(div_object.attributes.getNamedItem("id").value);
			nextDiv = divarray[z+1];
			//alert(nextDiv.attributes.getNamedItem("id").value);
			return true;
			}	
	}
}

function clearClass(className)
//removes all classes called classname from divs in the document
{
var divarray = document.getElementsByTagName('div');
//alert(divarray[11].attributes.getNamedItem("class").value);
//alert(divarray[11].className);
for (var z = 0; z < divarray.length; z++)
	{
		if (divarray[z].className == className)
			{
			changeClass (divarray[z],"None");
			return true;
			}	
	}
}

//function to help store info from radio buttons selections
//Stores the radiobutton value in _q(n) i.e. _q1, _q2, etc.
function track_radio_buttons()
{
	var theForm = document.getElementById('feedback_form');
	//initialise
	_q1 = 0;
	_q2 = 0;
	_q3 = 0;
	_q4 = 0;
	_q5 = 0;
	_q6 = 0;
	
try
{
	for (var i=0;i<theForm.q1.length;i++)
	{
		if (theForm.q1[i].checked==true)
			{
			_q1=theForm.q1[i].value;
			break ;
			}
	}

	for (var i=0;i<theForm.q2.length;i++)
	{
		if (theForm.q2[i].checked==true)
			{
			_q2=theForm.q2[i].value;
			break ;
			}
	}
	
	for (var i=0;i<theForm.q3.length;i++)
	{
		if (theForm.q3[i].checked==true)
			{
			_q3=theForm.q3[i].value;
			break ;
			}
	}
	for (var i=0;i<theForm.q4.length;i++)
	{
		if (theForm.q4[i].checked==true)
			{
			_q4=theForm.q4[i].value;
			break ;
			}
	}
}
catch (f)
{
}
return true;
}

function alertName(clickedobject)
{
findparentDiv(clickedobject);
//only hilite radio buttons
try
{
if (clickedobject.getAttributeNode("type").value.toUpperCase() == "RADIO")
	{
	//This loop ensures that no more than one option is colored red
	var radio_collection = parentDiv.getElementsByTagName('input');
	for (var k=0;k < radio_collection.length;k++)
		{
		changeClass(radio_collection[k].parentNode,"None");
		}
	//Color the selected red
	changeClass(clickedobject.parentNode, "red3");
	}
}
catch (e)
{
}
//remove all hilite classes
clearClass("hilite");
//changeClass (parentDiv,"None");
scrollDown();
findnextDiv(parentDiv);
changeClass (nextDiv,"hilite");
return true;
}

function cc()
{
clearClass("hilite");
}

var interval_move = 0

function scrollDown()
{
//initiate event handler to move the window
timedelta=10;

//scrollit = function scrollnow() {window.scrollBy(0,8);};

	if (!interval_move)
	{
		interval_move = setInterval("go_scroll(8)", timedelta);
		stop_scrolling = setTimeout("clearInterval(interval_move);interval_move=0;", 300);
	}
}

function go_scroll(speed)
{
window.scrollBy(0,speed);
}

  var called_already = false;
  var xmlHttp = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
  xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
  try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (e2) {
    xmlHttp = false;
  }
}
@end @*/

if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
  xmlHttp = new XMLHttpRequest();
}

function callServer() 
{
	var theForm = document.getElementById('feedback_form');
  	var email = document.getElementById('strQuickEmail').value;
	var _q5 = theForm.q5.value;
	track_radio_buttons();


  // Build the URL to connect to
  
	var params = "strQuickEmail=" + escape(email) + "&q1=" + escape(_q1) + "&q2=" + escape(_q2) + "&q3=" + escape(_q3) + "&q4=" + escape(_q4) + "&q5=" + escape(_q5) + "&referrer=" + escape(document.referrer) +"&xml=1";
	var url = "Scripts/feedback_ajax.php?" + params;  

	// Open a connection to the server
	  xmlHttp.open("post", url, true);
	
	  // Setup a function for the server to run when it's done
	  xmlHttp.onreadystatechange = updatePage;
	  xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	  xmlHttp.setRequestHeader("Referer", url);
	  // Send the request
	  xmlHttp.send(params);
	  return true;
}  

function updatePage() 
{
//inform the user that we are working on the request
	try 
	{
	var deletethis = document.getElementById('submitbutton');
	deletethis.parentNode.removeChild(deletethis);
	}
	catch (e)
	{
	}

	createDataContainer2();
	document.getElementById('AJAX_Update').innerHTML = "<img src\=\"images\/Progressbar.gif\" class=\"centred3\" alt\=\"ProgressBar\" \/>"	
	createDataContainer();
	document.getElementById('AJAX_text2').innerHTML = "Transmitting your data...";
	  if (xmlHttp.readyState == 4) 
	  { 
		var xmldoc = xmlHttp.responseXML;
		try
		{
		var x = xmldoc.documentElement;
		}
		catch (e)
		{
		createDataContainer();
		document.getElementById('AJAX_text2').innerHTML = "Database Connectivity problem. Please try again later." + e ;
		}
	
			try
		{
	//remove the progressbar
				var deletethis = document.getElementById('AJAX_Update')
				deletethis.parentNode.removeChild(deletethis);	
				createDataContainer();
				document.getElementById('AJAX_text2').innerHTML = "";
				document.getElementById('AJAX_text2').innerHTML += "<strong>Thank you for your feedback.<\/strong>  Our systems have stored a rating of " + x.getElementsByTagName('Rating')[0].childNodes[0].nodeValue + " out of 5. We appreciate you sparing a moment to help us improve our <a href=\"services.htm\">services.</a> Why not take a look and see if we can help you <em>'grow your business online'?<\/em> <p>Alternatively, view our <a href=\"portfolio.htm\">portfolio</a> or go to our <a href=\"index.htm\">homepage</a>.</p>";
				createDataContainer2();
				document.getElementById('AJAX_Update').innerHTML = "<img src\=\"images\/thankyou.jpg\" class=\"centred3\" alt\=\"Thank you\" \/>";			
		}
		catch (e)
		{
		}
	  }
}

function createDataContainer(){
    var div=document.getElementById('AJAX_text2');
    if(div){return};
    var div=document.createElement('div');
    div.setAttribute('id','AJAX_text2');
    document.getElementById('website-design-FolderBody').appendChild(div);
}
function createDataContainer2(){
    var div2=document.getElementById('AJAX_Update');
    if(div2){return};
    var div2=document.createElement('div');
    div2.setAttribute('id','AJAX_Update');
    document.getElementById('website-design-FolderBody').appendChild(div2);
}
  

function ValidateForm()
{
	clearClass("hilite");
	var theField = document.getElementById('strQuickEmail');
	var theForm = document.getElementById('feedback_form');
	
	 if (theField.value.length > 40)
	  {
	    alert("Please enter at most 40 characters in the \"E-mail\" field.");
	    theField.focus();
	    return (false);
	  }
	
		var emailad = theField.value;
		var exclude=/[^@\-\.\w]|^[_@\.\-]|[\._\-]{2}|[@\.]{2}|(@)[^@]*\1/;
		var check=/@[\w\-]+\./;
		var checkend=/\.[a-zA-Z]{2,3}$/;
	if (emailad != "")	
{		
	if(((emailad.search(exclude) != -1)||(emailad.search(check)) == -1)||(emailad.search(checkend) == -1))
		{		
			alert ("E-mail: " + theField.value + " is invalid. Please enter a valid e-mail address.");
			document.getElementById('strQuickEmail').focus();
			return false;
		}
}
		
	//don't call if sent before
	if (called_already === false)
		{
		called_already = callServer();
		}	
	return false;
}
