var Functions = new Object();
var SpAction  = new Object();
var Survey    = new Object();
var Content   = new Object();
var Media     = new Object();
var CFG       = new Object();

SpAction.loginStatus;
//=====================================================//
SpAction.getLoginStatus = function(handlerFunction){

   var url = "index.php?_spAction=loginStatusAjax" + "&ajaxRequest=1"  + "&showHTML=0";

   var formContent = 'xyz=1';
   XMLHTTP.xmlHttpObj = XMLHTTP.getXMLHTTPObject(function () {SpAction.getLoginStatusHandler(handlerFunction);});
   XMLHTTP.xmlHttpObj.open("POST", url, true);
   XMLHTTP.xmlHttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
   XMLHTTP.xmlHttpObj.send(formContent);
}

//=====================================================//
SpAction.getLoginStatusHandler = function(handlerFunction){

   if (XMLHTTP.xmlHttpObj.readyState==4 || XMLHTTP.xmlHttpObj.readyState=="complete") {
      var responseText = UtilString.trimAll(XMLHTTP.xmlHttpObj.responseText, 1);
      
      SpAction.loginStatus = responseText;
      if (eval(handlerFunction)) {
         return eval(handlerFunction + '()');
      } 
   }
}

//**********************************************************************************//
Functions.changeProductNormalImage = function(imageName, mediaID){
  imgSrc   = "media/product/normal/" + imageName;
  linkTemp = "index.php?_room=media&_spAction=zoomImage&media_id=" + mediaID;
  linkSrc  = "javascript:UtilWindow.openWindow(linkTemp,'1010','800')";
  document.getElementById("productImage").src = imgSrc;
  document.getElementById("largeImage").href  = linkSrc;
}

//**********************************************************************************//
Functions.emailToFriend = function(url){
   var frmObj = document.forms["emailToFriend"];
   frmObj.action = "index.php?_spAction=emailToFriendForm";
   frmObj.target = "emailToFriend";

   w = 450;
   h = 400;
   windowString = "height=" + h + ",width=" + w + ",scrollbars=yes," +
                  "resizable=yes,left=" + (screen.width-w)/2 + ",top=" +
                  (screen.height-h)/2
   wind = window.open( "" , "emailToFriend", windowString);
   frmObj.submit();
}

var Poll = new Object();
//=====================================================//
Poll.submitPollAnswer = function(pollID, pollHistoryID){

   var pollResultObj = document.getElementById("pollResult");
   pollResultObj.innerHTML = "Processing... Please wait";

   var url = "index.php?_spAction=submitPollAnswer" +
             "&poll_id=" + pollID + "&_room=poll" + "&poll_history_id="+ pollHistoryID + "&showHTML=0" ;

   var formContent = 'xyz=1';

   XMLHTTP.xmlHttpObj = XMLHTTP.getXMLHTTPObject(function () {Poll.submitPollAnswerHandler();});
   XMLHTTP.xmlHttpObj.open("POST", url, true);
   XMLHTTP.xmlHttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
   XMLHTTP.xmlHttpObj.send(formContent);
}

//=====================================================//
Poll.submitPollAnswerHandler = function(){

   var pollResultDIVObj = document.getElementById("pollResult");

   if (XMLHTTP.xmlHttpObj.readyState==4 || XMLHTTP.xmlHttpObj.readyState=="complete") {

      var xmlDoc = XMLHTTP.loadXML(XMLHTTP.xmlHttpObj.responseText);
      var root = xmlDoc.documentElement;

      var errorTag   = xmlDoc.getElementsByTagName("error");
      var errorNo    = errorTag[0].childNodes[0].firstChild.nodeValue;
      var errorText  = errorTag[0].childNodes[1].firstChild.nodeValue;

      if (errorNo == 0){
         //======================================================//
         var headerTag = xmlDoc.getElementsByTagName("header");
         var totalCount   = headerTag[0].childNodes[0].firstChild.nodeValue;
         var displayTitle = headerTag[0].childNodes[1].firstChild.nodeValue;

         //======================================================//
         var rowsTag = xmlDoc.getElementsByTagName("row");
         var htmlText = "";

         for (i = 0; i < rowsTag.length; i++) {

            var rowTag = rowsTag[i];
            var recordId = rowTag.childNodes[0].firstChild.nodeValue;
            var title    = rowTag.childNodes[1].firstChild.nodeValue;
            ansCount     = rowTag.childNodes[2].firstChild.nodeValue;
            if (ansCount == 0) {
               ansCountPercentage = 0;
            }
            else {
               ansCountPercentage = (ansCount/totalCount)*100;
            }
            ansCountPercentage = ansCountPercentage.toFixed(2);

            htmlText += '<div class="answer">' + title + "</div>";
            htmlText += '<div class="percentageBarOuter"><div class="percentageBar" style="width:' + ansCountPercentage  + 'px;"></div></div>';
            htmlText += '<div class="percentageText">' + ansCountPercentage + '%</div>';
            htmlText += '<div class="seperator"></div>';
         }

         pollResultDIVObj.innerHTML = htmlText;

      } else {
         htmlText = '<hr><div class="answer">' + errorText + '</div><br>';
         pollResultDIVObj.innerHTML = htmlText;
      }

   }
}

var Comments = new Object();
//=====================================================//
Comments.submitComment = function(){

   var commentFormDIV  = document.getElementById("commentForm");

   var commentFormObj  = document.getElementById("frmComment");
   var room_name       = commentFormObj.room_name.value;
   var record_id       = commentFormObj.record_id.value;


   var url = "index.php?_spAction=submitComment" + "&_room=comment" + "&showHTML=0";

   var formContent = UtilAjax.getFormValues(commentFormObj);

   XMLHTTP.xmlHttpObj  = XMLHTTP.getXMLHTTPObject(function () {Comments.submitCommentHandler(room_name, record_id);});
   XMLHTTP.xmlHttpObj.open("POST", url, true);
   XMLHTTP.xmlHttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
   XMLHTTP.xmlHttpObj.send(formContent);
}

//=====================================================//
Comments.submitCommentHandler = function(room_name, record_id){

   var url = "index.php?_spAction=list" + "&_room=comment" +
             "&room_name="    + room_name   +
             "&record_id="    + record_id   +
             "&ajaxRequest=1" + "&showHTML=0";

   var formContent = 'xyz=1';
   XMLHTTP.xmlHttpObj = XMLHTTP.getXMLHTTPObject(function () {Comments.submitCommentHandler2();});
   XMLHTTP.xmlHttpObj.open("POST", url, true);
   XMLHTTP.xmlHttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
   XMLHTTP.xmlHttpObj.send(formContent);
}

//=====================================================//
Comments.submitCommentHandler2 = function(room_name, record_id){

   var commentFormDIV = document.getElementById("commentForm");
   commentFormDIV.style.display = "none";

   var commentFormObj = document.getElementById("frmComment");
   commentFormObj.comments.value = "";

   if (XMLHTTP.xmlHttpObj.readyState==4 || XMLHTTP.xmlHttpObj.readyState=="complete") {

      var responseText = XMLHTTP.xmlHttpObj.responseText;
      var commentListDIV = document.getElementById("commentList");
      commentListDIV.innerHTML = responseText;
   }
}

//=====================================================//
Comments.showCommentForm = function(){
   SpAction.getLoginStatus("Comments.showCommentFormHandler");
}

//=====================================================//
Comments.showCommentFormHandler = function(){
   if (SpAction.loginStatus == 1){
      var commentFormDIV = document.getElementById("commentForm");
      commentFormDIV.style.display = "block";
   } else {
      alert("Sorry. You have to be logged in to make a comment");
      return;
   }
}

//=====================================================//
Comments.hideCommentForm = function(){

   var commentFormDIV = document.getElementById("commentForm");
   commentFormDIV.style.display = "none";
}

var Media = new Object();
//=====================================================//
Media.playMediaByID = function(record_id){

   var url = "index.php?_spAction=playFile" + "&_room=audioVideo" +
             "&key_field=audio_video_id"  +
             "&record_type=attachment"    +
             "&room_name=audioVideo"      +
             "&record_id="                + record_id   +
             "&ajaxRequest=1"             + "&showHTML=0";

   var formContent = 'xyz=1';
   XMLHTTP.xmlHttpObj = XMLHTTP.getXMLHTTPObject(function () {Media.playMediaByIDHandler();});
   XMLHTTP.xmlHttpObj.open("POST", url, true);
   XMLHTTP.xmlHttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
   XMLHTTP.xmlHttpObj.send(formContent);
}

//=====================================================//
Media.playMediaByIDHandler = function(){


   if (XMLHTTP.xmlHttpObj.readyState==4 || XMLHTTP.xmlHttpObj.readyState=="complete") {
      var xmlDoc = XMLHTTP.loadXML(XMLHTTP.xmlHttpObj.responseText);
      var root = xmlDoc.documentElement;

      var headerTag   = xmlDoc.getElementsByTagName("header");
      var fileName    = headerTag[0].childNodes[0].firstChild.nodeValue;

      var utilFrame = document.getElementById("utilFrame");
      utilFrame.src = fileName;
   }
}

//=====================================================//
Media.playAlbum= function(record_id){

   var url = "index.php?_spAction=playAlbum" + "&_room=audioVideo" +
             "&record_id="                + record_id   +
             "&ajaxRequest=1"             + "&showHTML=0";
   var formContent = 'xyz=1';
   XMLHTTP.xmlHttpObj = XMLHTTP.getXMLHTTPObject(function () {Media.playAlbumHandler();});
   XMLHTTP.xmlHttpObj.open("POST", url, true);
   XMLHTTP.xmlHttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
   XMLHTTP.xmlHttpObj.send(formContent);
}

//=====================================================//
Media.playAlbumHandler = function(){

   if (XMLHTTP.xmlHttpObj.readyState==4 || XMLHTTP.xmlHttpObj.readyState=="complete") {
      var xmlDoc = XMLHTTP.loadXML(XMLHTTP.xmlHttpObj.responseText);
      var root = xmlDoc.documentElement;

      var headerTag   = xmlDoc.getElementsByTagName("header");
      var fileName    = headerTag[0].childNodes[0].firstChild.nodeValue;

      var utilFrame = document.getElementById("utilFrame");
      utilFrame.src = fileName;
   }
}

//=====================================================//
Media.saveMedia= function(roomName, recordType, keyField, record_id){

   var url = "index.php?_spAction=saveMediaAjax" +
             "&_room=media"                 +
             "&room_name="                  + roomName    +
             "&record_type="                + recordType  +
             "&key_field="                  + keyField    +
             "&record_id="                  + record_id   +
             "&ajaxRequest=1"               + "&showHTML=0";


   var formContent = 'xyz=1';
   XMLHTTP.xmlHttpObj = XMLHTTP.getXMLHTTPObject(function () {Media.saveMediaHandler();});
   XMLHTTP.xmlHttpObj.open("POST", url, true);
   XMLHTTP.xmlHttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
   XMLHTTP.xmlHttpObj.send(formContent);
}

//=====================================================//
Media.saveMediaHandler = function(){

   if (XMLHTTP.xmlHttpObj.readyState==4 || XMLHTTP.xmlHttpObj.readyState=="complete") {
      var xmlDoc = XMLHTTP.loadXML(XMLHTTP.xmlHttpObj.responseText);
      var root = xmlDoc.documentElement;

      var errorTag   = xmlDoc.getElementsByTagName("error");
      var errorNo    = errorTag[0].childNodes[0].firstChild.nodeValue;
      var errorText  = errorTag[0].childNodes[1].firstChild.nodeValue;

      if (errorNo == 0){

         var headerTag = xmlDoc.getElementsByTagName("header");
         var media_id  = headerTag[0].childNodes[0].firstChild.nodeValue;

         var utilFrame = document.getElementById("utilFrame");
         utilFrame.src = "index.php?_spAction=saveMedia" + "&_room=media&media_id=" + media_id + "&showHTML=0";
      } else {

         msg = errorText;
         if ( confirm (msg) )
         {
            document.location= "index.php?_room=member&_action=loginForm";
         }
      }
   }
}

//=====================================================//
Media.deleteMedia = function(room, recordType, id){
  url = "index.php?_room=media&_spAction=deleteMedia&room=" + room + "&recordType=" + recordType + "&media_id=" + id ;
  a = window.open(url,"","height=100,width=250,scrollbars=no," +
       "resizable=yes" + ",left=" + (screen.width-250)/2 + ",top=" + (screen.height-100)/2);
}

//=====================================================//
Media.changeRelatedPicture = function(folderName, imageName, imgRefId, linkRefId){
  imgSrcN  = "/media/" + folderName + "/normal/" + imageName;
  imgSrcL  = "/media/" + folderName + "/large/" + imageName;

  document.getElementById(imgRefId).src   = imgSrcN;
  document.getElementById(linkRefId).href = imgSrcL;
}


//============================================================//
//================ SURVEY RELATED ============================//
//============================================================//

Survey.participateMember = function(xUrl) {
   var frmObj = document.forms['survey'];
   var url = "index.php?_room=survey&_spAction=nextPage&showHTML=0";
   var contact_code = prompt("Please input your member id?", "");
   if (!contact_code) {
      return;
   }
   
   xUrl += "&contact_code=" + contact_code;
   
   document.location = xUrl;
   

}

// //=====================================================//
// Survey.submitSurvey = function() {
//    var frmObj = document.forms['survey'];
//    var url = "index.php?_room=survey&_spAction=nextPage&showHTML=0";
// 
//    var formContent = UtilAjax.getFormValues(frmObj);
// 
//    XMLHTTP.xmlHttpObj = XMLHTTP.getXMLHTTPObject(function () {Survey.submitSurveyHandler();});
//    XMLHTTP.xmlHttpObj.open("POST", url, true);
//    XMLHTTP.xmlHttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
//    XMLHTTP.xmlHttpObj.send(formContent);
// 
// }

//=====================================================//
Survey.submitSurvey = function() {
   var frmObj = document.forms['survey'];
   var url = "index.php?_room=survey&_spAction=nextPage&showHTML=0";

   var formContent = UtilAjax.getFormValues(frmObj);
   var formContent = $(frmObj).serialize();
   
   $.post(url, formContent, function(data) {
      var surveyContainer = document.getElementById('surveyContainer');
      var surveyErrorContainer = document.getElementById('surveyErrorContainer');
      
      var xmlDoc  = XMLHTTP.loadXML(UtilString.trimAll(data, 1));
      var root    = xmlDoc.documentElement;
      var statusTag = xmlDoc.getElementsByTagName("status");
      var dataTag = xmlDoc.getElementsByTagName("data");
      var errorTag = xmlDoc.getElementsByTagName("errorText");

      var statusText = statusTag[0].childNodes[0].nodeValue;

      if (statusText == "success") {
         var dataText   = dataTag[0].childNodes[0].nodeValue;
         surveyErrorContainer.innerHTML = "";
         surveyErrorContainer.style.display = "none";
         surveyContainer.innerHTML = dataText;
      }
      else {
         var errorText  = errorTag[0].childNodes[0].nodeValue;
         surveyErrorContainer.innerHTML = errorText;
         surveyErrorContainer.style.display = "block";
         scroll(0,0);
      }
   });

}

//=====================================================//
Survey.submitSurveyHandler = function(survey_answer_id) {
   if (XMLHTTP.xmlHttpObj.readyState==4 || XMLHTTP.xmlHttpObj.readyState=="complete") {
      var surveyContainer = document.getElementById('surveyContainer');
      var surveyErrorContainer = document.getElementById('surveyErrorContainer');

      var xmlDoc  = XMLHTTP.loadXML(UtilString.trimAll(XMLHTTP.xmlHttpObj.responseText, 1));
      var root    = xmlDoc.documentElement;
      var statusTag = xmlDoc.getElementsByTagName("status");
      var dataTag = xmlDoc.getElementsByTagName("data");
      var errorTag = xmlDoc.getElementsByTagName("errorText");

      var statusText = statusTag[0].childNodes[0].nodeValue;

      if (statusText == "success") {
         var dataText   = dataTag[0].childNodes[0].nodeValue;
         surveyErrorContainer.innerHTML = "";
         surveyErrorContainer.style.display = "none";
         surveyContainer.innerHTML = dataText;
      }
      else {
         var errorText  = errorTag[0].childNodes[0].nodeValue;
         surveyErrorContainer.innerHTML = errorText;
         surveyErrorContainer.style.display = "block";
         scroll(0,0);
      }
   }

}

//=====================================================//
Functions.redirectAfterNewWikiContent = function(){

   var url = "index.php?_spAction=newContentRecordID" + "&ajaxRequest=1" + "&showHTML=0";
   var formContent = 'xyz=1';
   XMLHTTP.xmlHttpObj = XMLHTTP.getXMLHTTPObject(function () {Functions.redirectAfterNewWikiContentHandler();});
   XMLHTTP.xmlHttpObj.open("POST", url, true);
   XMLHTTP.xmlHttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
   XMLHTTP.xmlHttpObj.send(formContent);

   return true;
}

//=====================================================//
Functions.redirectAfterNewWikiContentHandler = function(){

   if (XMLHTTP.xmlHttpObj.readyState==4 || XMLHTTP.xmlHttpObj.readyState=="complete") {
      var xmlDoc = XMLHTTP.loadXML(XMLHTTP.xmlHttpObj.responseText);
      var root = xmlDoc.documentElement;

      var headerTag   = xmlDoc.getElementsByTagName("header");
      var section_id    = headerTag[0].childNodes[0].firstChild.nodeValue;
      var content_id    = headerTag[0].childNodes[1].firstChild.nodeValue;

      var url = "index.php?spAction=editContent&_room=" + section_id + "&content_id=" + content_id;
      //document.location = url;
   }
}

//------------------------------------------------//
var Util = {
    changeLangDropdown: function(url, hasSEO){
        var lang = document.getElementById('lang').value;
        var link = '';
        if (hasSEO == 1){
            link = '/' + lang + '/' + url;
        } else {
            link = url + '&lang=' + lang;
        }
        document.location = link;
    },

    //=====================================================//
    getLoginStatus: function(handler){

        /*------------- CHECK THE LOGIN STATUS -------------*/
        var url = "/index.php?_room=member&_spAction=loginStatus&showHTML=0";
        $.get(url, {}, function (data) {
            /*------------- Show message if not logged in -------------*/
            if (!data.loggedIn){
                var msg = data.msg + ''; //*** convert to string from xml
                $.unblockUI();
                $.blockUI({ message: msg, css: { width: '275px' } })

                /*------------- if yes go to login page -------------*/
                $('#login_yes').click(function() {
                    $.blockUI({ message: "<h1>Please wait...</h1>" });
                    
                    /*------------- SET THE CURRENT URL IN SESSION VAR -------------*/
                    var url = "/index.php?_spAction=currentUrlInSession&showHTML=0";
                    $.get(url, {currentUrl:document.location.href}, function (data) {
                        document.location = data.loginUrl;
                    }, 'json');
                });
                
                /*------------- if no just return -------------*/
                $('#login_no').click(function() {
                    $.unblockUI();
                    return false;
                });
                return false;
            } else {
                handler.call();
            }

        }, 'json');
        
    },

    showLoading: function(){
        $.blockUI({ message: "<h4>Loading... Please wait...</h4>" });
    },

    getScrollForUIDialog: function(text, options) {
        var height = options.height;
        height -= 100;
        var selectedSet = $('<div>')
                          .append($('<div>' + text + '</div>')
                                  .css({'overflow-y': 'auto', 'width': '94%', 'height': height + 'px'})
                           );
        return selectedSet;
    },

    initDialog: function() {
        //just to make sure we are not dealing with the unintended (old used) div for the dialog
        $("div.popcontents").parents('.ui-dialog:hidden').remove();
        $("div.popcontents").remove();
        
        var dialogCount = $('div.popcontents').length;
        var text = 'dialog';
        if (dialogCount == 0) {
            text = 'dialog';
        } else {
            text = 'dialog' + dialogCount;
        }
        
        $('body').append("<div id='" + text + "' class='popcontents'><div>");
        
        //returnd dialog div id
        return '#' + text;

    },

    dialogDefaults: {bgiframe: true,
                     modal: true,
                     overlay: {opacity:0.8, background:'red'}
    },

    showProgress: function(message) {
        if (!message) {
            message = "Processing...";
        }
        $('#commonProgressMessage').remove();
        var text = "<div id='commonProgressMessage'>" + message + "<div>";
        text = $(text)
               .addClass('commonProgressMessage')
               .addClass('ui-corner-top');
        $.blockUI({ message: $(text).html() });
    },


    hideProgress: function() {
        $.unblockUI();
    },

    showProgressInd: function(message) {
        if (message == undefined) {
            message = 'Processing...';
        }
        var width = 100;
        var left = (screen.width-width)/2;
        var top = $(window).scrollTop();
        $('body')
        .append("<div id='progressInd'><div></div></div>");
        $('#progressInd')
        .addClass('ui-corner-bl')
        .addClass('ui-corner-br');
        $('#progressInd')
        .css('left', left + 'px')
        .css('top', top + 'px');
        $('#progressInd div').html(message);
    },

    hideProgressInd: function() {
        $('#progressInd').remove();
    },

    showSimpleMessageInDialog: function(msg) {

        Util.initDialog();
        $('#dialog').html(msg);
        
        var xButtons = {};
        
        xButtons[Lang.data.close] = function() {
            $(this).dialog('close');
            $(this).dialog('destroy');
        };
        
        var x_dialog = $('#dialog').dialog(
            $.extend(Util.dialogDefaults, {
                buttons: xButtons
            })
        );
    },

    setUpAjaxFormGeneral: function(formName) {
        $('#' + formName).livequery(function() {

            /****************************************************/
            var extraPar = {}

            var options = {
                success: function(json, statusText, jqFormObj) {
                    Validate.validateFormData(json, statusText, jqFormObj, extraPar);
                    Util.hideProgressInd();
                },
                beforeSubmit: function(frmData) {
                    Util.showProgressInd();
                },
                dataType: 'json'
            };

            $('#' + formName).ajaxForm(options);

        });
    },

    prepopulatedTextbox: function() {
        $("input:text[rel^='pptxt'],textarea[rel^='pptxt']")
        .livequery(function() {
            e = $("input:text[rel^='pptxt'],textarea[rel^='pptxt']");

            for (i=0;i<$(e).length;i++) {
                if ($(e[i]).val()=='') {
                    t = $(e[i]).attr('rel');
                    t = t.split("pptxt:");
                    $(e[i]).css('color','#999');
                    $(e[i]).val(t[1]);
                }
            }

            $(e).focus(function() {
                t = $(this).attr('rel');
                t = t.split("pptxt:");
                var value    = $(this).val().replace(/[\r\n]/g, '');
                var pptxtval = t[1].replace(/[\r\n]/g, '');
                if (value == pptxtval) {
                    $(this).css('color','#444');
                    $(this).val('');
                }
            });
            $(e).blur(function() {
                t = $(this).attr('rel');
                t = t.split("pptxt:");
                if ($(this).val()=='') {
                    $(this).css('color','#999');
                    $(this).val(t[1]);
                }
            });
        });
    },

    clearPrepopulatedTextbox: function(container, frmData) {
        //frmData is an object containing form data

        var len = $("input:text[rel^='pptxt'],textarea[rel^='pptxt']", $(container)).length;
        $("input:text[rel^='pptxt'],textarea[rel^='pptxt']", $(container))
        .each(function(i) {
            var t = $(this).attr('rel');
            var fieldName = $(this).attr('name');
            t = t.split("pptxt:");
            var value    = $(this).val().replace(/[\r\n]/g, '');
            var pptxtval = t[1].replace(/[\r\n]/g, '');
            if (value == pptxtval) {
                $(this).val('');
                
                if ($.isArray(frmData)){
                    for (var i=0; i < frmData.length; i++) {
                        if (frmData[i].name == fieldName) {
                            frmData[i].value = '';
                        }
                    }
                }
            }
        });
    }

}

//------------------------------------------------//
var Lang = {
    get: function(key) {
        return Lang.data[key];
    }
}

