Useful AJAX Functions

Leave a comment Standard

/**************
* Purpose: initalize ajax
* Precondition: none
* Postcondition: ajax xmlhttp object running
**************/

//global variables
var xmlhttp = false; //initalize ajax
var queryString;

//check if we're using IE
try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp = false;
  }
 }
if (!xmlhttp && typeof XMLHttpRequest != "undefined")
    xmlhttp = new XMLHttpRequest();

    /**************
    * Purpose: make an ajax get request
    **************/
    function getrequest(page, objID)
    {

        //change cursor
        document.body.style.cursor = 'wait';

        //find object
        var obj = document.getElementById(objID);

        //remove tinyMCE editors
        //removeTiny();

        //get information
        xmlhttp.open("GET", page);
        xmlhttp.onreadystatechange = function() {

            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

                //change the page
                obj.innerHTML = xmlhttp.responseText;

                //restore the tinyMCE editors
                //loadTiny();

                //change the cursor back
                document.body.style.cursor = 'default';
            }
        }

        //send information
        xmlhttp.send(null);
    }

    /**************
    * Purpose: make an ajax post request
    **************/
    function postrequest(page, objID)
    {

        //change cursor
        document.body.style.cursor = 'wait';

        //remove tinyMCE editors
        //removeTiny();

        //open the page
        xmlhttp.open("POST", page);

        //send the querystring headers
        //set the querystring variable before you call this...
        xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        xmlhttp.send(queryString);   

        xmlhttp.onreadystatechange = function() {

            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) 
            {

                //change the page
                obj.innerHTML = xmlhttp.responseText;

                //restore the tinyMCE editors
                //loadTiny();

                //put back the cursor
                document.body.style.cursor = 'default';
            }
        }

        if (queryString) //reset query string
            queryString = "";

    }

    /**************
    * Purpose: initialize the top-level variable; also reset the variable to cover when 
    *          the user clicks multiple times   
    **************/
    function setQueryString(num)
    {
        if (num == null)
            num = 0;

        queryString="";
        var frm, numberElements;
        frm = document.forms[num];
        numberElements = frm.elements.length;

        for(var i = 0; i < numberElements; i++) {
            if (i < numberElements-1) {
                queryString += frm.elements[i].name+"="+frm.elements[i].value+"&";
            } else {
                queryString += frm.elements[i].name+"="+frm.elements[i].value;
            }
        }

        //if youre using tinyMCE editors
        //for(id in tinyMCE.editors)
        //        if (id != "rshStorageField" && id != "toJSONString" && id != "mce_0")
        //            queryString += "&" + id + "=" + tinyMCE.get(id).getContent();
    }

    /**************
    * Purpose: load tiny MCE editors 
    * Requires tinyMCE from Moxiecode 
    **************/
    function loadTiny()
    {

        tinyMCE.init({
            // General options
            mode : "textareas",
            theme : "advanced",
            skin : "o2k7",
            skin_variant : "black",
            plugins : "save,safari,pagebreak,style,layer,table,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",

            // Theme options
            theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,formatselect,fontselect,fontsizeselect, |,forecolor,backcolor",
            theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,code,|,insertdate,inserttime,preview",
            theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
            theme_advanced_toolbar_location : "top",
            theme_advanced_toolbar_align : "left",
            theme_advanced_statusbar_location : "bottom",
            theme_advanced_resizing : true

            // Example content CSS (should be your site CSS)
            //content_css : "css/content.css",

            // Drop lists for link/image/media/template dialogs
            //template_external_list_url : "../javascript/tiny_mce/lists/template_list.js",
            //external_link_list_url : "../javascript/tiny_mce/lists/link_list.js",
            //external_image_list_url : "../javascript/tiny_mce/lists/image_list.js",
            //media_external_list_url : "../javascript/tiny_mce/lists/media_list.js"
        });

        return true;
    }

    /**************
    * Purpose: remove tiny MCE editors 
    * Requires tinyMCE from Moxiecode 
    **************/
    function removeTiny()
    {
         if (typeof tinyMCE != "undefined") 
         {
            for(id in tinyMCE.editors)
                if (id != "rshStorageField" && id != "toJSONString")
                tinyMCE.execCommand('mceRemoveControl', false, id);
        }
    }
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s