if (typeof (Bitrix) == "undefined") {
var Bitrix = new Object();
}
Bitrix.TypeUtility = function Bitrix$TypeUtility() { }
Bitrix.TypeUtility.isString = function(item) {
return typeof (item) == "string" || item instanceof String;
}
Bitrix.TypeUtility.isNotEmptyString = function(item) {
return typeof (item) == "string" || item instanceof String ? item.length > 0 : false;
}
Bitrix.TypeUtility.isBoolean = function(item) {
return typeof (item) == "boolean" || item instanceof Boolean;
}
Bitrix.TypeUtility.isNumber = function(item) {
return typeof (item) == "number" || item instanceof Number;
}
Bitrix.TypeUtility.isFunction = function(item) {
return typeof (item) == "function" || item instanceof Function;
}
Bitrix.TypeUtility.isElementNode = function(item) {
return item && typeof (item) == "object" && "nodeType" in item && item.nodeType == 1; //document.body.ELEMENT_NODE;
}
Bitrix.TypeUtility.isDomNode = function(item) {
return item && typeof (item) == "object" && "nodeType" in item;
}
Bitrix.TypeUtility.isDomElement = function(item) {
return this.isElementNode(item);
}
Bitrix.TypeUtility.tryConvertToString = function(item) {
if (typeof (item) == "string" || item instanceof String)
return item;
if (typeof (item.toString) == "function")
return item.toString();
if (item == null)
return "null";
if (item == undefined)
return "undefined"
return ">";
}
Bitrix.TypeUtility.tryConvertToFloat = function(item, def) {
if (typeof (item) == "number" || item instanceof Number)
return item;
if (item == null || item == undefined)
return def ? def : Number.Nan;
return parseFloat(this.isString(item) ? item : item.toString());
}
Bitrix.TypeUtility.tryConvertToInt = function(item, def) {
if (typeof (item) == "number" || item instanceof Number)
return item;
if (item == null || item == undefined)
return def ? def : Number.Nan;;
return parseInt(this.isString(item) ? item : item.toString());
}
Bitrix.TypeUtility.createDelegate = function(instance, method) {
return function() {
if(!method) throw "TypeUtility.createDelegate: method is not defined";
return method.apply(instance, arguments);
}
}
Bitrix.TypeUtility.createSimpleEventHandlerDelegate = function(instance, method) {
return function() {
return method.call(instance, this);
}
}
Bitrix.TypeUtility.returnFalse = function() { return false; }
Bitrix.TypeUtility.disableSelection = function(target) {
if (/*@cc_on!@*/false) {//IE route
target.setAttribute("UNSELECTABLE", "on");
if (typeof (target.onselectstart) != "undefined")
target.onselectstart = Bitrix.TypeUtility.returnFalse;
}
else if (typeof target.style.MozUserSelect != "undefined") {//Firefox route
target.style.MozUserSelect = "none";
}
else {//All other route (ie: Opera)
target.onmousedown = Bitrix.TypeUtility.returnFalse;
}
}
Bitrix.TypeUtility.tryGetObjProp = function(obj, prop, defaultVal) {
if(!this.isNotEmptyString(prop)) return defaultVal;
return obj && typeof(obj) == "object" && prop in obj ? obj[prop] : defaultVal;
}
Bitrix.TypeUtility.csvToArray = function(csv) {
var result = [];
var myregexp = /'(?:''|[^'\r\n])*'|[^;\r\n]*/;
if (str == '')
return result;
var m = str.match(myregexp);
while (m != null) {
var v = m[0];
if (v.length >= 2 && v.charAt([0]) == '\'' && v.charAt(v.length - 1) == '\'')
v = v.slice(1, -1).replace(/''/g, '\'');
result.push(v);
if (m.index + m[0].length < str.length)
str = str.substring(m.index + m[0].length + 1);
else
break;
m = str.match(myregexp);
}
return result;
}
Bitrix.TypeUtility.arrayToCsv = function(array) {
var l = array.length;
if (!l) return '';
var result = '';
for (var i = 0; i < l; i++) {
var s = array[i].toString();
if (s == '' || jsUtils.trim(s).length != s.length || s.search(/[';]/))
s = '\'' + s.replace(/'/g, '\'\'') + '\'';
if (result.length != 0)
result += ';'
result += s;
}
return result;
}
Bitrix.TypeUtility.extend = function(child, parent) {
var f = function() { };
f.prototype = parent.prototype;
child.prototype = new f();
child.prototype.constructor = child;
child.superclass = parent.prototype;
}
Bitrix.TypeUtility.copyPrototype = function(descendant, parent) {
var sConstructor = parent.toString();
var aMatch = sConstructor.match(/\s*function (.*)\(/);
if (aMatch != null) { descendant.prototype[aMatch[1]] = parent; }
for (var m in parent.prototype) {
descendant.prototype[m] = parent.prototype[m];
}
}
if (typeof (Bitrix.TypeUtility.registerClass) == "function")
Bitrix.TypeUtility.registerClass("Bitrix.TypeUtility");
Bitrix.HttpUtility = function Bitrix$HttpUtility() { }
Bitrix.HttpUtility.createXMLHttpRequest = function() { return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); }
Bitrix.HttpUtilityDecode = function(text) {
if (!Bitrix.TypeUtility.isNotEmptyString(text)) return "";
if(/*@cc_on !@*/true) { //NOT IE
var tmp = document.createElement("TEXTAREA");
tmp.innerHTML = text;
var r = tmp.value;
delete tmp;
return r;
}
else //IE
return text.replace(/\"/g,"\"").replace(/\'/g, "\'").replace(/\>/g, ">").replace(/\</g, "<").replace(/\/g, "").replace(/\&/g, "&");
}
Bitrix.HttpUtilityEncode = function(text) {
if (!Bitrix.TypeUtility.isNotEmptyString(text)) return "";
var d = document.createElement('DIV');
var t = document.createTextNode(text);
d.appendChild(t);
var r = d.innerHTML;
delete d;
return r;
}
Bitrix.HttpUtility.jsonEncode = function (text) {
var escapable = /[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
var meta = { // table of character substitutions '\b': '\\b',
'\t': '\\t',
'\n': '\\n',
'\f': '\\f',
'\r': '\\r',
'"' : '\\"',
'\\': '\\\\'
};
escapable.lastIndex = 0;
if(!escapable.test(text)) return text;
return text.replace(escapable,
function (o) {
var c = meta[o];
return typeof(c) == "string" ? c : "\\u" + ("0000" + o.charCodeAt(0).toString(16)).slice(-4);
});
}
Bitrix.EventUtility = function() {
var attachedEvents = [];
return {
addEventListener:
(
window.attachEvent
? function(target, name, callback) {
var item = {
target: target,
name: name,
callback: callback,
handler: function() {
callback.call(target, window.event);
}
};
target.attachEvent("on" + name, item.handler);
attachedEvents.push(item);
}
: function(target, name, callback, capture) {
target.addEventListener(name, callback, capture);
}
),
removeEventListener:
(
window.detachEvent
? function(target, name, callback) {
var l = attachedEvents.length;
for (var i = 0; i < l; i++) {
var item = attachedEvents[i];
if (item.target == target && item.name == name && item.callback == callback) {
target.detachEvent("on" + name, item.handler);
attachedEvents.splice(i, 1);
break;
}
}
}
: function(target, name, callback, capture) {
target.removeEventListener(name, callback, capture);
}
),
stopEventPropagation: function(e) {
if (!e) e = window.event;
if (e.stopPropagation) e.stopPropagation(); // DOM Level 2
else e.cancelBubble = true; // IE
}
}
} ();
Bitrix.WebAppHelper = function Bitrix$WebAppHelper() {
if (typeof (Bitrix.WebAppHelper.initializeBase) == "function")
Bitrix.WebAppHelper.initializeBase(this);
this._initialized = false;
}
Bitrix.WebAppHelper.prototype = {
//initialize: function(){ this.this._initialized = true;},
getPath: function() {
if (Bitrix.TypeUtility.isString(window["bitrixWebAppPath"]))
return window["bitrixWebAppPath"];
if (Bitrix.TypeUtility.isString(window["APPPath"]))
return window["APPPath"];
return "";
}
}
Bitrix.WebAppHelper._instance = null;
Bitrix.WebAppHelper.getInstance = function() {
if (this._instance == null) {
this._instance = new Bitrix.WebAppHelper();
//this._instance.initialize();
}
return this._instance;
}
Bitrix.WebAppHelper.getPath = function() {
return this.getInstance().getPath();
}
Bitrix.NavigationHelper = function() { }
Bitrix.NavigationHelper.isOpera = function() {
try { return "opera" in window && navigator.userAgent.indexOf("Opera") >= 0; }
catch (e) { return false; }
}
Bitrix.NavigationHelper.isSafari = function() {
if (!("navigator" in window))
return false;
var nav = window.navigator;
if ("vendor" in nav && Bitrix.TypeUtility.isNotEmptyString(nav.vendor) && nav.vendor.indexOf("Apple") < 0)
return false;
return "userAgent" in nav && Bitrix.TypeUtility.isNotEmptyString(nav.userAgent) && nav.userAgent.indexOf("Safari") >= 0;
}
Bitrix.NavigationHelper.isFirefox = function() {
if (!("navigator" in window))
return false;
var ua = window.navigator.userAgent.toLowerCase();
return Bitrix.TypeUtility.isNotEmptyString(ua) && ua.indexOf("firefox") >= 0;
}
if (typeof (Bitrix.WebAppHelper.registerClass) == "function")
Bitrix.WebAppHelper.registerClass("Bitrix.WebAppHelper");
Bitrix.GoodbyeWindow = function Bitrix$GoodbyeWindow() {
if (typeof (Bitrix.GoodbyeWindow.initializeBase) == "function")
Bitrix.GoodbyeWindow.initializeBase(this);
this._initialized = false;
this._containerDivId = "bx_googbye_window_container";
this._content = "";
this._topPanelDivId = "bx_googbye_window_topPanel";
this._contentDivId = "bx_googbye_window_content";
this._contentSpanId = "bx_googbye_window_content_text";
this._timeToLive = 1;
this._layoutType = "";
this._onShowClientScript = null;
this._onHideClientScript = null;
this._isVisible = false;
this._containerDivCssClass = "";
this._topPanelDivCssClass = "";
this._contentDivCssClass = "";
this._contentSpanCssClass = "";
this._layoutCssClassSuccess = "";
this._layoutCssClassError = "";
}
Bitrix.GoodbyeWindow.prototype = {
initialize: function() {
if (this._initialized) return;
this.reset();
this._initialized = true;
},
getContent: function() {
return this._content;
},
setContent: function(value) {
this._content = value;
},
getLayoutType: function() {
return this._layoutType;
},
setLayoutType: function(value) {
this._layoutType = value;
},
getTimeToLive: function() {
return this._timeToLive;
},
setTimeToLive: function(value) {
if (isNaN(value))
throw String.concat("'", value, "'", " is not a number!");
this._timeToLive = parseInt(value);
},
getContainerDivCssClass: function() {
return this._containerDivCssClass;
},
setContainerDivCssClass: function(val) {
this._containerDivCssClass = val;
},
getTopPanelDivCssClass: function() {
return this._topPanelDivCssClass;
},
setTopPanelDivCssClass: function(val) {
this._topPanelDivCssClass = val;
},
getContentDivCssClass: function() {
return this._contentDivCssClass;
},
setContentDivCssClass: function(val) {
this._contentDivCssClass = val;
},
getContentSpanCssClass: function() {
return this._contentSpanCssClass;
},
setContentSpanCssClass: function(val) {
this._contentSpanCssClass = val;
},
getLayoutCssClassSuccess: function() {
return this._layoutCssClassSuccess;
},
setLayoutCssClassSuccess: function(val) {
this._layoutCssClassSuccess = val;
},
getLayoutCssClassError: function() {
return this._layoutCssClassError;
},
setLayoutCssClassError: function(val) {
this._layoutCssClassError = val;
},
getOnHideClientScript: function() {
return this._onHideClientScript;
},
setOnHideClientScript: function(value) {
this._onHideClientScript = value;
},
getOnShowClientScript: function() {
return this._onShowClientScript;
},
setOnShowClientScript: function(value) {
this._onShowClientScript = value;
},
getDefaultTimeToLive: function() {
return 1800;
},
reset: function() {
this._content = "Everything Is Fine...";
this._timeToLive = this.getDefaultTimeToLive();
this._layoutType = "SUCCESS";
this._onShowClientScript = null;
this._onHideClientScript = null;
},
show: function() {
if (this._isVisible)
return;
if (this._onShowClientScript != null && this._onShowClientScript.length > 0)
window.eval(this._onShowClientScript);
var containerDiv = document.getElementById(this._containerDivId);
if (containerDiv == null) {
containerDiv = document.createElement("DIV");
containerDiv.style.visibility = "hidden";
containerDiv = document.body.appendChild(containerDiv);
containerDiv.id = this._containerDivId;
if (Bitrix.TypeUtility.isNotEmptyString(this._containerDivCssClass))
containerDiv.className = this._containerDivCssClass;
else {
containerDiv.style.backgroundColor = "#edf1f3";
containerDiv.style.borderWidth = "1px";
containerDiv.style.borderStyle = "solid";
containerDiv.style.borderColor = "#ad9634";
containerDiv.style.padding = "1px";
containerDiv.style.margin = "0px";
containerDiv.style.position = "absolute";
containerDiv.style.textAlign = "left";
containerDiv.style.fontFamily = "Tahoma";
containerDiv.style.fontSize = "12px";
containerDiv.style.fontWeight = "normal";
containerDiv.style.zIndex = "1001";
}
}
var topPanelDiv = document.getElementById(this._topPanelDivId);
if (topPanelDiv == null) {
topPanelDiv = document.createElement("DIV");
containerDiv.appendChild(topPanelDiv);
topPanelDiv.id = this._topPanelDivId;
if (Bitrix.TypeUtility.isNotEmptyString(this._topPanelDivCssClass))
topPanelDiv.className = this._topPanelDivCssClass;
else {
topPanelDiv.onclick = function() { Bitrix.GoodbyeWindow.getInstance().hide(); };
topPanelDiv.style.width = "10px";
topPanelDiv.style.height = "10px";
topPanelDiv.style.margin = "0px";
topPanelDiv.style.padding = "0px";
topPanelDiv.style.position = "absolute";
topPanelDiv.style.top = "1px";
topPanelDiv.style.right = "1px";
var imgUrl = Bitrix.PathHelper.combine(Bitrix.PathHelper.getApplicationPath(), "bitrix/images/close_window_mini_button.gif");
topPanelDiv.style.background = "transparent url(" + imgUrl + ") no-repeat scroll 0% 0%";
topPanelDiv.style.cursor = "pointer";
}
}
var contentDiv = document.getElementById(this._contentDivId);
if (contentDiv == null) {
contentDiv = document.createElement("DIV");
containerDiv.appendChild(contentDiv);
contentDiv.id = this._contentDivId;
if (Bitrix.TypeUtility.isNotEmptyString(this._contentDivCssClass))
contentDiv.className = this._contentDivCssClass;
else {
contentDiv.style.padding = "0px";
contentDiv.style.margin = "5px 10px 5px 10px";
}
}
var contentSpan = document.getElementById(this._contentSpanId);
if (contentSpan == null) {
contentSpan = document.createElement("SPAN");
contentDiv.appendChild(contentSpan);
contentSpan.id = this._contentSpanId;
if (Bitrix.TypeUtility.isNotEmptyString(this._contentSpanCssClass))
contentSpan.className = this._contentSpanCssClass;
else {
contentSpan.style.padding = "0px";
contentSpan.style.margin = "0px";
}
}
contentSpan.innerHTML = "";
contentSpan.innerHTML = this._content;
if (Bitrix.TypeUtility.isNotEmptyString(this._layoutCssClassSuccess)) {
var rxSuccess = new RegExp(this._layoutCssClassSuccess, "gi");
contentSpan.className = contentSpan.className.replace(rxSuccess, "");
}
if (Bitrix.TypeUtility.isNotEmptyString(this._layoutCssClassError)) {
var rxError = new RegExp(this._layoutCssClassError, "gi");
contentSpan.className = contentSpan.className.replace(rxError, "");
}
if (this._layoutType == "SUCCESS") {
if (Bitrix.TypeUtility.isNotEmptyString(this._layoutCssClassSuccess))
contentSpan.className = contentSpan.className.concat(" ", this._layoutCssClassSuccess);
else
contentSpan.style.color = "Green";
}
else if (this._layoutType == "ERROR") {
if (Bitrix.TypeUtility.isNotEmptyString(this._layoutCssClassError))
contentSpan.className = contentSpan.className.concat(" ", this._layoutCssClassError);
else
contentSpan.style.color = "Red";
}
var windowSize = jsUtils.GetWindowInnerSize();
var windowScroll = jsUtils.GetWindowScrollPos();
containerDiv.style.visibility = "visible";
var textWidth = parseInt(contentDiv.offsetWidth);
if (textWidth > 250) {
var textHeight = parseInt(contentDiv.offsetHeight);
var textWidth = Math.round(Math.sqrt(2.1 * textWidth * textHeight));
contentDiv.style.width = textWidth + "px";
}
var left = parseInt(windowScroll.scrollLeft + windowSize.innerWidth / 2 - containerDiv.offsetWidth / 2);
var top = parseInt(windowScroll.scrollTop + windowSize.innerHeight / 2 - containerDiv.offsetHeight / 2);
containerDiv.style.top = top + "px";
containerDiv.style.left = left + "px";
if (this._timeToLive >= 0)
window.setTimeout(function() { Bitrix.GoodbyeWindow.getInstance().hide(); }, this._timeToLive > 0 ? this._timeToLive : this.getDefaultTimeToLive());
this._isVisible = true;
},
hide: function() {
if (!this._isVisible)
return;
var containerDiv = document.getElementById(this._containerDivId);
if (containerDiv == null) return;
containerDiv.style.visibility = "hidden";
var onHideScript = this._onHideClientScript;
this.reset();
if (onHideScript != null && onHideScript.length > 0)
window.eval(onHideScript);
this._isVisible = false;
},
_getStyleAttributeValue: function(srcElem, attrName) {
if (!srcElem) throw "Source element is not defined!";
if (Sys.Browser.agent === Sys.Browser.InternetExplorer) { // IE
var elmStyle = srcElem.currentStyle;
return elmStyle.getAttribute(attrName);
}
else {
var elmCompStyle = document.defaultView.getComputedStyle(srcElem, '');
return elmCompStyle.getPropertyValue(attrName);
}
},
_parseInt: function(sourceValue, defaultValue) {
if (!sourceValue || isNaN(sourceValue)) return defaultValue;
return parseInt(sourceValue);
}
}
Bitrix.GoodbyeWindow._instance = null;
Bitrix.GoodbyeWindow.getInstance = function() {
if (this._instance == null) {
this._instance = new Bitrix.GoodbyeWindow();
this._instance.initialize();
}
return this._instance;
}
Bitrix.GoodbyeWindow.show = function(content, layout, ttl) {
var instance = this.getInstance();
instance.setContent(content);
instance.setLayoutType(layout);
instance.setTimeToLive(ttl);
instance.show();
}
Bitrix.GoodbyeWindow.getContainerDivCssClass = function() {
return this.getInstance().getContainerDivCssClass();
}
Bitrix.GoodbyeWindow.setContainerDivCssClass = function(val) {
this.getInstance().setContainerDivCssClass(val);
}
Bitrix.GoodbyeWindow.getTopPanelDivCssClass = function() {
return this.getInstance().getTopPanelDivCssClass();
}
Bitrix.GoodbyeWindow.setTopPanelDivCssClass = function(val) {
this.getInstance().setTopPanelDivCssClass(val);
}
Bitrix.GoodbyeWindow.getContentDivCssClass = function() {
return this.getInstance().getContentDivCssClass();
}
Bitrix.GoodbyeWindow.setContentDivCssClass = function(val) {
this.getInstance().setContentDivCssClass(val);
}
Bitrix.GoodbyeWindow.getContentSpanCssClass = function() {
return this.getInstance().getContentSpanCssClass();
}
Bitrix.GoodbyeWindow.setContentSpanCssClass = function(val) {
this.getInstance().setContentSpanCssClass(val);
}
Bitrix.GoodbyeWindow.getLayoutCssClassSuccess = function() {
return this.getInstance().getLayoutCssClassSuccess();
}
Bitrix.GoodbyeWindow.setLayoutCssClassSuccess = function(val) {
this.getInstance().setLayoutCssClassSuccess(val);
}
Bitrix.GoodbyeWindow.getLayoutCssClassError = function() {
return this.getInstance().getLayoutCssClassError();
}
Bitrix.GoodbyeWindow.setLayoutCssClassError = function(val) {
this.getInstance().setLayoutCssClassError(val);
}
if (typeof (Bitrix.GoodbyeWindow.registerClass) == "function")
Bitrix.GoodbyeWindow.registerClass("Bitrix.GoodbyeWindow");
Bitrix.ObjectHelper = function Bitrix$ObjectHelper() {
this._initialized = false;
}
Bitrix.ObjectHelper.prototype = {
initialize: function() {
this._initialized = true;
},
tryGetBoolean: function(object, name, def) {
if (typeof (object) != "object" || !object) throw "object is not valid!";
if (!Bitrix.TypeUtility.isString(name)) throw "name is not valid!";
if (!(name in object))
return def;
var v = object[name];
if (Bitrix.TypeUtility.isBoolean(v))
return v;
if (Bitrix.TypeUtility.isString(v))
return v.toUpperCase() == "TRUE";
return def;
},
tryGetString: function(object, name, def) {
if (typeof(object) != "object") throw "object is not valid!";
if (!Bitrix.TypeUtility.isString(name)) throw "name is not valid!";
return object && name in object && Bitrix.TypeUtility.isString(object[name]) ? object[name] : def;
},
tryGetBooleanByNameArray: function(object, nameArr, def) {
if (typeof (object) != "object" || !object) throw "object is not valid!";
if (!(nameArr instanceof Array)) throw "nameArr is not valid!";
if (nameArr.length == 0)
return def;
var r = undefined;
for (var i = 0; i < nameArr.length; i++) {
if (!(nameArr[i] in object))
continue;
var v = object[nameArr[i]];
if (Bitrix.TypeUtility.isBoolean(v)) {
r = v;
break;
}
if (Bitrix.TypeUtility.isString(v)) {
r = v.toUpperCase() == "TRUE";
break;
}
}
return r != undefined ? r : def;
},
tryGetStringByNameArray: function(object, nameArr, def) {
if (typeof (object) != "object" || !object) throw "object is not valid!";
if (!(nameArr instanceof Array)) throw "nameArr is not valid!";
if (nameArr.length == 0)
return def;
var r = undefined;
for (var i = 0; i < nameArr.length; i++) {
if (!(nameArr[i] in object))
continue;
var v = object[nameArr[i]];
if (Bitrix.TypeUtility.isString(v)) {
r = v;
break;
}
}
return r != undefined ? r : def;
},
tryGetIntByNameArray: function(object, nameArr, def) {
if (typeof (object) != "object" || !object) throw "object is not valid!";
if (!(nameArr instanceof Array)) throw "nameArr is not valid!";
if (nameArr.length == 0)
return def;
var r = undefined;
for (var i = 0; i < nameArr.length; i++) {
if (!(nameArr[i] in object))
continue;
var v = object[nameArr[i]];
if (Bitrix.TypeUtility.isNumber(v)) {
r = v;
break;
}
if (Bitrix.TypeUtility.isString(v)) {
var r = parseInt(v);
if (!isNaN(r))
break;
r = undefined;
}
}
return r != undefined ? r : def;
},
tryGetInt: function(object, name, def) {
if (typeof (object) != "object" || !object) throw "object is not valid!";
if (!Bitrix.TypeUtility.isString(name)) throw "name is not valid!";
if (!(name in object))
return def;
var v = object[name];
if (Bitrix.TypeUtility.isNumber(v))
return v;
if (Bitrix.TypeUtility.isString(v)) {
var r = parseInt(v);
if (!isNaN(r))
return r;
}
return def;
},
tryGetFloat: function(object, name, def) {
if (typeof (object) != "object" || !object) throw "object is not valid!";
if (!Bitrix.TypeUtility.isString(name)) throw "name is not valid!";
if (!(name in object))
return def;
var v = object[name];
if (Bitrix.TypeUtility.isNumber(v))
return v;
if (Bitrix.TypeUtility.isString(v)) {
var r = parseFloat(v);
if (!isNaN(r))
return r;
}
return def;
},
setStringIfNotEmpty: function(object, name, val) {
if (typeof (object) != "object" || !object) throw "object is not valid!";
if (!Bitrix.TypeUtility.isString(name)) throw "name is not valid!";
if (Bitrix.TypeUtility.isNotEmptyString(val))
object[name] = val;
},
setString: function(object, name, val) {
if (typeof (object) != "object" || !object) throw "object is not valid!";
if (!Bitrix.TypeUtility.isString(name)) throw "name is not valid!";
if (Bitrix.TypeUtility.isString(val))
object[name] = val;
},
setBoolean: function(object, name, val) {
if (typeof (object) != "object" || !object) throw "object is not valid!";
if (!Bitrix.TypeUtility.isString(name)) throw "name is not valid!";
if (Bitrix.TypeUtility.isNumber(val))
object[name] = val > 0;
else if (Bitrix.TypeUtility.isBoolean(val))
object[name] = val;
},
setNumber: function(object, name, val) {
if (typeof (object) != "object" || !object) throw "object is not valid!";
if (!Bitrix.TypeUtility.isString(name)) throw "name is not valid!";
if (Bitrix.TypeUtility.isNumber(val))
object[name] = val;
}
}
Bitrix.ObjectHelper._instance = null;
Bitrix.ObjectHelper.getInstance = function() {
if (this._instance == null) {
this._instance = new Bitrix.ObjectHelper();
this._instance.initialize();
}
return this._instance;
}
Bitrix.ObjectHelper.tryGetBoolean = function(object, name, def) {
return this.getInstance().tryGetBoolean(object, name, def);
}
Bitrix.ObjectHelper.tryGetBooleanByNameArray = function(object, nameArr, def) {
return this.getInstance().tryGetBooleanByNameArray(object, nameArr, def);
}
Bitrix.ObjectHelper.tryGetString = function(object, name, def) {
return this.getInstance().tryGetString(object, name, def);
}
Bitrix.ObjectHelper.tryGetStringByNameArray = function(object, nameArr, def) {
return this.getInstance().tryGetStringByNameArray(object, nameArr, def);
}
Bitrix.ObjectHelper.tryGetInt = function(object, name, def) {
return this.getInstance().tryGetInt(object, name, def);
}
Bitrix.ObjectHelper.tryGetFloat = function(object, name, def) {
return this.getInstance().tryGetFloat(object, name, def);
}
Bitrix.ObjectHelper.tryGetIntByNameArray = function(object, nameArr, def) {
return this.getInstance().tryGetIntByNameArray(object, nameArr, def);
}
Bitrix.ObjectHelper.setStringIfNotEmpty = function(object, name, val) {
return this.getInstance().setStringIfNotEmpty(object, name, val);
}
Bitrix.ObjectHelper.setString = function(object, name, val) {
return this.getInstance().setString(object, name, val);
}
Bitrix.ObjectHelper.setBoolean = function(object, name, val) {
return this.getInstance().setBoolean(object, name, val);
}
Bitrix.ObjectHelper.setNumber = function(object, name, val) {
return this.getInstance().setNumber(object, name, val);
}
if (typeof (Bitrix.ObjectHelper.registerClass) == "function")
Bitrix.ObjectHelper.registerClass("Bitrix.ObjectHelper");
Bitrix.ArrayHelper = {};
Bitrix.ArrayHelper.toString = function(src){
if(Bitrix.TypeUtility.isString(src)) return src;
if(src instanceof Array){
var r = "";
for(var i = 0; i < src.length; i++){
var n = src[i].toString();
if(!n) continue;
if(r.length > 0) r += ",";
r += n;
}
return r;
}
var n = this.getName(values, src);
return n ? n : "";
}
Bitrix.ArrayHelper.fromString = function(str){
var r = [];
var parts = Bitrix.TypeUtility.isNotEmptyString(str) ? str.split(",") : null;
if(parts && parts.length > 0)
for(var i = 0; i < parts.length; i++){
var name = jsUtils.trim(parts[i]);
if(!name) continue;
r.push(name);
}
return r;
}
Bitrix.ArrayHelper.findInArray = function(value, array) {
if(array instanceof Array)
for(var i = 0; i < array.length; i++)
if(array[i] === value) return i;
return -1;
}
Bitrix.DomHelper = {};
Bitrix.DomHelper.addToSelect = function(selectEl, array) {
if (!(Bitrix.TypeUtility.isDomNode(selectEl) && array instanceof Array)) return;
for (var i = 0; i < array.length; i++) {
var val = array[i];
var o = null;
if (Bitrix.TypeUtility.isDomNode(val))
o = val;
else if (typeof (val) == 'object' && 'text' in val && 'value' in val) {
var o = document.createElement("OPTION");
o.text = val['text'];
o.value = val['value'];
}
if (o) {
try {
selectEl.add(o, null); // standards compliant; doesn't work in IE
}
catch (ex) {
selectEl.add(o); // IE only
}
}
}
}
Bitrix.DomHelper.removeAllFromSelect = function(selectEl) {
if (!Bitrix.TypeUtility.isDomNode(selectEl)) return;
while (selectEl.length > 0) selectEl.remove(0);
}
Bitrix.DomHelper.selectOption = function(selectEl, val, ignoreCase) {
if(!(Bitrix.TypeUtility.isDomNode(selectEl) && Bitrix.TypeUtility.isNotEmptyString(val))) return;
for(var i = 0; i < selectEl.options.length; i++) {
if(ignoreCase)
selectEl.options[i].selected = selectEl.options[i].value.toUpperCase() == val.toUpperCase();
else
selectEl.options[i].selected = selectEl.options[i].value == val;
}
}
Bitrix.DomHelper.selectOptions = function(selectEl, ary) {
if (!(Bitrix.TypeUtility.isDomNode(selectEl) && ary instanceof Array)) return;
for (var i = 0; i < selectEl.options.length; i++) {
var o = selectEl.options[i];
var sel = false;
for (var j = 0; j < ary.length; j++)
if (o.value == ary[j]) {
sel = true;
break;
}
o.selected = sel;
}
}
Bitrix.PathHelper = function Bitrix$PathHelper() {
this._initialized = false;
this._isAbsoluteUrlRx = null;
this._absoluteUrlPathRx = null;
}
Bitrix.PathHelper.prototype = {
initialize: function() {
this._initialized = true;
this._isAbsoluteUrlRx = new RegExp("^[a-z][a-z,0-9]+([\.][a-z,0-9]+)?\:", "i");
this._absoluteUrlPathRx = new RegExp("^([a-z\.0-9]+)\:(//)?([a-z_0-9\:\@\.]+)/(.+)", "i");
},
getApplicationPath: function() {
return "bitrixWebAppPath" in window && Bitrix.TypeUtility.isNotEmptyString(window["bitrixWebAppPath"]) ? window["bitrixWebAppPath"] : "/";
},
isVirtual: function(path) {
if (!Bitrix.TypeUtility.isString(path)) return false;
return path.length > 0 && path.charAt(0) == "~";
},
isAbsolute: function(path) {
if (!Bitrix.TypeUtility.isString(path)) return false;
return this._isAbsoluteUrlRx.test(path);
},
isRelative: function(path) {
return !this.isAbsolute(path);
},
parse: function(path) {
if (!Bitrix.TypeUtility.isString(path)) throw "path is not valid!";
if (this.isAbsolute(path)) {
var m = this._absoluteUrlPathRx.exec(path);
if (m == null) return null;
return { scheme: m[1], schemeSeparator: m[2], hostAndPort: m[3], path: m[4] };
}
if (this.isRelative(path))
return { scheme: "", schemeSeparator: "", hostAndPort: "", path: path };
if (this.isVirtual(path))
throw "Virtual paths is not supported!";
throw path + " could not be parsed!";
},
resolveVirtualPath: function(path) {
if (!this.isVirtual(path))
return path;
var appPath = this.getApplicationPath();
appPath = this.appendTrailingSlash(appPath);
path = path.substr(1);
while (path.length > 0 && path.charAt(0) == "/")
path = path.substr(1);
return appPath.concat(path);
},
makeVirtual: function(path) {
if (!Bitrix.TypeUtility.isString(path)) throw "path is not valid!";
if (this.isVirtual(path))
return path;
var appPath = this.getApplicationPath();
appPath = this.appendTrailingSlash(appPath);
if (path.indexOf(appPath) != 0)
return path;
return "~/" + path.substr(appPath.length);
},
appendTrailingSlash: function(path) {
if (!Bitrix.TypeUtility.isString(path)) throw "path is not valid!";
if (path.length == 0)
return "/";
if (path.charAt(path.length - 1) != "/")
path += "/";
return path;
},
combine: function(path1, path2) {
if (!path1 && !path2) return "";
if (path1 && !Bitrix.TypeUtility.isString(path1)) throw "path1 is not valid!";
if (path2 && !Bitrix.TypeUtility.isString(path2)) throw "path2 is not valid!";
if (!path2) return path1;
if (!path1) return path2;
if (this.isVirtual(path2) || !this.isRelative(path2))
return path2;
var toUp = 0;
if (path2.charAt(0) == "/")
return path2;
while (path2.length > 0) {
if (path2.indexOf("../") == 0) {
path2 = path2.substr(3);
toUp++;
continue;
}
if (path2.indexOf("./") == 0) {
path2 = path2.substr(2);
continue;
}
if (path2.indexOf("/") == 0) {
path2 = path2.substr(1);
continue;
}
break;
}
if (toUp > 0) {
var path1IsVirtual = this.isVirtual(path1);
if (path1IsVirtual)
path1 = this.resolveVirtualPath(path1);
var fragments = this.parse(path1);
var path = fragments != null ? fragments.path : "";
if (path.length > 0) {
while (toUp > 0) {
var partIndex = path.lastIndexOf("/");
if (partIndex < 0) {
path = "";
break;
}
path = path.substr(0, partIndex);
toUp--;
}
path1 = fragments.scheme + ":" + fragments.schemeSeparator + fragments.hostAndPort + "/";
if (path.length > 0)
path1 += path;
}
if (path1IsVirtual)
path1 = this.makeVirtual(path1);
}
var r = path1;
if (path2.length > 0) {
r = this.appendTrailingSlash(r) + path2;
}
return r;
},
getFileExtension: function(path) {
if (!Bitrix.TypeUtility.isString(path)) throw "path is not valid!";
var ext = "";
var queryIndex = path.indexOf("?");
if (queryIndex >= 0)
path = path.substr(0, queryIndex);
var dotIndex = path.lastIndexOf(".");
if (dotIndex < 0) return "";
return path.substr(dotIndex, path.length - dotIndex);
}
}
Bitrix.PathHelper._instance = null;
Bitrix.PathHelper.getInstance = function() {
if (this._instance == null) {
this._instance = new Bitrix.PathHelper();
this._instance.initialize();
}
return this._instance;
}
Bitrix.PathHelper.getApplicationPath = function() {
return this.getInstance().getApplicationPath();
}
Bitrix.PathHelper.isVirtual = function(path) {
return this.getInstance().isVirtual(path);
}
Bitrix.PathHelper.resolveVirtualPath = function(path) {
return this.getInstance().resolveVirtualPath(path);
}
Bitrix.PathHelper.isRelative = function(path) {
return this.getInstance().isRelative(path);
}
Bitrix.PathHelper.getUrlPath = function(path) {
return this.getInstance().getUrlPath(path);
}
Bitrix.PathHelper.combine = function(path1, path2) {
return this.getInstance().combine(path1, path2);
}
Bitrix.PathHelper.getFileExtension = function(path) {
return this.getInstance().getFileExtension(path);
}
if (typeof (Bitrix.PathHelper.registerClass) == "function")
Bitrix.PathHelper.registerClass("Bitrix.PathHelper");
Bitrix.EnumHelper = function Bitrix$EnumHelper() {}
Bitrix.EnumHelper.getName = function(values, id) {
if (!(values instanceof Object)) throw "Bitrix.EnumHelper.getName: values are not specified!";
if (!(typeof (id) == "number" || id instanceof Number)) throw "Bitrix.EnumHelper.getName: id is not specified!";
for (var key in values)
if (values[key] === id)
return key;
return null;
}
Bitrix.EnumHelper.getId = function(values, name, ignoreCase) {
if (!(values instanceof Object)) throw "Bitrix.EnumHelper.getId: values are not specified!";
if (!(typeof (name) == "string" || name instanceof String)) throw "Bitrix.EnumHelper.getId: name is not specified!";
for (var key in values)
if(key === name || (ignoreCase === true && key.toUpperCase() === name.toUpperCase()))
return values[key];
return null;
}
Bitrix.EnumHelper.checkPresenceById = function(values, id) {
return this.getName(values, id) != null;
}
Bitrix.EnumHelper.fromString = function(str, values){
var r = new Array();
var parts = Bitrix.TypeUtility.isNotEmptyString(str) ? str.split(",") : null;
if(parts && parts.length > 0)
for(var i = 0; i < parts.length; i++){
var name = jsUtils.trim(parts[i]);
if(!name) continue;
var id = this.getId(values, name, true);
if(id) r.push(id);
}
return r;
}
Bitrix.EnumHelper.toString = function(src, values){
if(Bitrix.TypeUtility.isString(src)) return src;
if(src instanceof Array){
var r = "";
for(var i = 0; i < src.length; i++){
var n = this.getName(values, src[i]);
if(!n) continue;
if(r.length > 0) r += ",";
r += n;
}
return r;
}
var n = this.getName(values, src);
return n ? n : "";
}
Bitrix.EnumHelper.findValue = function(val, values){
if(!Bitrix.TypeUtility.isNumber(val)) return null;
for (var key in values)
if(values[key] == val)
return val;
return null;
}
Bitrix.EnumHelper.tryParse = function(obj, values){
if(Bitrix.TypeUtility.isString(obj)) return this.fromString(obj, values);
var r = [];
if(Bitrix.TypeUtility.isNumber(obj)) {
var val = this.findValue(obj, values);
if(val) r.push(r);
}
return r;
}
if (typeof (Bitrix.EnumHelper.registerClass) == "function")
Bitrix.EnumHelper.registerClass("Bitrix.EnumHelper");
Bitrix.EventPublisher = function Bitrix$EventPublisher() {
this._listeners = null;
}
Bitrix.EventPublisher.prototype.addListener = function(listener) {
if (!Bitrix.TypeUtility.isFunction(listener)) throw "listener is not valid!";
if (this._listeners == null)
this._listeners = new Array();
this._listeners.push(listener);
}
Bitrix.EventPublisher.prototype.removeListener = function(listener) {
if (!Bitrix.TypeUtility.isFunction(listener)) throw "listener is not valid!";
if (this._listeners == null) return;
var index = -1;
for (var i = 0; i < this._listeners.length; i++) {
if (this._listeners[i] != listener) continue;
index = i;
break;
}
if (index < 0) return;
this._listeners.splice(index, 1);
}
Bitrix.EventPublisher.prototype.fire = function() {
if (this._listeners == null) return;
for (var i = 0; i < this._listeners.length; i++) {
this._listeners[i].apply(this, arguments);
}
}
if (typeof (Bitrix.EnumHelper.registerClass) == "function")
Bitrix.EventPublisher.registerClass("Bitrix.EventPublisher");
Bitrix.ElementPositioningUtility = function() {
if (typeof (Bitrix.ElementPositioningUtility.initializeBase) == "function")
Bitrix.ElementPositioningUtility.initializeBase(this);
}
Bitrix.ElementPositioningUtility.prototype = {
initialize: function() {
this._isInitialized = true;
},
getElementRect: function(el) {
var r = { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 };
if (!el)
return r;
if (typeof (el.getBoundingClientRect) != "undefined") {
var clientRect = el.getBoundingClientRect();
var root = document.documentElement;
var body = document.body;
r.top = clientRect.top + root.scrollTop + body.scrollTop;
r.left = clientRect.left + root.scrollLeft + body.scrollLeft;
r.width = clientRect.right - clientRect.left;
r.height = clientRect.bottom - clientRect.top;
r.right = clientRect.right + root.scrollLeft + body.scrollLeft;
r.bottom = clientRect.bottom + root.scrollTop + body.scrollTop;
}
else {
var x = 0, y = 0, w = el.offsetWidth, h = el.offsetHeight;
var first = true;
for (; el != null; el = el.offsetParent) {
x += el.offsetLeft;
y += el.offsetTop;
if (first) {
first = false;
continue;
}
var elBorderLeftWidth = 0, elBorderTopWidth = 0;
//if(typeof(document.all) == "undefined" || typeof(window.opera) != "undefined"){
if (Sys.Browser.agent != Sys.Browser.InternetExplorer) {
var elCompStyle = document.defaultView.getComputedStyle(el, '');
elBorderLeftWidth = parseInt(elCompStyle.getPropertyValue('border-left-width'));
elBorderTopWidth = parseInt(elCompStyle.getPropertyValue('border-top-width'));
}
else {
var elStyle = el.currentStyle;
elBorderLeftWidth = parseInt(elStyle.getAttribute('borderLeftWidth'));
elBorderTopWidth = parseInt(elStyle.getAttribute('borderTopWidth'));
}
if (!isNaN(elBorderLeftWidth) && elBorderLeftWidth > 0)
x += elBorderLeftWidth;
if (!isNaN(elBorderTopWidth) && elBorderTopWidth > 0)
y += elBorderTopWidth;
}
r.top = y;
r.left = x;
r.width = w;
r.height = h;
r.right = r.left + w;
r.bottom = r.top + h;
}
return r;
},
getOffset: function(offsetEl, sourceEl) {
if (!offsetEl) throw "Bitrix.ElementPositioningUtility.getOffset: Offset element is not defined!";
if (!sourceEl) throw "Bitrix.ElementPositioningUtility.getOffset: Source element is not defined!";
var offsetElRect = this.getElementRect(offsetEl);
var sourceElRect = this.getElementRect(sourceEl);
return Bitrix.Point.create(offsetElRect.top - sourceElRect.top, offsetElRect.left - sourceElRect.left);
},
_getNumberOrZero: function(val) {
return !isNaN(val) ? val : 0;
},
getElementMargins: function(el) {
var r = { top: 0, right: 0, bottom: 0, left: 0 };
if (!el)
return r;
if (/*@cc_on!@*/false) { //IE
var elStyle = el.runtimeStyle;
r.top = this._getNumberOrZero(parseInt(elStyle.getAttribute('marginTop')));
r.right = this._getNumberOrZero(parseInt(elStyle.getAttribute('marginRight')));
r.bottom = this._getNumberOrZero(parseInt(elStyle.getAttribute('marginBottom')));
r.left = this._getNumberOrZero(parseInt(elStyle.getAttribute('marginLeft')));
}
else {
var elCompStyle = document.defaultView.getComputedStyle(el, '');
r.top = this._getNumberOrZero(parseInt(elCompStyle.getPropertyValue('margin-top')));
r.right = this._getNumberOrZero(parseInt(elCompStyle.getPropertyValue('margin-right')));
r.bottom = this._getNumberOrZero(parseInt(elCompStyle.getPropertyValue('margin-bottom')));
r.left = this._getNumberOrZero(parseInt(elCompStyle.getPropertyValue('margin-left')));
}
return r;
}
}
Bitrix.ElementPositioningUtility._instance = null;
Bitrix.ElementPositioningUtility.getInstance = function() {
if (this._instance == null) {
this._instance = new Bitrix.ElementPositioningUtility();
this._instance.initialize();
}
return this._instance;
}
Bitrix.ElementPositioningUtility.getElementRect = function(el) {
return this.getInstance().getElementRect(el);
}
Bitrix.ElementPositioningUtility.getElementMargins = function(el) {
return this.getInstance().getElementMargins(el);
}
Bitrix.ElementPositioningUtility.getWindowScrollPos = function(doc) {
if (self.pageYOffset) return { scrollLeft: self.pageXOffset, scrollTop: self.pageYOffset };
if (!doc) doc = document;
var vp = this.getViewPortElement(doc);
return { scrollLeft: vp.scrollLeft, scrollTop: vp.scrollTop };
}
Bitrix.ElementPositioningUtility.getViewPortElement = function(doc) {
if (!doc) doc = document;
return document.compatMode === "CSS1Compat" ? document.documentElement : document.body;
}
if (typeof (Bitrix.ElementPositioningUtility.registerClass) == "function")
Bitrix.ElementPositioningUtility.registerClass("Bitrix.ElementPositioningUtility");
Bitrix.SwfUtility = function Bitrix$SwfUtility() {
if (typeof (Bitrix.SwfUtility.initializeBase) == "function")
Bitrix.SwfUtility.initializeBase(this);
this._isInitialized = false;
this._codeBaseUrl = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=";
this._version = null;
}
Bitrix.SwfUtility.prototype = {
initialize: function() {
this._isInitialized = true;
},
getVersion: function() {
if (this._version != null)
return this._version;
if (/*@cc_on!@*/false) {
for (var i = 15; i > 1; i--) {
try {
if (!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + i)))
continue;
return (this._version = i);
}
catch (e) { }
}
}
else if (navigator.plugins) {
for (var i = 0, l = navigator.plugins.length; i < l; i++)
if (navigator.plugins[i].name.indexOf('Flash') != -1) {
var r = parseInt(navigator.plugins[i].description.substr(16, 2));
return (this._version = !isNaN(r) ? r : -1);
}
}
else
this._version = -1;
return this._version;
},
_createNewParameter: function(name, value) {
if (/*@cc_on!@*/false) //IE
return ''
var r = document.createElement('PARAM');
r.setAttribute("name", name);
r.setAttribute("value", value.toString());
return r;
},
createElement: function(parentId, url, width, height, wmode, ver, altImgUrl) {
var parent = document.getElementById(parentId);
if (!parent)
return;
var container = document.createElement('DIV');
container.style.height = height + "px";
container.style.width = width + "px";
container.style.border.width = "0px";
container.style.border.style = "none";
var curVer = this.getVersion();
if (curVer < 1 || (ver && curVer < parseInt(ver))) {
if (Bitrix.TypeUtility.isNotEmptyString(altImgUrl)) {
var altImage = document.createElement('IMG');
altImage.src = altImgUrl;
altImage.style.width = width + "px";
altImage.style.height = height + "px";
container.appendChild(altImage);
parent.appendChild(container);
}
else
parent.style.display = "none";
return;
}
if (!wmode)
wmode = "transparent";
if (/*@cc_on!@*/false) {
var objectStr = '');
container.innerHTML = objectStr;
}
else {
var objectElement = document.createElement('OBJECT');
objectElement.setAttribute("type", "application/x-shockwave-flash");
objectElement.setAttribute("data", url);
//objectElement.setAttribute("codebase", this._codeBaseUrl);
objectElement.setAttribute("width", width);
objectElement.setAttribute("height", height);
objectElement.appendChild(this._createNewParameter("movie", url));
objectElement.appendChild(this._createNewParameter("quality", "high"));
objectElement.appendChild(this._createNewParameter("bgcolor", "#ffffff"));
if (wmode)
objectElement.appendChild(this._createNewParameter("wmode", wmode));
if (Bitrix.TypeUtility.isNotEmptyString(altImgUrl)) {
var altImage = document.createElement('IMG');
altImage.src = altImgUrl;
altImage.style.width = width + "px";
altImage.style.height = height + "px";
objectElement.appendChild(altImage);
}
container.appendChild(objectElement);
}
parent.appendChild(container);
}
}
Bitrix.SwfUtility._instance = null;
Bitrix.SwfUtility.getInstance = function() {
if (this._instance == null) {
this._instance = new Bitrix.SwfUtility();
this._instance.initialize();
}
return this._instance;
}
if (typeof (Bitrix.SwfUtility.registerClass) == "function")
Bitrix.SwfUtility.registerClass("Bitrix.SwfUtility");
Bitrix.SilverlightUtility = function Bitrix$SilverlightUtility() {
if (typeof (Bitrix.SilverlightUtility.initializeBase) == "function")
Bitrix.SilverlightUtility.initializeBase(this);
this._isInitialized = false;
this._version = null;
}
Bitrix.SilverlightUtility.prototype = {
initialize: function() {
this._isInitialized = true;
},
getVersion: function() {
if (this._version != null)
return this._version;
if (/*@cc_on!@*/false) {
for (var i = 15; i > 1; i--) {
try {
if (!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + i)))
continue;
return (this._version = i);
}
catch (e) { }
}
}
else if (navigator.plugins) {
for (var i = 0, l = navigator.plugins.length; i < l; i++)
if (navigator.plugins[i].name.indexOf('Flash') != -1) {
var r = parseInt(navigator.plugins[i].description.substr(16, 2));
return (this._version = !isNaN(r) ? r : -1);
}
}
else
this._version = -1;
return this._version;
},
_createNewParameter: function(name, value) {
if (/*@cc_on!@*/false) //IE
return ''
var r = document.createElement('PARAM');
r.setAttribute("name", name);
r.setAttribute("value", value.toString());
return r;
},
// creating silverlight app through javascript for determining it's size and error handling in admin page
createElement: function(parentId, url, width, height, hfWidth, hfHeight, widthCaptionId,
heightCaptionId, version, background, errorMsgId) {
var parent = document.getElementById(parentId);
parent.style.width = "";
parent.style.height = "";
if (!parent)
return;
var w, h;
if (height != null && height > 0) h = height
else h = 1;
if (width != null && width > 0) w = width
else w = 1;
var prop = {};
prop.width = w;
prop.height = h;
if (version != null && version != "" && typeof (version) != "undefined") prop.minRuntimeVersion = version;
prop.background = "transparent";
Silverlight.createObjectEx({
source: url,
parentElement: parent,
id: parentId + "_SilverlightControl",
properties: prop,
events: {
"onResize": function(sender, args) {
var sl = document.getElementById(parent.id + "_SilverlightControl");
if (parent.style.width == "" && sender.content.actualWidth != 0) {
parent.style.width = sender.content.actualWidth + "px";
if (sl) sl.setAttribute("width", sender.content.actualWidth);
var w = document.getElementById(hfWidth);
if (w) w.value = sender.content.actualWidth;
w = document.getElementById(widthCaptionId);
if (w) {
w.textContent = sender.content.actualWidth;
w.innerText = sender.content.actualWidth;
}
}
if (parent.style.height == "" && sender.content.actualHeight != 0) {
parent.style.height = sender.content.actualHeight + "px";
if (sl) sl.setAttribute("height", sender.content.actualHeight);
var h = document.getElementById(hfHeight);
if (h)
h.value = sender.content.actualHeight;
h = document.getElementById(heightCaptionId);
if (h) {
h.innerText = sender.content.actualHeight;
h.textContent = sender.content.actualHeight;
}
}
},
"onError": function(sender, errorArgs) {
var sl = document.getElementById(parent.id + "_SilverlightControl");
if (sl) {
sl.setAttribute("height", "0px");
sl.setAttribute("width", "0px");
}
var h = document.getElementById(hfHeight);
if (h)
h.value = "0";
h = document.getElementById(heightCaptionId);
if (h) {
h.innerText = "0";
h.textContent = "0";
}
var w = document.getElementById(hfWidth);
if (w) w.value = "0";
w = document.getElementById(widthCaptionId);
if (w) {
w.textContent = "0";
w.innerText = "0";
}
// Create the error message to display.
var errorMsg = Bitrix.AdminSilverlightError.ErrorTitle + "\n";
// Specify error information common to all errors.
errorMsg += Bitrix.AdminSilverlightError.ErrorType + ": " + errorArgs.errorType + "\n";
errorMsg += Bitrix.AdminSilverlightError.ErrorMessage + ": " + errorArgs.errorMessage + "\n";
errorMsg += Bitrix.AdminSilverlightError.ErrorCode + ": " + errorArgs.errorCode + "\n";
errorMsg += Bitrix.AdminSilverlightError.ChooseAnotherFile;
var er = document.getElementById(errorMsgId);
if (er) {
er.innerText = errorMsg;
er.textContent = errorMsg;
er.style.visibilty = "visible";
er.style.display = "block";
}
}
}
});
}
}
Bitrix.SilverlightUtility._instance = null;
Bitrix.SilverlightUtility.getInstance = function() {
if (this._instance == null) {
this._instance = new Bitrix.SilverlightUtility();
this._instance.initialize();
}
return this._instance;
}
if (typeof (Bitrix.SilverlightUtility.registerClass) == "function")
Bitrix.SilverlightUtility.registerClass("Bitrix.SilverlightUtility");
if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
Bitrix.SelectionUtility =
{
getSelection: function(inputElement) {
if (inputElement.createTextRange) {
var result = {};
var r = document.selection.createRange().duplicate()
r.moveEnd('character', inputElement.value.length)
result.start = (r.text == '') ? inputElement.value.length : inputElement.value.lastIndexOf(r.text);
var r = document.selection.createRange().duplicate()
r.moveStart('character', -inputElement.value.length)
result.end = r.text.length;
return result;
}
else if (typeof inputElement.selectionStart != 'undefined') {
return {
start: inputElement.selectionStart,
end: inputElement.selectionEnd
}
}
},
setSelection: function(inputElement, start, end) {
if (typeof end != 'number' || end < start)
end = start;
if (inputElement.createTextRange) {
var range = inputElement.createTextRange();
range.moveStart("character", start);
range.moveEnd("character", end - inputElement.value.length);
range.select();
}
else if (inputElement.setSelectionRange) {
inputElement.setSelectionRange(start, end);
}
}
}