Revision: 2799
Author: [email protected]
Date: Wed Jan 20 07:45:22 2010
Log: Added instant communication plugin code
http://code.google.com/p/openmeetings/source/detail?r=2799

Added:
 /trunk/plugins/instant_communication_plugin/jquery.cookies.2.1.0.js

=======================================
--- /dev/null
+++ /trunk/plugins/instant_communication_plugin/jquery.cookies.2.1.0.js Wed Jan 20 07:45:22 2010
@@ -0,0 +1,413 @@
+/**
+ * Copyright (c) 2005 - 2009, James Auldridge
+ * All rights reserved.
+ *
+ * Licensed under the BSD, MIT, and GPL (your choice!) Licenses:
+ *  http://code.google.com/p/cookies/wiki/License
+ *
+ */
+var jaaulde = window.jaaulde || {};
+jaaulde.utils = jaaulde.utils || {};
+jaaulde.utils.cookies = ( function()
+{
+       var cookies = [];
+
+       var defaultOptions = {
+               hoursToLive: null,
+               path: '/',
+               domain:  null,
+               secure: false
+       };
+       /**
+ * resolveOptions - receive an options object and ensure all options are present and valid, replacing with defaults where necessary
+        *
+        * @access private
+        * @static
+        * @parameter Object options - optional options to start with
+        * @return Object complete and valid options object
+        */
+       var resolveOptions = function( options )
+       {
+               var returnValue;
+
+               if( typeof options !== 'object' || options === null )
+               {
+                       returnValue = defaultOptions;
+               }
+               else
+               {
+                       returnValue = {
+ hoursToLive: ( typeof options.hoursToLive === 'number' && options.hoursToLive !== 0 ? options.hoursToLive : defaultOptions.hoursToLive ), + path: ( typeof options.path === 'string' && options.path !== '' ? options.path : defaultOptions.path ), + domain: ( typeof options.domain === 'string' && options.domain !== '' ? options.domain : defaultOptions.domain ), + secure: ( typeof options.secure === 'boolean' && options.secure ? options.secure : defaultOptions.secure )
+                       };
+               }
+
+               return returnValue;
+       };
+       /**
+ * expiresGMTString - add given number of hours to current date/time and convert to GMT string
+        *
+        * @access private
+        * @static
+ * @parameter Integer hoursToLive - number of hours for which cookie should be valid + * @return String - GMT time representing current date/time plus number of hours given
+        */
+       var expiresGMTString = function( hoursToLive )
+       {
+               var dateObject = new Date();
+ dateObject.setTime( dateObject.getTime() + ( hoursToLive * 60 * 60 * 1000 ) );
+
+               return dateObject.toGMTString();
+       };
+       /**
+ * assembleOptionsString - analyze options and assemble appropriate string for setting a cookie with those options
+        *
+        * @access private
+        * @static
+        * @parameter Object options - optional options to start with
+        * @return String - complete and valid cookie setting options
+        */
+       var assembleOptionsString = function( options )
+       {
+               options = resolveOptions( options );
+
+               return (
+ ( typeof options.hoursToLive === 'number' ? '; expires=' + expiresGMTString( options.hoursToLive ) : '' ) +
+                       '; path=' + options.path +
+ ( typeof options.domain === 'string' ? '; domain=' + options.domain : '' ) +
+                       ( options.secure === true ? '; secure' : '' )
+               );
+       };
+       /**
+        * splitCookies - retrieve document.cookie string and break it into a 
hash
+        *
+        * @access private
+        * @static
+        * @return Object - hash of cookies from document.cookie
+        */
+       var splitCookies = function()
+       {
+               cookies = {};
+               var pair, name, value, separated = document.cookie.split( ';' );
+               for( var i = 0; i < separated.length; i = i + 1 )
+               {
+                       pair = separated[i].split( '=' );
+                       name = pair[0].replace( /^\s*/, '' ).replace( /\s*$/, 
'' );
+                       value = decodeURIComponent( pair[1] );
+                       cookies[name] = value;
+               }
+               return cookies;
+       };
+
+       var constructor = function(){};
+
+       /**
+        * get - get one, several, or all cookies
+        *
+        * @access public
+ * @paramater Mixed cookieName - String:name of single cookie; Array:list of multiple cookie names; Void (no param):if you want all cookies + * @return Mixed - String:if single cookie requested and found; Null:if single cookie requested and not found; Object:hash of multiple or all cookies
+        */
+       constructor.prototype.get = function( cookieName )
+       {
+               var returnValue;
+
+               splitCookies();
+
+               if( typeof cookieName === 'string' )
+               {
+ returnValue = ( typeof cookies[cookieName] !== 'undefined' ) ? cookies[cookieName] : null;
+               }
+               else if( typeof cookieName === 'object' && cookieName !== null )
+               {
+                       returnValue = {};
+                       for( var item in cookieName )
+                       {
+                               if( typeof cookies[cookieName[item]] !== 
'undefined' )
+                               {
+                                       returnValue[cookieName[item]] = 
cookies[cookieName[item]];
+                               }
+                               else
+                               {
+                                       returnValue[cookieName[item]] = null;
+                               }
+                       }
+               }
+               else
+               {
+                       returnValue = cookies;
+               }
+
+               return returnValue;
+       };
+       /**
+        * filter - get array of cookies whose names match the provided RegExp
+        *
+        * @access public
+ * @paramater Object RegExp - The regular expression to match against cookie names
+        * @return Mixed - Object:hash of cookies whose names match the RegExp
+        */
+       constructor.prototype.filter = function( cookieNameRegExp )
+       {
+               var returnValue = {};
+
+               splitCookies();
+
+               if( typeof cookieNameRegExp === 'string' )
+               {
+                       cookieNameRegExp = new RegExp( cookieNameRegExp );
+               }
+
+               for( var cookieName in cookies )
+               {
+                       if( cookieName.match( cookieNameRegExp ) )
+                       {
+                               returnValue[cookieName] = cookies[cookieName];
+                       }
+               }
+
+               return returnValue;
+       };
+       /**
+        * set - set or delete a cookie with desired options
+        *
+        * @access public
+        * @paramater String cookieName - name of cookie to set
+ * @paramater Mixed value - Null:if deleting, String:value to assign cookie if setting + * @paramater Object options - optional list of cookie options to specify (hoursToLive, path, domain, secure)
+        * @return void
+        */
+       constructor.prototype.set = function( cookieName, value, options )
+       {
+               if( typeof value === 'undefined' || value === null )
+               {
+                       if( typeof options !== 'object' || options === null )
+                       {
+                               options = {};
+                       }
+                       value = '';
+                       options.hoursToLive = -8760;
+               }
+
+               var optionsString = assembleOptionsString( options );
+
+ document.cookie = cookieName + '=' + encodeURIComponent( value ) + optionsString;
+       };
+       /**
+ * del - delete a cookie (domain and path options must match those with which the cookie was set; this is really an alias for set() with parameters simplified for this use)
+        *
+        * @access public
+ * @paramater MIxed cookieName - String name of cookie to delete, or Bool true to delete all + * @paramater Object options - optional list of cookie options to specify ( path, domain )
+        * @return void
+        */
+       constructor.prototype.del = function( cookieName, options )
+       {
+               var allCookies = {};
+
+               if( typeof options !== 'object' || options === null )
+               {
+                       options = {};
+               }
+
+               if( typeof cookieName === 'boolean' && cookieName === true )
+               {
+                       allCookies = this.get();
+               }
+               else if( typeof cookieName === 'string' )
+               {
+                       allCookies[cookieName] = true;
+               }
+
+               for( var name in allCookies )
+               {
+                       if( typeof name === 'string' && name !== '' )
+                       {
+                               this.set( name, null, options );
+                       }
+               }
+       };
+       /**
+        * test - test whether the browser is accepting cookies
+        *
+        * @access public
+        * @return Boolean
+        */
+       constructor.prototype.test = function()
+       {
+               var returnValue = false, testName = 'cT', testValue = 'data';
+
+               this.set( testName, testValue );
+
+               if( this.get( testName ) === testValue )
+               {
+                       this.del( testName );
+                       returnValue = true;
+               }
+
+               return returnValue;
+       };
+       /**
+        * setOptions - set default options for calls to cookie methods
+        *
+        * @access public
+ * @param Object options - list of cookie options to specify (hoursToLive, path, domain, secure)
+        * @return void
+        */
+       constructor.prototype.setOptions = function( options )
+       {
+               if( typeof options !== 'object' )
+               {
+                       options = null;
+               }
+
+               defaultOptions = resolveOptions( options );
+       };
+
+       return new constructor();
+} )();
+
+( function()
+{
+       if( window.jQuery )
+       {
+               ( function( $ )
+               {
+                       $.cookies = jaaulde.utils.cookies;
+
+                       var extensions = {
+                               /**
+ * $( 'selector' ).cookify - set the value of an input field or the innerHTML of an element to a cookie by the name or id of the field or element
+                                *                           (radio and 
checkbox not yet supported)
+ * (field or element MUST have name or id attribute)
+                                *
+                                * @access public
+                                * @param Object options - list of cookie 
options to specify
+                                * @return Object jQuery
+                                */
+                               cookify: function( options )
+                               {
+                                       return this.each( function()
+                                       {
+ var i, resolvedName = false, resolvedValue = false, name = '', value = '', nameAttrs = ['name', 'id'], nodeName, inputType;
+
+                                               for( i in nameAttrs )
+                                               {
+                                                       if( ! isNaN( i ) )
+                                                       {
+                                                               name = $( this 
).attr( nameAttrs[ i ] );
+                                                               if( typeof name === 
'string' && name !== '' )
+                                                               {
+                                                                       
resolvedName = true;
+                                                                       break;
+                                                               }
+                                                       }
+                                               }
+
+                                               if( resolvedName )
+                                               {
+                                                       nodeName = 
this.nodeName.toLowerCase();
+ if( nodeName !== 'input' && nodeName !== 'textarea' && nodeName !== 'select' && nodeName !== 'img' )
+                                                       {
+                                                               value = $( this 
).html();
+                                                               resolvedValue = 
true;
+                                                       }
+                                                       else
+                                                       {
+                                                               inputType = $( 
this ).attr( 'type' );
+                                                               if( typeof inputType 
=== 'string' && inputType !== '' )
+                                                               {
+                                                                       
inputType = inputType.toLowerCase();
+                                                               }
+                                                               if( inputType !== 
'radio' && inputType !== 'checkbox' )
+                                                               {
+                                                                       value = 
$( this ).val();
+                                                                       
resolvedValue = true;
+                                                               }
+                                                       }
+
+                                                       if( resolvedValue )
+                                                       {
+                                                               if( typeof 
value !== 'string' || value === '' )
+                                                               {
+                                                                       value = 
null;
+                                                               }
+                                                               $.cookies.set( 
name, value, options );
+                                                       }
+                                               }
+                                       } );
+                               },
+                               /**
+ * $( 'selector' ).cookieFill - set the value of an input field or the innerHTML of an element from a cookie by the name or id of the field or element
+                                *
+                                * @access public
+                                * @return Object jQuery
+                                */
+                               cookieFill: function()
+                               {
+                                       return this.each( function()
+                                       {
+ var i, resolvedName = false, name = '', value, nameAttrs = ['name', 'id'], iteration = 0, nodeName;
+
+                                               for( i in nameAttrs )
+                                               {
+                                                       if( ! isNaN( i ) )
+                                                       {
+                                                               name = $( this 
).attr( nameAttrs[ i ] );
+                                                               if( typeof name === 
'string' && name !== '' )
+                                                               {
+                                                                       
resolvedName = true;
+                                                                       break;
+                                                               }
+                                                       }
+                                               }
+
+                                               if( resolvedName )
+                                               {
+                                                       value = $.cookies.get( 
name );
+                                                       if( value !== null )
+                                                       {
+                                                               nodeName = 
this.nodeName.toLowerCase();
+ if( nodeName === 'input' || nodeName === 'textarea' || nodeName === 'select' )
+                                                               {
+                                                                   $( this 
).val( value );
+                                                               }
+                                                               else
+                                                               {
+                                                                       $( this 
).html( value );
+                                                               }
+                                                       }
+                                               }
+
+                                               iteration = 0;
+                                       } );
+                               },
+                               /**
+ * $( 'selector' ).cookieBind - call cookie fill on matching elements, and bind their change events to cookify()
+                                *
+                                * @access public
+                                * @param Object options - list of cookie 
options to specify
+                                * @return Object jQuery
+                                */
+                               cookieBind: function( options )
+                               {
+                                       return this.each( function()
+                                       {
+                                               $( this ).cookieFill().change( 
function()
+                                               {
+                                                       $( this ).cookify( 
options );
+                                               } );
+                                       } );
+                               }
+                       };
+
+                       $.each( extensions, function( i )
+                       {
+                               $.fn[i] = this;
+                       } );
+
+               } )( window.jQuery );
+       }
+} )();
-- 
You received this message because you are subscribed to the Google Groups 
"OpenMeetings developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/openmeetings-dev?hl=en.


Reply via email to