Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

/* Event Functions */

// Add an event to the obj given
// event_name refers to the event trigger, without the "on", like click or mouseover
// func_name refers to the function callback when event is triggered
function addEvent(obj,event_name,func_name){
        if (obj.attachEvent){
                obj.attachEvent("on"+event_name, func_name);
        }else if(obj.addEventListener){
                obj.addEventListener(event_name,func_name,true);
        }else{
                obj["on"+event_name] = func_name;
        }
}

// Removes an event from the object
function removeEvent(obj,event_name,func_name){
        if (obj.detachEvent){
                obj.detachEvent("on"+event_name,func_name);
        }else if(obj.removeEventListener){
                obj.removeEventListener(event_name,func_name,true);
        }else{
                obj["on"+event_name] = null;
        }
}

// Stop an event from bubbling up the event DOM
function stopEvent(evt){
        evt || window.event;
        if (evt.stopPropagation){
                evt.stopPropagation();
                evt.preventDefault();
        }else if(typeof evt.cancelBubble != "undefined"){
                evt.cancelBubble = true;
                evt.returnValue = false;
        }
        return false;
}

// Get the obj that starts the event
function getElement(evt){
        if (window.event){
                return window.event.srcElement;
        }else{
                return evt.currentTarget;
        }
}
// Get the obj that triggers off the event
function getTargetElement(evt){
        if (window.event){
                return window.event.srcElement;
        }else{
                return evt.target;
        }
}
// For IE only, stops the obj from being selected
function stopSelect(obj){
        if (typeof obj.onselectstart != 'undefined'){
                addEvent(obj,"selectstart",function(){ return false;});
        }
}

/*    Caret Functions     */

// Get the end position of the caret in the object. Note that the obj needs to be in focus first
function getCaretEnd(obj){
        if(typeof obj.selectionEnd != "undefined"){
                return obj.selectionEnd;
        }else if(document.selection&&document.selection.createRange){
                var M=document.selection.createRange();
                try{
                        var Lp = M.duplicate();
                        Lp.moveToElementText(obj);
                }catch(e){
                        var Lp=obj.createTextRange();
                }
                Lp.setEndPoint("EndToEnd",M);
                var rb=Lp.text.length;
                if(rb>obj.value.length){
                        return -1;
                }
                return rb;
        }
}
// Get the start position of the caret in the object
function getCaretStart(obj){
        if(typeof obj.selectionStart != "undefined"){
                return obj.selectionStart;
        }else if(document.selection&&document.selection.createRange){
                var M=document.selection.createRange();
                try{
                        var Lp = M.duplicate();
                        Lp.moveToElementText(obj);
                }catch(e){
                        var Lp=obj.createTextRange();
                }
                Lp.setEndPoint("EndToStart",M);
                var rb=Lp.text.length;
                if(rb>obj.value.length){
                        return -1;
                }
                return rb;
        }
}
// sets the caret position to l in the object
function setCaret(obj,l){
        obj.focus();
        if (obj.setSelectionRange){
                obj.setSelectionRange(l,l);
        }else if(obj.createTextRange){
                m = obj.createTextRange();              
                m.moveStart('character',l);
                m.collapse();
                m.select();
        }
}
// sets the caret selection from s to e in the object
function setSelection(obj,s,e){
        obj.focus();
        if (obj.setSelectionRange){
                obj.setSelectionRange(s,e);
        }else if(obj.createTextRange){
                m = obj.createTextRange();              
                m.moveStart('character',s);
                m.moveEnd('character',e);
                m.select();
        }
}

/*    Escape function   */
String.prototype.addslashes = function(){
        return this.replace(/(["\\\.\|\[\]\^\*\+\?\$\(\)])/g, '\\$1');
}
String.prototype.trim = function () {
    return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");
};
/* --- Escape --- */

/* Offset position from top of the screen */
function curTop(obj){
        toreturn = 0;
        while(obj){
                toreturn += obj.offsetTop;
                obj = obj.offsetParent;
        }
        return toreturn;
}
function curLeft(obj){
        toreturn = 0;
        while(obj){
                toreturn += obj.offsetLeft;
                obj = obj.offsetParent;
        }
        return toreturn;
}
/* ------ End of Offset function ------- */

/* Types Function */

// is a given input a number?
function isNumber(a) {
    return typeof a == 'number' && isFinite(a);
}

/* Object Functions */

function replaceHTML(obj,text){
        while(el = obj.childNodes[0]){
                obj.removeChild(el);
        };
        obj.appendChild(document.createTextNode(text));
}