﻿//Globals

var isdebug=false; 
var __GFPVERSION = "1.5.1.0";
var renderFormat = false;
var renderClass = ""; 
var radioClass = ""; 
var textValue = "" ; 
var useDescriptor; 

// JS Survey Master Controller system

// edited by RL 2009.09.04
// removed validation functions
// removed timeout call to SurveyInit()


//
//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( document.cookie == 'undefined' || document.cookie == null || document.cookie.length == 0 )         
            alert('This service requires the use of both cookies and Javascript to properly operate. Please ensure that you have both enabled to submit a survey\n\nQuestions? Please contact us at 800-494-5949');*/
   } 
   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 = ""; 
  var currentCategoryId = 0;
   try
   {
        if(isdebug)
            alert('Rendering answer ' + questionId);
        
        currentCategoryId = getHiddenValue("gfpServiceCategory");
        if( questionId > 0 && typeof(Answers) != 'undefined' )
        {
            if( renderFormat )
                document.write( DIV_TAG_START );
                
         for ( idx in Answers )
            {
               if ( (Answers[idx][1] == questionId) && (Answers[idx][5] == currentCategoryId) ) // New node in array to maintain category of question! 
               {
                    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 {
        var msg = unescape(document.URL.split('=')[1]);
        if (msg != 'undefined')
           document.write("<br><strong>" + unescape( msg ) + "</strong>");
    }
    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;
}

