/*******************************************************************************
 * MeetingStarter Meeting Creation Javascript Code Jon Paris
 * (jonparis@surveystarter.com), July 2007
 ******************************************************************************/

// <![CDATA[

var DEBUG = 0;
var HELPHEADER = "MeetingStarter Help:\n\n";
var mainTabber;
var idarray = new Array();

/*******************************************************************************
 * General Page Layout Code
 ******************************************************************************/


function changetype(ID) {


}

/*
 * initPage Called when the page is loaded
 */
function initPageSurvey()
{
    // only load map when you switch to page 2
    var tabberOptions = {
        'onTabDisplay':function(argsObj)
        {
        }
    };
    mainTabber = tabberAutomatic(tabberOptions);
	stripePageCommon();
}

/*******************************************************************************
 * Question Page
 ******************************************************************************/


function showExample(exampleID,exampleCount){
for (i = 1; i <= exampleCount; i++) 
    if (i != exampleID) {
        hideDiv('example' + i);
    }
    showDiv('example' + exampleID);
}

var aindex=0;
var number=1;
var textdecription = "Text";
var textareadecription = "Paragraph Text";
var selectdecription = "List of Choices";
var radiodecription = "Multiple Choice";
var titledescription = "Section Title";
var stardecription = "5 Star Rating";
var checkdescription = "Check Boxes";
var datedescription = "Date";
var horcheckdescription = "Checkboxes Horizontal";
var emaildescription = "Email";
var horradiodecription = "Multiple Choice Horizontal";
var quotalistdescription = "List with Quotas";

/* gives the type description based on the type */
function typeDescription(type) {
	var typeArray = [];
		typeArray[0] = titledescription;
		typeArray[1] = textdecription;
    	typeArray[2] =  textareadecription;
    	typeArray[3] =  selectdecription;
    	typeArray[4] =  radiodecription;
    	typeArray[5] =  stardecription;
    	typeArray[6] =  checkdescription;
    	typeArray[7] =  datedescription;
    	typeArray[8] =  horcheckdescription;
    	typeArray[9] =  emaildescription; 
    	typeArray[10] =  horradiodecription; 
    	typeArray[11] =  quotalistdescription;
    	
    	return typeArray[type] || "";
}


/*
 * addQuestion (isKey: 1 if keyboard initiated survey) Called when user adds an
 * entry to the question page
 */
function addQuestionButton(id)
{
    var randomnumber=Math.floor(Math.random()*10001);
    var setupID=randomnumber+"n"+number;
    if(id!="" && id!=undefined){
        setupID = id;
    }
    newQuestion = setupQuestion(number,"NEW QUESTION","", 1,setupID);
    // reset table globals found in listingfucntions.js
    T=$('table');
    Tb=T.tBodies[0];
    Tr=Tb.rows;
    Trl=Tr.length-1; 
    stop=0;
    stopTH=0; 
    stopK=''; 
    cur=''; 
    trMAP(0,'',1); 
    thMouse($T('th','head'),Array(0,6));
}

function updateQuestions(ID) {
    if(document.getElementById("type" + ID)) {
        var type = document.getElementById("type" + ID).value;
        var answerDiv = document.getElementById("answersdiv" + ID);
        var reqCheck = document.getElementById("required" + ID);
        if (type == 3 || type == 4 || type == 6 || type == 8 || type == 7 || type == 11) {
            answerDiv.style.display = "block";
        }
        else {
            answerDiv.style.display = "none";
        }
        if (type == 1 || type == 2 || type == 3 || type == 9 || type==10) {
                reqCheck.disabled = false;
            }
            else {
                reqCheck.checked=false;
                reqCheck.disabled = true;
            }
        }
}

/*
 * setupQuestion (ordernumber, name, answers, type, permQuestionID) General
 * Purpose Method to add a question to the array and table returns the question
 * object
 */

function setupQuestion(ordernumber, name, answers, type, permQuestionID,required)
{
    
    idarray[aindex]=permQuestionID;
    
    if (document.mainform.questionIDlist.value==""){
        document.mainform.questionIDlist.value=",";
    }

        /* create the table item */
    var tbody = getObj("table").getElementsByTagName("TBODY")[0];
    /* clear previously highlighted rows */
    for(var i=0;i<tbody.childNodes.length;i++)
        if(tbody.childNodes[i].className == "highlightRow")
            tbody.childNodes[i].className = "";
    
    var row = document.createElement("TR");
    row.id = 'question' + permQuestionID;
    row.name = 'question' + permQuestionID;
    row.classes = 'question' + permQuestionID;
    row.title="You can change the question order by dragging a row up or down.";
    var idtemp = row.id;
    
    var td = document.createElement("TD");
    td.style.verticalAlign="top";
    td.innerHTML=number;
    td.id="td"+permQuestionID;
    row.appendChild(td);
    
    td = document.createElement("TD");
    td.style.verticalAlign="top";
    
    name=stripslashes(name).replace(/<br\/>/g,"\n").replace(/\n\n/g,"\n");


    var namebox = document.createElement('textarea');
    namebox.name= 'name'+permQuestionID;
    namebox.id= 'name'+permQuestionID;
    namebox.style.width = '100%';
    namebox.rows = '3';
    namebox.value = name;
    if(name == "NEW QUESTION"){
        namebox.onclick = function(){clearDef(this);};
    }
    
    /* this is the end of the edit */
    td.appendChild(namebox);
    row.appendChild(td);

    td = document.createElement("TD");
    td.style.verticalAlign="top";   
    var selectBox = document.createElement('select');
        selectBox.name= 'type'+permQuestionID;
        selectBox.id= 'type'+permQuestionID;
        
        selectBox.onchange = function(){
            updateQuestions(permQuestionID);
        };
        
        var optionItem = document.createElement('option');
        
        //switch to 12 once this is ready to start handling quota questions
        for(var typeNum = 0; typeNum < 12; typeNum += 1){
        	optionItem = document.createElement('option');
        	optionItem.appendChild(document.createTextNode(typeDescription(typeNum)));
        	optionItem.text=typeDescription(typeNum);
        	optionItem.value = typeNum;
        	selectBox.appendChild(optionItem);
        }
  
        selectBox.selectedIndex = type;
        td.appendChild(selectBox);
        
        var orderbox = document.createElement('input');
        orderbox.type = 'hidden';
        orderbox.name = "ordernum"+permQuestionID;
        orderbox.id = "ordernum"+permQuestionID;
        orderbox.value = number;
        td.appendChild(orderbox);
        
        var permID = document.createElement('input');
        permID.type = 'hidden';
        permID.name = "questionID"+permQuestionID;
        permID.id = "questionID"+permQuestionID;
        permID.value = permQuestionID;
        td.appendChild(permID);
    
    answers=stripslashes(answers).replace(/<br\/>/g,"\n").replace(/\n\n/g,"\n");
    style='display:none;';
    var answerSpan = document.createElement('span');
    answerSpan.id = "answersdiv"+permQuestionID; 
    if (type == 3 || type == 4 || type == 6 || type == 8 || type == 7  || type == 11) {
        answerSpan.style.display = "block";
    }
    else {
        answerSpan.style.display = "none";
    }
    var optionsDesc = document.createElement('span');
    optionsDesc.innerHTML = "<br/>possible answers (one per line)<br/>";
    answerSpan.appendChild(optionsDesc);
    
    var answerBox = document.createElement('textarea');
    answerBox.name= 'answers'+permQuestionID;
    answerBox.id= 'answers'+permQuestionID;
    answerBox.classes = 'discrete';
    answerBox.style.width = '100%';
    answerBox.rows = '3';
    answerBox.value = answers;
    
    answerSpan.appendChild(answerBox);             
    td.appendChild(answerSpan);        
    row.appendChild(td);

    row.appendChild(td);
    
    td = document.createElement("TD");
    td.align = "center";
    var reqCheck = document.createElement('input');
    reqCheck.type = "checkbox";
    reqCheck.id = 'required'+permQuestionID;
    reqCheck.name = 'required'+permQuestionID;
    reqCheck.value = '1';
    if(required){
    reqCheck.setAttribute("checked","checked");
    }
    if (type == 1 || type == 2 || type == 3 || type == 9 || type == 10) {
        reqCheck.disabled = false;
    }
    else {
        reqCheck.checked=false;
        reqCheck.disabled = true;
    }
    td.appendChild(reqCheck);
    row.appendChild(td);

    var deletebutton = document.createElement("TD");
        var attr = document.createAttribute("onclick");
        deletebutton.setAttributeNode(attr);
            var onChangeHandler = new Function(deletebutton.onclick);
            if (deletebutton.addEventListener) {
                deletebutton.addEventListener('click', onChangeHandler, false );
            }
            else if (deletebutton.attachEvent) {
                deletebutton.attachEvent('onclick', onChangeHandler);
            }
        deletebutton.onclick = function(){removeQuestion(0,aindex);trRM(this.parentNode);}
        attr = document.createAttribute("onkeypress");
        deletebutton.setAttributeNode(attr);
            onChangeHandler = new Function(deletebutton.onkeypress);
            if (deletebutton.addEventListener) {
                deletebutton.addEventListener('keypress', onChangeHandler, false );
            }
            else if (deletebutton.attachEvent) {
                deletebutton.attachEvent('onkeypress', onChangeHandler);
            }
        deletebutton.onkeypress = function(){removeQuestion(0,aindex);trRM(this.parentNode);}
        var deleteImage = document.createElement('img');
        deleteImage.height=16;
        deleteImage.width=16;
        deleteImage.src="../common/icons/cross.png";
        
        
        selectBox.appendChild(optionItem);
        deletebutton.appendChild(deleteImage);   
    
    row.appendChild(deletebutton);
    tbody.appendChild(row);

    /* hide the <no question> entry */
    // getObj("noQuestion").style.display = 'none';

    number++; // set the order numbers and increment
    aindex++;
}


function getQuestionType()
{
for (var i = 0;i < document.mainform.questionType.length; i++)
    {
        
        if (document.mainform.questionType[i].checked){
            return document.mainform.questionType[i].value;
        }
    }
}

function newQuestionButton(id){

var xmlHttp = makeXMLHttpRequest();
var URL = "../common/addCustomQuestion.z?id=" + id;

    xmlHttp.open("GET",URL,true);
    xmlHttp.onreadystatechange = function() {
        if(xmlHttp.readyState != 4){
            return;
        }
        if(IsNumeric(xmlHttp.responseText))
        {
            addQuestionButton(xmlHttp.responseText);
        }
        else{
            return;
        }
    };
    xmlHttp.send(null);
}

/*
 * removeQuestion (isKey: 1 if keyboard initiated survey, questionID: item id)
 * Hides the answers specified and removes it from questions array
 */
function removeQuestion(isKey, aindex)
{
    /* reject keys that aren't enter */
    if(isKey == 1 && !bEnter())
        return true;
        idarray.splice(aindex,1);
        number--;
    return false;
}

var editedTd = null;



/*******************************************************************************
 * Submission
 ******************************************************************************/

function surveyActivate(){
    elem = document.getElementById('status');
    done = document.getElementById('done');
    if (elem.value == '3') {
        elem.value = '2';
        
    }
    else{
        elem.value='3';
    }
    done.value="listing.z";
    submitSurvey(0);return false;
}

function escTrim(text) {
    var str = "";
    if(text)
        str = new String(text);
    return escape(str.replace(/^\s+|\s+$/g,""));
}

function bringTogetherQuestions(){
    var testarr = new Array();
    for(i=0;i<idarray.length;i++)
    {
        testarr[i]=idarray[i];
        if(idarray[i]!="" && idarray[i]!=undefined){
            var list = document.mainform.questionIDlist;
            list.value = list.value + "," + idarray[i];
            if(document.getElementById('td'+idarray[i])){
                var rownum = document.getElementById('td'+idarray[i]).innerHTML;
                var quesorder = document.getElementById('ordernum'+idarray[i]);
                    quesorder.value = rownum;

            }
        }
    }

    for(i=0;i<testarr.length;i++){
        if(testarr[i]=="" || testarr[i]==undefined){
            testarr.splice(i,1);
        }
    }
    return testarr;
}

function submitSurvey(isKey)
{
    /* reject keys that aren't enter */
    if(isKey == 1 && !bEnter())
        return true;
		
	/* Stop submit if surveyName is blank is found */
	if (document.mainform.surveyName.value == "") {
		alert("Your survey is missing a name.");
		return false;
	}
        
    var testarr = bringTogetherQuestions();

        if(testarr.length==0){
            alert("Your survey doesn't have any questions.");
		return false;
        }
    
    updateLink(document.mainform.surveyName);
    document.mainform.action="edit-update.z";
    
    if(LETSAUTH)
        auth_module.showLogin(function() {
            document.mainform.submit();
        });
    else
        document.mainform.submit();
    return false;
}


// ]]>
