SitePoint Sponsor

User Tag List

Results 1 to 9 of 9

Threaded View

  1. #1
    Non-Member
    Join Date
    Aug 2005
    Posts
    56
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Javascript 2 files conflict

    2 javascript files conflict causing both scripts to "malfunction".

    ** Side Note** (I whittled it down to these 2 scripts out of around 8 after I deleted one and the other worked.)

    Anyway below are the 2 files

    Mootools:

    PHP Code:
    //Included scripts
    //moo.js / function.js / array.js / string.js / elements.js / fx.js / dom.js / fxpack.js / tips.js / ajax.js


    //mootools.js: moo javascript tools
    //by Valerio Proietti (http://mad4milk.net) MIT-style license.

    // CREDITS:

    //Class is slightly based on Base.js : http://dean.edwards.name/weblog/2006/03/base/
    //(c) 2006 Dean Edwards, License: http://creativecommons.org/licenses/LGPL/2.1/

    //Some functions are based on those found in prototype.js : http://prototype.conio.net/
    //(c) 2005 Sam Stephenson <sam@conio.net>, MIT-style license


    //moo.js : My Object Oriented javascript - has no dependancies

    var Class = function(properties){
    var 
    klass = function(){
    for (
    p in thisthis[p]._proto_ this;
    if (
    arguments[0] != 'noinit' && this.initialize) return this.initialize.apply(thisarguments);
    };
    klass.extend this.extend;
    klass.implement this.implement;
    klass.prototype properties;
    return 
    klass;
    };

    Class.empty = function(){};

    Class.
    create = function(properties){
    return new Class(
    properties);
    };

    Class.
    prototype = {
    extend: function(properties){
    var 
    prototype = new this('noinit');
    for (
    property in properties){
    var 
    previous prototype[property];
    var 
    current properties[property];
    if (
    previous && previous != currentcurrent previous.parentize(current) || current;
    prototype[property] = current;
    }
    return new Class(
    prototype);
    },

    implement: function(properties){
    for (
    property in propertiesthis.prototype[property] = properties[property];
    }
    }

    Object.extend = function(){
    var 
    args arguments;
    if (
    args[1]) args = [args[0], args[1]];
    else 
    args = [thisargs[0]];
    for (
    property in args[1]) args[0][property] = args[1][property];
    return 
    args[0];
    };

    Object.Native = function(){
    for (var 
    0arguments.lengthi++) arguments[i].extend = Class.prototype.implement;
    };

    new 
    Object.Native(Function, Array, String);

    Function.
    extend({
    parentize: function(current){
    var 
    previous this;
    return function(){
    this.parent previous;
    return 
    current.apply(thisarguments);
    };
    }
    });



    Function.
    extend({

    pass: function(argsbind){
    var 
    fn this;
    if (
    $type(args) != 'array'args = [args];
    return function(){
    fn.apply(bind || fn._proto_ || fnargs);
    };
    },

    bind: function(bind){
    var 
    fn this;
    return function(){
    return 
    fn.apply(bindarguments);
    };
    },

    bindAsEventListener: function(bind){
    var 
    fn this;
    return function(
    event){
    fn.call(bindevent || window.event);
    return 
    false;
    };
    },

    delay: function(msbind){
    return 
    setTimeout(this.bind(bind || this._proto_ || this), ms);
    },

    periodical: function(msbind){
    return 
    setInterval(this.bind(bind || this._proto_ || this), ms);
    }

    });

    function 
    $clear(timer){
    clearTimeout(timer);
    clearInterval(timer);
    return 
    null;
    };

    function 
    $type(objtypes){
    if (!
    obj) return false;
    var 
    type false;
    if (
    obj instanceof Function) type 'function';
    else if (
    obj.nodeName){
    if (
    obj.nodeType == && !/\S/.test(obj.nodeValue)) type 'textnode';
    else if (
    obj.nodeType == 1type 'element';
    }
    else if (
    obj instanceof Array) type 'array';
    else if (
    typeof obj == 'object'type 'object';
    else if (
    typeof obj == 'string'type 'string';
    else if (
    typeof obj == 'number' && isFinite(obj)) type 'number';
    return 
    type;
    };

    function 
    $check(objobjTrueobjFalse){
    if (
    obj) {
    if (
    objTrue && $type(objTrue) == 'function') return objTrue();
    else return 
    objTrue || obj;
    } else {
    if (
    objFalse && $type(objFalse) == 'function') return objFalse();
    return 
    objFalse || false;
    }
    };

    var 
    Chain = new Class({

    chain: function(fn){
    this.chains this.chains || [];
    this.chains.push(fn);
    return 
    this;
    },

    callChain: function(){
    if (
    this.chains && this.chains.lengththis.chains.splice(01)[0].delay(10this);
    }

    });



    if (!Array.
    prototype.forEach){
    Array.
    prototype.forEach = function(fnbind){
    for(var 
    0this.length i++) fn.call(bindthis[i], i);
    };
    }

    Array.
    extend({

    each: Array.prototype.forEach,

    copy: function(){
    var 
    nArray = [];
    for (var 
    0this.lengthi++) nArray.push(this[i]);
    return 
    nArray;
    },

    remove: function(item){
    for (var 
    0this.lengthi++){
    if (
    this[i] == itemthis.splice(i1);
    }
    return 
    this;
    },

    test: function(item){
    for (var 
    0this.lengthi++){
    if (
    this[i] == item) return true;
    };
    return 
    false;
    },

    extend: function(nArray){
    for (var 
    0nArray.lengthi++) this.push(nArray[i]);
    return 
    this;
    }

    });

    function 
    $A(array){
    return Array.
    prototype.copy.call(array);
    };



    String.extend({

    test: function(valueparams){
    return 
    this.match(new RegExp(valueparams));
    },

    camelCase: function(){
    return 
    this.replace(/-\D/gi, function(match){
    return 
    match.charAt(match.length 1).toUpperCase();
    });
    },

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

    trim: function(){
    return 
    this.replace(/^\s*|\s*$/g,'');
    },

    clean: function(){
    return 
    this.replace(/\s\s/g' ').trim();
    },

    rgbToHex: function(array){
    var 
    rgb this.test('^[rgba]{3,4}\\(([\\d]{0,3}),[\\s]*([\\d]{0,3}),[\\s]*([\\d]{0,3})\\)$');
    var 
    hex = [];
    for (var 
    1rgb.lengthi++) hex.push((rgb[i]-0).toString(16));
    var 
    hexText '#'+hex.join('');
    if (array) return 
    hex;
    else return 
    hexText;
    },

    hexToRgb: function(array){
    var 
    hex this.test('^[#]{0,1}([\\w]{1,2})([\\w]{1,2})([\\w]{1,2})$');
    var 
    rgb = [];
    for (var 
    1hex.lengthi++){
    if (
    hex[i].length == 1hex[i] += hex[i];
    rgb.push(parseInt(hex[i], 16));
    }
    var 
    rgbText 'rgb('+rgb.join(',')+')';
    if (array) return 
    rgb;
    else return 
    rgbText;
    }

    });



    var 
    Element = new Class({



    initialize: function(el){
    if (
    $type(el) == 'string'el document.createElement(el);
    return $(
    el);
    },



    inject: function(elwhere){
    var 
    el $check($(el), $(el), new Element(el));
    switch(
    where){
    case 
    "before": $(el.parentNode).insertBefore(thisel); break;
    case 
    "after": {
    if (!
    el.getNext()) $(el.parentNode).appendChild(this);
    else $(
    el.parentNode).insertBefore(thisel.getNext());
    } break;
    case 
    "inside"el.appendChild(this); break;
    }
    return 
    this;
    },

    injectBefore: function(el){
    return 
    this.inject(el'before');
    },

    injectAfter: function(el){
    return 
    this.inject(el'after');
    },

    injectInside: function(el){
    return 
    this.inject(el'inside');
    },

    adopt: function(el){
    var 
    el $check($(el), $(el), new Element(el));
    this.appendChild(el);
    return 
    this;
    },



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

    clone: function(){
    return $(
    this.cloneNode(true));
    },

    replaceWith: function(el){
    var 
    el $check($(el), $(el), new Element(el));
    this.parentNode.replaceChild(elthis);
    return 
    el;
    },

    appendText: function(text){
    if (
    this.getTag() == 'style' && window.ActiveXObjectthis.styleSheet.cssText text;
    else 
    this.appendChild(document.createTextNode(text));
    return 
    this;
    },



    hasClassName: function(className){
    return 
    $check(this.className.test("\\b"+className+"\\b"), true);
    },

    addClassName: function(className){
    if (!
    this.hasClassName(className)) this.className = (this.className+' '+className.trim()).clean();
    return 
    this;
    },

    removeClassName: function(className){
    if (
    this.hasClassName(className)) this.className this.className.replace(className.trim(), '').clean();
    return 
    this;
    },

    toggleClassName: function(className){
    if (
    this.hasClassName(className)) return this.removeClassName(className);
    else return 
    this.addClassName(className);
    },



    setStyle: function(propertyvalue){
    if (
    property == 'opacity'this.setOpacity(value);
    else 
    this.style[property.camelCase()] = value;
    return 
    this;
    },

    setStyles: function(source){
    if (
    $type(source) == 'object') {
    for (
    property in sourcethis.setStyle(propertysource[property]);
    } else if (
    $type(source) == 'string'this.setAttribute('style'source);
    return 
    this;
    },

    setOpacity: function(opacity){
    if (
    opacity == && this.style.visibility != "hidden"this.style.visibility "hidden";
    else if (
    this.style.visibility != "visible"this.style.visibility "visible";
    if (
    window.ActiveXObjectthis.style.filter "alpha(opacity=" opacity*100 ")";
    this.style.opacity opacity;
    return 
    this;
    },

    getStyle: function(propertynum){
    var 
    proPerty property.camelCase();
    var 
    style $check(this.style[proPerty]);
    if (!
    style) {
    if (
    document.defaultViewstyle document.defaultView.getComputedStyle(this,null).getPropertyValue(property);
    else if (
    this.currentStylestyle this.currentStyle[proPerty];
    }
    if (
    style && ['color''backgroundColor''borderColor'].test(proPerty) && style.test('rgb')) style style.rgbToHex();
    if ([
    'auto''transparent'].test(style)) style 0;
    if (
    num) return parseInt(style);
    else return 
    style;
    },

    removeStyles: function(){
    $A(arguments).each(function(property){
    this.style[property.camelCase()] = '';
    }, 
    this);
    return 
    this;
    },



    addEvent: function(actionfn){
    this[action+fn] = fn.bind(this);
    if (
    this.addEventListenerthis.addEventListener(actionfnfalse);
    else 
    this.attachEvent('on'+actionthis[action+fn]);
    var 
    el this;
    if (
    this != windowUnload.functions.push(function(){
    el.removeEvent(actionfn);
    el[action+fn] = null;
    });
    return 
    this;
    },

    removeEvent: function(actionfn){
    if (
    this.removeEventListenerthis.removeEventListener(actionfnfalse);
    else 
    this.detachEvent('on'+actionthis[action+fn]);
    return 
    this;
    },



    getBrother: function(what){
    var 
    el this[what+'Sibling'];
    while (
    $type(el) == 'textnode'el el[what+'Sibling'];
    return $(
    el);
    },

    getPrevious: function(){
    return 
    this.getBrother('previous');
    },

    getNext: function(){
    return 
    this.getBrother('next');
    },

    getFirst: function(){
    var 
    el this.firstChild;
    while (
    $type(el) == 'textnode'el el.nextSibling;
    return $(
    el);
    },



    setProperty: function(propertyvalue){
    var 
    el false;
    switch(
    property){
    case 
    'class'this.className value; break;
    case 
    'style'this.setStyles(value); break;
    case 
    'name': if (window.ActiveXObject && this.getTag() == 'input'){
    el = $(document.createElement('<input name="'+value+'" />'));
    $A(this.attributes).each(function(attribute){
    if (
    attribute.name != 'name'el.setProperty(attribute.nameattribute.value);

    });
    if (
    this.parentNodethis.replaceWith(el);
    };
    default: 
    this.setAttribute(propertyvalue);
    }
    return 
    el || this;
    },

    setProperties: function(source){
    for (
    property in sourcethis.setProperty(propertysource[property]);
    return 
    this;
    },

    setHTML: function(html){
    this.innerHTML html;
    return 
    this;
    },

    getProperty: function(property){
    return 
    this.getAttribute(property);
    },

    getTag: function(){
    return 
    this.tagName.toLowerCase();
    },



    getOffset: function(what){
    what what.capitalize();
    var 
    el this;
    var 
    offset 0;
    do {
    offset += el['offset'+what] || 0;
    el el.offsetParent;
    } while (
    el);
    return 
    offset;
    },

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

    getLeft: function(){
    return 
    this.getOffset('left');
    }

    });

    function 
    $Element(elmethodargs){
    if (
    $type(args) != 'array'args = [args];
    return 
    Element.prototype[method].apply(elargs);
    };

    new 
    Object.Native(Element);

    function $(
    el){
    if (
    $type(el) == 'string'el document.getElementById(el);
    if (
    $type(el) == 'element'){
    if (!
    el.extend){
    Unload.elements.push(el);
    el.extend Object.extend;
    el.extend(Element.prototype);
    }
    return 
    el;
    } else return 
    false;
    };



    window.addEvent Element.prototype.addEvent;
    window.removeEvent Element.prototype.removeEvent;

    var 
    Unload = {

    elements: [], functions: [], vars: [],

    unload: function(){
    Unload.functions.each(function(fn){
    fn();
    });

    window.removeEvent('unload'window.removeFunction);

    Unload.elements.each(function(el){
    for(
    p in Element.prototype){
    window[p] = null;
    document[p] = null;
    el[p] = null;
    }
    el.extend null;
    });
    }

    };
    window.removeFunction Unload.unload;
    window.addEvent('unload'window.removeFunction);



    var 
    Fx fx = {};

    Fx.Base = new Class({

    setOptions: function(options){
    this.options Object.extend({
    duration500,
    onComplete: Class.empty,
    onStart: Class.empty,
    unit'px',
    waittrue,
    transitionFx.sinoidal,
    fps30
    }, options || {});
    },

    step: function(){
    var 
    currentTime  = (new Date).getTime();
    if (
    currentTime >= this.options.duration+this.startTime){
    this.clearTimer();
    this.now this.to;
    this.options.onComplete.pass(this.elthis).delay(10);
    this.callChain();
    } else {
    this.tPos = (currentTime this.startTime) / this.options.duration;
    this.setNow();
    }
    this.increase();
    },

    setNow: function(){
    this.now this.compute(this.fromthis.to);
    },

    compute: function(fromto){
    return 
    this.options.transition(this.tPos) * (to-from) + from;
    },

    custom: function(fromto){
    if(!
    this.options.waitthis.clearTimer();
    if (
    this.timer) return;
    this.options.onStart.pass(this.elthis).delay(10);
    this.from from;
    this.to to;
    this.startTime = (new Date).getTime();
    this.timer this.step.periodical(Math.round(1000/this.options.fps), this);
    return 
    this;
    },

    set: function(to){
    this.now to;
    this.increase();
    return 
    this;
    },

    clearTimer: function(){
    this.timer $clear(this.timer);
    return 
    this;
    },

    setStyle: function(elpropertyvalue){
    if (
    property == 'opacity'){
    if (
    value == && navigator.userAgent.test('Firefox')) value 0.9999;
    el.setOpacity(value);
    } else 
    el.setStyle(propertyvalue+this.options.unit);
    }

    });

    Fx.Base.implement(new Chain);

    Fx.Style Fx.Base.extend({

    initialize: function(elpropertyoptions){
    this.el = $(el);
    this.setOptions(options);
    this.property property.camelCase();
    },

    hide: function(){
    return 
    this.set(0);
    },

    goTo: function(
    val){
    return 
    this.custom(this.now || 0val);
    },

    increase: function(){
    this.setStyle(this.elthis.propertythis.now);
    }

    });

    Fx.Layout Fx.Style.extend({

    initialize: function(ellayoutoptions){
    this.parent(ellayoutoptions);
    this.layout layout.capitalize();
    this.el.setStyle('overflow''hidden');
    },

    toggle: function(){
    if (
    this.el['offset'+this.layout] > 0) return this.custom(this.el['offset'+this.layout], 0);
    else return 
    this.custom(0this.el['scroll'+this.layout]);
    },

    show: function(){
    return 
    this.set(this.el['scroll'+this.layout]);
    }

    });

    Fx.Height Fx.Layout.extend({

    initialize: function(eloptions){
    this.parent(el'height'options);
    }

    });

    Fx.Width Fx.Layout.extend({

    initialize: function(eloptions){
    this.parent(el'width'options);
    }

    });

    Fx.Opacity Fx.Style.extend({

    initialize: function(eloptions){
    this.parent(el'opacity'options);
    this.now 1;
    },

    toggle: function(){
    if (
    this.now 0) return this.custom(10);
    else return 
    this.custom(01);
    },

    show: function(){
    this.set(1);
    }

    });

    Element.extend({

    effect: function(propertyoptions){
    return new 
    Fx.Style(thispropertyoptions);
    }

    });

    Fx.sinoidal = function(pos){return ((-Math.cos(pos*Math.PI)/2) + 0.5);}; //this transition is from script.aculo.us

    Fx.linear = function(pos){return pos;};

    Fx.cubic = function(pos){return Math.pow(pos3);};

    Fx.circ = function(pos){return Math.sqrt(pos);};

    //SuperDom.js - depends on Moo.js + Native Scripts

    function $S(){
    var 
    els = [];
    $A(arguments).each(function(sel){
    if (
    $type(sel) == 'string'els.extend(document.getElementsBySelector(sel));
    else if (
    $type(sel) == 'element'els.push($(sel));
    });
    return $$(
    els);
    };

    function 
    $E(selectorfilter){
    return ($(
    filter) || document).getElement(selector);
    };

    function $$(
    elements){
    return 
    Object.extend(elements, new Elements);
    };

    Element.extend({

    getElements: function(selector){
    var 
    filters = [];
    selector.clean().split(' ').each(function(seli){
    var 
    bits = [];
    var 
    param = [];
    var 
    attr = [];
    if (
    bits sel.test('^([\\w]*)')) param['tag'] = bits[1] || '*';
    if (
    bits sel.test('([.#]{1})([\\w-]*)$')){
    if (
    bits[1] == '.'param['class'] = bits[2];
    else 
    param['id'] = bits[2];
    }
    if (
    bits sel.test('\\[["\'\\s]{0,1}([\\w-]*)["\'\\s]{0,1}([\\W]{0,1}=){0,2}["\'\\s]{0,1}([\\w-]*)["\'\\s]{0,1}\\]$')){
    attr['name'] = bits[1];
    attr['operator'] = bits[2];
    attr['value'] = bits[3];
    }
    if (
    == 0){
    if (
    param['id']){
    var 
    el this.getElementById(param['id']);
    if (
    el && (param['tag'] == '*' || $(el).getTag() == param['tag'])) filters = [el];
    else return 
    false;
    } else {
    filters $A(this.getElementsByTagName(param['tag']));
    }
    } else {
    filters = $$(filters).filterByTagName(param['tag']);
    if (
    param['id']) filters = $$(filters).filterById(param['id']);
    }
    if (
    param['class']) filters = $$(filters).filterByClassName(param['class']);
    if (
    attr['name']) filters = $$(filters).filterByAttribute(attr['name'], attr['value'], attr['operator']);

    }, 
    this);
    filters.each(function(el){
    $(
    el);
    });
    return $$(
    filters);
    },

    getElement: function(selector){
    return 
    this.getElementsBySelector(selector)[0];
    },

    getElementsBySelector: function(selector){
    var 
    els = [];
    selector.split(',').each(function(sel){
    els.extend(this.getElements(sel));
    }, 
    this);
    return $$(
    els);
    }

    });

    document.extend Object.extend;

    document.extend({

    getElementsByClassName: function(className){
    return 
    document.getElements('.'+className);
    },
    getElementElement.prototype.getElement,
    getElementsElement.prototype.getElements,
    getElementsBySelectorElement.prototype.getElementsBySelector

    });

    var 
    Elements = new Class({

    action: function(actions){
    this.each(function(el){
    el = $(el);
    if (
    actions.initializeactions.initialize.apply(el);
    for(
    action in actions){
    var 
    evt false;
    if (
    action.test('^on[\\w]{1,}')) el[action] = actions[action];
    else if (
    evt action.test('([\\w-]{1,})event$')) el.addEvent(evt[1], actions[action]);
    }
    });
    },

    filterById: function(id){
    var 
    found = [];
    this.each(function(el){
    if (
    el.id == idfound.push(el);
    });
    return 
    found;
    },

    filterByClassName: function(className){
    var 
    found = [];
    this.each(function(el){
    if (
    $Element(el'hasClassName'className)) found.push(el);
    });
    return 
    found;
    },

    filterByTagName: function(tagName){
    var 
    found = [];
    this.each(function(el){
    found.extend($A(el.getElementsByTagName(tagName)));
    });
    return 
    found;
    },

    filterByAttribute: function(namevalueoperator){
    var 
    found = [];
    this.each(function(el){
    var 
    att el.getAttribute(name);
    if(!
    att) return;
    if (!
    operator) return found.push(el);

    switch(
    operator){
    case 
    '*=': if (att.test(value)) found.push(el); break;
    case 
    '=': if (att == valuefound.push(el); break;
    case 
    '^=': if (att.test('^'+value)) found.push(el); break;
    case 
    '$=': if (att.test(value+'$')) found.push(el);
    }

    });
    return 
    found;
    }

    });

    new 
    Object.Native(Elements);



    Fx.Styles Fx.Base.extend({

    initialize: function(eloptions){
    this.el = $(el);
    this.setOptions(options);
    this.now = {};
    },

    setNow: function(){
    for (
    p in this.fromthis.now[p] = this.compute(this.from[p], this.to[p]);
    },

    custom: function(objFromTo){
    var 
    from = {};
    var 
    to = {};
    for (
    p in objFromTo){
    from[p] = objFromTo[p][0];
    to[p] = objFromTo[p][1];
    }
    return 
    this.parent(fromto);
    },

    resizeTo: function(htowto){
    return 
    this.custom({'height': [this.el.offsetHeighthto], 'width': [this.el.offsetWidthwto]});
    },

    resizeBy: function(hbywby){
    return 
    this.custom({'height': [this.el.offsetHeightthis.el.offsetHeight+hby], 'width': [this.el.offsetWidththis.el.offsetWidth+wby]});
    },

    increase: function(){
    for (
    p in this.nowthis.setStyle(this.elpthis.now[p]);
    }

    });



    Fx.Color Fx.Base.extend({

    initialize: function(elpropertyoptions){
    this.el = $(el);
    this.setOptions(options);
    this.property property.camelCase();
    this.now = [];
    },

    custom: function(fromto){
    return 
    this.parent(from.hexToRgb(true), to.hexToRgb(true));
    },

    setNow: function(){
    [
    0,1,2].each(function(i){
    this.now[i] = Math.round(this.compute(this.from[i], this.to[i]));
    }, 
    this);
    },

    increase: function(){
    this.el.setStyle(this.property"rgb("+this.now[0]+","+this.now[1]+","+this.now[2]+")");
    },

    fromColor: function(color){
    return 
    this.custom(colorthis.el.getStyle(this.property));
    },

    toColor: function(color){
    return 
    this.custom(this.el.getStyle(this.property), color);
    }

    });

    Element.extend({

    effects: function(options){
    return new 
    Fx.Styles(thisoptions);
    }

    });



    Fx.expoIn = function(pos){return Math.pow(210 * (pos 1))};
    Fx.expoOut = function(pos){return (-Math.pow(2, -10 pos) + 1)};

    Fx.quadIn = function(pos){return Math.pow(pos2)};
    Fx.quadOut = function(pos){return -(pos)*(pos-2)};

    Fx.circOut = function(pos){return Math.sqrt(Math.pow(pos-1,2))};
    Fx.circIn = function(pos){return -(Math.sqrt(Math.pow(pos2)) - 1)};

    Fx.backIn = function(pos){return (pos)*pos*((2.7)*pos 1.7)};
    Fx.backOut = function(pos){return ((pos-1)*(pos-1)*((2.7)*(pos-1) + 1.7) + 1)};

    Fx.sineOut = function(pos){return Math.sin(pos * (Math.PI/2))};
    Fx.sineIn = function(pos){return -Math.cos(pos * (Math.PI/2)) + 1};
    Fx.sineInOut = function(pos){return -(Math.cos(Math.PI*pos) - 1)/2};


    Fx.wobble = function(pos){return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5};
    Fx.pulse = function(pos){return (Math.floor(pos*10) &#37; 2 == 0 ? (pos*10-Math.floor(pos*10)) : 1-(pos*10-Math.floor(pos*10)))};


    var Tips = new Class({

    setOptions: function(options){
    this.options = {
    transitionStartfx.sinoidal,
    transitionEndfx.sinoidal,
    maxTitleChars30,
    fxDuration150,
    maxOpacity1,
    timeOut100,
    className'tooltip'
    }
    Object.extend(this.optionsoptions || {});
    },

    initialize: function(elementsoptions){
    this.elements elements;
    this.setOptions(options);
    this.toolTip = new Element('div').addClassName(this.options.className).setStyle('position''absolute').injectInside(document.body);

    this.toolText = new Element('p').injectInside(this.toolTip);
    this.fx = new fx.Style(this.toolTip'opacity', {durationthis.options.fxDurationwaitfalse}).hide();
    $A(elements).each(function(el){
    if(
    el.title){
    $(
    el).myText $check(el.title);
    if (
    el.myTextel.removeAttribute('title');
    if (
    el.href){
    if (
    el.href.test('http://')) el.myTitle el.href.replace('http://''');
    if (
    el.href.length this.options.maxTitleCharsel.myTitle el.href.substr(0,this.options.maxTitleChars-3)+"...";
    }
    if (
    el.myText && el.myText.test('::')){
    var 
    dual el.myText.split('::');
    el.myTitle dual[0].trim();
    el.myText dual[1].trim();
    }

    el.oldMouseover= (el.onmouseover el.onmouseover:null);
    el.oldMouseout= (el.onmouseout el.onmouseout:null);

    el.onmouseover = function(){
    this.show(el);
    el.oldMouseover el.oldMouseover():null;
    return 
    false;
    }.
    bind(this);
    el.onmousemove this.locate.bindAsEventListener(this);
    el.onmouseout = function(){
    el.oldMouseout el.oldMouseout():null;
    this.timer $clear(this.timer);
    this.disappear();
    }.
    bind(this);
    }
    }, 
    this);
    },

    show: function(el){

    this.toolText.innerHTML el.myText;
    this.timer $clear(this.timer);
    this.fx.options.transition this.options.transitionStart;
    this.timer this.appear.delay(this.options.timeOutthis);
    },

    appear: function(){
    this.fx.custom(this.fx.nowthis.options.maxOpacity);
    },

    locate: function(evt){
    var 
    doc document.documentElement;
    this.toolTip.setStyles({'top'evt.clientY doc.scrollTop 15 'px''left'evt.clientX doc.scrollLeft 30 'px'});
    },

    disappear: function(){
    this.fx.options.transition this.options.transitionEnd;
    this.fx.custom(this.fx.now0);
    }

    });



    var 
    Ajax ajax = new Class({

    setOptions: function(options){
    this.options = {
    method'post',
    postBody'',
    asynctrue,
    onComplete: Class.empty,
    updatenull,
    evalScriptsfalse
    };
    Object.extend(this.optionsoptions || {});
    },

    initialize: function(urloptions){
    this.setOptions(options);
    this.url url;
    this.transport this.getTransport();
    },

    request: function(){
    this.transport.open(this.options.methodthis.urlthis.options.async);
    this.transport.onreadystatechange this.onStateChange.bind(this);
    if (
    this.options.method == 'post'){
    this.transport.setRequestHeader('Content-type''application/x-www-form-urlencoded');
    if (
    this.transport.overrideMimeTypethis.transport.setRequestHeader('Connection''close');
    }
    switch(
    $type(this.options.postBody)){
    case 
    'element'this.options.postBody = $(this.options.postBody).toQueryString(); break;
    case 
    'object'this.options.postBody Object.toQueryString(this.options.postBody);
    }
    if(
    $type(this.options.postBody) == 'string'this.transport.send(this.options.postBody);
    else 
    this.transport.send();
    return 
    this;
    },

    onStateChange: function(){
    if (
    this.transport.readyState == && this.transport.status == 200){
    if (
    this.options.update) $(this.options.update).setHTML(this.transport.responseText);
    this.options.onComplete.pass([this.transport.responseTextthis.transport.responseXML], this).delay(20);
    if (
    this.options.evalScriptsthis.evalScripts.delay(30this);
    this.transport.onreadystatechange = Class.empty;
    this.callChain();
    }
    },

    evalScripts: function(){
    if(
    scripts this.transport.responseText.match(/<script[^>]*?>.*?<\/script>/g)){
    scripts.each(function(script){
    eval(script.replace(/^<script[^>]*?>/, '').replace(/<\/script>$/, ''));
    });
    }
    },

    getTransport: function(){
    if (window.XMLHttpRequest) return new XMLHttpRequest();
    else if (window.ActiveXObject) return new ActiveXObject('Microsoft.XMLHTTP');
    }

    });

    Ajax.implement(new Chain);

    Object.toQueryString = function(source){
    var queryString = [];
    for (property in source) queryString.push(encodeURIComponent(property)+'='+encodeURIComponent(source[property]));
    return queryString.join('&');
    };

    Element.extend({

    send: function(options){
    options = Object.extend(options, {postBody: this.toQueryString(), method: 'post'});
    return new Ajax(this.getProperty('action'), options).request();
    },

    toQueryString: function(){
    var queryString = [];
    $A(this.getElementsByTagName('*')).each(function(el){
    $(el);
    var name = $check(el.name);
    if (!name) return;
    var value = false;
    switch(el.getTag()){
    case 'select': value = el.getElementsByTagName('option')[el.selectedIndex].value; break;
    case 'input': if ( (el.checked && ['checkbox', 'radio'].test(el.type)) || (['hidden', 'text', 'password'].test(el.type)) ) 
    value = el.value; break;
    case 'textarea': value = el.value;
    }
    if (value) queryString.push(encodeURIComponent(name)+'='+encodeURIComponent(value));
    });
    return queryString.join('&');
    }

    }); 
    Last edited by r937; Mar 12, 2007 at 07:11. Reason: offers of payment are not permitted outside the Looking To Hire forum


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •