123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521 |
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- function setLocation(url) {
- window.location.href = url;
- }
- function setElementDisable(element, disable) {
- if ($(element)) {
- $(element).disabled = disable;
- }
- }
- function toggleParentVis(obj) {
- obj = $(obj).parentNode;
- if (obj.style.display == 'none') {
- obj.style.display = '';
- } else {
- obj.style.display = 'none';
- }
- }
- // to fix new app/design/adminhtml/default/default/template/widget/form/renderer/fieldset.phtml
- // with toggleParentVis
- function toggleFieldsetVis(obj) {
- id = obj;
- obj = $(obj);
- if (obj.style.display == 'none') {
- obj.style.display = '';
- } else {
- obj.style.display = 'none';
- }
- obj = obj.parentNode.childElements();
- for (var i = 0; i < obj.length; i++) {
- if (obj[i].id != undefined &&
- obj[i].id == id &&
- obj[i - 1].classNames() == 'entry-edit-head') {
- if (obj[i - 1].style.display == 'none') {
- obj[i - 1].style.display = '';
- } else {
- obj[i - 1].style.display = 'none';
- }
- }
- }
- }
- function toggleVis(obj) {
- obj = $(obj);
- if (obj.style.display == 'none') {
- obj.style.display = '';
- } else {
- obj.style.display = 'none';
- }
- }
- function imagePreview(element) {
- if ($(element)) {
- var win = window.open('', 'preview', 'width=400,height=400,resizable=1,scrollbars=1');
- win.document.open();
- win.document.write('<body style="padding:0;margin:0"><img src="' + $(element).src + '" id="image_preview"/></body>');
- win.document.close();
- Event.observe(win, 'load', function () {
- var img = win.document.getElementById('image_preview');
- win.resizeTo(img.width + 40, img.height + 80);
- });
- }
- }
- function checkByProductPriceType(elem) {
- if (elem.id == 'price_type') {
- this.productPriceType = elem.value;
- return false;
- }
- if (elem.id == 'price' && this.productPriceType == 0) {
- return false;
- }
- return true;
- }
- function toggleSeveralValueElements(checkbox, containers, excludedElements, checked) {
- 'use strict';
- if (containers && checkbox) {
- if (Object.prototype.toString.call(containers) != '[object Array]') {
- containers = [containers];
- }
- containers.each(function (container) {
- toggleValueElements(checkbox, container, excludedElements, checked);
- });
- }
- }
- function toggleValueElements(checkbox, container, excludedElements, checked) {
- if (container && checkbox) {
- var ignoredElements = [checkbox];
- if (typeof excludedElements != 'undefined') {
- if (Object.prototype.toString.call(excludedElements) != '[object Array]') {
- excludedElements = [excludedElements];
- }
- for (var i = 0; i < excludedElements.length; i++) {
- ignoredElements.push(excludedElements[i]);
- }
- }
- //var elems = container.select('select', 'input');
- var elems = Element.select(container, ['select', 'input', 'textarea', 'button', 'img']).filter(function (el) {
- return el.readAttribute('type') != 'hidden';
- });
- var isDisabled = checked != undefined ? checked : checkbox.checked;
- elems.each(function (elem) {
- if (checkByProductPriceType(elem)) {
- var i = ignoredElements.length;
- while (i-- && elem != ignoredElements[i]);
- if (i != -1) {
- return;
- }
- elem.disabled = isDisabled;
- if (isDisabled) {
- elem.addClassName('disabled');
- } else {
- elem.removeClassName('disabled');
- }
- if (elem.nodeName.toLowerCase() == 'img') {
- isDisabled ? elem.hide() : elem.show();
- }
- }
- });
- }
- }
- /**
- * @todo add validation for fields
- */
- function submitAndReloadArea(area, url) {
- if ($(area)) {
- var fields = $(area).select('input', 'select', 'textarea');
- var data = Form.serializeElements(fields, true);
- url += url.match(new RegExp('\\?')) ? '&isAjax=true' : '?isAjax=true';
- new Ajax.Request(url, {
- parameters: $H(data),
- loaderArea: area,
- onSuccess: function (transport) {
- try {
- if (transport.responseText.isJSON()) {
- var response = transport.responseText.evalJSON();
- if (response.error) {
- alert(response.message);
- }
- if (response.ajaxExpired && response.ajaxRedirect) {
- setLocation(response.ajaxRedirect);
- }
- } else {
- $(area).update(transport.responseText);
- }
- }
- catch (e) {
- $(area).update(transport.responseText);
- }
- }
- });
- }
- }
- /********** MESSAGES ***********/
- function syncOnchangeValue(baseElem, distElem) {
- var compare = {
- baseElem: baseElem, distElem: distElem
- };
- Event.observe(baseElem, 'change', function () {
- if ($(this.baseElem) && $(this.distElem)) {
- $(this.distElem).value = $(this.baseElem).value;
- }
- }.bind(compare));
- }
- // Insert some content to the cursor position of input element
- function updateElementAtCursor(el, value, win) {
- if (win == undefined) {
- win = window.self;
- }
- if (document.selection) {
- el.focus();
- sel = win.document.selection.createRange();
- sel.text = value;
- } else if (el.selectionStart || el.selectionStart == '0') {
- var startPos = el.selectionStart;
- var endPos = el.selectionEnd;
- el.value = el.value.substring(0, startPos) + value + el.value.substring(endPos, el.value.length);
- } else {
- el.value += value;
- }
- }
- // Firebug detection
- function firebugEnabled() {
- if (window.console && window.console.firebug) {
- return true;
- }
- return false;
- }
- function disableElement(elem) {
- elem.disabled = true;
- elem.addClassName('disabled');
- }
- function enableElement(elem) {
- elem.disabled = false;
- elem.removeClassName('disabled');
- }
- function disableElements(search) {
- $$('.' + search).each(disableElement);
- }
- function enableElements(search) {
- $$('.' + search).each(enableElement);
- }
- /** Cookie Reading And Writing **/
- var Cookie = {
- all: function () {
- var pairs = document.cookie.split(';');
- var cookies = {};
- pairs.each(function (item, index) {
- var pair = item.strip().split('=');
- cookies[unescape(pair[0])] = unescape(pair[1]);
- });
- return cookies;
- },
- read: function (cookieName) {
- var cookies = this.all();
- if (cookies[cookieName]) {
- return cookies[cookieName];
- }
- return null;
- },
- write: function (cookieName, cookieValue, cookieLifeTime) {
- var expires = '';
- if (cookieLifeTime) {
- var date = new Date();
- date.setTime(date.getTime() + cookieLifeTime * 1000);
- expires = '; expires=' + date.toUTCString();
- }
- var urlPath = '/' + BASE_URL.split('/').slice(3).join('/'); // Get relative path
- document.cookie = escape(cookieName) + '=' + escape(cookieValue) + expires + '; path=' + urlPath;
- },
- clear: function (cookieName) {
- this.write(cookieName, '', -1);
- }
- };
- var Fieldset = {
- cookiePrefix: 'fh-',
- applyCollapse: function (containerId) {
- //var collapsed = Cookie.read(this.cookiePrefix + containerId);
- //if (collapsed !== null) {
- // Cookie.clear(this.cookiePrefix + containerId);
- //}
- if ($(containerId + '-state')) {
- collapsed = $(containerId + '-state').value == 1 ? 0 : 1;
- } else {
- collapsed = $(containerId + '-head').collapsed;
- }
- if (collapsed == 1 || collapsed === undefined) {
- $(containerId + '-head').removeClassName('open');
- if ($(containerId + '-head').up('.section-config')) {
- $(containerId + '-head').up('.section-config').removeClassName('active');
- }
- $(containerId).hide();
- } else {
- $(containerId + '-head').addClassName('open');
- if ($(containerId + '-head').up('.section-config')) {
- $(containerId + '-head').up('.section-config').addClassName('active');
- }
- $(containerId).show();
- }
- },
- toggleCollapse: function (containerId, saveThroughAjax) {
- if ($(containerId + '-state')) {
- collapsed = $(containerId + '-state').value == 1 ? 0 : 1;
- } else {
- collapsed = $(containerId + '-head').collapsed;
- }
- //Cookie.read(this.cookiePrefix + containerId);
- if (collapsed == 1 || collapsed === undefined) {
- //Cookie.write(this.cookiePrefix + containerId, 0, 30*24*60*60);
- if ($(containerId + '-state')) {
- $(containerId + '-state').value = 1;
- }
- $(containerId + '-head').collapsed = 0;
- } else {
- //Cookie.clear(this.cookiePrefix + containerId);
- if ($(containerId + '-state')) {
- $(containerId + '-state').value = 0;
- }
- $(containerId + '-head').collapsed = 1;
- }
- this.applyCollapse(containerId);
- if (typeof saveThroughAjax != 'undefined') {
- this.saveState(saveThroughAjax, {
- container: containerId, value: $(containerId + '-state').value
- });
- }
- },
- addToPrefix: function (value) {
- this.cookiePrefix += value + '-';
- },
- saveState: function (url, parameters) {
- new Ajax.Request(url, {
- method: 'post',
- parameters: Object.toQueryString(parameters),
- loaderArea: false
- });
- }
- };
- var Base64 = {
- // private property
- _keyStr: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
- //'+/=', '-_,'
- // public method for encoding
- encode: function (input) {
- var output = '';
- var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
- var i = 0;
- input = Base64._utf8_encode(input);
- if (typeof window.btoa === 'function') {
- return window.btoa(input);
- }
- while (i < input.length) {
- chr1 = input.charCodeAt(i++);
- chr2 = input.charCodeAt(i++);
- chr3 = input.charCodeAt(i++);
- enc1 = chr1 >> 2;
- enc2 = (chr1 & 3) << 4 | chr2 >> 4;
- enc3 = (chr2 & 15) << 2 | chr3 >> 6;
- enc4 = chr3 & 63;
- if (isNaN(chr2)) {
- enc3 = enc4 = 64;
- } else if (isNaN(chr3)) {
- enc4 = 64;
- }
- output = output +
- this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
- this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
- }
- return output;
- },
- // public method for decoding
- decode: function (input) {
- var output = '';
- var chr1, chr2, chr3;
- var enc1, enc2, enc3, enc4;
- var i = 0;
- if (typeof window.atob === 'function') {
- return Base64._utf8_decode(window.atob(input));
- }
- input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');
- while (i < input.length) {
- enc1 = this._keyStr.indexOf(input.charAt(i++));
- enc2 = this._keyStr.indexOf(input.charAt(i++));
- enc3 = this._keyStr.indexOf(input.charAt(i++));
- enc4 = this._keyStr.indexOf(input.charAt(i++));
- chr1 = enc1 << 2 | enc2 >> 4;
- chr2 = (enc2 & 15) << 4 | enc3 >> 2;
- chr3 = (enc3 & 3) << 6 | enc4;
- output += String.fromCharCode(chr1);
- if (enc3 != 64) {
- output += String.fromCharCode(chr2);
- }
- if (enc4 != 64) {
- output += String.fromCharCode(chr3);
- }
- }
- return Base64._utf8_decode(output);
- },
- mageEncode: function (input) {
- return this.encode(input).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, ',');
- },
- mageDecode: function (output) {
- output = output.replace(/\-/g, '+').replace(/_/g, '/').replace(/,/g, '=');
- return this.decode(output);
- },
- idEncode: function (input) {
- return this.encode(input).replace(/\+/g, ':').replace(/\//g, '_').replace(/=/g, '-');
- },
- idDecode: function (output) {
- output = output.replace(/\-/g, '=').replace(/_/g, '/').replace(/\:/g, '\+');
- return this.decode(output);
- },
- // private method for UTF-8 encoding
- _utf8_encode: function (string) {
- string = string.replace(/\r\n/g, '\n');
- var utftext = '';
- for (var n = 0; n < string.length; n++) {
- var c = string.charCodeAt(n);
- if (c < 128) {
- utftext += String.fromCharCode(c);
- } else if (c > 127 && c < 2048) {
- utftext += String.fromCharCode(c >> 6 | 192);
- utftext += String.fromCharCode(c & 63 | 128);
- } else {
- utftext += String.fromCharCode(c >> 12 | 224);
- utftext += String.fromCharCode(c >> 6 & 63 | 128);
- utftext += String.fromCharCode(c & 63 | 128);
- }
- }
- return utftext;
- },
- // private method for UTF-8 decoding
- _utf8_decode: function (utftext) {
- var string = '';
- var i = 0;
- var c = c1 = c2 = 0;
- while (i < utftext.length) {
- c = utftext.charCodeAt(i);
- if (c < 128) {
- string += String.fromCharCode(c);
- i++;
- } else if (c > 191 && c < 224) {
- c2 = utftext.charCodeAt(i + 1);
- string += String.fromCharCode((c & 31) << 6 | c2 & 63);
- i += 2;
- } else {
- c2 = utftext.charCodeAt(i + 1);
- c3 = utftext.charCodeAt(i + 2);
- string += String.fromCharCode((c & 15) << 12 | (c2 & 63) << 6 | c3 & 63);
- i += 3;
- }
- }
- return string;
- }
- };
- /**
- * Array functions
- */
- /**
- * Callback function for sort numeric values
- *
- * @param val1
- * @param val2
- */
- function sortNumeric(val1, val2) {
- return val1 - val2;
- }
|