/*
JavaScript objects to represent Phone and handle PhoneCatalogue
Browser detect, need's a little work
*/
var ie;
var errContainer="div";

var pos; // variable for posting information

if (navigator.appVersion.indexOf("MSIE")!=-1) {
	ie = true;
} else {
	ie = false;
}

function initSubmit() {
	frmEl = document.forms['poll'];
	if (ie) {
		frmEl.attachEvent('onsubmit', processForm, false);
	} else {
		frmEl.addEventListener('submit', processForm, false);
	}
	frmEl.onsubmit = function() { return false; }
}

function processForm(){
	if(validateForm()){
		sendData();
	}
}



function sendData () {
	var page = "../scripts/polls_reg.php";
	var objInput = frmEl.elements;
	var stuff ="";
	for (var i=0; i<objInput.length; i++) {
		if (objInput[i].type=="hidden") {
					if(i>0) stuff+='&';
					stuff+=objInput[i].name+'='+cleanString(objInput[i].value);
		}else if (objInput[i].type=="text") {
					if(i>0) stuff+='&';
					stuff+=objInput[i].name+'='+cleanString(objInput[i].value);
		}else if (objInput[i].type=="textarea") {
					if(i>0) stuff+='&';
					stuff+=objInput[i].name+'='+cleanString(objInput[i].value);
		}else if(objInput[i].type=="radio" && objInput[i].checked){
					if(i>0) stuff+='&';
					stuff+=objInput[i].name+'='+objInput[i].value;
		}
	}
	stuff+='&form_submitted=true';

	showContactTimer(); // quickly begin the load bar
	//success.style.display = 'none'; // hide the success bar (incase this is a multi-email

	// convert (&, +, =) to string equivs. Needed so URL encoded POST won't choke.
	loadXMLPosDoc(page,stuff);
}

function showContactTimer () {
	var msg = '<img src="images/ajax-loaderr.gif" alt="Laden..." title="Senden..." /> Daten werden gesendet...';
	displayStatusmsg(frmEl,msg);
	sentTimer = setTimeout("hideContactTimer()",1000);
}

function hideContactTimer () {
	var status = grabPosXML("status");
	var msg = grabPosXML("confirmation");
	if ( status == 'NOTOK' ) {
		displayStatusmsg(frmEl,msg);
	} else 	if ( status == 'OK' ) {
		displayStatusmsg(frmEl,msg);
		var submitDiv=document.getElementById("submitDiv");
		if(submitDiv!=null){
			submitDiv.style.display="none";
		}
		try{
			var results=pos.responseXML.documentElement.getElementsByTagName("question");
			if(results!=null){
				for(var i=0; i<results.length;i++){
					var question=results[i];
					var idatt=question.getAttribute("id");
					var targetDiv=document.getElementById("p"+idatt);
					if(targetDiv!=null){
						targetDiv.className = "results"
						var newInnerText="";
						for( var j=0; j<question.childNodes.length; j++){
							var answer=question.childNodes[j];
							if(answer.nodeName=="answer"){
								newInnerText+=answer.childNodes[0].nodeValue+"";
								newInnerText+=" <strong>("+answer.getAttribute('percentage')+"%)</strong> &nbsp;";
							}
						}
						targetDiv.innerHTML=newInnerText;
					}
				}
			}
		}catch(err){
			alert(err);
		}
		if (ie) {
			if(frmEl.detachEvent)
				frmEl.detachEvent('onsubmit', processForm);
		} else {
			frmEl.removeEventListener('submit', processForm, false);
		}
	}
}


function ajaxFunction(){
	var ajaxRequest; // The variable that makes Ajax possible!

	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}
	return ajaxRequest;
}

function loadXMLPosDoc(url,posData) {

    // branch for native XMLHttpRequest object
    pos = ajaxFunction();
    if (pos) {
        pos.onreadystatechange = processPosChange;
        pos.open("POST", url, true);
				pos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        pos.send(posData);
    }

}

function grabPosXML(tagName) {
	if(pos.responseXML==null){
		displayErrorMessage(frmEl,'Fehler beim Übermitteln des Formulares. Bitte versuchen Sie es erneut.');
		return false;
	}
	if (pos.responseXML.documentElement.getElementsByTagName(tagName)[0].childNodes[0]) {
		var resp = pos.responseXML.documentElement.getElementsByTagName(tagName)[0].childNodes[0].nodeValue;
		return resp;
	} else {
		displayStatusmsg(frmEl,'Fehler beim Übermitteln des Formulares. Bitte versuchen Sie es erneut.');
		return false;
	}
}

function processPosChange() {
    // page loaded "complete"
    if (pos.readyState == 4) {
        // page is "OK"
        if (pos.status == 200) {
			if ( grabPosXML("status") == 'NOTOK' ) {
				displayStatusmsg(frmEl,grabPosXML("confirmation"));
			}
		}
	}
}

function unhideCommentBox(id, toShow){
	var divel=document.getElementById(id);
	if(divel){
		if(toShow){
			divel.innerHTML='<textarea name="'+id+'"></textarea>';
			divel.style.display="block";

		}else{
			divel.style.display="none";
			divel.innerHTML="";
		}
	}
}

function validateForm(){
	var objInput = frmEl.elements;
	var radioBtnArray = new Array();
	var radioBtnName="";
	var qCounter=-1;
	for (var i=0; i<=objInput.length; i++) {
		//1 more than actual items to allow post check of previous radio btn
		if(objInput[i]!= null && objInput[i].type=="radio"){
			var formObject=objInput[i];
			var radioName="end";
			if(formObject!=null){
				radioName=formObject.name;
			}
			if(radioBtnName!=radioName){
				//alert(radioName);
				if(radioBtnArray[qCounter]!=null && radioBtnArray[qCounter]==0){
					displayErrorMessage(frmEl,'Bitte beantworten Sie die <strong>Frage '+(qCounter+1)+'</strong>.',objInput[i]);
					return false;
				}else{
					radioBtnName=radioName;
					qCounter++;
					radioBtnArray[qCounter]=0;
				}
			}
			if(formObject!=null && formObject.checked)
				radioBtnArray[qCounter]=1;
		}else if(objInput[i]==null){
			if(radioBtnArray[qCounter]!=null && radioBtnArray[qCounter]==0){
				displayErrorMessage(frmEl,'Bitte beantworten Sie die <strong>Frage '+(qCounter+1)+'</strong>.',objInput[i]);
				return false;
			}
		}
	}
	return true;

}

function smo_input_get_label(inputElem){
//function created by Shawn Olson at http://www.shawnolson.net
	if(inputElem.parentNode){
		if(inputElem.parentNode.tagName=='label'){
			return inputElem.parentNode;
		}
	}
	var labels=document.getElementsByTagName("label"),i;
	for( i=0; i<labels.length;i++ ){
		if(labels[i].htmlFor==inputElem.id){
			return labels[i];
		}
	}
	return false;
}

function displayErrorMessage (frm, msgText,el) {
    var errorMsg = '';
    errorMsg = msgText;
    var errorDiv = document.getElementById(frm.id+'_statusMessage');
		errorDiv.className = 'errorMessage';
		errorDiv.innerHTML = errorMsg;
		//Fat.fade_element(errorDiv.id, 30, 500, '#ffffff', null);
		if(el!=null)
			el.focus();
    //Fat.fade_all();
}

function resetbg(el) {
	el.style.backgroundColor = '';
}

function displayStatusmsg(frm,msg) {
	if (document.getElementById(frm.id+'_statusMessage')) {
		var statusDiv = document.getElementById(frm.id+'_statusMessage');
		//Fat.fade_element(statusDiv.id, 30, 500, '#ffffff', null);
		statusDiv.innerHTML = msg;
		statusDiv.className = 'errorMessage';

  } else {
		var statusDiv = document.createElement(errContainer);
		statusDiv.id = frm.id+'_statusMessage';
		statusDiv.innerHTML = msg;
		statusDiv.className = 'errorMessage';
		frm.insertBefore(statusDiv, frm.childNodes[0]);
		//Fat.fade_element(statusDiv.id, 30, 500, '#ffffff', null);
	}
}

function cleanString(str1) {
	str1 = str1.replace(/&/g,"**am**");
	str1 = str1.replace(/=/g,"**eq**");
	str1 = str1.replace(/\+/g,"**pl**");
	return str1;
}

function unCleanString(str1) {
	str1 = str1.replace(/\*\*am\*\*/g,"&");
	str1 = str1.replace(/\*\*eq\*\*/g,"=");
	str1 = str1.replace(/\*\*pl\*\*/g,"+");
	str1 = str1.replace(/\*\*nl\*\*/g,"<br />");
	return str1;
}
