// JavaScript Document

function openWindow_func(url, wname, topleft, fullscreen, appw, apph, scroll) {
	fscreen = (fullscreen == 1)?"fullscreen":"";	
	if (topleft == 1){
		screenx = 0
		screeny = 0
	} else {
		screenx = (screen.width - appw)/2
		screeny = (screen.height - apph)/2
	}
	newWin = window.open(url, wname, "toolbar=no,status=yes,"+fscreen+",scrollbars="+scroll+",resizable=yes,menubar=no,width="+appw+",height="+apph+",left="+screenx+",top="+screeny+", maximize=yes");
	//return newWin;
}

function detectIsIE6() {
	var browser = navigator.appName;
	var b_version = navigator.appVersion;
	var version = parseFloat(b_version);	
	if (browser.indexOf("Microsoft") != -1 && (version <= 6) ){
		// IE 6-
		return true;
	} else {
		// other browsers or IE 7+
		return false;
	}
}

function txtboxInit(txtboxObj, initVal){
	if (txtboxObj.value == initVal){
		txtboxObj.value = '';		
	}
	if (txtboxObj.className.substr(txtboxObj.className.length-4,4) == "init"){
		//txtboxObj.className = txtboxObj.className.substr(0,txtboxObj.className.length-4);// Bug in IE
		txtboxObj.style.color='#003366';
	} else if (txtboxObj.className.substr(txtboxObj.className.length-4,4) == "warn"){
		txtboxObj.style.color='#003366';
	}
}

function setStyle_func(obj, stylevar, styleval){
	if (navigator.userAgent.toLowerCase().indexOf("msie") > -1){
		obj.style[stylevar]=styleval;
	} else {
		obj.style[stylevar]=styleval;
	}
}

function enterKeySearch_func(e, urlORfrm){	
	var characterCode
	if(e && e.which){ //if which property of event object is supported (NN4)
		e = e
		characterCode = e.which //character code is contained in NN4's which property
	} else{
		e = event
		characterCode = e.keyCode //character code is contained in IE's keyCode property
	}
	if (characterCode == 13){
		if (urlORfrm.name){
			urlORfrm.submit();
		} else {
			location.href=urlORfrm;
		}
	}
}

function replaceTxt_func(txtStr,replaceSelStr,replaceWithTxt){
	return txtStr.split(replaceSelStr).join(replaceWithTxt);
}

function sendmlHttpRequest(url,callback,postdata) {	
	var xmlhttp=false;
	try  {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); /* for IE < 5 */
	} catch (e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = false;
		}
	}

	/* mozilla & opera */
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest();
	}

	xmlhttp.open("POST",url,true);
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
	xmlhttp.onreadystatechange=function() {
		if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			callback(xmlhttp.responseText);
			//alert(xmlhttp.responseText);
		}
	}
	xmlhttp.send(postdata); /* are sending null because we dont have any data to post */
}

var XMLHttpFactories = [
	function () {return new XMLHttpRequest()},
	function () {return new ActiveXObject("Msxml2.XMLHTTP")},
	function () {return new ActiveXObject("Msxml3.XMLHTTP")},
	function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];

function createXMLHTTPObject() {
	var xmlhttp = false;
	for (var i=0;i<XMLHttpFactories.length;i++) {
		try {
			xmlhttp = XMLHttpFactories[i]();
		}
		catch (e) {
			continue;
		}
		break;
	}
	return xmlhttp;
}

// ******* FORM FUNCTIONS *******
function radValidate_func(radGroup){// Checks to see if a radio group has been checked
	rL = radGroup.length;
	radChked=0;
	for(a=0;a<rL;a++){
		if (radGroup[a].checked){
			radChked=1;
		}
	}
	if (radChked==1){
		return true;
	} else {
		return false;
	}
}

function sel_func(selObj, selVal){ // Positions the select object at given index
	selL = selObj.length;
	for(p=0;p<selL;p++){
		if (String(selObj.options[p].value)==String(selVal)){
			selObj.selectedIndex=p;
			break;
		}
	}
}

function radSet_func(radObj, radVal){ // Sets the radiobox group based on a radiobox value
	radL = radObj.length;
	for(p=0;p<radL;p++){
		if (String(radObj[p].value)==String(radVal)){
			radObj[p].checked=true;
			break;
		}
	}
}

function radHasVal_func(radObj, radVal){ // Checks whether the radiobox group has is checked on the given value
	var res=false;
	radL = radObj.length;
	for(p=0;p<radL;p++){
		if (String(radObj[p].value)==String(radVal) && radObj[p].checked){
			res=true;
		}
	}
	return res;
}

function radioListChecked_func(radGroupName){ // Checks if a radiobox group is checked
	radChecked=false;
	radObj = document.forms[0][radGroupName];
	l = radObj.length;
	for(i=0;i<l;i++){
		if (radObj[i].checked){
			radChecked=true;
		}
	}
	return radChecked;
}

function chkboxListChecked_func(chkboxQNo){ //chkboxQNo must include the 'q', this checks to see if this question's group of checkboxes has at least one checked
	c=0;
	frm = document.forms[0];
	l = frm.length;
	for(i=0;i<l;i++){
		if (frm[i].type.indexOf("check") != -1 && frm[i].name.indexOf(chkboxQNo) != -1){
			if (frm[i].checked){
				c++;
			}
		}
	}
	if (c > 0){
		return 1;
	} else {
		return 0;
	}
}

function chkboxCheckMax_func(chkboxObj, chkboxQNo, maxno){ // chkboxQNo must include the 'q'. this checks that the total number of checkboxes selected doesnt exceed the given maxno
	var c=0;
	frm = chkboxObj.form;
	l = frm.length;
	for(i=0;i<l;i++){
		if (frm[i].type.indexOf("check") != -1 && frm[i].name.indexOf(chkboxQNo) != -1){
			if (frm[i].checked){
				c++;
			}
		}
	}
	if (c > maxno){
		chkboxObj.checked=false;
		alert("Maxium you can is "+maxno +" !");

	}
}
// *************************** //

// **** SURVEY SPECIFIC FUNCTIONS START **********

function qEnable(qNoId){ // Makes a question active
	var qbox = document.getElementById(qNoId);
	qbox.className='qboxTransOff';
	/*if (navigator.appName.indexOf("Microsoft") != -1){
		setStyle_func(qbox,'filters.alpha.opacity', '100');
	} else {
		setStyle_func(qbox,'opacity', '1');
	}*/
	qbox.style.color='#444444';
	radObjs = qbox.getElementsByTagName('input');
	for (i=0;i<radObjs.length;i++){
		radObjs[i].disabled = false;
	}	
}

function qDisable(qNoId){ // Makes a question inactive
	var qbox = document.getElementById(qNoId);
	qbox.className='qboxTransOn';	
	qbox.style.color='#bcbcbc';
	radObjs = qbox.getElementsByTagName('input');
	for (i=0;i<radObjs.length;i++){
		radObjs[i].disabled = true;
	}	
}

function showQNA_func(qNoId){
	var q = document.getElementById(qNoId);
	if (!q){
		alert("QNA box does not exist for question: "+qNoId)
	} else {
		for(i=1;i<10;i++){
			if (q.previousSibling.className != undefined){
				if (q.previousSibling.className == "qna"){
					setStyle_func(q.previousSibling	,'visibility', 'visible');
					break;
				}
			}
			q = q.previousSibling;
		}
	}
}
function hideQNA_func(qNoId){
	var q = document.getElementById(qNoId);
	if (!q){
		alert("QNA box does not exist for question: "+qNoId)
	} else {
		for(i=1;i<10;i++){
			if (q.previousSibling.className != undefined){
				if (q.previousSibling.className == "qna"){
					setStyle_func(q.previousSibling	,'visibility', 'hidden');
					break;
				}
			}
			q = q.previousSibling;
		}
	}
}


function showloader_func(){
	var windowHeight = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight;
	scroll(0, 0);
	loaderObj = document.getElementById('loader');
	//loaderObj.innerHTML = "<img src='images/aniloader.gif' alt='Loading...' /> Loading..."
	loaderObj.style.visibility='visible';
	loaderObj.style.position=(detectIsIE6())?'absolute':'fixed';
	loaderObj.style.width=document.body.clientWidth+'px';
	loaderObj.style.height=windowHeight+'px';

	loaderObj = document.getElementById('loaderbg');
	loaderObj.style.width=document.body.clientWidth+'px';
	loaderObj.style.height=windowHeight+'px';
	loaderObj.style.visibility='visible';
	loaderObj.style.position=(detectIsIE6())?'absolute':'fixed';
	//writehtml_func();
}

var sbmitAttempts = 0;
function showErrors_func(){
	if (sbmitAttempts > 1){
		showloader_func();
		document.forms[0].forcederr.value=1;
		window.setTimeout("document.forms[0].submit()", 700);	
	} else {
		if (document.getElementById('errorsTxt')){
			document.getElementById('errorsTxt').innerHTML = "<img src=\"images/icon_no.gif\" alt=\"Error\" title=\"Error\" /> Error: Usted debe contestar todas las preguntas en rojo.."
			document.getElementById('errorsTxt').style.position='relative';
			document.getElementById('errorsTxt').style.backgroundColor='#ffffff';
			document.getElementById('errorsTxt').style.padding='5px';
			scroll(0, 0);
			sbmitAttempts++;
		} else {
			alert("errorsTxt object does not exist on the page!");
		}
	}
}
function showQErr_func(Qno, hasError){ // Qno must include zero prefix if less than 10
	var qObj = document.getElementById('qbox'+Qno);
	if (!qObj){
		alert("Question number:"+Qno+" does not exist!");
	} else {
		if (hasError == 1){
			submitErrors=1;
			setStyle_func(qObj,'color', 'red');
			errArry.push(Qno);
		} else {
			setStyle_func(qObj,'color', '#00512f');
		}
	}
}

function showDDownList_func(txtobjID, Arr){
	var txtObj = document.getElementById(txtobjID);	
	var ddownObj = document.getElementById(txtobjID+"dropdown");
	//var ddownObj = txtObj.nextSibling;	
	var nomatch = ""; //"<a>No Matches found! Please re-type company name</a>";	
	var txt = "";
	if (ddownObj && txtObj){
		ddownObj.innerHTML = "";
		if (txtObj.value.length > 0){
			ddownObj.style.visibility="visible";
			//ddownObj.style.position="relative";
			arrLen = Arr.length;
			for (i=0;i<arrLen;i++){
				if (Arr[i].toLowerCase().indexOf(txtObj.value.toLowerCase()) != -1){					
					txt += "<a href=\"javascript:hitDDownList_func('"+replaceTxt_func(Arr[i],"'","\\'")+"','"+txtobjID+"')\">"+replaceTxt_func(Arr[i],txtObj.value,"<b>"+txtObj.value+"</b>")+"</a>";
				}
			}
			ddownObj.innerHTML = (txt == "")?nomatch:txt;
		}
	}
	if (txt == ""){	
		ddownObj.innerHTML = "";
		ddownObj.style.visibility="hidden";
	}
}

function hitDDownList_func(txt, txtobjID){
	var txtObj = document.getElementById(txtobjID);	
	var ddownObj = document.getElementById(txtobjID+"dropdown");
	if (ddownObj){
		ddownObj.style.visibility="hidden";
	}	
	if (txtObj){
		txtObj.value = txt;		
	}
}

// **** SURVEY SPECIFIC FUNCTIONS END **********

// **** SURVEY DEBUG FUNCTION ******************
function debugShowQVals(){
	var newSpan;
	var frm = document.forms[0];
	var frmLen = frm.length;
	for(i=0;i<frmLen;i++){
		if (frm.elements[i].type != "hidden" && frm.elements[i].type != "text" && frm.elements[i].type != "textarea" && frm.elements[i].type != "button" && frm.elements[i].type.indexOf("select") == -1){
			newFont = document.createElement('font');
			newFont.setAttribute('color','red');
			newFont.appendChild(document.createTextNode(" ("+frm.elements[i].value+")"))
			
			newSpan = document.createElement('strong');
			newSpan.setAttribute('class','debug');
			newSpan.setAttribute('title',frm.elements[i].name);
			//newSpan.appendChild(document.createTextNode(" ("+frm.elements[i].value+")"))
			newSpan.appendChild(newFont);
			frm.elements[i].parentNode.appendChild(newSpan);
			if (frm.elements[i].value == ""){
				alert(frm.elements[i].type);
			}
		} else if (frm.elements[i].type == "text" || frm.elements[i].type == "textarea"){
			frm.elements[i].value = frm.elements[i].name
			frm.elements[i].style.color='red';
		}
	}
}
