%PDF- %PDF-
| Direktori : /home/bitrix/www/local/components/UB/photogallery.upload/templates/.default/ |
| Current File : //home/bitrix/www/local/components/UB/photogallery.upload/templates/.default/script.js |
function doUpload(){
$('.bxiu-fake-input').click();
window.scrollTo(0, $(".bxiu-simple-cont").offset().top);
}
(function(window){
window.BXImageUploader = function(Params)
{
this.id = Params.id;
this.initConfig = Params.initConfig;
this.showWatermark = Params.showWatermark;
this.showAdditionalSettings = Params.showAdditionalSettings;
this.opacityForText = Params.opacityForText !== false;
this.thumbnailSize = parseInt(Params.thumbnailSize);
this.redirectUrl = Params.redirectUrl;
this.dropUrl = Params.dropUrl;
this.type = Params.type;
this.typeEx = Params.typeEx;
this.popupOpenType = this.typeEx == 'applet' ? 'top' : '';
this.uploadMaxFileSize = parseInt(Params.uploadMaxFileSize) || 0;
this.availUpload = parseInt(Params.availUpload);
if (Params.type == 'form')
{
this.simpleUploader = new SimpleUploader({
oUploader: this,
id: Params.id,
thumbnailSize: this.thumbnailSize,
availUpload: this.availUpload
});
}
this.oUploadHandler = window['oBXUploaderHandler_' + this.id];
};
window.BXImageUploader.prototype = {
Init: function()
{
var _this = this;
this.pForm = BX(this.id + '_form');
// Set Album to album selector
this.pAlbumSel = BX('photo_album_id' + this.id);
if (this.pAlbumSel)
{
this.pNewAlbumName = BX('new_album_name' + this.id);
this.pAlbumSel.onchange = function()
{
_this.pNewAlbumName.style.display = _this.pAlbumSel.value == 'new' ? '' : 'none';
_this.pForm.photo_album_id.value = _this.pAlbumSel.value;
if (_this.pAlbumSel.value == 'new')
BX.focus(_this.pNewAlbumName);
};
this.pNewAlbumName.style.display = this.pAlbumSel.value == 'new' ? '' : 'none';
this.pNewAlbumName.onfocus = function(){this.select();};
this.pNewAlbumName.onchange = this.pNewAlbumName.onblur = this.pNewAlbumName.onkeyup = function(){_this.pForm.new_album_name.value = _this.pNewAlbumName.value;};
this.pForm.photo_album_id.value = this.pAlbumSel.value;
this.pForm.new_album_name.value = this.pNewAlbumName.value;
}
if (this.showAdditionalSettings)
{
// Additional params
this.pControlsCont = BX('bxiu_controls_cont' + this.id);
if (!BX.browser.IsDoctype() && BX.browser.IsIE())
BX.addClass(this.pControlsCont, "photo-quirks-mode");
this.pResizeSel = BX('bxiu_resize_' + this.id);
this.pAddParamsCont = BX('add_params_cont' + _this.id);
this.pWatermarkCont = BX(this.id + '_watermark_cont');
this.pSeparator = BX('bxiu_separator_' + this.id);
if (this.pResizeSel)
{
this.pResizeSel.onchange = function()
{
if (_this.oUploadHandler)
_this.oUploadHandler.SetOriginalSize(this.value);
_this.pForm.photo_resize_size.value = this.value;
};
this.pForm.photo_resize_size.value = this.pResizeSel.value;
}
if (this.showWatermark)
{
BX(this.id + '_use_watermark').onclick = function(){_this.SetUsing(this.checked, true);};
this.SetUsing(this.initConfig.watermark.use, false);
// Watermark type
this.pTypeText = BX(this.id + '_wmark_type_text');
this.pTypeImg = BX(this.id + '_wmark_type_img');
this.pTypeText.onclick = function(){_this.SetType('text', true);};
this.pTypeImg.onclick = function(){_this.SetType('image', true);};
this.InitTextTypeControls();
this.InitImageTypeControls();
this.SetType(this.initConfig.watermark.type, false);
}
BX('show_add_params_link' + this.id).onclick = function()
{
BX.addClass(_this.pControlsCont, 'bxiu-top-controls-add');
_this.SaveUserOption('additional', 'Y');
_this.Resize();
};
BX('hide_add_params_link' + this.id).onclick = function()
{
BX.removeClass(_this.pControlsCont, 'bxiu-top-controls-add');
_this.SaveUserOption('additional', 'N');
_this.Resize();
};
}
if (this.initConfig.add)
BX.addClass(this.pControlsCont, 'bxiu-top-controls-add');
else
BX.removeClass(this.pControlsCont, 'bxiu-top-controls-add');
this.Resize();
},
SaveUserOption: function(option, value)
{
BX.userOptions.save('main', this.id, option, value);
},
SetUsing: function(use, bSave)
{
if (use)
BX.removeClass(this.pWatermarkCont, "bxiu-watermark-cont-hide");
else
BX.addClass(this.pWatermarkCont, "bxiu-watermark-cont-hide");
if (bSave)
{
if (this.oUploadHandler)
this.oUploadHandler.Watermark.Using(!!use, false);
this.SaveUserOption('use', use ? 'Y' : 'N');
}
this.pForm.photo_watermark_use.value = use ? 'Y' : 'N';
this.Resize();
},
SetType: function(type, bSave)
{
if (type != 'image')
type = 'text';
if (type == 'text')
{
this.pTypeText.checked = true;
BX.removeClass(this.pControlsCont, 'bxiu-watermark-type-image');
BX.addClass(this.pControlsCont, 'bxiu-watermark-type-text');
}
else
{
this.pTypeImg.checked = true;
BX.addClass(this.pControlsCont, 'bxiu-watermark-type-image');
BX.removeClass(this.pControlsCont, 'bxiu-watermark-type-text');
}
if (this.oUploadHandler)
this.oUploadHandler.Watermark.Type(type);
if (bSave !== false)
this.SaveUserOption('type', type);
this.pForm.photo_watermark_type.value = type;
this.Resize();
},
SetCopyright: function(val, bSave)
{
if (val)
{
this.pCopyright.title = BXIU_MESS.CopyrightTitleOff;
this.pWatermarkText.value = this.pWatermarkText.value;
BX.removeClass(this.pCopyright, 'bxiu-copyright-none');
BX.addClass(this.pWatermarkText, 'bxiu-show-copyright');
// TODO: correction for IE
}
else
{
this.pCopyright.title = BXIU_MESS.CopyrightTitleOn;
BX.addClass(this.pCopyright, 'bxiu-copyright-none');
this.pWatermarkText.value = this.pWatermarkText.value;
BX.removeClass(this.pWatermarkText, 'bxiu-show-copyright');
}
if (this.oUploadHandler)
this.oUploadHandler.Watermark.Copyright(val);
this.pForm.photo_watermark_copyright.value = val ? 'Y' : 'N';
if (bSave !== false)
this.SaveUserOption('copyright', val ? 'Y' : 'N');
},
InitTextTypeControls: function()
{
var _this = this;
this.pWatermarkText = BX(this.id + '_wmark_text');
this.textButCont = BX(this.id + '_text_but_cont');
this.pForm.photo_watermark_text.value = this.pWatermarkText.value = this.initConfig.watermark.text || '';
this.pWatermarkText.onchange = this.pWatermarkText.onblur = this.pWatermarkText.onkeyup = function()
{
_this.pForm.photo_watermark_text.value = this.value;
if (_this.oUploadHandler)
_this.oUploadHandler.Watermark.Text(this.value);
_this.SaveUserOption('text', this.value);
};
// Copyright but
this.pCopyright = BX.create("DIV", {props: {className: 'bxiu-but bxiu-copyright'}});
this.pCopyright.onclick = function(){_this.SetCopyright(_this.pForm.photo_watermark_copyright.value == 'N', true);};
this.textButCont.appendChild(BX.create("DIV", {props: {className: 'bxiu-but-cont'}})).appendChild(this.pCopyright);
this.SetCopyright(this.initConfig.watermark.copyright, false);
// Color but
this.oColorpicker = new ColorPicker({oUploader: this});
this.textButCont.appendChild(BX.create("DIV", {props: {className: 'bxiu-but-cont'}})).appendChild(this.oColorpicker.pWnd);
if (this.initConfig.watermark.color)
this.pForm.photo_watermark_color.value = this.initConfig.watermark.color;
// Position
this.oTextPosition = new Popup({
id: 'position_text',
classPrefix: 'bxiu-but-pos-',
popupOpenType: this.popupOpenType,
items: [
{value: "TopLeft", title: BXIU_MESS.TopLeft},
{value: "TopCenter", title: BXIU_MESS.TopCenter},
{value: "TopRight", title: BXIU_MESS.TopRight},
{value: "CenterLeft", title: BXIU_MESS.CenterLeft},
{value: "Center", title: BXIU_MESS.Center},
{value: "CenterRight", title: BXIU_MESS.CenterRight},
{value: "BottomLeft", title: BXIU_MESS.BottomLeft},
{value: "BottomCenter", title: BXIU_MESS.BottomCenter},
{value: "BottomRight", title: BXIU_MESS.BottomRight}
],
currentValue: this.initConfig.watermark.position,
title: BXIU_MESS.PositionTitle,
OnCreate: function(obj)
{
obj.type = _this.type;
BX.addClass(obj.pWnd, 'bxiu-but-pos-center');
BX.addClass(obj.oPopup.Get(), 'bxiu-pos-popup');
},
OnSelect: function(obj, item)
{
obj.pWnd.className = 'bxiu-but bxiu-but-pos-' + item.value.toLowerCase();
if (_this.oUploadHandler)
_this.oUploadHandler.Watermark.Position(item.value);
_this.pForm.photo_watermark_position.value = item.value;
_this.SaveUserOption('position', item.value);
}
});
this.textButCont.appendChild(BX.create("DIV", {props: {className: 'bxiu-but-cont'}})).appendChild(this.oTextPosition.pWnd);
// Text size
this.oTextSize = new Popup({
id: 'size_text',
classPrefix: 'bxiu-but-t-size-',
popupOpenType: this.popupOpenType,
items: [
{value: "big", title: BXIU_MESS.SizeBig},
{value: "middle", title: BXIU_MESS.SizeMiddle},
{value: "small", title: BXIU_MESS.SizeSmall}
],
currentValue: this.initConfig.watermark.size,
title: BXIU_MESS.SizeTitle,
OnCreate: function(obj)
{
obj.type = _this.type;
BX.addClass(obj.pWnd, 'bxiu-but-t-size-middle');
BX.addClass(obj.oPopup.Get(), 'bxiu-text-size-popup');
},
OnSelect: function(obj, item)
{
obj.pWnd.className = 'bxiu-but bxiu-but-t-size-' + item.value.toLowerCase();
if (_this.oUploadHandler)
_this.oUploadHandler.Watermark.Size(item.value);
_this.pForm.photo_watermark_size.value = item.value;
_this.SaveUserOption('size', item.value);
}
});
this.textButCont.appendChild(BX.create("DIV", {props: {className: 'bxiu-but-cont'}})).appendChild(this.oTextSize.pWnd);
// Text opacity
if (this.opacityForText)
{
this.oTextOpacity = new OpacityControl({
currentValue: this.initConfig.watermark.opacity,
OnSelect: function(value)
{
if (_this.oUploadHandler)
_this.oUploadHandler.Watermark.Opacity(value);
_this.pForm.photo_watermark_opacity.value = value;
_this.SaveUserOption('opacity', value);
}
});
this.textButCont.appendChild(BX.create("DIV", {props: {className: 'bxiu-opacity-cont'}})).appendChild(this.oTextOpacity.pCont);
}
},
InitImageTypeControls: function()
{
var _this = this;
this.imgButCont = BX(this.id + '_img_but_cont');
this.pImgForm = BX('bxiu_wm_form' + this.id);
this.pImgInput = BX('bxiu_wm_img' + this.id);
this.pImgInput.onchange = function()
{
BX.ajax.submit(_this.pImgForm, function()
{
var pCont = BX('bxiu_wm_img_iframe_cont' + _this.id);
pCont.className = 'bxiu-iframe-cont-ok';
setTimeout(function(){
var res = top.bxiu_wm_img_res;
if (res.error)
return alert(res.error);
_this.ShowThumbnailImage(res.path, res.width, res.height);
}, 50);
});
};
// Position
this.oImagePosition = new Popup({
id: 'position_image',
classPrefix: 'bxiu-but-pos-',
popupOpenType: this.popupOpenType,
items: [
{value: "TopLeft", title: BXIU_MESS.TopLeft},
{value: "TopCenter", title: BXIU_MESS.TopCenter},
{value: "TopRight", title: BXIU_MESS.TopRight},
{value: "CenterLeft", title: BXIU_MESS.CenterLeft},
{value: "Center", title: BXIU_MESS.Center},
{value: "CenterRight", title: BXIU_MESS.CenterRight},
{value: "BottomLeft", title: BXIU_MESS.BottomLeft},
{value: "BottomCenter", title: BXIU_MESS.BottomCenter},
{value: "BottomRight", title: BXIU_MESS.BottomRight}
],
currentValue: this.initConfig.watermark.position,
title: BXIU_MESS.PositionTitle,
OnCreate: function(obj)
{
obj.type = _this.type;
BX.addClass(obj.pWnd, 'bxiu-but-pos-center');
BX.addClass(obj.oPopup.Get(), 'bxiu-pos-popup');
},
OnSelect: function(obj, item)
{
obj.pWnd.className = 'bxiu-but bxiu-but-pos-' + item.value.toLowerCase();
if (_this.oUploadHandler)
_this.oUploadHandler.Watermark.Position(item.value);
_this.pForm.photo_watermark_position.value = item.value;
_this.SaveUserOption('position', item.value);
}
});
this.imgButCont.appendChild(BX.create("DIV", {props: {className: 'bxiu-but-cont'}})).appendChild(this.oImagePosition.pWnd);
// Image size
this.oImgSize = new Popup({
id: 'size_image',
classPrefix: 'bxiu-but-i-size-',
popupOpenType: this.popupOpenType,
items: [
{value: "real", title: BXIU_MESS.SizeReal},
{value: "big", title: BXIU_MESS.SizeBig},
{value: "middle", title: BXIU_MESS.SizeMiddle},
{value: "small", title: BXIU_MESS.SizeSmall}
],
currentValue: this.initConfig.watermark.size,
title: BXIU_MESS.SizeTitle,
OnCreate: function(obj)
{
obj.type = _this.type;
BX.addClass(obj.pWnd, 'bxiu-but-i-size-real');
BX.addClass(obj.oPopup.Get(), 'bxiu-img-size-popup');
},
OnSelect: function(obj, item)
{
obj.pWnd.className = 'bxiu-but bxiu-but-i-size-' + item.value.toLowerCase();
if (_this.oUploadHandler)
_this.oUploadHandler.Watermark.Size(item.value);
_this.pForm.photo_watermark_size.value = item.value;
_this.SaveUserOption('size', item.value);
}
});
this.imgButCont.appendChild(BX.create("DIV", {props: {className: 'bxiu-but-cont'}})).appendChild(this.oImgSize.pWnd);
// Image opacity
this.oImgOpacity = new OpacityControl({
currentValue: this.initConfig.watermark.opacity,
OnSelect: function(value)
{
if (_this.oUploadHandler)
_this.oUploadHandler.Watermark.Opacity(value);
_this.pForm.photo_watermark_opacity.value = value;
_this.SaveUserOption('opacity', value);
}
});
this.imgButCont.appendChild(BX.create("DIV", {props: {className: 'bxiu-img-opacity-cont'}})).appendChild(this.oImgOpacity.pCont);
},
ShowThumbnailImage: function(value, width, height)
{
var _this = this;
if (!this.watermarkPreview)
this.watermarkPreview = BX('watermark_img_preview' + this.id);
if (!this.watermarkPreviewCont)
this.watermarkPreviewCont = BX(this.id + '_wmark_preview_cont');
if (!this.watermarkPreviewDel)
{
this.watermarkPreviewDel = BX(this.id + '_wmark_preview_del');
this.watermarkPreviewDel.onclick = function()
{
if (_this.oUploadHandler)
_this.oUploadHandler.Watermark.File('');
_this.watermarkPreview.src = '';
_this.watermarkPreviewCont.style.display = "none";
_this.watermarkPreview.src = "/bitrix/images/1.gif";
_this.SaveUserOption('file', '');
_this.pForm.photo_watermark_path.value = '';
};
}
this.watermarkPreviewCont.style.display = "block";
if (this.oUploadHandler)
{
this.oUploadHandler.Watermark.File(value);
this.oUploadHandler.Watermark.FileWidth(width);
this.oUploadHandler.Watermark.FileHeight(height);
}
this.watermarkPreview.removeAttribute('width');
this.watermarkPreview.removeAttribute('height');
this.watermarkPreview.src = value;
this.watermarkPreview.style.display = '';
this.watermarkPreview.style.margin = '5px';
this.pForm.photo_watermark_path.value = value;
this.SaveUserOption('file', value);
setTimeout(function(){
if (width > height && width > 200)
_this.watermarkPreview.width = '200';
else if (height > width && height > 200)
_this.watermarkPreview.height = '200';
}, 5);
this.watermarkPreview.onerror = function() {this.style.display = 'none';};
this.watermarkPreview.onload = function()
{
_this.Resize();
setTimeout(function()
{
_this.Resize();
if (_this.watermarkPreview.src != "/bitrix/images/1.gif")
{
_this.watermarkPreviewDel.style.left = (parseInt(_this.watermarkPreview.offsetWidth) - 6) + 'px';
_this.watermarkPreviewDel.style.display = "block";
}
}, 200);
};
_this.Resize();
},
Resize: function()
{
if (!this.showAdditionalSettings)
return;
var h = 0, h1 = 0;
if (this.pWatermarkCont)
h = this.pWatermarkCont.offsetHeight + 25;
if (!this.pLeftColControls)
this.pLeftColControls = BX('bxiu_left_col_' + this.id);
if (this.pLeftColControls)
h1 = this.pLeftColControls.offsetHeight + 25;
if (h1 > h)
h = h1;
this.pAddParamsCont.style.height = h + "px";
if (this.pSeparator)
this.pSeparator.style.height = (h - 16) + "px";
}
};
function ColorPicker(oPar)
{
this.bCreated = false;
this.bOpened = false;
this.zIndex = 5000;
this.pWnd = BX.create("DIV", {props: {className: "bxiu-color-but bxiu-but"}});
if (oPar.oUploader.initConfig.watermark.color)
this.pWnd.style.backgroundColor = oPar.oUploader.initConfig.watermark.color;
this.oPar = oPar;
var _this = this;
this.pWnd.onmousedown = function(e){_this.OnClick(e, this)};
}
ColorPicker.prototype = {
Create: function ()
{
var _this = this;
this.pColCont = document.body.appendChild(BX.create("DIV", {props: {className: "wm-colpick-cont"}, style: {zIndex: this.zIndex}}));
var
arColors = ['#FF0000', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#FF00FF', '#FFFFFF', '#EBEBEB', '#E1E1E1', '#D7D7D7', '#CCCCCC', '#C2C2C2', '#B7B7B7', '#ACACAC', '#A0A0A0', '#959595',
'#EE1D24', '#FFF100', '#00A650', '#00AEEF', '#2F3192', '#ED008C', '#898989', '#7D7D7D', '#707070', '#626262', '#555', '#464646', '#363636', '#262626', '#111', '#000000',
'#F7977A', '#FBAD82', '#FDC68C', '#FFF799', '#C6DF9C', '#A4D49D', '#81CA9D', '#7BCDC9', '#6CCFF7', '#7CA6D8', '#8293CA', '#8881BE', '#A286BD', '#BC8CBF', '#F49BC1', '#F5999D',
'#F16C4D', '#F68E54', '#FBAF5A', '#FFF467', '#ACD372', '#7DC473', '#39B778', '#16BCB4', '#00BFF3', '#438CCB', '#5573B7', '#5E5CA7', '#855FA8', '#A763A9', '#EF6EA8', '#F16D7E',
'#EE1D24', '#F16522', '#F7941D', '#FFF100', '#8FC63D', '#37B44A', '#00A650', '#00A99E', '#00AEEF', '#0072BC', '#0054A5', '#2F3192', '#652C91', '#91278F', '#ED008C', '#EE105A',
'#9D0A0F', '#A1410D', '#A36209', '#ABA000', '#588528', '#197B30', '#007236', '#00736A', '#0076A4', '#004A80', '#003370', '#1D1363', '#450E61', '#62055F', '#9E005C', '#9D0039',
'#790000', '#7B3000', '#7C4900', '#827A00', '#3E6617', '#045F20', '#005824', '#005951', '#005B7E', '#003562', '#002056', '#0C004B', '#30004A', '#4B0048', '#7A0045', '#7A0026'],
row, cell, colorCell,
tbl = BX.create("TABLE", {props: {className: 'wm-colpic-tbl'}}),
i, l = arColors.length;
row = tbl.insertRow(-1);
cell = row.insertCell(-1);
cell.colSpan = 8;
var defBut = cell.appendChild(BX.create("SPAN", {props: {className: 'wm-colpic-def-but'}, text: BXIU_MESS.DefaultColor}));
defBut.onmouseover = function()
{
this.className = 'wm-colpic-def-but wm-colpic-def-but-over';
colorCell.style.backgroundColor = '#FF0000';
};
defBut.onmouseout = function(){this.className = 'wm-colpic-def-but';};
defBut.onmousedown = function(e){_this.Select('#FF0000');};
colorCell = row.insertCell(-1);
colorCell.colSpan = 8;
colorCell.className = 'wm-color-inp-cell';
colorCell.style.backgroundColor = arColors[38];
for(i = 0; i < l; i++)
{
if (Math.round(i / 16) == i / 16) // new row
row = tbl.insertRow(-1);
cell = row.insertCell(-1);
cell.innerHTML = ' ';
cell.className = 'wm-col-cell';
cell.style.backgroundColor = arColors[i];
cell.id = 'lhe_color_id__' + i;
cell.onmouseover = function ()
{
this.className = 'wm-col-cell wm-col-cell-over';
colorCell.style.backgroundColor = arColors[this.id.substring('lhe_color_id__'.length)];
};
cell.onmouseout = function (){this.className = 'wm-col-cell';};
cell.onmousedown = function ()
{
var k = this.id.substring('lhe_color_id__'.length);
_this.Select(arColors[k]);
};
}
this.pColCont.appendChild(tbl);
this.bCreated = true;
},
OnClick: function (e, pEl)
{
if(this.disabled)
return false;
if (!this.bCreated)
this.Create();
if (this.bOpened)
return this.Close();
this.Open();
},
Open: function ()
{
var
pos = BX.pos(this.pWnd),
_this = this, top, left = pos.left;
this.pColCont.style.display = 'block';
if (BX.browser.IsIE() && this.oPar.oUploader.type == 'applet')
{
top = pos.top - parseInt(this.pColCont.offsetHeight) - 2;
}
else
{
pos = BX.align(pos, 325, 155, this.oPar.oUploader.popupOpenType);
top = pos.top;
left = pos.left;
}
BX.bind(window, "keypress", BX.proxy(this.OnKeyPress, this));
oTransOverlay.Show({onclick: function(){_this.Close()}});
this.pColCont.style.top = top + 'px';
this.pColCont.style.left = left + 'px';
this.bOpened = true;
},
Close: function ()
{
this.pColCont.style.display = 'none';
oTransOverlay.Hide();
BX.unbind(window, "keypress", BX.proxy(this.OnKeyPress, this));
this.bOpened = false;
},
OnKeyPress: function(e)
{
if(!e) e = window.event
if(e.keyCode == 27)
this.Close();
},
Select: function (color)
{
if (this.oPar.oUploader.oUploadHandler)
this.oPar.oUploader.oUploadHandler.Watermark.Color(color);
this.oPar.oUploader.pForm.photo_watermark_color.value = color;
this.oPar.oUploader.SaveUserOption('color', color);
this.pWnd.style.backgroundColor = color;
if (this.oPar.OnSelect && typeof this.oPar.OnSelect == 'function')
this.oPar.OnSelect(color, this);
this.Close();
}
};
function Popup(oPar)
{
var _this = this;
this.bCreated = false;
this.bOpened = false;
this.zIndex = 5000;
this.oPar = oPar;
this.pWnd = BX.create("DIV", {props: {className: "bxiu-but bxiu-but-" + oPar.id}});
this.pWnd.onmousedown = function(e){_this.OnClick(e, this)};
if (oPar.title)
this.pWnd.title = oPar.title;
this.oPopup = new BX.CWindow(false, 'float');
if (this.oPar && typeof this.oPar.OnCreate == 'function')
this.oPar.OnCreate(this);
var i, l = this.oPar.items.length;
for (i = 0; i < l; i++)
{
this.oPar.items[i].pItem = BX.create("DIV", {props: {id: 'bxiu__item_' + i, className: "bxiu-popup-but " + this.oPar.classPrefix + this.oPar.items[i].value.toLowerCase()}});
if (this.oPar.items[i].title)
this.oPar.items[i].pItem.title = this.oPar.items[i].title;
this.oPopup.Get().appendChild(this.oPar.items[i].pItem);
this.oPar.items[i].pItem.onmousedown = function(){_this.SelectItem(this.id.substr(parseInt('bxiu__item_'.length)));}
}
if (typeof oPar.currentValue != 'undefined')
this.SelectItem(false, oPar.currentValue);
this.pWnd.onmousedown = function(e){_this.OnClick(e, this)};
}
Popup.prototype = {
OnClick: function (e, pEl)
{
if (this.bOpened)
return this.Close();
this.Open();
},
Close: function ()
{
oTransOverlay.Hide();
this.oPopup.Close();
this.bOpened = false;
},
Open: function ()
{
this.oPopup.Show();
var
pos = BX.pos(this.pWnd),
top = pos.top, left = pos.left;
if (this.oPar.popupOpenType == 'top')
top -= this.oPopup.Get().offsetHeight;
else
top += 18;
this.oPopup.Get().style.top = top + 'px';
this.oPopup.Get().style.left = left + 'px';
var _this = this;
oTransOverlay.Show({onclick: function(){_this.Close()}}),
this.bOpened = true;
},
SelectItem: function(ind, value)
{
if (ind === false && value)
{
var i, l = this.oPar.items.length, item;
for (i = 0; i < l; i++)
if (this.oPar.items[i].value == value)
break;
ind = i;
}
var oItem = this.oPar.items[ind] ? this.oPar.items[ind] : this.oPar.items[0];
if (this.oPar.OnSelect && typeof this.oPar.OnSelect == 'function')
this.oPar.OnSelect(this, oItem);
if (this.oPar.items[this.activeItemInd])
BX.removeClass(this.oPar.items[this.activeItemInd].pItem, 'bxiu-active');
this.activeItemInd = ind;
if (this.oPar.items[ind] && this.oPar.items[ind].pItem)
BX.addClass(this.oPar.items[ind].pItem, 'bxiu-active');
this.Close();
}
}
function OpacityControl(oPar)
{
this.pCont = BX.create("DIV", {props: {className: "bxiu-opacity"}});
this.pCont.appendChild(BX.create("DIV", {props: {className: "bxiu-opacity-label"}, text: BXIU_MESS.Opacity}));
var pDiv = this.pCont.appendChild(BX.create("DIV", {props: {className: "bxiu-op-div"}}));
this.oPar = oPar;
this.values = [
{value:100, title: '0%'},
{value:75, title: '25%'},
{value:50, title: '50%'},
{value:25, title: '75%'}
];
var
_this = this,
i, l = this.values.length, valCont;
for (i = 0; i < l; i++)
{
valCont = pDiv.appendChild(BX.create("DIV", {props: {id: "bxiu_op_item_" + i, className: "bxiu-op-val-cont"}}));
valCont.appendChild(BX.create("DIV", {props: {className: "bxiu-op-l-corn"}}));
valCont.appendChild(BX.create("DIV", {props: {className: "bxiu-op-center"}, html: '<span>' + this.values[i].title + '</span>'}));
valCont.appendChild(BX.create("DIV", {props: {className: "bxiu-op-r-corn"}}));
valCont.onmousedown = function(){_this.SelectItem(parseInt(this.id.substr('bxiu_op_item_'.length)));};
this.values[i].cont = valCont;
}
if (typeof oPar.currentValue != 'undefined')
this.SelectItem(false, oPar.currentValue);
}
OpacityControl.prototype = {
SelectItem: function(ind, value)
{
if (ind === false && typeof value != 'undefined')
{
var i, l = this.values.length;
for (i = 0; i < l; i++)
if (this.values[i].value == value)
break;
ind = i;
}
if (this.oPar.OnSelect && typeof this.oPar.OnSelect == 'function')
this.oPar.OnSelect(this.values[ind].value);
if (this.values[this.activeItemInd])
BX.removeClass(this.values[this.activeItemInd].cont, 'bxiu-op-val-cont-active');
this.activeItemInd = ind;
BX.addClass(this.values[ind].cont, 'bxiu-op-val-cont-active');
}
};
function Overlay()
{
this.id = 'bxiu_trans_overlay';
this.zIndex = 100;
}
Overlay.prototype =
{
Create: function ()
{
this.bCreated = true;
this.bShowed = false;
var ws = BX.GetWindowScrollSize();
this.pWnd = document.body.appendChild(BX.create("DIV", {props: {id: this.id, className: "bxiu-trans-overlay"}, style: {zIndex: this.zIndex, width: ws.scrollWidth + "px", height: ws.scrollHeight + "px"}}));
this.pWnd.ondrag = BX.False;
this.pWnd.onselectstart = BX.False;
},
Show: function(arParams)
{
if (!this.bCreated)
this.Create();
this.bShowed = true;
var ws = BX.GetWindowScrollSize();
this.pWnd.style.display = 'block';
this.pWnd.style.width = ws.scrollWidth + "px";
this.pWnd.style.height = ws.scrollHeight + "px";
if (!arParams)
arParams = {};
if (arParams.zIndex)
this.pWnd.style.zIndex = arParams.zIndex;
if (arParams.onclick && typeof arParams.onclick == 'function')
this.pWnd.onclick = arParams.onclick;
BX.bind(window, "resize", BX.proxy(this.Resize, this));
return this.pWnd;
},
Hide: function ()
{
if (!this.bShowed)
return;
this.bShowed = false;
this.pWnd.style.display = 'none';
BX.unbind(window, "resize", BX.proxy(this.Resize, this));
this.pWnd.onclick = null;
},
Resize: function ()
{
if (this.bCreated)
this.pWnd.style.width = BX.GetWindowScrollSize().scrollWidth + "px";
}
};
var oTransOverlay = new Overlay();
/* Upload form */
var SimpleUploader = function(Params)
{
this.id = Params.id;
this.oUploader = Params.oUploader;
this.thumbnailSize = Params.thumbnailSize;
// Visual data
this.form = false;
this.container = false;
// Main data
this.files = [];
this.container = BX('bxiu_simple_cont' + this.id);
this.form = BX(this.id + '_form');
this.pGoToAlbum = BX('bxiu_simple_go' + this.id);
var _this = this;
this.pGoToAlbum.onmousedown = function(){window.location = _this.oUploader.redirectUrl;};
this.pInput = BX('bxiu_upload_inp' + this.id);
this.pList = BX('bxiu_files_list' + this.id);
this.pInputParent = this.pInput.parentNode;
this.PackageGuid = Math.random() * 10E16;
this.availUpload = Params.availUpload;
this.pInput.onchange = BX.proxy(this.OnChangeFile, this);
};
SimpleUploader.prototype = {
AddEntry: function(fileName, form, pFile)
{
var size = this.thumbnailSize;
var
_this = this,
el = this.pList.appendChild(BX.create("div", {props : { className : "bxiu-file-cont bxiu-loading"}, style: {width: this.thumbnailSize + 'px'}})),
pThumb = el.appendChild(BX.create("div", {props : {className : "bxiu-file-thumb"}, style: {width: this.thumbnailSize + 'px', height: this.thumbnailSize + 'px'}})),
pImg = pThumb.appendChild(BX.create("IMG", {props:{src: '/bitrix/images/1.gif'}, style: {width: this.thumbnailSize + 'px', height: this.thumbnailSize + 'px'}})),
pTitle = el.appendChild(BX.create("div", {props : {className : "bxiu-file-title"}, text: fileName, style: {width: size + 'px'}, title: fileName})),
//pDel = el.appendChild(BX.create("div", {props : {className : "bxiu-file-del", id: 'bxiu_file_' + this.files.length,title: BXIU_MESS.DelEntry}}));
pDel = el.appendChild(BX.create("div", {props : {className : "portfolio-item-remove-new",
id: 'bxiu_file_' + this.files.length,title: BXIU_MESS.DelEntry}}));
pDel.innerHTML='<i class="fa fa-trash"></i>';
pDel.onclick = function() {_this.DelEntry(this.id.substr(parseInt('bxiu_file_'.length)));};
BX.proxy(this.DelEntry, this);
this.files.push({
name: fileName,
pWnd: el,
pThumb: pThumb,
pImg: pImg,
pTitle: pTitle
});
},
AdjustThumb: function(img, w, h)
{
w = parseInt(w);
h = parseInt(h);
if (!w || !h || !img)
return;
var r = w / h;
if (r > 1)
{
img.style.width = (this.thumbnailSize * r) + "px";
img.style.height = this.thumbnailSize + "px";
//img.style.left = Math.round((this.thumbnailSize - this.thumbnailSize * r /* width*/) / 2) + "px";
img.style.left = Math.round((img.style.width - this.thumbnailSize) / 2) + "px";
img.style.top = 0;
}
else
{
img.style.height = Math.round(this.thumbnailSize / r) + "px";
img.style.width = this.thumbnailSize + "px";
img.style.top = Math.round((this.thumbnailSize - this.thumbnailSize / r /* height*/) / 2) + "px";
img.style.left = 0;
}
},
SubmitFiles: function(form)
{
form.appendChild(BX.create("input", {props : {type : "hidden", name : "PackageGuid", value : this.PackageGuid}}));
var i, l = this.oUploader.pForm.childNodes.length, inp;
for (i = 0; i<l; i++)
{
inp = this.oUploader.pForm.childNodes[i];
if (inp.name && inp.name.length > 0 && typeof inp.value != 'undefined') {
form.appendChild(BX.create("input", {props : {type : "hidden", name : inp.name, value : inp.value}}));
}
}
top.bxiu_simple_res = false;
BX.ajax.submit(form, BX.proxy(this.OnSubmit, this));
},
DelEntry: function(ind)
{
if (!confirm(BXIU_MESS.DelEntryConfirm) || !this.files[ind])
return;
this.files[ind].deleted = true;
this.files[ind].pWnd.parentNode.removeChild(this.files[ind].pWnd);
var url = this.oUploader.dropUrl;
url = url.replace(/#SECTION_ID#/ig, this.oUploader.pAlbumSel.value);
url = url.replace(/#ELEMENT_ID#/ig, parseInt(this.files[ind].id));
BX.ajax.get(url, {sessid: BX.bitrix_sessid(), AJAX_CALL : "Y"}, function(result){});
},
OnChangeFile: function()
{
var files = [];
if (!BX.browser.IsIE() && this.pInput.files && this.pInput.files.length > 0)
{
files = this.pInput.files;
}
else
{
var filePath = this.pInput.value;
var fileTitle = filePath.replace(/.*\\(.*)/, "$1");
fileTitle = fileTitle.replace(/.*\/(.*)/, "$1");
files = [{fileName : fileTitle}];
}
if (files.length>this.availUpload) {
alert(LOC_MESS["YOU_HAVE_EXCEEDED_A_LIMIT_ON_THE_NUMBER_OF_FILES"]+this.availUpload+(this.availUpload==1?LOC_MESS["FILE_A"]:LOC_MESS["FILE_OV"]));
return false;
}
var form = document.body.appendChild(BX.create("form", {props : {method : "post",action : this.form.action,enctype : "multipart/form-data", encoding : "multipart/form-data"},style : {display : "none"}}));
for (var i = 0; i < files.length && i < this.availUpload; i++)
{
if (files[i] && false)
{
if (files[i].size && this.oUploader.uploadMaxFileSize && files[i].size > this.oUploader.uploadMaxFileSize)
{
return alert(BXIU_MESS.LargeSizeWarn);
}
if (files[i].type && files[i].type.toLowerCase() && files[i].type.toLowerCase().indexOf('image') == -1)
{
return alert(BXIU_MESS.WrongTypeWarn);
}
}
if (!files[i].fileName && files[i].name)
files[i].fileName = files[i].name;
this.AddEntry(files[i].fileName, form, this.pInput);
}
this.EnableGoBut(false);
form.appendChild(this.pInput);
this.SubmitFiles(form);
var _this = this;
setTimeout(function(){
_this.pInput.parentNode.removeChild(_this.pInput);
_this.pInput = _this.pInputParent.appendChild(BX.create("INPUT", {props: {type: "file", name: "photos[]", size: "1", multiple: _this.pInput.multiple, id: _this.pInput.id, className: "bxiu-fake-input"}}));
_this.pInput.onchange = BX.proxy(_this.OnChangeFile, _this);
},100);
},
OnSubmit: function()
{
var
wrongLoaded = {},
b_stop_all_unloaded = false,
b_response = !!top.bxiu_simple_res;
if (!b_response)
alert(BXIU_MESS.WrongServerResponse);
if (top.bxiu_simple_res && top.bxiu_simple_res.error && top.bxiu_simple_res.error[0] && b_response)
{
var er, ind, err = top.bxiu_simple_res.error[0];
alert('[' + err.id + '] ' + err.text);
for (ind in top.bxiu_simple_res.error)
{
er = top.bxiu_simple_res.error[ind];
if (er.file)
wrongLoaded[er.file] = true;
else
b_stop_all_unloaded = true;
}
}
var
bComplete = true,
i, l = this.files.length, oFile,
res = b_response ? top.bxiu_simple_res.files : {};
for (i = 0; i<l && i<this.availUpload; i++)
{
oFile = this.files[i];
if (!oFile.loaded && res[oFile.name])
{
oFile.id = res[oFile.name]['ID'];
oFile.loaded = true;
oFile.pImg.src = res[oFile.name]['PATH'];
this.AdjustThumb(oFile.pImg, res[oFile.name]['WIDTH'], res[oFile.name]['HEIGHT']);
BX.removeClass(oFile.pWnd, "bxiu-loading");
}
else if (!oFile.loaded && (wrongLoaded[oFile.name] || !b_response || b_stop_all_unloaded))
{
oFile.deleted = true;
if (oFile.pWnd.parentNode)
{
oFile.pWnd.parentNode.removeChild(oFile.pWnd);
BX.removeClass(oFile.pWnd, "bxiu-loading");
}
}
else if (!oFile.loaded && !oFile.deleted)
{
bComplete = false;
}
}
this.EnableGoBut(bComplete);
if (b_response && top.bxiu_simple_res && top.bxiu_simple_res.redirectUrl)
this.oUploader.redirectUrl = top.bxiu_simple_res.redirectUrl;
if (b_response && top.bxiu_simple_res.newSection && this.oUploader.pAlbumSel)
{
this.oUploader.pAlbumSel.options.add(new Option(top.bxiu_simple_res.newSection.title, top.bxiu_simple_res.newSection.id, true, true));
this.oUploader.pAlbumSel.onchange();
}
},
EnableGoBut: function(bEnabele)
{
if (bEnabele)
{
//this.pGoToAlbum.style.display = "";
this.pGoToAlbum.disabled = false;
}
else
{
this.pGoToAlbum.disabled = true;
}
}
}
})(window)