svn commit: r509273 [27/50] - in /ofbiz/trunk/framework/images/webapp/images: ./ dojo/ dojo/src/ dojo/src/animation/ dojo/src/cal/ dojo/src/charting/ dojo/src/charting/svg/ dojo/src/charting/vml/ dojo/src/collections/ dojo/src/crypto/ dojo/src/data/ do...

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r509273 [27/50] - in /ofbiz/trunk/framework/images/webapp/images: ./ dojo/ dojo/src/ dojo/src/animation/ dojo/src/cal/ dojo/src/charting/ dojo/src/charting/svg/ dojo/src/charting/vml/ dojo/src/collections/ dojo/src/crypto/ dojo/src/data/ do...

jaz-3
Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/profile.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/profile.js
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/profile.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/regexp.js
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/regexp.js?view=auto&rev=509273
==============================================================================
--- ofbiz/trunk/framework/images/webapp/images/dojo/src/regexp.js (added)
+++ ofbiz/trunk/framework/images/webapp/images/dojo/src/regexp.js Mon Feb 19 09:56:06 2007
@@ -0,0 +1,577 @@
+/*
+ Copyright (c) 2004-2006, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/community/licensing.shtml
+*/
+
+dojo.provide("dojo.regexp");
+dojo.evalObjPath("dojo.regexp.us", true); // this file also defines stuff in the dojo.regexp.us module (TODO: move to separate file?)
+
+// *** Regular Expression Generators ***
+
+dojo.regexp.tld = function(/*Object?*/flags){
+ // summary: Builds a RE that matches a top-level domain
+ //
+ // flags:
+ //    flags.allowCC  Include 2 letter country code domains.  Default is true.
+ //    flags.allowGeneric  Include the generic domains.  Default is true.
+ //    flags.allowInfra  Include infrastructure domains.  Default is true.
+
+ // assign default values to missing paramters
+ flags = (typeof flags == "object") ? flags : {};
+ if(typeof flags.allowCC != "boolean"){ flags.allowCC = true; }
+ if(typeof flags.allowInfra != "boolean"){ flags.allowInfra = true; }
+ if(typeof flags.allowGeneric != "boolean"){ flags.allowGeneric = true; }
+
+ // Infrastructure top-level domain - only one at present
+ var infraRE = "arpa";
+
+ // Generic top-level domains RE.
+ var genericRE =
+ "aero|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|xxx|jobs|mobi|post";
+
+ // Country Code top-level domains RE
+ var ccRE =
+ "ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|" +
+ "bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|" +
+ "ec|ee|eg|er|eu|es|et|fi|fj|fk|fm|fo|fr|ga|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|"
+ +
+ "gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kr|kw|ky|kz|" +
+ "la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|" +
+ "my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|" +
+ "re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sk|sl|sm|sn|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|" +
+ "tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw";
+
+ // Build top-level domain RE
+ var a = [];
+ if(flags.allowInfra){ a.push(infraRE); }
+ if(flags.allowGeneric){ a.push(genericRE); }
+ if(flags.allowCC){ a.push(ccRE); }
+
+ var tldRE = "";
+ if (a.length > 0) {
+ tldRE = "(" + a.join("|") + ")";
+ }
+
+ return tldRE; // String
+}
+
+dojo.regexp.ipAddress = function(/*Object?*/flags){
+ // summary: Builds a RE that matches an IP Address
+ //
+ // description:
+ //  Supports 5 formats for IPv4: dotted decimal, dotted hex, dotted octal, decimal and hexadecimal.
+ //  Supports 2 formats for Ipv6.
+ //
+ // flags  An object.  All flags are boolean with default = true.
+ //    flags.allowDottedDecimal  Example, 207.142.131.235.  No zero padding.
+ //    flags.allowDottedHex  Example, 0x18.0x11.0x9b.0x28.  Case insensitive.  Zero padding allowed.
+ //    flags.allowDottedOctal  Example, 0030.0021.0233.0050.  Zero padding allowed.
+ //    flags.allowDecimal  Example, 3482223595.  A decimal number between 0-4294967295.
+ //    flags.allowHex  Example, 0xCF8E83EB.  Hexadecimal number between 0x0-0xFFFFFFFF.
+ //      Case insensitive.  Zero padding allowed.
+ //    flags.allowIPv6   IPv6 address written as eight groups of four hexadecimal digits.
+ //    flags.allowHybrid   IPv6 address written as six groups of four hexadecimal digits
+ //      followed by the usual 4 dotted decimal digit notation of IPv4. x:x:x:x:x:x:d.d.d.d
+
+ // assign default values to missing paramters
+ flags = (typeof flags == "object") ? flags : {};
+ if(typeof flags.allowDottedDecimal != "boolean"){ flags.allowDottedDecimal = true; }
+ if(typeof flags.allowDottedHex != "boolean"){ flags.allowDottedHex = true; }
+ if(typeof flags.allowDottedOctal != "boolean"){ flags.allowDottedOctal = true; }
+ if(typeof flags.allowDecimal != "boolean"){ flags.allowDecimal = true; }
+ if(typeof flags.allowHex != "boolean"){ flags.allowHex = true; }
+ if(typeof flags.allowIPv6 != "boolean"){ flags.allowIPv6 = true; }
+ if(typeof flags.allowHybrid != "boolean"){ flags.allowHybrid = true; }
+
+ // decimal-dotted IP address RE.
+ var dottedDecimalRE =
+ // Each number is between 0-255.  Zero padding is not allowed.
+ "((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])";
+
+ // dotted hex IP address RE.  Each number is between 0x0-0xff.  Zero padding is allowed, e.g. 0x00.
+ var dottedHexRE = "(0[xX]0*[\\da-fA-F]?[\\da-fA-F]\\.){3}0[xX]0*[\\da-fA-F]?[\\da-fA-F]";
+
+ // dotted octal IP address RE.  Each number is between 0000-0377.  
+ // Zero padding is allowed, but each number must have at least 4 characters.
+ var dottedOctalRE = "(0+[0-3][0-7][0-7]\\.){3}0+[0-3][0-7][0-7]";
+
+ // decimal IP address RE.  A decimal number between 0-4294967295.  
+ var decimalRE =  "(0|[1-9]\\d{0,8}|[1-3]\\d{9}|4[01]\\d{8}|42[0-8]\\d{7}|429[0-3]\\d{6}|" +
+ "4294[0-8]\\d{5}|42949[0-5]\\d{4}|429496[0-6]\\d{3}|4294967[01]\\d{2}|42949672[0-8]\\d|429496729[0-5])";
+
+ // hexadecimal IP address RE.
+ // A hexadecimal number between 0x0-0xFFFFFFFF. Case insensitive.  Zero padding is allowed.
+ var hexRE = "0[xX]0*[\\da-fA-F]{1,8}";
+
+ // IPv6 address RE.
+ // The format is written as eight groups of four hexadecimal digits, x:x:x:x:x:x:x:x,
+ // where x is between 0000-ffff. Zero padding is optional. Case insensitive.
+ var ipv6RE = "([\\da-fA-F]{1,4}\\:){7}[\\da-fA-F]{1,4}";
+
+ // IPv6/IPv4 Hybrid address RE.
+ // The format is written as six groups of four hexadecimal digits,
+ // followed by the 4 dotted decimal IPv4 format. x:x:x:x:x:x:d.d.d.d
+ var hybridRE = "([\\da-fA-F]{1,4}\\:){6}" +
+ "((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])";
+
+ // Build IP Address RE
+ var a = [];
+ if(flags.allowDottedDecimal){ a.push(dottedDecimalRE); }
+ if(flags.allowDottedHex){ a.push(dottedHexRE); }
+ if(flags.allowDottedOctal){ a.push(dottedOctalRE); }
+ if(flags.allowDecimal){ a.push(decimalRE); }
+ if(flags.allowHex){ a.push(hexRE); }
+ if(flags.allowIPv6){ a.push(ipv6RE); }
+ if(flags.allowHybrid){ a.push(hybridRE); }
+
+ var ipAddressRE = "";
+ if(a.length > 0){
+ ipAddressRE = "(" + a.join("|") + ")";
+ }
+
+ return ipAddressRE; // String
+}
+
+dojo.regexp.host = function(/*Object?*/flags){
+ // summary: Builds a RE that matches a host
+ // description: A host is a domain name or an IP address, possibly followed by a port number.
+ // flags: An object.
+ //    flags.allowIP  Allow an IP address for hostname.  Default is true.
+ //    flags.allowLocal  Allow the host to be "localhost".  Default is false.
+ //    flags.allowPort  Allow a port number to be present.  Default is true.
+ //    flags in regexp.ipAddress can be applied.
+ //    flags in regexp.tld can be applied.
+
+ // assign default values to missing paramters
+ flags = (typeof flags == "object") ? flags : {};
+ if(typeof flags.allowIP != "boolean"){ flags.allowIP = true; }
+ if(typeof flags.allowLocal != "boolean"){ flags.allowLocal = false; }
+ if(typeof flags.allowPort != "boolean"){ flags.allowPort = true; }
+
+ // Domain names can not end with a dash.
+ var domainNameRE = "([0-9a-zA-Z]([-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?\\.)+" + dojo.regexp.tld(flags);
+
+ // port number RE
+ var portRE = ( flags.allowPort ) ? "(\\:" + dojo.regexp.integer({signed: false}) + ")?" : "";
+
+ // build host RE
+ var hostNameRE = domainNameRE;
+ if(flags.allowIP){ hostNameRE += "|" +  dojo.regexp.ipAddress(flags); }
+ if(flags.allowLocal){ hostNameRE += "|localhost"; }
+
+ return "(" + hostNameRE + ")" + portRE; // String
+}
+
+dojo.regexp.url = function(/*Object?*/flags){
+ // summary: Builds a regular expression that matches a URL
+ //
+ // flags: An object
+ //    flags.scheme  Can be true, false, or [true, false].
+ //      This means: required, not allowed, or match either one.
+ //    flags in regexp.host can be applied.
+ //    flags in regexp.ipAddress can be applied.
+ //    flags in regexp.tld can be applied.
+
+ // assign default values to missing paramters
+ flags = (typeof flags == "object") ? flags : {};
+ if(typeof flags.scheme == "undefined"){ flags.scheme = [true, false]; }
+
+ // Scheme RE
+ var protocolRE = dojo.regexp.buildGroupRE(flags.scheme,
+ function(q){ if(q){ return "(https?|ftps?)\\://"; } return ""; }
+ );
+
+ // Path and query and anchor RE
+ var pathRE = "(/([^?#\\s/]+/)*)?([^?#\\s/]+(\\?[^?#\\s/]*)?(#[A-Za-z][\\w.:-]*)?)?";
+
+ return protocolRE + dojo.regexp.host(flags) + pathRE;
+}
+
+
+dojo.regexp.emailAddress = function(/*Object?*/flags){
+ // summary: Builds a regular expression that matches an email address
+ //
+ //flags: An object
+ //    flags.allowCruft  Allow address like <mailto:[hidden email]>.  Default is false.
+ //    flags in regexp.host can be applied.
+ //    flags in regexp.ipAddress can be applied.
+ //    flags in regexp.tld can be applied.
+
+ // assign default values to missing paramters
+ flags = (typeof flags == "object") ? flags : {};
+ if (typeof flags.allowCruft != "boolean") { flags.allowCruft = false; }
+ flags.allowPort = false; // invalid in email addresses
+
+ // user name RE - apostrophes are valid if there's not 2 in a row
+ var usernameRE = "([\\da-z]+[-._+&'])*[\\da-z]+";
+
+ // build emailAddress RE
+ var emailAddressRE = usernameRE + "@" + dojo.regexp.host(flags);
+
+ // Allow email addresses with cruft
+ if ( flags.allowCruft ) {
+ emailAddressRE = "<?(mailto\\:)?" + emailAddressRE + ">?";
+ }
+
+ return emailAddressRE; // String
+}
+
+dojo.regexp.emailAddressList = function(/*Object?*/flags){
+ // summary: Builds a regular expression that matches a list of email addresses.
+ //
+ // flags: An object.
+ //    flags.listSeparator  The character used to separate email addresses.  Default is ";", ",", "\n" or " ".
+ //    flags in regexp.emailAddress can be applied.
+ //    flags in regexp.host can be applied.
+ //    flags in regexp.ipAddress can be applied.
+ //    flags in regexp.tld can be applied.
+
+ // assign default values to missing paramters
+ flags = (typeof flags == "object") ? flags : {};
+ if(typeof flags.listSeparator != "string"){ flags.listSeparator = "\\s;,"; }
+
+ // build a RE for an Email Address List
+ var emailAddressRE = dojo.regexp.emailAddress(flags);
+ var emailAddressListRE = "(" + emailAddressRE + "\\s*[" + flags.listSeparator + "]\\s*)*" +
+ emailAddressRE + "\\s*[" + flags.listSeparator + "]?\\s*";
+
+ return emailAddressListRE; // String
+}
+
+dojo.regexp.integer = function(/*Object?*/flags){
+ // summary: Builds a regular expression that matches an integer
+ //
+ // flags: An object
+ //    flags.signed  The leading plus-or-minus sign.  Can be true, false, or [true, false].
+ //      Default is [true, false], (i.e. will match if it is signed or unsigned).
+ //    flags.separator  The character used as the thousands separator.  Default is no separator.
+ //      For more than one symbol use an array, e.g. [",", ""], makes ',' optional.
+ // flags.groupSize group size between separators
+ // flags.groupSize2 second grouping (for India)
+
+ // assign default values to missing paramters
+ flags = (typeof flags == "object") ? flags : {};
+ if(typeof flags.signed == "undefined"){ flags.signed = [true, false]; }
+ if(typeof flags.separator == "undefined"){
+ flags.separator = "";
+ } else if(typeof flags.groupSize == "undefined"){
+ flags.groupSize = 3;
+ }
+ // build sign RE
+ var signRE = dojo.regexp.buildGroupRE(flags.signed,
+ function(q) { return q ? "[-+]" : ""; }
+ );
+
+ // number RE
+ var numberRE = dojo.regexp.buildGroupRE(flags.separator,
+ function(sep){
+ if(sep == ""){
+ return "(0|[1-9]\\d*)";
+ }
+ var grp = flags.groupSize, grp2 = flags.groupSize2;
+ if(typeof grp2 != "undefined"){
+ var grp2RE = "(0|[1-9]\\d{0," + (grp2-1) + "}([" + sep + "]\\d{" + grp2 + "})*[" + sep + "]\\d{" + grp + "})";
+ return ((grp-grp2) > 0) ? "(" + grp2RE + "|(0|[1-9]\\d{0," + (grp-1) + "}))" : grp2RE;
+ }
+ return  "(0|[1-9]\\d{0," + (grp-1) + "}([" + sep + "]\\d{" + grp + "})*)";
+ }
+ );
+
+ // integer RE
+ return signRE + numberRE; // String
+}
+
+dojo.regexp.realNumber = function(/*Object?*/flags){
+ // summary: Builds a regular expression to match a real number in exponential notation
+ //
+ // flags:An object
+ //    flags.places  The integer number of decimal places.
+ //      If not given, the decimal part is optional and the number of places is unlimited.
+ //    flags.decimal  A string for the character used as the decimal point.  Default is ".".
+ //    flags.fractional  Whether decimal places are allowed.
+ //      Can be true, false, or [true, false].  Default is [true, false]
+ //    flags.exponent  Express in exponential notation.  Can be true, false, or [true, false].
+ //      Default is [true, false], (i.e. will match if the exponential part is present are not).
+ //    flags.eSigned  The leading plus-or-minus sign on the exponent.  Can be true, false,
+ //      or [true, false].  Default is [true, false], (i.e. will match if it is signed or unsigned).
+ //    flags in regexp.integer can be applied.
+
+ // assign default values to missing paramters
+ flags = (typeof flags == "object") ? flags : {};
+ if(typeof flags.places != "number"){ flags.places = Infinity; }
+ if(typeof flags.decimal != "string"){ flags.decimal = "."; }
+ if(typeof flags.fractional == "undefined"){ flags.fractional = [true, false]; }
+ if(typeof flags.exponent == "undefined"){ flags.exponent = [true, false]; }
+ if(typeof flags.eSigned == "undefined"){ flags.eSigned = [true, false]; }
+
+ // integer RE
+ var integerRE = dojo.regexp.integer(flags);
+
+ // decimal RE
+ var decimalRE = dojo.regexp.buildGroupRE(flags.fractional,
+ function(q){
+ var re = "";
+ if(q && (flags.places > 0)){
+ re = "\\" + flags.decimal;
+ if(flags.places == Infinity){
+ re = "(" + re + "\\d+)?";
+ }else{
+ re = re + "\\d{" + flags.places + "}";
+ }
+ }
+
+ return re;
+ }
+ );
+
+ // exponent RE
+ var exponentRE = dojo.regexp.buildGroupRE(flags.exponent,
+ function(q){
+ if(q){ return "([eE]" + dojo.regexp.integer({ signed: flags.eSigned}) + ")"; }
+ return "";
+ }
+ );
+
+ // real number RE
+ return integerRE + decimalRE + exponentRE; // String
+}
+
+dojo.regexp.currency = function(/*Object?*/flags){
+ // summary: Builds a regular expression to match a monetary value
+ //
+ // flags: An object
+ //    flags.symbol  A currency symbol such as Yen "�", Pound "�", or the Euro sign "�".  
+ //      Default is "$".  For more than one symbol use an array, e.g. ["$", ""], makes $ optional.
+ //    flags.placement  The symbol can come "before" the number or "after" the number.  Default is "before".
+ //    flags.signPlacement  The sign can come "before" the number or "after" the sign,
+ //      "around" to put parentheses around negative values, or "end" for the final char.  Default is "before".
+ //    flags.cents  deprecated, in favor of flags.fractional
+ //    flags in regexp.realNumber can be applied except exponent, eSigned.
+
+ // assign default values to missing paramters
+ flags = (typeof flags == "object") ? flags : {};
+ if(typeof flags.signed == "undefined"){ flags.signed = [true, false]; }
+ if(typeof flags.symbol == "undefined"){ flags.symbol = "$"; }
+ if(typeof flags.placement != "string"){ flags.placement = "before"; }
+ if(typeof flags.signPlacement != "string"){ flags.signPlacement = "before"; }
+ if(typeof flags.separator == "undefined"){ flags.separator = ","; }
+ if(typeof flags.fractional == "undefined" && typeof flags.cents != "undefined"){
+ dojo.deprecated("dojo.regexp.currency: flags.cents", "use flags.fractional instead", "0.5");
+ flags.fractional = flags.cents;
+ }
+ if(typeof flags.decimal != "string"){ flags.decimal = "."; }
+
+ // build sign RE
+ var signRE = dojo.regexp.buildGroupRE(flags.signed,
+ function(q){ if (q){ return "[-+]"; } return ""; }
+ );
+
+ // build symbol RE
+ var symbolRE = dojo.regexp.buildGroupRE(flags.symbol,
+ function(symbol){
+ // escape all special characters
+ return "\\s?" + symbol.replace( /([.$?*!=:|\\\/^])/g, "\\$1") + "\\s?";
+ }
+ );
+
+ switch (flags.signPlacement){
+ case "before":
+ symbolRE = signRE + symbolRE;
+ break;
+ case "after":
+ symbolRE = symbolRE + signRE;
+ break;
+ }
+
+ // number RE
+ var flagsCopy = flags; //TODO: copy by value?
+ flagsCopy.signed = false; flagsCopy.exponent = false;
+ var numberRE = dojo.regexp.realNumber(flagsCopy);
+
+ // build currency RE
+ var currencyRE;
+ switch (flags.placement){
+ case "before":
+ currencyRE = symbolRE + numberRE;
+ break;
+ case "after":
+ currencyRE = numberRE + symbolRE;
+ break;
+ }
+
+ switch (flags.signPlacement){
+ case "around":
+ currencyRE = "(" + currencyRE + "|" + "\\(" + currencyRE + "\\)" + ")";
+ break;
+ case "begin":
+ currencyRE = signRE + currencyRE;
+ break;
+ case "end":
+ currencyRE = currencyRE + signRE;
+ break;
+ }
+ return currencyRE; // String
+}
+
+
+dojo.regexp.us.state = function(/*Object?*/flags){
+ // summary: A regular expression to match US state and territory abbreviations
+ //
+ // flags  An object.
+ //    flags.allowTerritories  Allow Guam, Puerto Rico, etc.  Default is true.
+ //    flags.allowMilitary  Allow military 'states', e.g. Armed Forces Europe (AE).  Default is true.
+
+ // assign default values to missing paramters
+ flags = (typeof flags == "object") ? flags : {};
+ if(typeof flags.allowTerritories != "boolean"){ flags.allowTerritories = true; }
+ if(typeof flags.allowMilitary != "boolean"){ flags.allowMilitary = true; }
+
+ // state RE
+ var statesRE =
+ "AL|AK|AZ|AR|CA|CO|CT|DE|DC|FL|GA|HI|ID|IL|IN|IA|KS|KY|LA|ME|MD|MA|MI|MN|MS|MO|MT|" +
+ "NE|NV|NH|NJ|NM|NY|NC|ND|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VT|VA|WA|WV|WI|WY";
+
+ // territories RE
+ var territoriesRE = "AS|FM|GU|MH|MP|PW|PR|VI";
+
+ // military states RE
+ var militaryRE = "AA|AE|AP";
+
+ // Build states and territories RE
+ if(flags.allowTerritories){ statesRE += "|" + territoriesRE; }
+ if(flags.allowMilitary){ statesRE += "|" + militaryRE; }
+
+ return "(" + statesRE + ")"; // String
+}
+
+dojo.regexp.time = function(/*Object?*/flags){
+ // summary: Builds a regular expression to match any International format for time
+ // description: The RE can match one format or one of multiple formats.
+ //
+ //  Format
+ //  h        12 hour, no zero padding.
+ //  hh       12 hour, has leading zero.
+ //  H        24 hour, no zero padding.
+ //  HH       24 hour, has leading zero.
+ //  m        minutes, no zero padding.
+ //  mm       minutes, has leading zero.
+ //  s        seconds, no zero padding.
+ //  ss       seconds, has leading zero.
+ //  t        am or pm, case insensitive.
+ //  All other characters must appear literally in the expression.
+ //
+ //  Example
+ //    "h:m:s t"  ->   2:5:33 PM
+ //    "HH:mm:ss" ->  14:05:33
+ //
+ // flags: An object
+ //    flags.format  A string or an array of strings.  Default is "h:mm:ss t".
+ //    flags.amSymbol  The symbol used for AM.  Default is "AM".
+ //    flags.pmSymbol  The symbol used for PM.  Default is "PM".
+
+ dojo.deprecated("dojo.regexp.time", "Use dojo.date.parse instead", "0.5");
+
+ // assign default values to missing paramters
+ flags = (typeof flags == "object") ? flags : {};
+ if(typeof flags.format == "undefined"){ flags.format = "h:mm:ss t"; }
+ if(typeof flags.amSymbol != "string"){ flags.amSymbol = "AM"; }
+ if(typeof flags.pmSymbol != "string"){ flags.pmSymbol = "PM"; }
+
+ // Converts a time format to a RE
+ var timeRE = function(format){
+ // escape all special characters
+ format = format.replace( /([.$?*!=:|{}\(\)\[\]\\\/^])/g, "\\$1");
+ var amRE = flags.amSymbol.replace( /([.$?*!=:|{}\(\)\[\]\\\/^])/g, "\\$1");
+ var pmRE = flags.pmSymbol.replace( /([.$?*!=:|{}\(\)\[\]\\\/^])/g, "\\$1");
+
+ // replace tokens with Regular Expressions
+ format = format.replace("hh", "(0[1-9]|1[0-2])");
+ format = format.replace("h", "([1-9]|1[0-2])");
+ format = format.replace("HH", "([01][0-9]|2[0-3])");
+ format = format.replace("H", "([0-9]|1[0-9]|2[0-3])");
+ format = format.replace("mm", "([0-5][0-9])");
+ format = format.replace("m", "([1-5][0-9]|[0-9])");
+ format = format.replace("ss", "([0-5][0-9])");
+ format = format.replace("s", "([1-5][0-9]|[0-9])");
+ format = format.replace("t", "\\s?(" + amRE + "|" + pmRE + ")\\s?" );
+
+ return format; // String
+ };
+
+ // build RE for multiple time formats
+ return dojo.regexp.buildGroupRE(flags.format, timeRE); // String
+}
+
+dojo.regexp.numberFormat = function(/*Object?*/flags){
+ // summary: Builds a regular expression to match any sort of number based format
+ // description:
+ //  Use this method for phone numbers, social security numbers, zip-codes, etc.
+ //  The RE can match one format or one of multiple formats.
+ //
+ //  Format
+ //    #        Stands for a digit, 0-9.
+ //    ?        Stands for an optional digit, 0-9 or nothing.
+ //    All other characters must appear literally in the expression.
+ //
+ //  Example  
+ //    "(###) ###-####"       ->   (510) 542-9742
+ //    "(###) ###-#### x#???" ->   (510) 542-9742 x153
+ //    "###-##-####"          ->   506-82-1089       i.e. social security number
+ //    "#####-####"           ->   98225-1649        i.e. zip code
+ //
+ // flags:  An object
+ //    flags.format  A string or an Array of strings for multiple formats.
+
+ // assign default values to missing paramters
+ flags = (typeof flags == "object") ? flags : {};
+ if(typeof flags.format == "undefined"){ flags.format = "###-###-####"; }
+
+ // Converts a number format to RE.
+ var digitRE = function(format){
+ // escape all special characters, except '?'
+ format = format.replace( /([.$*!=:|{}\(\)\[\]\\\/^])/g, "\\$1");
+
+ // Now replace '?' with Regular Expression
+ format = format.replace(/\?/g, "\\d?");
+
+ // replace # with Regular Expression
+ format = format.replace(/#/g, "\\d");
+
+ return format; // String
+ };
+
+ // build RE for multiple number formats
+ return dojo.regexp.buildGroupRE(flags.format, digitRE); //String
+}
+
+
+dojo.regexp.buildGroupRE = function(/*value or Array of values*/a, /*Function(x) returns a regular expression as a String*/re){
+ // summary: Builds a regular expression that groups subexpressions
+ // description: A utility function used by some of the RE generators.
+ //  The subexpressions are constructed by the function, re, in the second parameter.
+ //  re builds one subexpression for each elem in the array a, in the first parameter.
+ //  Returns a string for a regular expression that groups all the subexpressions.
+ //
+ // a:  A single value or an array of values.
+ // re:  A function.  Takes one parameter and converts it to a regular expression.
+
+ // case 1: a is a single value.
+ if(!(a instanceof Array)){
+ return re(a); // String
+ }
+
+ // case 2: a is an array
+ var b = [];
+ for (var i = 0; i < a.length; i++){
+ // convert each elem to a RE
+ b.push(re(a[i]));
+ }
+
+ // join the REs as alternatives in a RE group.
+ return "(" + b.join("|") + ")"; // String
+}

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/regexp.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/regexp.js
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/regexp.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/Deferred.js
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/Deferred.js?view=auto&rev=509273
==============================================================================
--- ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/Deferred.js (added)
+++ ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/Deferred.js Mon Feb 19 09:56:06 2007
@@ -0,0 +1,16 @@
+/*
+ Copyright (c) 2004-2006, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/community/licensing.shtml
+*/
+
+dojo.provide("dojo.rpc.Deferred");
+dojo.require("dojo.Deferred");
+
+dojo.deprecated("dojo.rpc.Deferred", "replaced by dojo.Deferred", "0.6");
+dojo.rpc.Deferred = dojo.Deferred;
+dojo.rpc.Deferred.prototype = dojo.Deferred.prototype;

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/Deferred.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/Deferred.js
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/Deferred.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/JotService.js
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/JotService.js?view=auto&rev=509273
==============================================================================
--- ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/JotService.js (added)
+++ ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/JotService.js Mon Feb 19 09:56:06 2007
@@ -0,0 +1,43 @@
+/*
+ Copyright (c) 2004-2006, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/community/licensing.shtml
+*/
+
+dojo.provide("dojo.rpc.JotService");
+dojo.require("dojo.rpc.RpcService"); dojo.require("dojo.rpc.JsonService"); dojo.require("dojo.json"); dojo.rpc.JotService = function(){
+ this.serviceUrl = "/_/jsonrpc";
+}
+
+dojo.inherits(dojo.rpc.JotService, dojo.rpc.JsonService);
+
+dojo.lang.extend(dojo.rpc.JotService, {
+ bind: function(method, parameters, deferredRequestHandler, url){
+ //summary
+ //Jot bind method. Takes remote method, parameters, deferred,
+ //and a url, calls createRequest to make a Jot RPC envelope and
+ //passes that off with bind.  
+ dojo.io.bind({
+ url: url||this.serviceUrl,
+ content: {
+ json: this.createRequest(method, parameters)
+ },
+ method: "POST",
+ mimetype: "text/json",
+ load: this.resultCallback(deferredRequestHandler),
+ error: this.errorCallback(deferredRequestHandler),
+ preventCache: true
+ });
+ },
+
+ createRequest: function(method, params){
+ //summary
+ //create the json portion of the Jot request
+ var req = { "params": params, "method": method, "id": this.lastSubmissionId++ };
+ return dojo.json.serialize(req);
+ }
+});

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/JotService.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/JotService.js
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/JotService.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/JsonService.js
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/JsonService.js?view=auto&rev=509273
==============================================================================
--- ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/JsonService.js (added)
+++ ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/JsonService.js Mon Feb 19 09:56:06 2007
@@ -0,0 +1,119 @@
+/*
+ Copyright (c) 2004-2006, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/community/licensing.shtml
+*/
+
+dojo.provide("dojo.rpc.JsonService");
+dojo.require("dojo.rpc.RpcService");
+dojo.require("dojo.io.*");
+dojo.require("dojo.json");
+dojo.require("dojo.lang.common");
+
+dojo.rpc.JsonService = function(args){
+ // passing just the URL isn't terribly useful. It's expected that at
+ // various times folks will want to specify:
+ // - just the serviceUrl (for use w/ remoteCall())
+ // - the text of the SMD to evaluate
+ // - a raw SMD object
+ // - the SMD URL
+ if(args){
+ if(dojo.lang.isString(args)){
+ // we assume it's an SMD file to be processed, since this was the
+ // earlier function signature
+
+ // FIXME: also accept dojo.uri.Uri objects?
+ this.connect(args);
+ }else{
+ // otherwise we assume it's an arguments object with the following
+ // (optional) properties:
+ // - serviceUrl
+ // - strictArgChecks
+ // - smdUrl
+ // - smdStr
+ // - smdObj
+ if(args["smdUrl"]){
+ this.connect(args.smdUrl);
+ }
+ if(args["smdStr"]){
+ this.processSmd(dj_eval("("+args.smdStr+")"));
+ }
+ if(args["smdObj"]){
+ this.processSmd(args.smdObj);
+ }
+ if(args["serviceUrl"]){
+ this.serviceUrl = args.serviceUrl;
+ }
+ if(typeof args["strictArgChecks"] != "undefined"){
+ this.strictArgChecks = args.strictArgChecks;
+ }
+ }
+ }
+}
+
+dojo.inherits(dojo.rpc.JsonService, dojo.rpc.RpcService);
+
+dojo.extend(dojo.rpc.JsonService, {
+
+ bustCache: false,
+
+ contentType: "application/json-rpc",
+
+ lastSubmissionId: 0,
+
+ callRemote: function(method, params){
+ //summary
+ // call an arbitrary remote method without requiring it
+ // to be predefined with SMD
+ var deferred = new dojo.Deferred();
+ this.bind(method, params, deferred);
+ return deferred;
+ },
+
+ bind: function(method, parameters, deferredRequestHandler, url){
+ //summary
+ //JSON-RPC bind method. Takes remote method, parameters, deferred,
+ //and a url, calls createRequest to make a JSON-RPC envelope and
+ //passes that off with bind.
+
+ dojo.io.bind({
+ url: url||this.serviceUrl,
+ postContent: this.createRequest(method, parameters),
+ method: "POST",
+ contentType: this.contentType,
+ mimetype: "text/json",
+ load: this.resultCallback(deferredRequestHandler),
+ error: this.errorCallback(deferredRequestHandler),
+ preventCache:this.bustCache
+ });
+ },
+
+ createRequest: function(method, params){
+ //summary
+ //create a JSON-RPC envelope for the request
+ var req = { "params": params, "method": method, "id": ++this.lastSubmissionId };
+ var data = dojo.json.serialize(req);
+ dojo.debug("JsonService: JSON-RPC Request: " + data);
+ return data;
+ },
+
+ parseResults: function(obj){
+ //summary
+ //parse the result envelope and pass the results back to
+ // to the callback function
+ if(!obj){ return; }
+ if (obj["Result"]!=null){
+ return obj["Result"];
+ }else if(obj["result"]!=null){
+ return obj["result"];
+ }else if(obj["ResultSet"]){
+ return obj["ResultSet"];
+ }else{
+ return obj;
+ }
+ }
+});

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/JsonService.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/JsonService.js
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/JsonService.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/RpcService.js
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/RpcService.js?view=auto&rev=509273
==============================================================================
--- ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/RpcService.js (added)
+++ ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/RpcService.js Mon Feb 19 09:56:06 2007
@@ -0,0 +1,122 @@
+/*
+ Copyright (c) 2004-2006, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/community/licensing.shtml
+*/
+
+dojo.provide("dojo.rpc.RpcService");
+dojo.require("dojo.io.*");
+dojo.require("dojo.json");
+dojo.require("dojo.lang.func");
+dojo.require("dojo.Deferred");
+
+dojo.rpc.RpcService = function(url){
+ // summary
+ // constructor for rpc base class
+ if(url){
+ this.connect(url);
+ }
+}
+
+dojo.lang.extend(dojo.rpc.RpcService, {
+
+ strictArgChecks: true,
+ serviceUrl: "",
+
+ parseResults: function(obj){
+ // summary
+ // parse the results coming back from an rpc request.  
+   // this base implementation, just returns the full object
+ // subclasses should parse and only return the actual results
+ return obj;
+ },
+
+ errorCallback: function(/* dojo.Deferred */ deferredRequestHandler){
+ // summary
+ // create callback that calls the Deferres errback method
+ return function(type, e){
+ deferredRequestHandler.errback(new Error(e.message));
+ }
+ },
+
+ resultCallback: function(/* dojo.Deferred */ deferredRequestHandler){
+ // summary
+ // create callback that calls the Deferred's callback method
+ var tf = dojo.lang.hitch(this,
+ function(type, obj, e){
+ if (obj["error"]!=null) {
+ var err = new Error(obj.error);
+ err.id = obj.id;
+ deferredRequestHandler.errback(err);
+ } else {
+ var results = this.parseResults(obj);
+ deferredRequestHandler.callback(results);
+ }
+ }
+ );
+ return tf;
+ },
+
+
+ generateMethod: function(/*string*/ method, /*array*/ parameters, /*string*/ url){
+ // summary
+ // generate the local bind methods for the remote object
+ return dojo.lang.hitch(this, function(){
+ var deferredRequestHandler = new dojo.Deferred();
+
+ // if params weren't specified, then we can assume it's varargs
+ if( (this.strictArgChecks) &&
+ (parameters != null) &&
+ (arguments.length != parameters.length)
+ ){
+ // put error stuff here, no enough params
+ dojo.raise("Invalid number of parameters for remote method.");
+ } else {
+ this.bind(method, arguments, deferredRequestHandler, url);
+ }
+
+ return deferredRequestHandler;
+ });
+ },
+
+ processSmd: function(/*json*/ object){
+ // summary
+ // callback method for reciept of a smd object.  Parse the smd and
+ // generate functions based on the description
+ dojo.debug("RpcService: Processing returned SMD.");
+ if(object.methods){
+ dojo.lang.forEach(object.methods, function(m){
+ if(m && m["name"]){
+ dojo.debug("RpcService: Creating Method: this.", m.name, "()");
+ this[m.name] = this.generateMethod( m.name,
+ m.parameters,
+ m["url"]||m["serviceUrl"]||m["serviceURL"]);
+ if(dojo.lang.isFunction(this[m.name])){
+ dojo.debug("RpcService: Successfully created", m.name, "()");
+ }else{
+ dojo.debug("RpcService: Failed to create", m.name, "()");
+ }
+ }
+ }, this);
+ }
+
+ this.serviceUrl = object.serviceUrl||object.serviceURL;
+ dojo.debug("RpcService: Dojo RpcService is ready for use.");
+ },
+
+ connect: function(/*String*/ smdUrl){
+ // summary
+ // connect to a remote url and retrieve a smd object
+ dojo.debug("RpcService: Attempting to load SMD document from:", smdUrl);
+ dojo.io.bind({
+ url: smdUrl,
+ mimetype: "text/json",
+ load: dojo.lang.hitch(this, function(type, object, e){ return this.processSmd(object); }),
+ sync: true
+ });
+ }
+});

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/RpcService.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/RpcService.js
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/RpcService.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/YahooService.js
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/YahooService.js?view=auto&rev=509273
==============================================================================
--- ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/YahooService.js (added)
+++ ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/YahooService.js Mon Feb 19 09:56:06 2007
@@ -0,0 +1,59 @@
+/*
+ Copyright (c) 2004-2006, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/community/licensing.shtml
+*/
+
+dojo.provide("dojo.rpc.YahooService");
+dojo.require("dojo.rpc.RpcService");
+dojo.require("dojo.rpc.JsonService");
+dojo.require("dojo.json");
+dojo.require("dojo.uri.*");
+dojo.require("dojo.io.ScriptSrcIO");
+
+dojo.rpc.YahooService = function(appId){
+ this.appId = appId;
+ if(!appId){
+ this.appId = "dojotoolkit";
+ dojo.debug( "please initialize the YahooService class with your own",
+ "application ID. Using the default may cause problems during",
+ "deployment of your application");
+ }
+ this.connect(dojo.uri.dojoUri("src/rpc/yahoo.smd"));
+ this.strictArgChecks = false;
+}
+
+dojo.inherits(dojo.rpc.YahooService, dojo.rpc.JsonService);
+
+dojo.lang.extend(dojo.rpc.YahooService, {
+ strictArgChecks: false,
+
+ bind: function(method, parameters, deferredRequestHandler, url){
+ //summary
+ //Yahoo RPC bind method. Takes remote method, parameters, deferred,
+ //and a url and sends of a ScriptSrcIO request to connect to Yahoo
+ //services crossplatform
+ var params = parameters;
+ if( (dojo.lang.isArrayLike(parameters))&&
+ (parameters.length == 1)){
+ params = parameters[0];
+ }
+ params.output = "json";
+ params.appid= this.appId;
+ dojo.io.bind({
+ url: url||this.serviceUrl,
+ transport: "ScriptSrcTransport",
+ // FIXME: need to get content interpolation fixed
+ content: params,
+ jsonParamName: "callback",
+ mimetype: "text/json",
+ load: this.resultCallback(deferredRequestHandler),
+ error: this.errorCallback(deferredRequestHandler),
+ preventCache: true
+ });
+ }
+});

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/YahooService.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/YahooService.js
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/YahooService.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/__package__.js
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/__package__.js?view=auto&rev=509273
==============================================================================
--- ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/__package__.js (added)
+++ ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/__package__.js Mon Feb 19 09:56:06 2007
@@ -0,0 +1,14 @@
+/*
+ Copyright (c) 2004-2006, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/community/licensing.shtml
+*/
+
+dojo.kwCompoundRequire({
+ common: [["dojo.rpc.JsonService", false, false]]
+});
+dojo.provide("dojo.rpc.*");

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/__package__.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/__package__.js
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/__package__.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/yahoo.smd
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/yahoo.smd?view=auto&rev=509273
==============================================================================
--- ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/yahoo.smd (added)
+++ ofbiz/trunk/framework/images/webapp/images/dojo/src/rpc/yahoo.smd Mon Feb 19 09:56:06 2007
@@ -0,0 +1,289 @@
+{
+ "SMDVersion":".1",
+ "objectName":"yahoo",
+ "serviceType":"JSON-P",
+ "methods":[
+ //
+ // MAPS
+ //
+ {
+ // http://developer.yahoo.com/maps/rest/V1/mapImage.html
+ "name":"mapImage",
+ "serviceURL": "http://api.local.yahoo.com/MapsService/V1/mapImage",
+ "parameters":[
+ { "name":"street", "type":"STRING" },
+ { "name":"city", "type":"STRING" },
+ { "name":"zip", "type":"INTEGER" },
+ { "name":"location", "type":"STRING" },
+ { "name":"longitude", "type":"FLOAT" },
+ { "name":"latitude", "type":"FLOAT" },
+ { "name":"image_type", "type":"STRING" },
+ { "name":"image_width", "type":"INTEGER" },
+ { "name":"image_height", "type":"INTEGER" },
+ { "name":"zoom", "type":"INTEGER" },
+ { "name":"radius", "type":"INTEGER" }
+ ]
+ },
+ {
+ // http://developer.yahoo.com/traffic/rest/V1/index.html
+ "name":"trafficData",
+ "serviceURL": "http://api.local.yahoo.com/MapsService/V1/trafficData",
+ "parameters":[
+ { "name":"street", "type":"STRING" },
+ { "name":"city", "type":"STRING" },
+ { "name":"zip", "type":"INTEGER" },
+ { "name":"location", "type":"STRING" },
+ { "name":"longitude", "type":"FLOAT" },
+ { "name":"latitude", "type":"FLOAT" },
+ { "name":"severity", "type":"INTEGER" },
+ { "name":"include_map", "type":"INTEGER" },
+ { "name":"image_type", "type":"STRING" },
+ { "name":"image_width", "type":"INTEGER" },
+ { "name":"image_height", "type":"INTEGER" },
+ { "name":"zoom", "type":"INTEGER" },
+ { "name":"radius", "type":"INTEGER" }
+ ]
+ },
+ /*
+ // Yahoo's geocoding service is f'd for JSON and Y! advises that it
+ // may not be returning
+ {
+ // http://developer.yahoo.com/maps/rest/V1/geocode.html
+ "name":"geocode",
+ "serviceURL": "http://api.local.yahoo.com/MapsService/V1/geocode",
+ "parameters":[
+ { "name":"street", "type":"STRING" },
+ { "name":"city", "type":"STRING" },
+ { "name":"zip", "type":"INTEGER" },
+ { "name":"location", "type":"STRING" }
+ ]
+ },
+ */
+ //
+ // LOCAL SEARCH
+ //
+ {
+ // http://developer.yahoo.com/search/local/V3/localSearch.html
+ "name":"localSearch",
+ "serviceURL": "http://api.local.yahoo.com/LocalSearchService/V3/localSearch",
+ "parameters":[
+ { "name":"street", "type":"STRING" },
+ { "name":"city", "type":"STRING" },
+ { "name":"zip", "type":"INTEGER" },
+ { "name":"location", "type":"STRING" },
+ { "name":"listing_id", "type":"STRING" },
+ { "name":"sort", "type":"STRING" }, // "relevence", "title", "distance", or "rating"
+ { "name":"start", "type":"INTEGER" },
+ { "name":"radius", "type":"FLOAT" },
+ { "name":"results", "type":"INTEGER" }, // 1-50, defaults to 10
+ { "name":"longitude", "type":"FLOAT" },
+ { "name":"latitude", "type":"FLOAT" },
+ { "name":"category", "type":"INTEGER" },
+ { "name":"omit_category", "type":"INTEGER" },
+ { "name":"minimum_rating", "type":"INTEGER" }
+ ]
+ },
+ //
+ // WEB SEARCH
+ //
+ {
+ // http://developer.yahoo.com/search/web/V1/webSearch.html 
+ "name":"webSearch",
+ "serviceURL": "http://api.search.yahoo.com/WebSearchService/V1/webSearch",
+ "parameters":[
+ { "name":"query", "type":"STRING" },
+ { "name":"type", "type":"STRING" }, // defaults to "all"
+ { "name":"region", "type":"STRING" }, // defaults to "us"
+ { "name":"results", "type":"INTEGER" }, // defaults to 10
+ { "name":"start", "type":"INTEGER" }, // defaults to 1
+ { "name":"format", "type":"STRING" }, // defaults to "any", can be "html", "msword", "pdf", "ppt", "rst", "txt", or "xls"
+ { "name":"adult_ok", "type":"INTEGER" }, // defaults to null
+ { "name":"similar_ok", "type":"INTEGER" }, // defaults to null
+ { "name":"language", "type":"STRING" }, // defaults to null
+ { "name":"country", "type":"STRING" }, // defaults to null
+ { "name":"site", "type":"STRING" }, // defaults to null
+ { "name":"subscription", "type":"STRING" }, // defaults to null
+ { "name":"license", "type":"STRING" } // defaults to "any"
+ ]
+ },
+ {
+ // http://developer.yahoo.com/search/web/V1/spellingSuggestion.html
+ "name":"spellingSuggestion",
+ "serviceURL": "http://api.search.yahoo.com/WebSearchService/V1/spellingSuggestion",
+ "parameters":[ { "name":"query", "type":"STRING" } ]
+ },
+ {
+ // http://developer.yahoo.com/search/web/V1/relatedSuggestion.html
+ "name":"spellingSuggestion",
+ "serviceURL": "http://api.search.yahoo.com/WebSearchService/V1/relatedSuggestion",
+ "parameters":[
+ { "name":"query", "type":"STRING" },
+ { "name":"results", "type":"INTEGER" } // 1-50, defaults to 10
+ ]
+ },
+ {
+ // http://developer.yahoo.com/search/content/V1/termExtraction.html
+ "name":"termExtraction",
+ "serviceURL": "http://search.yahooapis.com/ContentAnalysisService/V1/termExtraction",
+ "parameters":[
+ { "name":"query", "type":"STRING" },
+ { "name":"context", "type":"STRING" },
+ { "name":"results", "type":"INTEGER" } // 1-50, defaults to 10
+ ]
+ },
+ {
+ // http://developer.yahoo.com/search/web/V1/contextSearch.html
+ "name":"contextSearch",
+ "serviceURL": "http://search.yahooapis.com/WebSearchService/V1/contextSearch",
+ "parameters":[
+ { "name":"query", "type":"STRING" },
+ { "name":"context", "type":"STRING" },
+ { "name":"type", "type":"STRING" }, // defaults to "all"
+ { "name":"results", "type":"INTEGER" }, // defaults to 10
+ { "name":"start", "type":"INTEGER" }, // defaults to 1
+ { "name":"format", "type":"STRING" }, // defaults to "any", can be "html", "msword", "pdf", "ppt", "rst", "txt", or "xls"
+ { "name":"adult_ok", "type":"INTEGER" }, // defaults to null
+ { "name":"similar_ok", "type":"INTEGER" }, // defaults to null
+ { "name":"language", "type":"STRING" }, // defaults to null
+ { "name":"country", "type":"STRING" }, // defaults to null
+ { "name":"site", "type":"STRING" }, // defaults to null
+ { "name":"license", "type":"STRING" } // defaults to "any", could be "cc_any", "cc_commercial", "cc_modifiable"
+ ]
+ },
+ //
+ // IMAGE SEARCH
+ //
+ {
+ // http://developer.yahoo.com/search/image/V1/imageSearch.html
+ "name":"imageSearch",
+ "serviceURL": "http://api.search.yahoo.com/ImageSearchService/V1/imageSearch",
+ "parameters":[
+ { "name":"query", "type":"STRING" },
+ { "name":"type", "type":"STRING" }, // defaults to "all", can by "any" or "phrase"
+ { "name":"results", "type":"INTEGER" }, // defaults to 10
+ { "name":"start", "type":"INTEGER" }, // defaults to 1
+ { "name":"format", "type":"STRING" }, // defaults to "any", can be "bmp", "gif", "jpeg", or "png"
+ { "name":"adult_ok", "type":"INTEGER" }, // defaults to null
+ { "name":"coloration", "type":"STRING" }, // "any", "color", or "bw"
+ { "name":"site", "type":"STRING" } // defaults to null
+ ]
+ },
+ //
+ // SITE EXPLORER
+ //
+ {
+ // http://developer.yahoo.com/search/siteexplorer/V1/inlinkData.html 
+ "name":"inlinkData",
+ "serviceURL": "http://api.search.yahoo.com/SiteExplorerService/V1/inlinkData",
+ "parameters":[
+ { "name":"query", "type":"STRING" },
+ { "name":"type", "type":"STRING" }, // defaults to "all", can by "any" or "phrase"
+ { "name":"entire_site", "type":"INTEGER" }, // defaults to null
+ { "name":"omit_inlinks", "type":"STRING" }, // "domain" or "subdomain", defaults to null
+ { "name":"results", "type":"INTEGER" }, // defaults to 50
+ { "name":"start", "type":"INTEGER" }, // defaults to 1
+ { "name":"site", "type":"STRING" } // defaults to null
+ ]
+ },
+ {
+ // http://developer.yahoo.com/search/siteexplorer/V1/pageData.html
+ "name":"pageData",
+ "serviceURL": "http://api.search.yahoo.com/SiteExplorerService/V1/pageData",
+ "parameters":[
+ { "name":"query", "type":"STRING" },
+ { "name":"type", "type":"STRING" }, // defaults to "all", can by "any" or "phrase"
+ { "name":"domain_only", "type":"INTEGER" }, // defaults to null
+ { "name":"results", "type":"INTEGER" }, // defaults to 50
+ { "name":"start", "type":"INTEGER" }, // defaults to 1
+ { "name":"site", "type":"STRING" } // defaults to null
+ ]
+ },
+ //
+ // MUSIC SEARCH
+ //
+ {
+ // http://developer.yahoo.com/search/audio/V1/artistSearch.html
+ "name":"artistSearch",
+ "serviceURL": "http://api.search.yahoo.com/AudioSearchService/V1/artistSearch",
+ "parameters":[
+ { "name":"artist", "type":"STRING" },
+ { "name":"artistid", "type":"STRING" },
+ { "name":"type", "type":"STRING" }, // "all", "any", or "phrase"
+ { "name":"results", "type":"INTEGER" }, // 1-50, defaults to 10
+ { "name":"start", "type":"INTEGER" } // defaults to 1
+ ]
+ },
+ {
+ // http://developer.yahoo.com/search/audio/V1/albumSearch.html
+ "name":"albumSearch",
+ "serviceURL": "http://api.search.yahoo.com/AudioSearchService/V1/albumSearch",
+ "parameters":[
+ { "name":"artist", "type":"STRING" },
+ { "name":"artistid", "type":"STRING" },
+ { "name":"album", "type":"STRING" },
+ { "name":"type", "type":"STRING" }, // "all", "any", or "phrase"
+ { "name":"results", "type":"INTEGER" }, // 1-50, defaults to 10
+ { "name":"start", "type":"INTEGER" } // defaults to 1
+ ]
+ },
+ {
+ // http://developer.yahoo.com/search/audio/V1/songSearch.html
+ "name":"songSearch",
+ "serviceURL": "http://api.search.yahoo.com/AudioSearchService/V1/songSearch",
+ "parameters":[
+ { "name":"artist", "type":"STRING" },
+ { "name":"artistid", "type":"STRING" },
+ { "name":"album", "type":"STRING" },
+ { "name":"albumid", "type":"STRING" },
+ { "name":"song", "type":"STRING" },
+ { "name":"songid", "type":"STRING" },
+ { "name":"type", "type":"STRING" }, // "all", "any", or "phrase"
+ { "name":"results", "type":"INTEGER" }, // 1-50, defaults to 10
+ { "name":"start", "type":"INTEGER" } // defaults to 1
+ ]
+ },
+ {
+ // http://developer.yahoo.com/search/audio/V1/songDownloadLocation.html
+ "name":"songDownloadLocation",
+ "serviceURL": "http://api.search.yahoo.com/AudioSearchService/V1/songDownloadLocation",
+ "parameters":[
+ { "name":"songid", "type":"STRING" },
+ // "source" can contain:
+ // audiolunchbox artistdirect buymusic dmusic
+ // emusic epitonic garageband itunes yahoo
+ // livedownloads mp34u msn musicmatch mapster passalong
+ // rhapsody soundclick theweb
+ { "name":"source", "type":"STRING" },
+ { "name":"results", "type":"INTEGER" }, // 1-50, defaults to 10
+ { "name":"start", "type":"INTEGER" } // defaults to 1
+ ]
+ },
+ //
+ // NEWS SEARCH
+ //
+ {
+ // http://developer.yahoo.com/search/news/V1/newsSearch.html
+ "name":"newsSearch",
+ "serviceURL": "http://api.search.yahoo.com/NewsSearchService/V1/newsSearch",
+ "parameters":[
+ { "name":"query", "type":"STRING" },
+ { "name":"type", "type":"STRING" }, // defaults to "all"
+ { "name":"results", "type":"INTEGER" }, // defaults to 10
+ { "name":"start", "type":"INTEGER" }, // defaults to 1
+ { "name":"sort", "type":"STRING" }, // "rank" or "date"
+ { "name":"language", "type":"STRING" }, // defaults to null
+ { "name":"site", "type":"STRING" } // defaults to null
+ ]
+ }
+ /*
+ {
+ //
+ "name":"",
+ "serviceURL": "",
+ "parameters":[
+ { "name":"street", "type":"STRING" },
+ ]
+ }
+ */
+ ]
+}

Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/selection/Selection.js
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/selection/Selection.js?view=auto&rev=509273
==============================================================================
--- ofbiz/trunk/framework/images/webapp/images/dojo/src/selection/Selection.js (added)
+++ ofbiz/trunk/framework/images/webapp/images/dojo/src/selection/Selection.js Mon Feb 19 09:56:06 2007
@@ -0,0 +1,472 @@
+/*
+ Copyright (c) 2004-2006, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/community/licensing.shtml
+*/
+
+dojo.provide("dojo.selection.Selection");
+dojo.require("dojo.lang.array");
+dojo.require("dojo.lang.func");
+dojo.require("dojo.lang.common");
+dojo.require("dojo.math");
+
+dojo.declare("dojo.selection.Selection", null,
+ {
+ initializer: function(items, isCollection){
+ this.items = [];
+ this.selection = [];
+ this._pivotItems = [];
+ this.clearItems();
+
+ if(items) {
+ if(isCollection) {
+ this.setItemsCollection(items);
+ } else {
+ this.setItems(items);
+ }
+ }
+ },
+
+ // Array: items to select from, order matters for growable selections
+ items: null,
+
+ // Array: items selected, aren't stored in order (see sorted())
+ selection: null,
+ lastSelected: null, // last item selected
+
+ // Boolean: if true, grow selection will start from 0th item when nothing is selected
+ allowImplicit: true,
+
+ // Integer: number of *selected* items
+ length: 0,
+
+ // Boolean:
+ // if true, the selection is treated as an in-order and can grow
+ // by ranges, not just by single item
+ isGrowable: true,
+
+ _pivotItems: null, // stack of pivot items
+ _pivotItem: null, // item we grow selections from, top of stack
+
+ // event handlers
+ onSelect: function(item){
+ // summary: slot to be connect()'d to
+ },
+ onDeselect: function(item){
+ // summary: slot to be connect()'d to
+ },
+ onSelectChange: function(item, selected){
+ // summary: slot to be connect()'d to
+ },
+
+ _find: function(item, inSelection) {
+ if(inSelection) {
+ return dojo.lang.find(this.selection, item);
+ } else {
+ return dojo.lang.find(this.items, item);
+ }
+ },
+
+ isSelectable: function(/*Object*/item){
+ // summary:
+ // user-customizable and should be over-ridden, will filter
+ // items through this
+ return true; // boolean
+ },
+
+ setItems: function(/* ... */){
+ // summary:
+ // adds all passed arguments to the items array, removing any
+ // previously selected items.
+ this.clearItems();
+ this.addItems.call(this, arguments);
+ },
+
+
+ setItemsCollection: function(/*Object*/collection){
+ // summary:
+ // like setItems, but use in case you have an active
+ // collection array-like object (i.e. getElementsByTagName
+ // collection) that manages its own order and item list
+ this.items = collection;
+ },
+
+ addItems: function(/* ... */){
+ // summary:
+ // adds all passed arguments to the items array
+ var args = dojo.lang.unnest(arguments);
+ for(var i = 0; i < args.length; i++){
+ this.items.push(args[i]);
+ }
+ },
+
+ addItemsAt: function(/*Object*/item, /*Object*/before /* ... */){
+ // summary:
+ // add items to the array after the the passed "before" item.
+ if(this.items.length == 0){ // work for empy case
+ return this.addItems(dojo.lang.toArray(arguments, 2));
+ }
+
+ if(!this.isItem(item)){
+ item = this.items[item];
+ }
+ if(!item){ throw new Error("addItemsAt: item doesn't exist"); }
+ var idx = this._find(item);
+ if(idx > 0 && before){ idx--; }
+ for(var i = 2; i < arguments.length; i++){
+ if(!this.isItem(arguments[i])){
+ this.items.splice(idx++, 0, arguments[i]);
+ }
+ }
+ },
+
+ removeItem: function(/*Object*/item){
+ // summary: remove item
+ var idx = this._find(item);
+ if(idx > -1) {
+ this.items.splice(idx, 1);
+ }
+ // remove from selection
+ // FIXME: do we call deselect? I don't think so because this isn't how
+ // you usually want to deselect an item. For example, if you deleted an
+ // item, you don't really want to deselect it -- you want it gone. -DS
+ idx = this._find(item, true);
+ if(idx > -1) {
+ this.selection.splice(idx, 1);
+ }
+ },
+
+ clearItems: function(){
+ // summary: remove and uselect all items
+ this.items = [];
+ this.deselectAll();
+ },
+
+ isItem: function(/*Object*/item){
+ // summary: do we already "know" about the passed item?
+ return this._find(item) > -1; // boolean
+ },
+
+ isSelected: function(/*Object*/item){
+ // summary:
+ // do we know about the item and is it selected by this
+ // selection?
+ return this._find(item, true) > -1; // boolean
+ },
+
+ /**
+ * allows you to filter item in or out of the selection
+ * depending on the current selection and action to be taken
+ **/
+ selectFilter: function(item, selection, add, grow) {
+ return true;
+ },
+
+ update: function(/*Object*/item, /*Boolean*/add, /*Boolean*/grow, noToggle) {
+ // summary: manages selections, most selecting should be done here
+ // item: item which may be added/grown to/only selected/deselected
+ // add: behaves like ctrl in windows selection world
+ // grow: behaves like shift
+ // noToggle: if true, don't toggle selection on item
+ if(!this.isItem(item)){ return false; } // boolean
+
+ if(this.isGrowable && grow){
+ if( (!this.isSelected(item)) &&
+ this.selectFilter(item, this.selection, false, true) ){
+ this.grow(item);
+ this.lastSelected = item;
+ }
+ }else if(add){
+ if(this.selectFilter(item, this.selection, true, false)){
+ if(noToggle){
+ if(this.select(item)){
+ this.lastSelected = item;
+ }
+ }else if(this.toggleSelected(item)){
+ this.lastSelected = item;
+ }
+ }
+ }else{
+ this.deselectAll();
+ this.select(item);
+ }
+
+ this.length = this.selection.length;
+ return true; // Boolean
+ },
+
+ grow: function(/*Object*/toItem, /*Object*/fromItem){
+ // summary:
+ // Grow a selection. Any items in (fromItem, lastSelected]
+ // that aren't part of (fromItem, toItem] will be deselected
+ // toItem: which item to grow selection to
+ // fromItem: which item to start the growth from (it won't be selected)
+ if(!this.isGrowable){ return; }
+
+ if(arguments.length == 1){
+ fromItem = this._pivotItem;
+ if(!fromItem && this.allowImplicit){
+ fromItem = this.items[0];
+ }
+ }
+ if(!toItem || !fromItem){ return false; }
+
+ var fromIdx = this._find(fromItem);
+
+ // get items to deselect (fromItem, lastSelected]
+ var toDeselect = {};
+ var lastIdx = -1;
+ if(this.lastSelected){
+ lastIdx = this._find(this.lastSelected);
+ var step = fromIdx < lastIdx ? -1 : 1;
+ var range = dojo.math.range(lastIdx, fromIdx, step);
+ for(var i = 0; i < range.length; i++){
+ toDeselect[range[i]] = true;
+ }
+ }
+
+ // add selection (fromItem, toItem]
+ var toIdx = this._find(toItem);
+ var step = fromIdx < toIdx ? -1 : 1;
+ var shrink = lastIdx >= 0 && step == 1 ? lastIdx < toIdx : lastIdx > toIdx;
+ var range = dojo.math.range(toIdx, fromIdx, step);
+ if(range.length){
+ for(var i = range.length-1; i >= 0; i--){
+ var item = this.items[range[i]];
+ if(this.selectFilter(item, this.selection, false, true)){
+ if(this.select(item,