/*
* Copyright © 2005-2007 Memba SA. All rights reserved.
*
* This file is part of Velodoc XP Edition.
*
* Velodoc XP Edition is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free Software Foundation,
* either version 2 of the License, or (at your option) any later version.
*
* Velodoc XP Edition is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with Velodoc XP Edition.
* If not, see <http://www.gnu.org/licenses/>.
*
* For more information, please contact Memba at <http://www.memba.com>.
* You can find more information about Velodoc at <http://www.velodoc.com> and <http://www.velodoc.com/help>.
* You can try Velodoc online at <http://www.velodoc.net>.
*
*/
Type.registerNamespace("Memba");
Memba._Utils = function() {
Sys.Debug.trace("Utils: Constructor");
}
Memba._Utils.prototype = {
//Creates a new guid
newGuid : function()
{
var g = "";
for(var iteratorX = 0; iteratorX < 32; iteratorX++)
{
g += Math.floor(Math.random() * 0xF).toString(0xF) + (iteratorX == 8 || iteratorX == 12 || iteratorX == 16 || iteratorX == 20 ? "-" : "");
}
Sys.Debug.trace("Utils: Guid value is " + g);
return g;
},
// Make sure the Regex patterns are compatible with Memba.Framework.Business.BOValidation.cs
isEmailAddress : function(email)
{
Sys.Debug.trace("Utils: Validating email address " + email);
var e = Function._validateParams(arguments, [
{name: "email", type: String}
]);
if (e) throw e;
var rx = /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/;
if (rx.test(email))
return true;
else
return false;
},
isEmailList : function(list)
{
Sys.Debug.trace("Utils: Validating email list " + list);
var e = Function._validateParams(arguments, [
{name: "list", type: String}
]);
if (e) throw e;
var rx = /\s*[,;\t\r\n\s]\s*/;
var emailArray = list.split(rx);
if(!(emailArray) || (emailArray.length < 1))
return false;
for (var iteratorX = 0; iteratorX < emailArray.length; iteratorX++ )
{
Sys.Debug.trace("Utils: Validating email from list " + emailArray[iteratorX]);
if (!this.isEmailAddress(emailArray[iteratorX]))
return false;
}
return true;
},
// Source: http://regexlib.com/Search.aspx?k=UNC <------------------------------------------
// ^([a-zA-Z]\:|\\\\[^\/\\:*?"<>|]+\\[^\/\\:*?"<>|]+)(\\[^\/\\:*?"<>|]+)+(\.[^\/\\:*?"<>|]+)?$
// Source http://regexlib.com/REDetails.aspx?regexp_id=345
// ^(([a-zA-Z]:|\\)\\)?(((\.)|(\.\.)|([^\\/:\*\?"\|<>\. ](([^\\/:\*\?"\|<>\. ])|([^\\/:\*\?"\|<>]*[^\\/:\*\?"\|<>\. ]))?))\\)*[^\\/:\*\?"\|<>\. ](([^\\/:\*\?"\|<>\. ])|([^\\/:\*\?"\|<>]*[^\\/:\*\?"\|<>\. ]))?$
isUNCPath : function(uncPath)
{
Sys.Debug.trace("Utils: Validating UNC path " + uncPath);
var e = Function._validateParams(arguments, [
{name: "uncPath", type: String}
]);
if (e) throw e;
var rx = /^([a-zA-Z]\:|\\\\[^\/\\:*?"<>|]+\\[^\/\\:*?"<>|]+)(\\[^\/\\:*?"<>|]+)+(\.[^\/\\:*?"<>|]+)?$/;
if (rx.test(uncPath))
return true;
else
return false;
},
//Source: http://regexlib.com/REDetails.aspx?regexp_id=1809
// ^[/]*([^/\\ \:\*\?"\<\>\|\.][^/\\\:\*\?\"\<\>\|]{0,63}/)*[^/\\ \:\*\?"\<\>\|\.][^/\\\:\*\?\"\<\>\|]{0,63}$
isUnixPath : function(unixPath)
{
Sys.Debug.trace("Utils: Validating Unix path " + unixPath);
var e = Function._validateParams(arguments, [
{name: "unixPath", type: String}
]);
if (e) throw e;
var rx = /^[\/]*([^\/\\ \:\*\?"\<\>\|\.][^\/\\\:\*\?\"\<\>\|]{0,63}\/)*[^\/\\ \:\*\?"\<\>\|\.][^\/\\\:\*\?\"\<\>\|]{0,63}$/
if (rx.test(unixPath))
return true;
else
return false;
},
getFileNameFromPath : function(path)
{
Sys.Debug.trace("Utils: get file name for " + path);
var e = Function._validateParams(arguments, [
{name: "path", type: String, mayBeNull: true}
]);
if (e) throw e;
if(!(path) || (path.length == 0) || ((path.indexOf('\\') < 0) && (path.indexOf('/') < 0)))
return path;
var rx = /[\/|\\]([^\/\\]+)?$/;
var m = rx.exec(path);
if (m == null)
return null;
Sys.Debug.assert(m.length == 2);
return m[1];
},
removeExtFromFileName : function(filename)
{
Sys.Debug.trace("Utils: get file name without extension for " + filename);
var e = Function._validateParams(arguments, [
{name: "filename", type: String, mayBeNull: true}
]);
if (e) throw e;
if(!(filename) || (filename.length == 0))
return filename;
var pos = filename.lastIndexOf('.');
if(pos < 0)
return filename;
else if (pos == 0) //This is improbable
return filename.substr(1, filename.length - 2);
else
return filename.substr(0, pos);
},
removeParamFromUrl : function(param, url)
{
var e = Function._validateParams(arguments, [
{name: "param", type: String},
{name: "url", type: String}
]);
if (e) throw e;
Sys.Debug.trace("Removing param " + param + " from Url " + url);
var _param = param.toLowerCase();
var _url = url.toLowerCase();
if ((_url.indexOf('?' + _param + '=') < 0) && (_url.indexOf('&' + _param + '=') < 0))
return url;
var _pos = _url.indexOf('?');
var _ret = _url.substr(0, _pos + 1).toLowerCase(); //includes ?
Sys.Debug.trace("Path is " + _ret);
var _query = _url.substr(_pos + 1).toLowerCase();
Sys.Debug.trace("Query is " + _query);
var _params = _query.split('&');
for (var iteratorX = 0; iteratorX < _params.length; iteratorX++ )
{
if (_params[iteratorX].indexOf(_param + '=') < 0)
{
Sys.Debug.trace("Adding param " + _params[iteratorX]);
_ret += _params[iteratorX] + '&';
}
}
Sys.Debug.trace("Last char is " + _ret.substr(_ret.length-1));
if ((_ret.substr(_ret.length-1) == '?') || (_ret.substr(_ret.length-1) == '&'))
_ret = _ret.substr(0, _ret.length-1)
return _ret;
},
addParamToUrl : function(param, value, url)
{
var e = Function._validateParams(arguments, [
{name: "param", type: String},
{name: "value", type: String},
{name: "url", type: String}
]);
if (e) throw e;
Sys.Debug.trace("Adding param " + param + " with value " + value + " from Url " + url);
var _param = param.toLowerCase();
var _ret = url.toLowerCase();
if ((_ret.indexOf('?' + _param + '=') > -1) || (_ret.indexOf('&' + _param + '=') > -1))
{
_ret = this.removeParamFromUrl(_param, _ret);
Sys.Debug.trace(_param + " is already in url, removed");
}
var _pos = _ret.indexOf('?');
if (_pos < 0)
_ret += '?';
else
{
if ((_ret.substr(_ret.length-1) != '?') && (_ret.substr(_ret.length-1) != '&'))
_ret = _ret + '&'
}
return _ret + _param + '=' + escape(value);
},
//html encoding: see escapeHTML in prototype.js framework
encode : function(value)
{
var e = Function._validateParams(arguments, [
{name: "value", type: String}
]);
if (e) throw e;
Sys.Debug.trace("Encoding string " + value);
var _div = document.createElement('div');
var _text = document.createTextNode(value);
_div.appendChild(_text);
return _div.innerHTML;
}
}
Memba._Utils.registerClass('Memba._Utils', null);
Memba.Utils = new Memba._Utils();
if (typeof (Sys) != 'undefined')
{
Sys.Application.notifyScriptLoaded();
}