!c99Shell v. 1.0 pre-release build #16!

Software: Apache/2.2.3 (CentOS). PHP/5.1.6 

uname -a: Linux mx-ll-110-164-51-230.static.3bb.co.th 2.6.18-194.el5PAE #1 SMP Fri Apr 2 15:37:44
EDT 2010 i686
 

uid=48(apache) gid=48(apache) groups=48(apache) 

Safe-mode: OFF (not secure)

/var/www/html/mis/js/   drwxr-xr-x
Free 52.32 GB of 127.8 GB (40.94%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     gajax_js.js (44.93 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/*
 GAJAX
 Javascript Libraly And Ajax Frame Work
 design by http://www.goragod.com (goragod wiriya)
 3-4-53
*/

GBrowser = {
IE: !!(window.attachEvent && !window.opera),
Opera: !!window.opera,
WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1,
MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
};

var domloaded = false;

var GClass = {
create: function() {
        return function() {
            this.initialize.apply(this, arguments);
        };
    }
};

Object.extend = function(destination, source) {
    for(var property in source) {
        destination[property] = source[property];
    };
    return destination;
};

Object.extend(Object,
    {
    isObject: function(object) {
            return typeof object == "object";
        },

    isFunction: function(object) {
            return typeof object == "function";
        },

    isString: function(object) {
            return typeof object == "string";
        },

    isNumber: function(object) {
            return typeof object == "number";
        },

    isNull: function(object) {
            return typeof object == "undefined";
        },

    isGElement: function(object) {
            return object != null && typeof object == "object" &&
            'getDimensions' in object && 'viewportOffset' in object;
        }
    }
);

GEvent = {
isButton: function(event, code) {
        var buttonMap = {0: 1, 1: 4, 2: 2};
        if (GBrowser.IE) {
            return event.button == buttonMap[code];
        } else if (GBrowser.WebKit) {
            switch (code) {
                case 0: return event.which == 1 && !event.metaKey;
                case 1: return event.which == 1 && event.metaKey;
                default: return false;
            }
        } else {
            return event.which? (event.which === code + 1): (event.button === code);
        }
    },

isLeftClick: function(event) {return GEvent.isButton(event, 0)},
isMiddleClick: function(event) {return GEvent.isButton(event, 1)},
isRightClick: function(event) {return GEvent.isButton(event, 2)},

element: function(event) {
        var node = event.target? event.target: event.srcElement;
        return event.nodeType == 3? node.parentNode: node;
    },

keyCode: function(event) {
        return event.which || event.keyCode;
    },

stop: function(event) {
        if(event.stopPropagation) {
            event.stopPropagation();
            event.preventDefault();
        } else {
            event.cancelBubble = true;
            event.returnValue = false;
        };
    },

pointer: function(event) {
        return {
        x: event.pageX || (event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)),
        y: event.pageY || (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop))
        };
    },

pointerX: function(event) {return GEvent.pointer(event).x},
pointerY: function(event) {return GEvent.pointer(event).y}
};

function _Element(elem, src) {
    var property;
    if (Object.isString(elem)) {
        var obj = document.getElementById(elem);
        if(!obj) {
            src.elem = elem;
            return false;
        }else if(obj.nodeType == 1) {
            for(property in obj) {
                try {
                    src[property] = obj[property];
                }catch(e) {};
            };
            src.elem = obj;
            return true;
        };
    }else if(elem != window) {
        for(property in elem) {
            try {
                src[property] = elem[property];
            }catch(e) {};
        };
    }
    src.elem = elem;
    return true;
};

GNative = GClass.create();
GNative.prototype = {
initialize: function(elem) {
        _Element(elem, this);
    }
};

GElement = GClass.create();
GElement.prototype = Object.extend(new GNative(),
    {
    getDimensions: function() {
            var display = this.getStyle('display');
            if (display != 'none' && display != null) {
                var originalWidth = this.elem.offsetWidth;
                var originalHeight = this.elem.offsetHeight;
            } else {
                var els = this.elem.style;
                var originalVisibility = els.visibility;
                var originalPosition = els.position;
                var originalDisplay = els.display;
                els.visibility = 'hidden';
                els.position = 'absolute';
                els.display = 'block';
                var originalWidth = this.elem.clientWidth;
                var originalHeight = this.elem.clientHeight;
                els.display = originalDisplay;
                els.position = originalPosition;
                els.visibility = originalVisibility;
            };
            var result =[originalWidth, originalHeight];
            result.width = originalWidth;
            result.height = originalHeight;
            return result;
        },

    viewportOffset: function() {
            var valueT = this.elem.offsetTop;
            var valueL = this.elem.offsetLeft;
            var parentEl = this.elem.offsetParent;
            while(parentEl != null) {
                valueT += parentEl.offsetTop;
                valueL += parentEl.offsetLeft;
                if (parentEl.offsetParent == document.body && parentEl.style.position == 'absolute') break;
                parentEl = parentEl.offsetParent;
            };
            var result =[valueL, valueT];
            result.left = valueL;
            result.top = valueT;
            return result;
        },

    getOffsetParent: function() {
            if (this.elem.offsetParent) return GElement(this.elem.offsetParent);
            if (this.elem == document.body) return this.elem;
            while((element = this.elem.parentNode) && element != document.body) {
                if (element.style.position != 'static') return GElement(element);
            };
            return GElement(document.body);
        },

    getTop: function() {
            return this.viewportOffset().top;
        },

    getLeft: function() {
            return this.viewportOffset().left;
        },

    getWidth: function() {
            return this.getDimensions().width;
        },

    getHeight: function() {
            return this.getDimensions().height;
        },

    hide: function() {
            this.setStyle('visibility', 'hidden');
        },

    show: function() {
            this.setStyle('visibility', 'visible');
        },

    visible: function() {
            return this.style.visibility != 'hidden';
        },

    toggle: function() {
            if (this.visible) {
                this.hide();
            } else {
                this.show();
            };
        },

    center: function() {
            var size = this.getDimensions();
            this.style.top = (document.viewport.getscrollTop() + ((document.viewport.getHeight() - size.height) / 2)) + 'px';
            this.style.left = (document.viewport.getscrollLeft() + ((document.viewport.getWidth() - size.width) / 2)) + 'px';
        },

    getStyle: function(style) {
            style = (style == 'float' && this.elem.currentStyle)? 'styleFloat': style;
            style = (style == 'borderColor')? 'borderBottomColor': style;
            value = (this.elem.currentStyle)? this.elem.currentStyle[style]: null;
            value = (!value && window.getComputedStyle)
            ? document.defaultView.getComputedStyle(this.elem, null).getPropertyValue(style.replace(/([A-Z])/g, "-$1").toLowerCase())
                :
                value;
            if (style == 'opacity') return value? parseFloat(value): 1.0;
            return value == 'auto'? null: value;
        },

    setStyle: function(property, value) {
            if (property == 'opacity') {
                if (window.ActiveXObject) this.elem.style.filter = "alpha(opacity=" + (value * 100) + ")";
                this.elem.style.opacity = value;
            } else if (property == 'float' || property == 'styleFloat' || property == 'cssFloat') {
                if (Object.isNull(this.elem.style.styleFloat)) {
                    this.elem.style['cssFloat'] = value;
                } else {
                    this.elem.style['styleFloat'] = value;
                };
            } else {
                this.elem.style[property] = value;
            }
        },

    addEvent: function(type, fn, useCapture) {
            var obj = this.elem;
            if (obj.addEventListener) {
                useCapture = !useCapture? false: useCapture;
                obj.addEventListener(type, fn, useCapture);
            }else if (obj.attachEvent) {
                obj["e"+type+fn] = fn;
                obj[type+fn] = function() {obj["e"+type+fn](window.event);};
                obj.attachEvent("on"+type, obj[type+fn]);
            };
        },

    removeEvent: function(type, fn) {
            if (this.elem.removeEventListener) this.elem.removeEventListener(((type == 'mousewheel' && window.gecko)? 'DOMMouseScroll': type), fn, false);
            else this.elem.detachEvent('on'+type, fn);
        },

    remove: function() {
            this.elem.parentNode.removeChild(this.elem);
        },

    copy: function() {
            return $G(this.elem.cloneNode(true));
        },

    insert: function(el) {
            this.elem.appendChild(Object.isGElement(el)? el.elem: el);
        },

    insertBefore: function(el) {
            this.elem.parentNode.insertBefore(Object.isGElement(el)? el.elem: el);
        },

    insertAfter: function(el) {
            var parent = this.elem.parentNode;
            var newElement = Object.isGElement(el)? el.elem: el;
            if(parent.lastchild == this.elem) {
                parent.appendChild(newElement);
            }else {
                parent.insertBefore(newElement, this.elem.nextSibling);
            }
        },

    replace: function(el) {
            this.elem.parentNode.replaceChild(Object.isGElement(el)? el.elem: el, this.elem);
        },

    get: function(prop) {
            return this.elem.getAttribute(prop);
        },

    set: function(prop, value) {
            this.elem.setAttribute(prop, value);
        },

    Ready: function(onload) {
            this.timeout = 0;
            var temp = this;
            var preload = function() {
                if(domloaded && _Element(temp.elem, temp)) {
                    onload.call(temp);
                }else if(temp.timeout < 1000) {
                    window.setTimeout(preload, 10);
                    temp.timeout++;
                }
            };
            preload();
        }
    }
);

Function.prototype.bind = function(object) {
    var __method = this;
    return function() {
        return __method.apply(object, arguments);
    }
};

function functionReady(func, onload) {
    var preload = function() {
        if(domloaded && typeof func != "undefined") {
            onload.apply();
        } else {
            window.setTimeout(preload, 10);
        };
    };
    preload();
};

$G(window).addEvent('load', function()
    {
        domloaded = true;
    }
);

if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) {
        i || (i = 0);
        var length = this.length;
        if (i < 0) i = length + i;
        for (; i < length; i++) if (this[i] === item) return i;
        return -1;
    };

function forEach(items, func) {
    for (var i = 0; i < items.length; i++) {
        func.call(this, items[i], i);
    };
};

Object.extend(String.prototype,
    {
    hexToRgb: function(array) {
            var hex = this.match(new RegExp('^[#]{0,1}([\\w]{1,2})([\\w]{1,2})([\\w]{1,2})$'));
            var rgb =[];
            for (var i = 1; i < hex.length; i++) {
                if (hex[i].length == 1) hex[i] += hex[i];
                rgb.push(parseInt(hex[i], 16));
            };
            var rgbText = 'rgb(' + rgb.join(',') + ')';
            if (array) return[parseFloat(rgb[0]), parseFloat(rgb[1]), parseFloat(rgb[2])];
            else return rgbText;
        },

    ToRgb: function() {
            if (this.match(/^#[0-9a-f]{3,6}$/i)) return this.hexToRgb(true);
            return ((value = this.match(/(\d+),\s*(\d+),\s*(\d+)/)))?[parseFloat(value[1]), parseFloat(value[2]), parseFloat(value[3])]: false;
        },

    entityify: function() {
            return this.
            replace(/&/g, '&amp;').
            replace(/</g, '&lt;').
            replace(/>/g, '&gt;');
        },

    unentityify: function() {
            return this.
            replace(/&amp;/g, '&').
            replace(/&lt;/g, '<').
            replace(/&gt;/g, '>');
        },

    toJSON: function() {
            try {
                if (this.length > 4) return eval('(' + this + ')');
            } catch (e) {};
            return null;
        },

    escapeRegExp: function() {
            return this.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1');
        },

    capitalize: function() {
            return this.replace(/\b[a-z]/g, function(match)
                {
                    return match.toUpperCase();
                }
            );
        },

    evalScript: function() {
            var regex = /<script type="text\/javascript">(.*?)<\/script>/g;
            text = this.replace(/[\r\n]/g, '');
            text = text.replace(/\/\/<\!\[CDATA\[/g, '');
            text = text.replace(/\/\/\]\]>/g, '');
            match = regex.exec(text);
            while(match != null) {
                try {eval(match[1]);}catch(e) {};
                match = regex.exec(text);
            };
        },

    leftPad: function(count, fill) {
            var ret = '';
            for(var i = 0; i < (count - this.length); i++) {
                ret = ret + fill;
            };
            return ret + this;
        },

    rightPad: function(count, fill) {
            fill = fill? fill[0]: ' ';
            return this + fill.repeat(count - this.length);
        }
    }
);

Date.prototype.dateFormat = function(format) {
    var result = "";
    for (var i = 0; i < format.length; i++) {
        result += this.dateToString(format.charAt(i));
    };
    return result;
};

Date.prototype.dateToString = function(character) {
    switch (character) {
        case "d":
            return this.getDate();
        case "D":
            return Date.dayNames[this.getDay()];
        case "y":
            return this.getFullYear().substring(2, 4);
        case "Y":
            return (this.getFullYear() + Date.yearOffset).toString().substring(2, 4);
        case "yy":
            return this.getFullYear();
        case "YY":
            return this.getFullYear() + Date.yearOffset;
        case "m":
            return this.getMonth();
        case "M":
            return Date.monthNames[this.getMonth()];
        case "H":
            return this.getHours().toString().leftPad(2, '0');
        case "h":
            return this.getHours();
        case "A":
            return this.getHours() < 12? 'AM': 'PM';
        case "a":
            return this.getHours() < 12? 'am': 'pm';
        case "I":
            return this.getMinutes().toString().leftPad(2, '0');
        case "i":
            return this.getMinutes();
        case "S":
            return this.getSeconds().toString().leftPad(2, '0');
        case "s":
            return this.getSeconds();
        default:
            return character;
    }
};

Date.monthNames =["มค.", "กพ.", "มีค.", "เมย.", "พค.", "มิย.", "กค.", "สค.", "กย.", "ตค.", "พย.", "ธค."];
Date.dayNames =["อา.", "จ.", "อ.", "พ.", "พฤ.", "ศ.", "ส."];
Date.yearOffset = 543;

function $G(el) {
    return new GElement(el);
};

function $E(el) {
    return Object.isString(el)
    ? document.getElementById(el)
        :
        (Object.isGElement(el)? el.elem: el);
};

document.viewport = {
getWidth: function() {
        return document.documentElement.clientWidth || document.body.clientWidth || self.innerWidth;
    },

getHeight: function() {
        return document.documentElement.clientHeight || document.body.clientHeight || self.innerHeight;
    },

getscrollTop: function() {
        return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
    },

getscrollLeft: function() {
        return window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft;
    }
};

document.getWidth = function() {
    return Math.max(
        Math.max(document.body.scrollWidth, document.documentElement.scrollWidth),
        Math.max(document.body.offsetWidth, document.documentElement.offsetWidth),
        Math.max(document.body.clientWidth, document.documentElement.clientWidth)
    );
};

document.getHeight = function() {
    return Math.max(
        Math.max(document.body.scrollHeight, document.documentElement.scrollHeight),
        Math.max(document.body.offsetHeight, document.documentElement.offsetHeight),
        Math.max(document.body.clientHeight, document.documentElement.clientHeight)
    );
};

Cookie = {
get: function(key) {
        var value = document.cookie.match('(?:^|;)\\s*' + key.escapeRegExp() + '=([^;]*)');
        return (value)? decodeURIComponent(value[1]): null;
    },

set: function(key, value, options) {
        _options = {
        path: false,
        domain: false,
        duration: false,
        secure: false
        };
        for(var property in options) {
            _options[property] = options[property];
        };
        value = encodeURIComponent(value);
        if (_options.domain) value += '; domain=' + _options.domain;
        if (_options.path) value += '; path=' + _options.path;
        if (_options.duration) {
            var date = new Date();
            date.setTime(date.getTime() + _options.duration * 24 * 60 * 60 * 1000);
            value += '; expires=' + date.toGMTString();
        };
        if (_options.secure) value += '; secure';
        document.cookie = key + '=' + value;
    },

remove: function(key) {
        Cookie.set(key, '', {duration: -1});
    }
};

GAjax = GClass.create();
GAjax.prototype = {
initialize: function(options) {
        this.options = {
        method: 'post',
        cache: false,
        asynchronous: true,
        contentType: 'application/x-www-form-urlencoded',
        encoding: 'UTF-8',
        onTimeout: function() {},
        timeout: 4000
        };
        for(var property in options) {
            this.options[property] = options[property];
        };
        this.options.method = this.options.method.toLowerCase();
    },

xhr: function() {
        var xmlHttp = null;
        try {
            xmlHttp = new XMLHttpRequest();
        }catch(e) {
            try {
                xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
            }catch(e) {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            };
        };
        return xmlHttp;
    },

send: function(url, parameters, callback) {
        var self = this;
        this._xhr = this.xhr();
        this._abort = false;
        if(!Object.isNull(this._xhr)) {
            self.showLoading();
            option = this.options;
            if(option.method == 'get') {
                url += '?' + parameters;
                parameters = null;
            }else {
                parameters = parameters == null? '': parameters;
            };
            if(option.cache == false) {
                /*  ** Old Code
                var match = /\?/;
                if(match.test(url)) {
                    url = url + '&timestamp=' + new Date().getTime();
                }else {
                    url = url + '?timestamp=' + new Date().getTime();
                };
                */ 
                // Edit By Plalai
                url = url + '/'+ new Date().getTime();
            };
            var onreadystatechange = function() {
                if (this._xhr.readyState == 4) {
                    window.clearTimeout(self.calltimeout);
                    self.hideLoading();
                    if(this._xhr.status == 200 && this._abort == false && Object.isFunction(callback)) {
                        self.responseText = this._xhr.responseText;
                        self.responseXML = this._xhr.responseXML;
                        callback(self);
                    };
                };
            };
            this._xhr.open(option.method, url, option.asynchronous);
            this._xhr.onreadystatechange = onreadystatechange.bind(this);
            if(option.method == 'post') {
                this._xhr.setRequestHeader('Content-Type', option.contentType + '; charset=' + option.encoding);
                this._xhr.setRequestHeader('Content-Length', (parameters == null? 0: parameters.length));
            };
            var _calltimeout = function() {
                window.clearTimeout(self.calltimeout);
                option.onTimeout.bind(self);
            };
            this.calltimeout = window.setTimeout(_calltimeout, option.timeout);
            this._xhr.send(parameters);
            if(option.asynchronous == false) {
                window.clearTimeout(this.calltimeout);
                this.responseText = this._xhr.responseText;
                this.responseXML = this._xhr.responseXML;
            };
        };
    },

autoupdate: function(url, interval, getrequest, callback) {
        this._xhr = this.xhr();
        this.interval = interval * 1000;
        if(!Object.isNull(this._xhr)) {
            this.url = url;
            this.getrequest = getrequest;
            this.callback = callback;
            this._abort = false;
            this._getupdate();
        };
    },

_getupdate: function() {
        if(this._abort == false) {
            var parameters = null;
            var url = this.url;
            var option = this.options;
            if(Object.isFunction(this.getrequest)) {
                if(option.method == 'get') {
                    url += '?' + this.getrequest();
                }else {
                    parameters = this.getrequest();
                };
            };
            parameters = (option.method == 'post' && parameters == null)? '': parameters;
            if(option.cache == false) {
                var match = /\?/;
                if(match.test(url)) {
                    url = url + '&timestamp=' + new Date().getTime();
                }else {
                    url = url + '?timestamp=' + new Date().getTime();
                };
            };
            var xhr = this._xhr;
            var temp = this;
            xhr.open(option.method, url, true);
            xhr.onreadystatechange = function() {
                if(xhr.readyState == 4 && xhr.status == 200) {
                    temp.callback(xhr);
                    window.clearTimeout(temp.calltimeout);
                    temp.timeinterval = window.setTimeout(temp._getupdate.bind(temp), temp.interval);
                };
            };
            if(option.method == 'post') {
                xhr.setRequestHeader('Content-Type', option.contentType + '; charset=' + option.encoding);
                xhr.setRequestHeader('Content-Length', (parameters == null? 0: parameters.length));
            };
            var _calltimeout = function() {
                window.clearTimeout(temp.calltimeout);
                temp.timeinterval = window.setTimeout(temp._getupdate.bind(temp), temp.interval);
            };
            this.calltimeout = window.setTimeout(_calltimeout, option.timeout);
            xhr.send(parameters);
        };
    },

getRequestBody: function(pForm) {
        pForm = $E(pForm);
        var nParams = new Array();
        for(var n = 0; n < pForm.elements.length; n++) {
            if ((pForm.elements[n].checked == true && pForm.elements[n].type == "radio")
                || (pForm.elements[n].checked == true && pForm.elements[n].type == "checkbox")
                || (pForm.elements[n].type != "radio" && pForm.elements[n].type != "checkbox")) {
                var pParam = pForm.elements[n].name;
                pParam += "=";
                pParam += encodeURIComponent(pForm.elements[n].value);
                nParams.push(pParam);
            };
        };
        return nParams.join("&");
    },

showLoading: function() {
        if(this.loading) {
            this.wait = $G(this.loading);
            if(this.wait) {
                if(this.center) {
                    this.wait.setStyle('display', 'block');
                    this.wait.center();
                }else {
                    this.wait.setStyle('visibility', 'visible');
                };
            };
        };
    },

hideLoading: function() {
        if(this.wait) {
            if(this.center) {
                this.wait.setStyle('display', 'none');
            }else {
                this.wait.setStyle('visibility', 'hidden');
            };
        };
    },

inintLoading: function(loading, center) {
        this.loading = loading;
        this.center = center;
    },

abort: function() {
        clearTimeout(this.timeinterval);
        this._abort = true;
    }
};

var gform_id = 0;
GForm = GClass.create();
GForm.prototype = {
initialize: function(frm, loading, center, onsubmit) {
        this.form = $E(frm);
        this.loading = loading;
        this.center = center;
        this._onsubmit = Object.isFunction(onsubmit)? onsubmit: function() {return true};
    },

onsubmit: function(callback) {
        var operaHack = true;
        var temp = this;
        this.form.onsubmit = function() {
            if(temp._onsubmit(temp.form) == false) {
                return false;
            }else {
                temp.showLoading();
                var uploadCallback = function() {
                    var doc = io.contentWindow? io.contentWindow.document: io.contentDocument? io.contentDocument: io.document;
                    temp.responseText = doc.body? doc.body.innerHTML: null;
                    temp.responseXML = doc.XMLDocument? doc.XMLDocument: doc;
                    if(temp.responseText == '' && operaHack && GBrowser.Opera) {
                        operaHack = false;
                        setTimeout(function() {uploadCallback.bind(this)}, 100);
                        return;
                    };
                    operaHack = true;
                    temp.hideLoading();
                    io.removeEvent('load', uploadCallback);
                    window.setTimeout(function() {io.remove()}, 1);
                    temp.form.method = old_method;
                    temp.form.target = old_target;
                    if (temp.form.encoding) temp.form.encoding = old_enctype;
                    else temp.form.enctype = old_enctype;
                    callback(temp);
                }.bind(temp.form);
                var io = temp.createIframe();
                var old_target = this.target || '';
                var old_method = this.method || "post";
                var old_enctype = this.encoding? this.encoding: this.enctype;
                if (this.encoding) this.encoding = 'multipart/form-data';
                else this.enctype = 'multipart/form-data';
                io.addEvent('load', uploadCallback);
                this.target = io.id;
                this.method = 'post';
                return true;
            };
        };
    },

submit: function(callback) {
        var temp = this;
        this.showLoading();
        var uploadCallback = function() {
            temp.hideLoading();
            var xhr = {};
            try {
                xhr.responseText = io.contentWindow.document.body? io.contentWindow.document.body.innerHTML: null;
                xhr.responseXML = io.contentWindow.document.XMLDocument? io.contentWindow.document.XMLDocument: io.contentWindow.document;
            }catch(e) {};
            io.removeEvent('load', uploadCallback);
            window.setTimeout(function() {io.remove()}, 1);
            temp.form.method = old_method;
            temp.form.target = old_target;
            callback(xhr);
        }.bind(this);
        if (this.form.encoding) this.form.encoding = 'multipart/form-data';
        else this.form.enctype = 'multipart/form-data';
        var io = this.createIframe();
        var old_target = this.form.target || '';
        var old_method = this.form.method || "post";
        io.addEvent('load', uploadCallback);
        this.form.target = io.id;
        this.form.method = "post";
        this.form.submit();
    },

createIframe: function() {
        var frameId = 'GForm_Submit_' + gform_id + '_' + (this.form.id || this.form.name);
        gform_id++;
        if(window.ActiveXObject) {
            io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />');
            io.src = 'javascript:false';
        }else {
            io = document.createElement('iframe');
            io.setAttribute('id', frameId);
            io.setAttribute('name', frameId);
        };
        io.style.position = 'absolute';
        io.style.top = '-1000px';
        io.style.left = '-1000px';
        document.body.appendChild(io);
        return $G(io);
    },

showLoading: function() {
        if (this.loading) {
            this.wait = $G(this.loading);
            if (this.wait) {
                if (this.center) {
                    this.wait.setStyle('display', 'block');
                    this.wait.center();
                }else {
                    this.wait.setStyle('visibility', 'visible');
                };
            };
        };
    },

hideLoading: function() {
        if (this.wait) {
            if (this.center) {
                this.wait.setStyle('display', 'none');
            } else {
                this.wait.setStyle('visibility', 'hidden');
            };
        };
    },

inintLoading: function(loading, center) {
        this.loading = loading;
        this.center = center;
    }
};

GLoader = GClass.create();
GLoader.prototype = {
initialize: function(geturl, callback) {
        this.id = 'GLoader_iframe';
        var loading = true;
        this.encode = true;
        this.geturl = geturl;
        var io = this.createIframe();
        var uploadCallback = function() {
            this.hideLoading();
            var xhr = {};
            try {
                if(io.contentWindow.document.body) {
                    var data = io.contentWindow.document.body.innerHTML;
                    xhr.responseText = (this.encode? decodeURIComponent(data): data);
                }else xhr.responseText = 'Document Not Support !!';
            }catch(e) {
                xhr.responseText = 'Invalid Charactor !!'
            };
            if(!loading) callback(xhr);
            loading = false;
        }.bind(this);
        io.addEvent('load', uploadCallback);
    },

createIframe: function() {
        var io = null;
        if(!$E(this.id)) {
            if(window.ActiveXObject) {
                io = document.createElement('<iframe id="' + this.id + '" name="' + this.id + '" />');
            }else {
                io = document.createElement('iframe');
                io.setAttribute('id', this.id);
                io.setAttribute('name', this.id);
            };
            io.style.position = 'absolute';
            io.style.top = '-1000px';
            io.style.left = '-1000px';
            io.style.display = 'none';
            document.body.appendChild(io);
        };
        return $G(this.id);
    },

inint: function(obj) {
        var links = obj.getElementsByTagName('a');
        var temp = this;
        var patt1 = new RegExp('^.*?' + location.hostname + '/(.*?)$');
        var patt2 = new RegExp('.*?#.*?');
        for(var i = 0; i < links.length; i++) {
            link = links[i];
            try {
                href = link.href;
                if(link.target == '' && link.onclick == null && patt1.exec(href) && !patt2.exec(href)) {
                    ret = this.geturl.call(this, href);
                    if(ret) {
                        link.tag = ret;
                        link.onclick = function() {
                            temp.showLoading();
                            $E(temp.id).src = this.tag;
                            return false;
                        };
                    };
                };
            }catch(e) {};
        };
    },

showLoading: function() {
        if(this.loading) {
            this.wait = $G(this.loading);
            if(this.wait) {
                if(this.center) {
                    this.wait.setStyle('display', 'block');
                    this.wait.center();
                }else {
                    this.wait.setStyle('visibility', 'visible');
                };
            };
        };
    },

hideLoading: function() {
        if(this.wait) {
            if(this.center) {
                this.wait.setStyle('display', 'none');
            }else {
                this.wait.setStyle('visibility', 'hidden');
            };
        };
    },

inintLoading: function(loading, center) {
        this.loading = loading;
        this.center = center;
    },

submit: function(pForm) {
        var old_target = pForm.target;
        var old_action = pForm.action;
        pForm.target = this.id;
        pForm.action = this.geturl(old_action);
        this.showLoading();
        pForm.submit();
        window.setTimeout(function()
            {
                pForm.target = old_target;
                pForm.action = old_action;
            }, 1
        );
        return false;
    },

location: function(url) {
        this.showLoading();
        $E(this.id).contentWindow.document.location = this.geturl(url);
    }
};

GModal = GClass.create();
GModal.prototype = {
initialize: function(onHide) {
        this.onhide = onHide || function() {};
        var self = this;
        var checkESCkey = function(event) {
            var keycode = event.which || event.keyCode;
            if(keycode==27) {
                self.hide();
                GEvent.stop(event);
                return false;
            };
        };
        var container_div = 'GModal_div';
        if (!$E(container_div)) {
            $G(document).addEvent('keypress', checkESCkey);
            $G(document).addEvent('keydown', checkESCkey);
            var div = document.createElement('div');
            div.setAttribute('id', container_div);
            div.style.left = '-1000px';
            div.style.position = 'absolute';
            document.body.appendChild(div);
        };
        this.div = $G(container_div);
        this.div.setStyle('opacity', 0);
    },

show: function(value) {
        this.div.elem.innerHTML = value;
        this.div.elem.style.display = '';
        this.div.center();
        this.overlay();
        new GFade(this.div).play({'from': 0, 'to': 100, 'speed': 1, 'duration': 20});
        this.div.elem.style.zIndex = 9999;
    },

hide: function() {
        new GFade(this.div).play({'from': 100, 'to': 0, 'speed': 1, 'duration': 20, 'onComplete': this._hide.bind(this)});
    },

overlay: function() {
        var frameId = 'GModal_iframe';
        if (!$E(frameId)) {
            var io = null;
            if(window.ActiveXObject) {
                io = document.createElement('<iframe id="' + frameId + '" height="100%" />');
            }else {
                io = document.createElement('iframe');
                io.setAttribute('id', frameId);
            };
            io.setAttribute('frameBorder', '0');
            io.style.position = 'absolute';
            document.body.appendChild(io);
            if (document.all) document.frames(frameId).document.bgColor = '#000000';
            else io.style.backgroundColor = '#000000';
            io.style.zIndex = 8888;
        };
        this.iframe = $G(frameId);
        this.iframe.style.left = '0px';
        this.iframe.style.top = '0px';
        this.iframe.setStyle('opacity', 0.7);
        this.iframe.style.display = 'block';
        this.iframe.style.height = document.getHeight() + 'px';
        this.iframe.style.width = document.getWidth() + 'px';
    },

_hide: function() {
        this.iframe.style.display = 'none';
        this.div.style.display = 'none';
        this.onhide.call(this);
    }
};

GFx = function() {};
GFx.prototype = {
_run: function() {
        this.playing = true;
        this.step();
    },

stop: function() {
        this.playing = false;
        this.options.onComplete.call(this, this);
    }
};

GFade = GClass.create();
GFade.prototype = Object.extend(new GFx(),
    {
    initialize: function(el) {
            this.options = {
            from: 0,
            to: 100,
            speed: 50,
            duration: 5,
            unit: '',
            onComplete: function() {}
            };
            this.Element = $G(el);
            this.playing = false;
            this.timer = 0;
        },

    play: function(options) {
            for(var property in options) {
                this.options[property] = options[property];
            };
            if (this.options.to > this.options.from) {
                this.name = 'fadeIn';
                this.to = (this.options.to > 100)? 100: this.options.to;
                this.from = (this.options.from < 0)? 0: this.options.from;
            } else {
                this.name = 'fadeOut';
                this.to = (this.options.to < 0)? 0: this.options.to;
                this.from = (this.options.from > 100)? 100: this.options.from;
            };
            if (!this.playing) {
                this.now = this.from;
                this._run();
            };
        },

    step: function() {
            if (this.playing) this.Element.setStyle('opacity', this.now/100);
            now = (this.name == 'fadeIn')? this.now + this.options.duration: this.now - this.options.duration;
            if (this.playing && ((this.name == 'fadeOut' && now >= this.to) || (this.name == 'fadeIn' && now <= this.to))) {
                this.now = now;
                var temp = this;
                this.timer = window.setTimeout(temp.step.bind(temp), temp.options.speed);
            } else this.stop();
        }
    }
);

GHighlight = GClass.create();
GHighlight.prototype = Object.extend(new GFx(),
    {
    initialize: function(el) {
            this.options = {
            from: 'red',
            to: 'auto',
            speed: 10,
            time: 20,
            unit: '',
            onComplete: function() {}
            };
            this.Element = $G(el);
            this.playing = false;
            this.timer = 0;
        },

    play: function(options) {
            for(var property in options) {
                this.options[property] = options[property];
            };
            if (this.options.from == 'red') {
                this.options.from = {'borderColor': '#FF0000', 'backgroundColor': '#FFBFBF'};
            } else if (this.options.from == 'green') {
                this.options.from = {'borderColor': '#00FF00', 'backgroundColor': '#E3F4E3'};
            };
            source = this.options.from;
            if (Object.isObject(source)) {
                destination = {};
                for(var property in source) destination[property] = source[property].ToRgb();
                this.from = destination;
            };
            source = this.options.to;
            destination = {};
            if (Object.isObject(source)) {
                for(var property in source) destination[property] = source[property].ToRgb();
                this.to = destination;
            } else if (source == 'auto') {
                source = this.options.from;
                for(var property in source) destination[property] = this.Element.getStyle(property).ToRgb();
                this.to = destination;
            };
            source = this.options.from;
            if (source == 'auto') {
                source = this.options.to;
                for(var property in source) destination[property] = this.Element.getStyle(property).ToRgb();
                this.from = destination;
            };
            this.delta =[];
            for(var property in this.from) {
                to = this.to[property];
                from = this.from[property];
                this.delta[property] =[
                    (to[0] - from[0]) / this.options.time,
                    (to[1] - from[1]) / this.options.time,
                    (to[2] - from[2]) / this.options.time
                ];
            }
            if (!this.playing) {
                this.now = 0;
                this._run();
            };
        },

    step: function() {
            if (this.playing) {
                for(var property in this.from) {
                    colors = this.from[property];
                    this.Element.setStyle(property, 'rgb(' +
                        parseInt(colors[0] + (this.delta[property][0] * this.now)) + ',' +
                        parseInt(colors[1] + (this.delta[property][1] * this.now)) + ',' +
                        parseInt(colors[2] + (this.delta[property][2] * this.now)) + ')'
                    );
                };
            };
            this.now++;
            if (this.now > this.options.time) this.stop();
            else this.timer = window.setTimeout(this.step.bind(this), this.options.speed);
        }
    }
);

GScroll = GClass.create();
GScroll.prototype = Object.extend(new GFx(),
    {
    initialize: function(container, scroller) {
            this.options = {
            speed: 30,
            duration: 1,
            pauseit: 1,
            scrollto: 'top'
            };
            this.container = $G(container);
            this.scroller = $G(scroller);
            this.container.addEvent('mouseover', function() {this.rel = 'pause'});
            this.container.addEvent('mouseout', function() {this.rel = 'play'});
            this.container.elem.rel = 'play';
            this.playing = false;
            var size = this.container.getDimensions();
            this.containerHeight = size.height;
            this.containerWidth = size.width;
        },

    play: function(options) {
            for(var property in options) {
                this.options[property] = options[property];
            };
            this.scrollerTop = 0;
            this.scrollerLeft = 0;
            this._run();
        },

    step: function() {
            if (this.container.elem.rel=='play'||this.options.pauseit!=1) {
                if (this.options.scrollto=='bottom') {
                    this.scrollerTop = this.scrollerTop>this.containerHeight? 0-this.scroller.getHeight(): this.scrollerTop+this.options.duration;
                    this.scroller.elem.style.top = this.scrollerTop+'px';
                } else if (this.options.scrollto=='left') {
                    this.scrollerLeft = this.scrollerLeft+this.scroller.getWidth()<0? this.containerWidth: this.scrollerLeft-this.options.duration;
                    this.scroller.elem.style.left = this.scrollerLeft+'px';
                } else if (this.options.scrollto=='right') {
                    this.scrollerLeft = this.scrollerLeft>this.containerWidth? 0-this.scrollerWidth: this.scrollerLeft+this.options.duration;
                    this.scroller.elem.style.left = this.scrollerLeft+'px';
                } else {
                    this.scrollerTop = this.scrollerTop+this.scroller.getHeight()<0? this.containerHeight: this.scrollerTop-this.options.duration;
                    this.scroller.elem.style.top = this.scrollerTop+'px';
                };
            };
            this.timer = window.setTimeout(this.step.bind(this), this.options.speed);
        }
    }
);

HScroll = GClass.create();
HScroll.prototype = Object.extend(new GFx(),
    {
    initialize: function(container, scroller) {
            this.options = {
            speed: 30,
            duration: 5,
            arrowTop: 'arrowTop',
            arrowBottom: 'arrowBottom'
            };
            var temp = this;
            this.scroller = $G(scroller);
            this.containerHeight = $G(container).getDimensions().height;
        },

    play: function(options) {
            for(var property in options) {
                this.options[property] = options[property];
            };
            var arrowTop = $G(this.options.arrowTop);
            arrowTop.addEvent('mouseover', function() {temp.rel = 'play'; temp.pos = 'up'});
            arrowTop.addEvent('mouseout', function() {temp.rel = 'pause'});
            var arrowBottom = $G(this.options.arrowBottom);
            arrowBottom.addEvent('mouseover', function() {temp.rel = 'play'; temp.pos = 'down'});
            arrowBottom.addEvent('mouseout', function() {temp.rel = 'pause'});
            this.scrollerTop = 0;
            this._run();
        },

    step: function() {
            if (this.rel == 'play') {
                if (this.pos == 'up' && this.scrollerTop < 0) {
                    this.scrollerTop = this.scrollerTop + this.options.duration;
                    this.scroller.elem.style.top = this.scrollerTop + 'px';
                } else if(this.pos == 'down' && this.scroller.getHeight()+ this.scrollerTop > this.containerHeight) {
                    this.scrollerTop = this.scrollerTop - this.options.duration;
                    this.scroller.elem.style.top = this.scrollerTop + 'px';
                }
            }
            this.timer = window.setTimeout(this.step.bind(this), this.options.speed);
        }
    }
);

VScroll = GClass.create();
VScroll.prototype = Object.extend(new GFx(),
    {
    initialize: function(container, scroller, options) {
            this.options = {
            speed: 30,
            duration: 5,
            arrowLeft: 'arrowLeft',
            arrowRight: 'arrowRight'
            };
            for(var property in options) {
                this.options[property] = options[property];
            };
            var temp = this;
            var arrowLeft = $G(this.options.arrowLeft);
            arrowLeft.addEvent('mouseover', function() {temp.rel = 'play'; temp.pos = 'left'});
            arrowLeft.addEvent('mouseout', function() {temp.rel = 'pause'});
            var arrowRight = $G(this.options.arrowRight);
            arrowRight.addEvent('mouseover', function() {temp.rel = 'play'; temp.pos = 'right'});
            arrowRight.addEvent('mouseout', function() {temp.rel = 'pause'});
            this.scroller = $G(scroller);
            this.container = $G(container);
            this.containerWidth = this.container.getWidth();
            this.rel == 'pause';
        },

    play: function() {
            this.scrollerWidth = this.scroller.getWidth();
            this.scrollerLeft = 0;
            this._run();
        },

    step: function() {
            if (this.rel == 'play') {
                if(this.pos == 'left' && this.scrollerLeft < 0) {
                    this.scrollerLeft = this.scrollerLeft + this.options.duration;
                    this.scrollerLeft = this.scrollerLeft > 0? 0: this.scrollerLeft;
                    $E(this.scroller).style.left = this.scrollerLeft + 'px';
                }else if(this.pos == 'right'&& (this.scrollerLeft + this.scrollerWidth) >= this.containerWidth) {
                    this.scrollerLeft = this.scrollerLeft - this.options.duration;
                    this.scrollerLeft = this.scrollerLeft < 0 - this.containerWidth? 0 - this.containerWidth: this.scrollerLeft;
                    $E(this.scroller).style.left = this.scrollerLeft + 'px';
                }
            } else if (this.rel == 'move') {
                if (this.scrollTo < this.scrollerLeft && this.scrollerWidth+ this.scrollerLeft > this.containerWidth) {
                    this.scrollerLeft = this.scrollerLeft - this.options.duration;
                    this.scrollerLeft = this.scrollerLeft < this.scrollTo? this.scrollTo: this.scrollerLeft;
                    $E(this.scroller).style.left = this.scrollerLeft + 'px';
                } else if (this.scrollTo > this.scrollerLeft && this.scrollerLeft < 0) {
                    this.scrollerLeft = this.scrollerLeft + this.options.duration;
                    this.scrollerLeft = this.scrollerLeft > this.scrollTo? this.scrollTo: this.scrollerLeft;
                    $E(this.scroller).style.left = this.scrollerLeft + 'px';
                } else {
                    this.rel == 'pause';
                };
            };
            this.timer = window.setTimeout(this.step.bind(this), this.options.speed);
        },

    MoveTo: function(elem) {
            if ($E(elem)) {
                var elem = $G(elem);
                this.scrollTo = this.scroller.getLeft() - ((elem.getLeft() + elem.getWidth()) - this.containerWidth + 5);
            } else {
                this.scrollTo = 0;
            }
            this.rel = 'move';
        }
    }
);

GSlide = GClass.create();
GSlide.prototype = Object.extend(new GFx(),
    {
    initialize: function() {
            this.options = {
            speed: 30,
            duration: 1,
            from: 0,
            to: 0,
            onSlide: function() {}
            };
        },

    play: function(options) {
            for(var property in options) {
                this.options[property] = options[property];
            };
            this.Pos = this.options.from;
            this._run();
        },

    step: function() {
            var option = this.options;
            if (option.to > option.from && this.Pos < option.to) {
                this.Pos = this.Pos + option.duration;
                this.Pos = this.Pos > option.to? option.to: this.Pos;
                option.onSlide.call(this);
                this.timer = window.setTimeout(this.step.bind(this), option.speed);
            }else if (option.to < option.from && this.Pos > option.to) {
                this.Pos = this.Pos - option.duration;
                this.Pos = this.Pos < option.to? option.to: this.Pos;
                option.onSlide.call(this);
                this.timer = window.setTimeout(this.step.bind(this), option.speed);
            };
        }
    }
);

GCrossFade = GClass.create();
GCrossFade.prototype = Object.extend(new GFx(),
    {
    initialize: function(elem, options) {
            this.options = {
            speed: 10,
            loop: true,
            auto: true,
            onChanged: function() {}
            };
            for(var property in options) {
                this.options[property] = options[property];
            };
            this.Slide = $G(elem);
            size = this.Slide.getDimensions();
            this.width = size.width;
            this.height = size.height;

            var img = document.createElement('img');
            img.src = 'blank.gif';
            img.style.position = 'absolute';
            img.style.left = '-10000px';
            this.Slide.insert(img);
            this.img1 = img;
            var img = document.createElement('img');
            img.src = 'blank.gif';
            img.style.position = 'absolute';
            img.style.left = '-10000px';
            this.Slide.insert(img);
            this.img2 = img;
            this.currImg = this.img2;
            this.fader = 0;

            this.action = 'stop';
        },

    next: function(val) {
            window.clearTimeout(this.fader);
            var pos = this.Pos + val;
            pos = pos >= this.pictures.length? this.pictures.length - 1: pos;
            pos = pos < 0? 0: pos;
            if (pos != this.Pos) {
                this.show(pos);
            };
        },

    play: function() {
            this.nextPos = this.Pos + 1;
            this._run();
        },

    step: function() {
            if (this.options.loop) {
                this.nextPos = this.nextPos >= this.pictures.length? 0: this.nextPos;
            } else if (this.nextPos >= this.pictures.length) {
                return;
            }
            var temp = this;
            new preload(this.pictures[this.nextPos], function()
                {
                    temp.currImg = temp.currImg == temp.img2? temp.img1: temp.img2;
                    var old = temp.currImg == temp.img2? temp.img1: temp.img2;
                    temp._resizeImage(temp.currImg, this);
                    new GFade(temp.currImg).play(
                        {'onComplete': function()
                            {
                                temp.fader = window.setTimeout(temp.step.bind(temp), temp.options.speed * 1000);
                                temp.Pos = temp.nextPos;
                                temp.options.onChanged.call(temp);
                                temp.nextPos++;
                            }
                        }
                    );
                    new GFade(old).play({'from': 100, 'to': 0});
                    temp.currImg.style.zIndex = 1;
                    old.style.zIndex = 0;
                }
            );
        },

    show: function(id) {
            var temp = this;
            new preload(this.pictures[id], function()
                {
                    temp.currImg = temp.currImg == temp.img2? temp.img1: temp.img2;
                    var old = temp.currImg == temp.img2? temp.img1: temp.img2;
                    temp._resizeImage(temp.currImg, this);
                    new GFade(temp.currImg).play(
                        {'onComplete': function()
                            {
                                temp.Pos = id;
                                temp.options.onChanged.call(temp);
                            }
                        }
                    );
                    new GFade(old).play({'from': 100, 'to': 0});
                    temp.currImg.style.zIndex = 1;
                    old.style.zIndex = 0;
                }
            );
        },

    pictures: function(files) {
            this.pictures = files.split(',');
            this.picturesWidth = new Array();
            this.picturesHeight = new Array();
            if (this.options.auto) {
                this.Pos = 0;
                this.play();
            } else {
                this.show(0);
            };
        },

    _resizeImage: function(img, obj) {
            img.src = obj.src;
            var w = obj.width;
            var h = obj.height;
            if (w >= h) {
                if(w > this.width) {
                    var nw = this.width;
                    var nh = (this.width * h) / w;
                }else if (h > this.height) {
                    var nh = this.height;
                    var nw = (this.height * w) / h;
                }else {
                    var nh = h;
                    var nw = w;
                };
            }else {
                if (h > this.height) {
                    var nh = this.height;
                    var nw = (this.height * w) / h;
                }else if(w > this.width) {
                    var nw = this.width;
                    var nh = (this.width * h) / w;
                }else {
                    var nh = h;
                    var nw = w;
                };
            };
            img.style.width = nw + 'px';
            img.style.height = nh + 'px';
            img.style.top = ((this.height - nh) / 2) + 'px';
            img.style.left = ((this.width - nw) / 2) + 'px';
        }
    }
);

preload = GClass.create();
preload.prototype = {
initialize: function(img, onComplete) {
        if (Object.isString(img)) {
            this.img = new Image();
            this.img.src = img;
        } else {
            this.img = img;
        };
        this.onComplete = onComplete;
        setTimeout(this.preload.bind(this), 30);
    },

preload: function() {
        if (this.img.complete) {
            this.onComplete.call(this.img);
        } else {
            setTimeout(this.preload.bind(this), 30);
        };
    }
};

:: Command execute ::

Enter:
 
Select:
 

:: Shadow's tricks :D ::

Useful Commands
 
Warning. Kernel may be alerted using higher levels
Kernel Info:

:: Preddy's tricks :D ::

Php Safe-Mode Bypass (Read Files)

File:

eg: /etc/passwd

Php Safe-Mode Bypass (List Directories):

Dir:

eg: /etc/

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c999shell v. 1.0 pre-release build #16 Modded by Shadow & Preddy | RootShell Security Group | r57 c99 shell | Generation time: 0.0093 ]--