1 /* ***** BEGIN LICENSE BLOCK *****
  2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3  *
  4  * The contents of this file are subject to the Mozilla Public License Version
  5  * 1.1 (the "License"); you may not use this file except in compliance with
  6  * the License. You may obtain a copy of the License at
  7  * http://www.mozilla.org/MPL/
  8  *
  9  * Software distributed under the License is distributed on an "AS IS" basis,
 10  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 11  * for the specific language governing rights and limitations under the
 12  * License.
 13  *
 14  * The Initial Developer of the Original Code is Fireinput Inc.
 15  *
 16  * Portions created by the Initial Developer are Copyright (C) 2007
 17  * the Initial Developer. All Rights Reserved.
 18  *
 19  * Contributor(s):
 20  *     Olly Ja <ollyja@gmail.com>
 21  *
 22  * Alternatively, the contents of this file may be used under the terms of
 23  * either the GNU General Public License Version 2 or later (the "GPL"), or
 24  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 25  * in which case the provisions of the GPL or the LGPL are applicable instead
 26  * of those above. If you wish to allow use of your version of this file only
 27  * under the terms of either the GPL or the LGPL, and not to allow others to
 28  * use your version of this file under the terms of the MPL, indicate your
 29  * decision by deleting the provisions above and replace them with the notice
 30  * and other provisions required by the GPL or the LGPL. If you do not delete
 31  * the provisions above, a recipient may use your version of this file under
 32  * the terms of any one of the MPL, the GPL or the LGPL.
 33  *
 34  * ***** END LICENSE BLOCK ***** 
 35  */
 36 
 37 function bind()
 38 {
 39     var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
 40     return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); }
 41 }
 42 
 43 this.bindFixed = function()
 44 {
 45     var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
 46     return function() { return fn.apply(object, args); } 
 47 };  
 48 
 49 function extend(d, s)
 50 {
 51    for (var property in s) {
 52      d[property] = s[property];
 53    }
 54    return d; 
 55 }
 56 
 57 
 58 function cloneArray(array, fn)
 59 {
 60     var newArray = [];
 61 
 62     var len = array.length; 
 63     if (fn)
 64        for (var i = 0; i < len; ++i)
 65           newArray[newArray.length] = fn(array[i]);
 66     else
 67        for (var i = 0; i < len; ++i)
 68           newArray[newArray.length] = array[i];
 69 
 70     return newArray;
 71 }
 72 
 73 function extendArray(array, array2)
 74 {
 75     var newArray = [];
 76     newArray.push.apply(newArray, array);
 77     newArray.push.apply(newArray, array2);
 78     return newArray;
 79 }
 80 
 81 function arrayInsert(array, index, other)
 82 {
 83     var len = other.length; 
 84     for (var i = 0; i < len; ++i)
 85        array.splice(i+index, 0, other[i]);
 86 
 87     return array;
 88 }
 89 
 90 function createCookie(name,value,days) 
 91 {
 92     if (days) {
 93        var date = new Date();
 94        date.setTime(date.getTime()+(days*24*60*60*1000));
 95        var expires = "; expires="+date.toGMTString();
 96     }
 97     else 
 98        var expires = "";
 99     document.cookie = name+"="+value+expires+"; path=/";
100 }
101 
102 function readCookie(name) 
103 {
104     var nameEQ = name + "=";
105     var ca = document.cookie.split(';');
106     for(var i=ca.length-1;i>=0;i--) {
107        var c = ca[i];
108        while (c.charAt(0)==' ') c = c.substring(1,c.length);
109        if (c.indexOf(nameEQ) == 0) 
110           return c.substring(nameEQ.length,c.length);
111     }
112     return null;
113 }


syntax highlighted by Code2HTML, v. 0.9.1