    function MM_preloadImages() { //v3.0
      var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
      var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
      if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
    }


    function performNavImagePreload()
    {
         MM_preloadImages('/Images/Buttons/but-domain-r.gif',
                          '/Images/Buttons/but-email-r.gif',
                          '/Images/Buttons/but-hosting-r.gif',
                          '/Images/Buttons/but-data-r.gif',
                          '/Images/Buttons/but-vps-r.gif',
                          '/Images/Buttons/but-ds-r.gif',
                          '/Images/Buttons/but-about-r.gif',
                          '/Images/Buttons/but-support-r.gif');
    }

    function MM_swapImgRestore() { //v3.0
      var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
    }

    function MM_findObj(n, d) { //v4.01
      var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
      d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
      if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
      for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
      if(!x && d.getElementById) x=d.getElementById(n); return x;
    }

    function MM_swapImage() { //v3.0
      var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
       if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
    }


    function showhide(e){
      if(e=="features"){
        document.getElementById("addons").style.display="none";
        document.getElementById(e).style.display="block";
      }else{
        document.getElementById(e).style.display="block";
        document.getElementById("features").style.display="none";
      }
    }

    function swap(e){
      if(e=="features"){
        document.getElementById('featurepic').src="/Images/features-tab.gif";
        document.getElementById('addonpic').src="/Images/add-ons-down.gif";
      }else if(e=="addons"){
        document.getElementById('addonpic').src="/Images/add-ons-up.gif";
        document.getElementById('featurepic').src="/Images/features-down.gif";
      }
    }

    function expandNode(ourelement) {

        for(i=0; i < ourelement.parentNode.childNodes.length; i++) {
            if(ourelement.parentNode.childNodes[i].className == 'infopanel' || ourelement.parentNode.childNodes[i].className == 'infopanelshow')
            {
                expand = ourelement.parentNode.childNodes[i];
            }
        }

        parent_class_name = ourelement.parentNode.className;

        if(expand.className == 'infopanel')
        {
            classname = 'infopanelshow';
            if(parent_class_name.indexOf('mm_top') > -1)
            {
                ourelement.parentNode.className = parent_class_name.replace(/mm_top/gi, "mm_top_grey");
                classname += ' infopanel_mm_top';
            }
            expand.className = classname;
        }
        else
        {
            if(parent_class_name.indexOf('mm_top_grey') > -1)
            {
                ourelement.parentNode.className = parent_class_name.replace(/mm_top_grey/gi, "mm_top");
            }
            expand.className = 'infopanel';
        }
    }

    function showMinor() {
        document.getElementById('minor').className = 'matrixtable';
        document.getElementById('major').className = 'matrixtablehide';
    }
    function showMajor() {
        document.getElementById('minor').className = 'matrixtablehide';
        document.getElementById('major').className = 'matrixtable';
    }

function showplans(toshow,drop) {
    if(toshow == 'Windows') {
      document.getElementById(toshow).className = 'show lightblue';
      document.getElementById('Linux').className = 'hide';
    }
    else if(toshow == 'Linux') {
      document.getElementById(toshow).className = 'show lightblue';
      document.getElementById('Windows').className = 'hide';
    }
    else {
      document.getElementById('Linux').className = 'hide';
      document.getElementById('Windows').className = 'hide';
    }
    drop.style.backgroundImage = drop.options[drop.selectedIndex].style.backgroundImage;

}

//Swaps Distro version and platform select in root/vps_order_step1a.php
function swapDistro(id) {
  for(x=0; x<distroArray.length; x++) {
    cur = distroArray[x];
    if(cur == id) {
      document.getElementById('panel-' + cur).className = 'distroOn';
      document.getElementById('sel-' + cur).disabled = false;
    }
    else {
      document.getElementById('panel-' + cur).className = 'distroOff';
      document.getElementById('sel-' + cur).disabled = true;
      document.getElementById('sel-' + cur).selectedIndex = 0;
    }
  }
}

function writeYear() {
today=new Date(); // Initialize Date in raw form
year=today.getFullYear(); // Get the year
document.write (year);
}

function swapPaymentMethods()
{
    if(document.getElementById('cheque').checked)
    {
        document.getElementById('cheque_section').style.backgroundColor ='#F5f5f5';
        document.getElementById('creditcard_section').style.backgroundColor ='#FFFFFF';

        document.getElementById('creditcard_section').style.backgroundColor ='#FFFFFF';
        document.getElementById('cc_number').disabled = true;
        document.getElementById('cc_number').value = '';
        document.getElementById('cc_name').disabled = true;
        document.getElementById('cc_name').value = '';
        document.getElementById('cc_type').disabled = true;
        document.getElementById('cc_exp_month').disabled = true;
        document.getElementById('cc_exp_month').value = '';
        document.getElementById('cc_exp_year').disabled = true;
        document.getElementById('cc_exp_year').value = '';
    }
    else
    {
        if (document.getElementById('credit_card').checked)
        {
            document.getElementById('cheque_section').style.backgroundColor ='#FFFFFF';
            document.getElementById('creditcard_section').style.backgroundColor ='#F5f5f5';
            document.getElementById('cc_number').disabled = false;
            document.getElementById('cc_name').disabled = false;
            document.getElementById('cc_type').disabled = false;
            document.getElementById('cc_exp_month').disabled = false;
            document.getElementById('cc_exp_year').disabled = false;
        }
    }

    if (document.getElementById('email').checked || document.getElementById('posted').checked)
    {
        document.getElementById('invoice_section').style.backgroundColor ='#F5f5f5';
    }
}

function MM_goToURL() {  //v3.0
    var i, args = MM_goToURL.arguments;
    document.MM_returnValue = false;
    for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function showTechnical() {
    if(document.getElementById('supply_technical_contact').checked)
    {
       document.getElementById('technical_contact').style.display = 'block';
    }
    else
    {
       document.getElementById('technical_contact').style.display = 'none';
    }
}


function is_numeric( mixed_var ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: David
    // *     example 1: is_numeric(186.31);
    // *     returns 1: true
    // *     example 2: is_numeric('Kevin van Zonneveld');
    // *     returns 2: false
    // *     example 3: is_numeric('+186.31e2');
    // *     returns 3: true

    return !isNaN( mixed_var );
}

function array_keys( input, search_value, strict ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: array_keys( {firstname: 'Kevin', surname: 'van Zonneveld'} );
    // *     returns 1: {0: 'firstname', 1: 'surname'}

    var tmp_arr = {}, strict = !!strict, include = true, cnt = 0;

    for ( key in input ){
        include = true;
        if ( search_value != undefined ) {
            if( strict && input[key] !== search_value ){
                include = false;
            } else if( input[key] != search_value ){
                include = false;
            }
        }

        if( include ) {
            tmp_arr[cnt] = key;
            cnt++;
        }
    }

    return tmp_arr;
}

function array_key_exists ( key, search ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Felix Geisendoerfer (http://www.debuggable.com/felix)
    // *     example 1: array_key_exists('kevin', {'kevin': 'van Zonneveld'});
    // *     returns 1: true

    // input sanitation
    if( !search || (search.constructor !== Array && search.constructor !== Object) ){
        return false;
    }

    return key in search;
}


//  Is the browser supporting Javascript?
var w3c = (document.createElement && document.getElementsByTagName);

// What do we want to do here?
function javascriptAvailabilityTest()
{
    if(w3c)
    {
        /*
        if ($('#no_jscript').length)
        {
            $('#no_jscript').remove();
        }
        $('#jscript_content').show();
        */
        return true;
    }
    return false;
}

function empty( mixed_var ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Philippe Baumann
    // +      input by: Onno Marsman
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: LH
    // +   improved by: Onno Marsman
    // +   improved by: Francesco
    // *     example 1: empty(null);
    // *     returns 1: true
    // *     example 2: empty(undefined);
    // *     returns 2: true
    // *     example 3: empty([]);
    // *     returns 3: true
    // *     example 4: empty({});
    // *     returns 4: true

    var key;

    if (mixed_var === ""
        || mixed_var === 0
        || mixed_var === "0"
        || mixed_var === null
        || mixed_var === false
        || mixed_var === undefined
    ){
        return true;
    }
    if (typeof mixed_var == 'object') {
        for (key in mixed_var) {
            if (typeof mixed_var[key] !== 'function' ) {
              return false;
            }
        }
        return true;
    }
    return false;
}

// DEBUGGING FUNCTIONS -----------------------------------------------------------------------------

// http://weblogs.asp.net/skillet/archive/2006/03/23/440940.aspx
// debugging function.
var MAX_DUMP_DEPTH = 10;
function dumpObj(obj, name, indent, depth)
{
    if (depth > MAX_DUMP_DEPTH)
    {
        return indent + name + ": <Maximum Depth Reached>\n";
    }

    if (typeof obj == "object")
    {
        var child = null;
        var output = indent + name + "\n";

        indent += "\t";
        for (var item in obj)
        {
            if(obj.hasOwnProperty(item))
            {
                try
                {
                    child = obj[item];
                }
                catch (e)
                {
                    child = "<Unable to Evaluate>";
                }

                if (typeof child == "object")
                {
                    output += dumpObj(child, item, indent, depth + 1);
                }
                else
                {
                    output += indent + item + ": " + child + "\n";
                }
            }
        }
        return output;
    }
    else
    {
        return obj;
    }
}

