function select_all(node) {
         $('.'+node).each(function() {
                  this.checked=true
         });
}

function deselect_all(node) {
         $('.'+node).each(function() {
                  this.checked=false
         });
}

function openDialog(title,node,x,y) {
         $('#'+node).dialog({ 
                  width : x,
                  modal : true,
                  bgiframe : true,
                  autoOpen:false,
                  minheight: 50,
                  resizable: true,
                  draggable:true,
                  closeOnEscape: true,
                  height : y,
                  /*
                  buttons : {
                  "Ok": function() { alert(node); $('#'+node).find("form").submit(); },
                  "Cancel": function() { alert('Cancel') }
                  },
                  */
                  title : title         
         });
         
         $('#'+node).data('title.dialog',title);
         $('#'+node).dialog('open');
}

function processCheckboxes(classname,msg) {
    var checkboxes=new Array();
    if ($('input.'+classname+':checked').length>0) {
    
        $('input.'+classname+':checked').each(function() {
            checkboxes.push($(this).val());
        });
        return checkboxes; 
    }  
    else {
        alert(msg);
        return false;   
    }
    
}


function closeDialog(node) {
         $("#"+node).dialog("close");
}

function openDialogTinyMCE(title,node,x,y,tinymcenodes) {
                                  
         $("#"+node).dialog({
                  modal: true,
                  height: y,
                  async: true,
                  title: title,
                  bgiframe: true,
                  width: x,
                  autoOpen:false,
                  open : function () {
                           tmnodes=tinymcenodes.split(",");
                           $.each(tmnodes, function(i,n) {      
                                   tinyMCE.execCommand('mceAddControl', false,n);
                           });
                  },
                  close: function () {
                           tmnodes=tinymcenodes.split(",");
                           $.each(tmnodes, function(i,n) {
                                    tinyMCE.execCommand('mceRemoveControl', false,n);
                           });
                  }
         });  
         
         $('#'+node).dialog('open');
}

// Have a generic title, width and height,variables to send
function jQueryAlert(title,msg,x,y) {
         // node 
         $("#alert").html(msg);
         $("#alert").show();
         $("#alert").dialog({
                  width: x,
                  height: y,
                  title: title,
                  buttons: {
                           "OK": function() {
                                    closeDialog('alert');
                                    return true; 
                           },
                           "Cancel": function () {
                                    closeDialog('alert');
                                    return false;
                           }
                  }
         });
}


function ajax(script,node,querystring) {

    $.ajax({
        type: "POST",
        url: script,
        async: false,
        data: querystring,
        success: function(msg) {

                  $("#"+node).html(msg);
        }
    });
}

function scrollTo(node) {
         var targetOffset = $('#'+node).offset().top;
         $('html,body').animate({scrollTop: targetOffset},500);
}

function ajaxtabs(script,node,querystring,tabnode) {

    $.ajax({
        type: "POST",
        url: script,
        async: false,
        data: querystring,
        success: function(msg) {

                  $("#"+node).html(msg);
                  $("#"+tabnode).tabs();
                  
        }
    });


}

function redirectlink(path) {
      window.location=path;   
}

function serialize( mixed_value ) {
    // Returns a string representation of variable (which can later be unserialized)  
    // 
    // version: 906.1807
    // discuss at: http://phpjs.org/functions/serialize
    // +   original by: Arpad Ray (mailto:arpad@php.net)
    // +   improved by: Dino
    // +   bugfixed by: Andrej Pavlovic
    // +   bugfixed by: Garagoth
    // +      input by: DtTvB (http://dt.in.th/2008-09-16.string-length-in-bytes.html)
    // +   bugfixed by: Russell Walker (http://www.nbill.co.uk/)
    // %          note: We feel the main purpose of this function should be to ease the transport of data between php & js
    // %          note: Aiming for PHP-compatibility, we have to translate objects to arrays
    // *     example 1: serialize(['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: 'a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}'
    // *     example 2: serialize({firstName: 'Kevin', midName: 'van', surName: 'Zonneveld'});
    // *     returns 2: 'a:3:{s:9:"firstName";s:5:"Kevin";s:7:"midName";s:3:"van";s:7:"surName";s:9:"Zonneveld";}'
    var _getType = function( inp ) {
        var type = typeof inp, match;
        var key;
        if (type == 'object' && !inp) {
            return 'null';
        }
        if (type == "object") {
            if (!inp.constructor) {
                return 'object';
            }
            var cons = inp.constructor.toString();
            match = cons.match(/(\w+)\(/);
            if (match) {
                cons = match[1].toLowerCase();
            }
            var types = ["boolean", "number", "string", "array"];
            for (key in types) {
                if (cons == types[key]) {
                    type = types[key];
                    break;
                }
            }
        }
        return type;
    };
    var type = _getType(mixed_value);
    var val, ktype = '';
    
    switch (type) {
        case "function": 
            val = ""; 
            break;
        case "boolean":
            val = "b:" + (mixed_value ? "1" : "0");
            break;
        case "number":
            val = (Math.round(mixed_value) == mixed_value ? "i" : "d") + ":" + mixed_value;
            break;
        case "string":
            val = "s:" + encodeURIComponent(mixed_value).replace(/%../g, 'x').length + ":\"" + mixed_value + "\"";
            break;
        case "array":
        case "object":
            val = "a";
            /*
            if (type == "object") {
                var objname = mixed_value.constructor.toString().match(/(\w+)\(\)/);
                if (objname == undefined) {
                    return;
                }
                objname[1] = serialize(objname[1]);
                val = "O" + objname[1].substring(1, objname[1].length - 1);
            }
            */
            var count = 0;
            var vals = "";
            var okey;
            var key;
            for (key in mixed_value) {
                ktype = _getType(mixed_value[key]);
                if (ktype == "function") { 
                    continue; 
                }
                
                okey = (key.match(/^[0-9]+$/) ? parseInt(key, 10) : key);
                vals += serialize(okey) +
                        serialize(mixed_value[key]);
                count++;
            }
            val += ":" + count + ":{" + vals + "}";
            break;
        case "undefined": // Fall-through
        default: // if the JS object has a property which contains a null value, the string cannot be unserialized by PHP
            val = "N";
            break;
    }
    if (type != "object" && type != "array") {
        val += ";";
    }
    return val;
}


//Same as Ajax function but this one makes the next call wait until this one has finished in order to stop the race condition, required when wanting to update something after processing
function syncajax(script,node,querystring,temp) {
    $.ajax({
        type: "POST",
        url: script,
        async: false,
        data: querystring,
        success: function(msg) 
        {
                  /*$('#'+node).html(msg);
                  
                 

                  if (temp==1) {
                           $("#"+node).fadeIn('slow');
                           $('#'+node).removeClass('loading');
                           $("#"+node).html(msg);
                           setTimeout(function() {
                                    $('#'+node).fadeOut('fast');
                           },2000);
                  }
                  else {
                           $("#"+node).html(msg);
                  }
                  */
    	
    			  
    			  $('#delete-event').html(msg);
    	
    	
        },
        error: function(msg) {
                  alert('An error has occured whilst loading the data, please refresh your browser to try again');
        }
    });
}



