﻿//Globals

var isdebug=false; 
var cookieCheck=true;
var __GFPVERSION = "1.0.15";
var renderFormat = false;
var renderClass = ""; 
var radioClass = ""; 
var textValue = "" ; 
var useDescriptor; 
var imgUrl = "";

// JS Survey Master Controller system

//
//public methods
//

function SurveyInit()
{
   var errMsg =""; 
   try
   {        
        if ( __GFPVERSION != getHiddenValue("gfpVer") )
             errMsg += '\nVersion error detected!\n\nExpected: ' + __GFPVERSION + "\nGot: " + getHiddenValue("gfpVer");
            
        if( getHiddenValue("gfpQuestCount") == -1 )
            errMsg += '\nPlease enter the gfpQuestionCount Value!';
         
        if( getHiddenValue("gfpNextPage") == -1 )
            errMsg += '\nPlease enter the gfpNextPage Value!';
        
        if( getHiddenValue("gfpErrorPage") == -1 )
            errMsg += '\nPlease enter the gfpErrorPage Value!';
        
        if( getHiddenValue("gfpServiceCategory") == -1)
            errMsg += '\nPlease enter gfpServiceCategory Value!';
            
        if( getHiddenValue("gfpFormName") == -1)
            errMsg += '\nPlease enter gfpFormName Value';
            
           if(errMsg != "")
                alert('Error detected!\n' + errMsg);
               
            
        if( cookieCheck && (!validateCookie()) )         
            window.location="360error.html?msg="+escape("This service requires the use of both cookies and Javascript to properly operate. Please ensure that you have both enabled to submit a survey");
   } 
   catch(e)
   {
        if(isdebug)
            alert(e.description);
   }
}

function RenderQuestion( questionId, helpMessageId )
{
   var P_START_QUESTION = '<p>';
   var P_END_QUESTION = '</p>';
   var questionText = "";
   var fullQuestion="";
   var serviceCategoryId=0;
   try
   {
        serviceCategoryId = getHiddenValue("gfpServiceCategory");
        
        if(questionId > 0 && typeof(Questions) != 'undefined')
        {
            questionText = Questions[questionId][0];
            if(isdebug) alert(questionText);
            
            if ( helpMessageId != -1 )
                fullQuestion = utilityFormat('{0}&nbsp;<span class="helptag" onmouseover="doTooltip(event, messages[{1}])" onmouseout="hideTip()">[Help]</span>', questionText, helpMessageId );
            else 
                fullQuestion = utilityFormat('{0}&nbsp;', questionText );
                
            if (renderFormat )
                document.write( P_START_QUESTION );
                
            document.write( fullQuestion );         
            
            if( renderFormat )
                document.write( P_END_QUESTION );
        }
   }
   catch(e)
   {
        if(isdebug)
            alert(e.description);
   } 
}
//className is, in effect not used due to newer implementation. 2006.11.07.gr
function RenderAnswerForQuestion( questionId, className )
{
  var DIV_TAG_START = '<div class="' + className + '">';
  var DIV_TAG_END = '</div>'; 
  var idx = 0;
  var answerText = ""; 
   try
   {
        if(isdebug)
            alert('Rendering answer ' + questionId);
        
        if( questionId > 0 && typeof(Answers) != 'undefined' )
        {
            if( renderFormat )
                document.write( DIV_TAG_START );
                
         for ( idx in Answers )
            {
               if ( Answers[idx][1] == questionId ) 
               {
                    if( Answers[idx][0] == 'Other' && Answers[idx][4] == 'Y' )
                    {
                        if( renderClass == '' && radioClass == '' ) {
                            answerText = utilityFormat( '<input id="rbAnswer_{0}" type="radio"  name="rbAnswer_{1}" value="{2}" class="txt{3}" /><label for="rbAnswer_{4}" >{5}:</label><br />', idx, questionId, Answers[idx][2], Answers[idx][3], idx, Answers[idx][0] );
                            answerText += utilityFormat( '<input name="txtOther_{0}" type="text" id="txtOther_{1}" class="txt{2}" /><br />', idx, idx, Answers[idx][3]);
                        }
                        else {
                            answerText = utilityFormat( '<input id="rbAnswer_{0}" type="radio"  name="rbAnswer_{1}" value="{2}" class="{3}" /><label for="rbAnswer_{4}" >{5}:</label><br />', idx, questionId, Answers[idx][2], radioClass, idx, Answers[idx][0] );
                            answerText += utilityFormat( '<input name="txtOther_{0}" type="text" id="txtOther_{1}" class="{2}"  /><br />', idx, idx, renderClass);
                        }
                        
                    }
                    else if( Answers[idx][0] == 'Other' && Answers[idx][4] == 'N' && renderClass=='' ) 
                        answerText = utilityFormat( '<input name="txt{0}" type="text" id="txt{1}" class="txt{2}" style="" value="{3}" />&nbsp;{4}&nbsp;<br />', Answers[idx][3], Answers[idx][3], Answers[idx][3], textValue, (useDescriptor==true ? Answers[idx][3]:  "" ));
        		    else if ( Answers[idx][0] == 'Other' && Answers[idx][4] == 'N' && renderClass != '' ) 
                        answerText = utilityFormat( '<input name="txt{0}" type="text" id="txt{1}" class="{2}" style="" value="{3}" />&nbsp;{4}&nbsp;<br />', Answers[idx][3], Answers[idx][3], renderClass, textValue, (useDescriptor==true ? Answers[idx][3]:  "" ));
                    else 
                       answerText = utilityFormat('<input id="rbAnswer_{0}" type="radio"  name="rbAnswer_{1}" value="{2}" class="{3}" /><label for="rbAnswer_{4}" >{5}</label><br />', idx, questionId, Answers[idx][2], radioClass, idx, Answers[idx][0]);
                    
                    document.write(answerText);
               } 
            }
            
            if( renderFormat )            
                document.write( DIV_TAG_END );
        }
   } 
   catch(e)
   {
        if(isdebug) 
            alert(e.description);
   }
}

function RenderError()
{
   try
   {
        document.write( unescape( document.URL.split('=')[1] ) );
   }
   catch(e)
   {   
        document.write('Unknown error.');     
   } 
}

//
//Private methods
//
function utilityFormat( str )
{
    var arg;
    try
   {
        for(arg=1; arg < arguments.length; arg++)
            str = str.replace('{' + (arg-1) + '}', arguments[arg]); 
        
        if(isdebug)
            alert('utilityFormat: ' + str);
   }
   catch(e)
   {
        if(isdebug)
            alert(e.description);
   } 
   
   return str;
}

function getHiddenValue( keyName )
{
   var value="";
   try
   {
        var obForm = document.forms[0];
        if( obForm )
            value=obForm.elements[keyName].value;
        else
            value=-1;
   } 
   catch(e)
   {
        if(isdebug)
            alert('error: ' + e.description);
        
        value=-1;
   }
   
   return value;
}

function validateSurvey(obForm)
{
   var ob;
   var element;
   var errorMsg="";
   var idx=-1;
   var chkCount=0;
   var questionCount=0;
   var valQuestionCount=0;
   var retValue=false;
   var zipFlag=false;
   
   try
   {
//        if(isdebug)
           //return true; 
        questionCount = getHiddenValue("gfpQuestCount"); 
        valQuestionCount= getHiddenValue("gfpValidateQuestionsCount");
        
     //   if(isdebug)
            //alert('found questions: ' + questionCount);
            
        if(obForm)           
        {
            for(var i=0;i<obForm.length;i++)
            {
               var element = obForm[i];
               var eName = obForm[i].name;
               var eValue = obForm[i].value;
               var eType = obForm[i].type;
               
               switch( eType )
               {
                    case 'radio': if( element.checked ) { chkCount++; } break;
                    case 'text': if( validateZip( element ) ) { zipFlag=true; } break;
               }
            }
            
        }
            
            //alert( chkCount + ' = ' + valQuestionCount ); 
            //alert(zipFlag);
            retValue = ((valQuestionCount == chkCount) ? true : false);
            
            if(!retValue)
                alert('Please check your responses!');
   } 
   catch(e)
   {
       // if(isdebug)
            alert(e.description);
   }
   
    return retValue;
}

function validateZip( val )
{
   try
   {
       // alert(val.name + ' ' + val.value.length );
        if( val.name ==  "txtZipCode" && val.value.length >= 5 )
            return true;
   } 
   catch(e)
   {
        //alert(e.description);
   }
    
}

function validateCookie()
{
	return navigator.cookieEnabled;
}

function validateForm(obForm)
{
   var val=false;
   var charcount=0;
   var fieldcount=0;
   var stateIndex;
   var errorMsg = ""; 
   var lastErrorIdx = 0; 
   var ix=0;
   var fieldIndexList = new Array(); 
   var errorFieldColor = "#ffff99";
   var normalFieldColor = "#ffffff";
   try
   {
       fieldcount=getHiddenValue("gfpFieldCount");
       if(obForm)
       {
            for(var j=0; j< obForm.length; j++)
            {
                switch(obForm[j].type)
                {
                    case 'text': document.getElementById(obForm[j].name).style.backgroundColor = normalFieldColor; if( obForm[j].value.length > 0 && obForm[j].name != "ext" ) charcount++; else { if (obForm[j].name != "ext" )  { errorMsg += 'Please fill in the ' + obForm[j].name + ' field. \n'; lastErrorIdx = j; fieldIndexList[j] = j; }} 
                                         break;
                    case 'select-one':  document.getElementById(obForm[j].name).style.backgroundColor = normalFieldColor; stateIndex=obForm[j].selectedIndex;  if ((stateIndex == -1 || stateIndex == 0 )) {errorMsg += "Please select a state.\n"; document.getElementById(obForm[j].name).style.backgroundColor = errorFieldColor; }
                                            break; 
                }
            }
       }
         
      if(charcount != fieldcount || (stateIndex == -1 || stateIndex == 0 ))
      {
        alert( 'Please check your input! \n\n' + errorMsg );
        obForm[lastErrorIdx].focus(); 
        for ( ix in fieldIndexList )                 
            document.getElementById(obForm[ix].name).style.backgroundColor = errorFieldColor;
       }
       else
        val=true; 
   }
   catch(e)
   {
        //alert(e.description);
   } 
   
    return val;
}

// This will load the init three seconds after page load. 
setTimeout("SurveyInit()", 3000);
//
