
var engine_test_process = "webcpms/priv_test.php";


var ajaxSelectionTestPostEMails,
    ajaxSeminarEventOccasion,
    ajaxSaveTestResult;
var seminar_events_occasions = null;

var TimerTest;

function checkTestAnswer(name, question, choice) {
   var item = document.getElementById(name + "_" + question + "_" + choice);
   var x = getElementLeft(item);
   var y = getElementTop(item);
   var host = document.getElementById(name + "Host");

   var img = document.getElementById(name + "Answer_" + question);

   if (img == null) {
      img = document.createElement("img");
      img.setAttribute("id", name + "Answer_" + question);
      img.setAttribute("src", "webcpms/icons/check_circle.gif");
      host.parentNode.insertBefore(img, host.nextSibling);
   }

   img.style.position = "absolute";
   img.style.left = (x - 4) + "px";
   img.style.top = (y) + "px";
}




function setTestAnswer(name, question, choice) {

   checkTestAnswer(name, question, choice);

   var i;
   var idx = -1;
   var answer_list = getCookie(name + "Answers");

   var questions = new Array();
   var answers = new Array();

   if (answer_list.length > 0) {
      var answers_p = answer_list.split("|");
      for (i = 0; i < answers_p.length; i++) {
         var qa = answers_p[i].split("=");
         if (qa[0] * 1 == question) idx = i;
         questions[i] = qa[0] * 1;
         answers[i] = qa[1] * 1;
      }
   }

   if (idx == -1) idx = questions.length;
   questions[idx] = question;
   answers[idx] = choice;

   var qa_a = new Array();
   for (i = 0; i < questions.length; i++) {
      qa_a[qa_a.length] = questions[i] + "=" + answers[i];
   }

   setCookie(name + "Answers", qa_a.join("|"), 3600);

}



function setCheckedAnswers(name) {

   var i;
   var idx = -1;
   var answer_list = getCookie(name + "Answers");

   if (answer_list.length > 0) {
      var answers_p = answer_list.split("|");
      for (i = 0; i < answers_p.length; i++) {
         var qa = answers_p[i].split("=");
         if (document.getElementById(name + "_" + qa[0] + "_" + qa[1])) checkTestAnswer(name, qa[0], qa[1]);
      }
   }
}



function t_updateTestTimer(prefix) {
   var t = getCookie(prefix + "Started");
   var started = new Date();
   started.setTime(t);
   var start = started.getTime();
   var cur = new Date().getTime();
   var rs = 3600 - Math.round((cur - started) / 1000);
   if (rs <= 300) {
      document.getElementById(prefix + 'RemainingTime').style.color = "red";
   } else if (rs <= 0) {
      rs = 0;
   }
   document.getElementById(prefix + 'RemainingTime').innerHTML = makeTwoDigits(Math.floor(rs / 60)) + ":" + makeTwoDigits(rs % 60);
}

function updateTestTimer(prefix) {
   t_updateTestTimer(prefix);
   TimerTest = window.setInterval("t_updateTestTimer('" + prefix + "');", 1000);
}



var flow_chart = new Array(
   /*  1 */ new Array(2, 7),
   /*  2 */ new Array(11, 3),
   /*  3 */ new Array(5, 4, 12, 12, 12),
   /*  4 */ new Array(11, 12),
   /*  5 */ new Array(6, 6, 13, 13, 6),
   /*  6 */ new Array(12, 12, 12, 12),
   /*  7 */ new Array(8, 8, 14, 13, 13),
   /*  8 */ new Array(9, 9, 9, 9, 14),
   /*  9 */ new Array(10, 10, 10, 10),
   /* 10 */ new Array(14, 14, 13, 13)
/*
   new Array(1, 1, 2), new Array(1, 2, 7),
   new Array(2, 1, 11), new Array(2, 2, 3),
   new Array(3, 1, 5), new Array(3, 2, 4), new Array(3, 3, 4), new Array(3, 4, 4), new Array(3, 5, 4),
   new Array(4, 1, 11), new Array(4, 2, 12),
   new Array(5, 1, 6), new Array(5, 2, 6), new Array(5, 3, 13), new Array(5, 4, 13), new Array(5, 5, 6),
   new Array(6, 1, 12), new Array(6, 2, 12), new Array(6, 3, 12), new Array(6, 4, 12),
   new Array(7, 1, 8), new Array(7, 2, 8), new Array(7, 3, 14), new Array(7, 4, 13), new Array(7, 5, 13),
   new Array(8, 1, 9), new Array(8, 2, 9), new Array(8, 3, 9), new Array(8, 4, 9), new Array(8, 5, 14),
   new Array(9, 1, 10), new Array(9, 2, 10), new Array(9, 3, 10), new Array(9, 4, 10),
   new Array(10, 1, 14), new Array(10, 2, 14), new Array(10, 3, 13), new Array(10, 4, 13)
*/
);


function nextGroup(chk_id) {

   var i, j;
   var max = 0;
   for (i = 0; i < flow_chart.length; i++) {
      for (j = 0; j < flow_chart[i].length; j++) {
         if (max < flow_chart[i][j]) max = flow_chart[i][j];
      }
   }

   var gp = chk_id.lastIndexOf("_g");
   var ap = chk_id.lastIndexOf("_a");

   var g = chk_id.substring(gp + 2, ap) * 1;
   var a = chk_id.substr(ap + 2) * 1;
   var g1 = g - 1;
   var a1 = a - 1;

   var n = -1;

   if (g1 < flow_chart.length) {
      if (flow_chart[g1] != null) {
         n = flow_chart[g1][a1];
         if (n == null) n = -1;
      }
   }

   if (n != -1) {
      for (i = g + 1; i <= max; i++) {
         toggle("Survey_g" + i, false);
         toggle("SelectionTestReservationForm", false);
         toggle("SelectionTestInvitationEMailForm", false);
         toggle("SelectionTestInvitationEMailResult", false);
      }
      toggle("Survey_g" + n, true);
      if (n == 11 || n == 12 || n == 14) {
         toggle("SelectionTestReservationForm", true);
         document.getElementById("ResOccasion").value = document.getElementById('SeminarEventID').value;
         loadEventsOccasions();
      } else if (n == 13) {
//         toggle("SelectionTestInvitationEMailForm", true);
      }
   }
}




function generateEMailPreview(prefix) {

   toggle(prefix + "InvitationEMailForm", false);
   toggle(prefix + "InvitationEMailResult", false);

   toggle(prefix + "ReferenceError", false);
   toggle(prefix + "FriendError", false);

   if (document.getElementById('SessionID').value.length == 0) {
      var personal = validateInputPersonal(prefix + "Reference", CHECK_FNAME | CHECK_EMAIL);
      if (personal == null) {
         toggle(prefix + "ReferenceError", true);
      }
   }


   var friends = new Array();
   var valid = new Array();
   var err = 0;
   var cnt = 0;

   var i;

   for (i = 1; i <= 3; i++) {
      if (document.getElementById(prefix + 'FriendFirstName_' + i).value.length == 0 || !validEMailAddress(document.getElementById(prefix + 'FriendEMail_' + i).value) || !(document.getElementById(prefix + 'ReferenceFriend_' + i + '_Yes').checked || document.getElementById(prefix + 'ReferenceFriend_' + i + '_No').checked)) {
         err++;
      } else {
         if (friends[cnt] == null) friends[cnt] = new Array();
         friends[cnt][0] = document.getElementById(prefix + 'FriendFirstName_' + i).value;
         friends[cnt][1] = document.getElementById(prefix + 'FriendEMail_' + i).value;
         friends[cnt][2] = document.getElementById(prefix + 'ReferenceFriend_' + i + '_Yes').checked;
         valid[valid.length] = i;
         cnt++;
      }

   }

   if (friends.length == 0) {
      toggle(prefix + "FriendError", true);
   }

   if ( (document.getElementById('SessionID').value.length == 0 && personal == null) || friends.length == 0 ) {
      return;
   }

   if (document.getElementById('SessionID').value.length == 0) {
      var pers_fname = personal[0];
      var pers_email = personal[5];
   } else {
      var pers_fname = document.getElementById(prefix + 'ReferenceFirstName').value;
      var pers_email = document.getElementById(prefix + 'ReferenceEMail').value;
   }

   toggle(prefix + "InvitationEMailForm", true);

   for (i = 0; i < friends.length; i++) {
      var header = "<table class='panel'><tr><td class='label'>From:</td><td>" + pers_fname + " &lt;" + pers_email + "&gt;</td></tr>";
      header += "<tr><td class='label'>To:</td><td>" + friends[i][0] + " &lt;" + friends[i][1] + "&gt;</td></tr>";
      header += "<tr><td class='label'>Subject:</td><td>I found this interesting seminar</td></tr></table>";
      document.getElementById(prefix + 'EMail' + i + 'Header').innerHTML = header;

      document.getElementById(prefix + 'EMail' + i + 'Set').value = valid[i];

      var create_wre  = "try { var wre_try = wre" + prefix + "EMail" + i + "; } catch (ex) {";
      create_wre += "wre" + prefix + "EMail" + i + " = new WebCPMSRichEdit('" + prefix + "EMail" + i + "EditorHost');";
      create_wre += "wre" + prefix + "EMail" + i + ".setSize(500, 200);";
      create_wre += "wre" + prefix + "EMail" + i + ".setStyle(WRES_NONE);";
      create_wre += "wre" + prefix + "EMail" + i + ".start('" + prefix + "EMail" + i + "EditorHost');";
      create_wre += "}";

      eval(create_wre);

      var lp = new Array();
      lp[0] = valid[i];
      loadStaticPage(friends[i][2] ? "email_businessowner" : "email_salesperson", prefix + "EMail" + i, prefix + "LoadEMailIndicator", "SelectionTest", lp);
   }

   var btntxt = "Send E-Mail";
   if (friends.length > 1) btntxt += "s";
   document.getElementById(prefix + 'PostEMailButton').value = btntxt;

}





function formatSeminarInvitation(pages_arr, loadparam_arr, prefix) {
   var i;

   for (i = 0; i < pages_arr.length; i++) {
      pages_arr[i] = evaluateVariables(pages_arr[i], "SelectionTest", loadparam_arr);
   }
}



function postInvitationEMails(prefix, callback) {
   var i;

   var cmd = "cmd=cmdPostInvitationEMails&sid=" + document.getElementById('SessionID').value + "&loc_id="/* + document.getElementById(prefix + 'SeminarLocation').value*/ + "&prefix=" + prefix + (callback == null ? "" : "&callback=" + callback);

   if (document.getElementById('SessionID').value.length == 0) {

      var name = "";
      if (document.getElementById(prefix + 'ReferenceFirstName').value.length > 0 && document.getElementById(prefix + 'ReferenceLastName').value.length > 0) {
         name = document.getElementById(prefix + 'ReferenceFirstName').value + " " + document.getElementById(prefix + 'ReferenceLastName').value;
      } else if (document.getElementById(prefix + 'ReferenceFirstName').value.length > 0) {
         name = document.getElementById(prefix + 'ReferenceFirstName').value;
      } else {
         name = document.getElementById(prefix + 'ReferenceLastName').value;
      }
      cmd += "&fname=" + document.getElementById(prefix + 'ReferenceFirstName').value;
      cmd += "&lname=" + document.getElementById(prefix + 'ReferenceLastName').value;
      cmd += "&phone_area=" + document.getElementById(prefix + 'ReferencePhoneArea').value;
      cmd += "&phone_first=" + document.getElementById(prefix + 'ReferencePhoneFirst').value;
      cmd += "&phone_second=" + document.getElementById(prefix + 'ReferencePhoneSecond').value;
   }
   cmd += "&email=" + document.getElementById(prefix + 'ReferenceEMail').value;
   cmd += "&from_name=" + document.getElementById(prefix + 'ReferenceFirstName').value + "&from_email=" + document.getElementById(prefix + 'ReferenceEMail').value + "&user_id=" + document.getElementById(prefix + 'ReferenceID').value;

   cmd += "&captcha=" + document.getElementById(prefix + 'ReferenceCaptchaCode').value;

   var cnt = 0;
   for (i = 0; i < 3; i++) {
      var set = document.getElementById(prefix + 'EMail' + i + 'Set').value;
      if (set > 0) {

         cmd += "&to_name_" + cnt + "=" + encodeURIComponent(document.getElementById(prefix + 'FriendFirstName_' + set).value);
         cmd += "&to_email_" + cnt + "=" + encodeURIComponent(document.getElementById(prefix + 'FriendEMail_' + set).value);

         var e = eval("wre" + prefix + "EMail" + i);
         if (e) {
            var txt = e.getText();
            cmd += "&msg_" + cnt + "=" + encodeURIComponent(txt);
         }

         cnt++;
      }
   }
   startIndicator(prefix + "PostEMailIndicator", "Sending message" + (cnt > 1 ? "s" : ""));
   load(ajaxSelectionTestPostEMails = GetXmlHttpObject(), engine_test_process, cmd, invitationEMailsPosted);
}



function invitationEMailsPosted() {
   if (ajaxSelectionTestPostEMails.readyState == 4 || ajaxSelectionTestPostEMails.readyState == "complete") {
      var posted = "";
      var new_user = getProperty("New", ajaxSelectionTestPostEMails.responseText) == "true" ? true : false;
      var prefix = getProperty("Prefix", ajaxSelectionTestPostEMails.responseText);
      toggle(prefix + "InvitationEMailForm", false);
      toggle(prefix + "InvitationEMailResult", true);
      toggle(prefix + "InvitationEMailResult", true);
      var host = document.getElementById(prefix + 'InvitationEMailResult');
      var email = getProperty("EMail", ajaxSelectionTestPostEMails.responseText);
      if (!new_user) {
         var err = getProperty("Err", ajaxSelectionTestPostEMails.responseText);
         if (err == "exists") {
            posted += "<h2>Invitation E-Mail Error</h2>\r\n";
            posted += "<p class='text'>An error has occured: a user already exists with the specified e-mail address (" + email + "). Please specify another e-mail address or if this e-mail address belongs to you, please log in with your e-mail and password!</p>";
         } else if (err == "captcha") {
            posted += "<h2>Authentication Error</h2>\r\n";
            posted += "<p class='text'>An error has occured: the letter combination and the entered code do not match. Please read the image carefully and enter the code into the check field.</p>";
         }
         host.innerHTML = posted;
         stopIndicator(prefix + "PostEMailIndicator");
         reloadCaptcha(prefix + "Reference");
         return;
      }
      var id = getProperty("ID", ajaxSelectionTestPostEMails.responseText);
      var num = getProperty("Num", ajaxSelectionTestPostEMails.responseText);
      var callback = getProperty("Callback", ajaxSelectionTestPostEMails.responseText);
      posted += "<h2>Invitation E-Mail Posted</h2>\r\n";
      posted += "<p class='text'>" + (num > 1 ? "I" : "An i") + "nvitation e-mail" + (num > 1 ? "s" : "") + " " + (num > 1 ? "have" : "has") + " been posted to your friend" + (num > 1 ? "s" : "") + ".";
      if (new_user) posted += " An e-mail has also been posted to your address (" + email + ") with important information on your new account. Please check your mailbox right now!";
      posted += "</p>\r\n";
      host.innerHTML = posted;
      if (callback != "") {
         eval(callback + "(" + id + ", " + new_user + ", '" + prefix + "', '" + email + "', " + num + ");");
      }
      stopIndicator(prefix + "PostEMailIndicator");
   }
}





function saveSeminarEventSettings() {
   var settings = new Array();

   var evts = getEventsOccasionsToDisplay("SeminarEvent");

   var loc_id = document.getElementById('SeminarEvent_LocationSelector').value;
   var evt_id = evts[0];

   document.getElementById('SeminarEventLocation').value = loc_id;
   document.getElementById('SeminarEventID').value = evt_id;

   settings[0] = "event_seminar_location=" + loc_id;
   settings[1] = "event_seminar_id=" + evt_id;

   saveSystemSettings(settings, false, "SeminarEventIndicator");
}




function locationChangedSeminarEvent() {
   var loc_id = document.getElementById('SeminarEvent_LocationSelector').value;
   var cmd = "cmd=cmdLoadEventsOccasions" +
            "&sid=" + document.getElementById('SessionID').value +
            "&loc_id=" + loc_id + "&filter=accept_res";
   startIndicator("SeminarEventIndicator");
   load(ajaxSeminarEventOccasion = GetXmlHttpObject(), engine_event_process, cmd, updateSeminarEvent);
}


function updateSeminarEvent() {
   if (ajaxSeminarEventOccasion.readyState == 4 || ajaxSeminarEventOccasion.readyState == "complete") {
      stopIndicator("SeminarEventIndicator");

      var seminarevent_id = document.getElementById('SeminarEventID').value;

      seminar_events_occasions = new Array();
      parseEvents(ajaxSeminarEventOccasion.responseText, seminar_events_occasions);
      printOccasionFilter('SeminarEvent', seminar_events_occasions, true, new Array(seminarevent_id), null, null);
   }
}


function saminarReservationSaved() {
   if (ajaxSaveReservation.readyState == 4 || ajaxSaveReservation.readyState == "complete") {
      reservationSaved();
      saveTestResult(document.getElementById('ResUserID').value);
      setButtonVisualStuff();
   }
}



function saminarReservationCancelled() {
   if (ajaxSaveReservation.readyState == 4 || ajaxSaveReservation.readyState == "complete") {
      stopIndicator("ResIndicator");
   }
}



function saveTestResult(user_id, new_user, prefix, email, num) {
   var cmd = "cmd=cmdSaveTestResults&sid=" + document.getElementById('SessionID').value +
            "&test_id=1" +
            "&user_id=" + user_id;
   startIndicator("TestResultIndicator", "Saving test results");
   load(ajaxSaveTestResult = GetXmlHttpObject(), engine_test_process, cmd, testResultSaved);
}


function testResultSaved() {
   if (ajaxSaveTestResult.readyState == 4 || ajaxSaveTestResult.readyState == "complete") {
      stopIndicator("TestResultIndicator");
   }
}


