popuputil.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. // Height auto resizing
  2. _WIN.autoResizeHeight = function ( fixedWidth, heightOffset) {
  3. var win = window.top;
  4. if (typeof fixedWidth == 'number') {
  5. //fixedWidth += $tx.gecko ? 16 : 0;
  6. var __STATUSBAR_SIZE = 50;
  7. var __SCROLLBAR_SIZE = 30;
  8. var __ASSUMPTION_MIN_HEIGHT = 300;
  9. if ( !heightOffset ) heightOffset = 0;
  10. var dl = self.document.documentElement;
  11. var diff = {}, pos = {x:0, y:0};
  12. var left = (win.screenLeft)?win.screenLeft:win.screenX;
  13. var top = (win.screenTop)?win.screenTop:win.screenY;
  14. win.resizeTo( fixedWidth, __ASSUMPTION_MIN_HEIGHT);
  15. var contentScreentHeight = (dl.clientHeight == dl.scrollHeight && dl.scrollHeight != dl.offsetHeight )?dl.offsetHeight:dl.scrollHeight;
  16. var contentScreentWidth = (dl.clientWidth == dl.scrollWidth && dl.scrollWidth != dl.offsetWidth )?dl.offsetWidth:dl.scrollWidth;
  17. if(contentScreentHeight > dl.clientHeight) {
  18. diff.height = contentScreentHeight - dl.clientHeight;
  19. }else{ // for chrome -_-
  20. diff.width = 8;
  21. diff.height = dl.clientHeight - contentScreentHeight + 35;
  22. }
  23. pos.y = Math.min(screen.availHeight - contentScreentHeight - top - __STATUSBAR_SIZE,0) ;
  24. pos.x = Math.min(screen.availWidth - contentScreentWidth - left - __SCROLLBAR_SIZE,0);
  25. if ( pos.x || pos.y ) {
  26. if (!$tx.chrome) {
  27. win.moveBy(pos.x, pos.y);
  28. }
  29. win.resizeTo( fixedWidth, __ASSUMPTION_MIN_HEIGHT );
  30. }
  31. setTimeout(function() {
  32. win.resizeBy(0, diff.height + heightOffset);
  33. },20)
  34. } else {
  35. setTimeout(function() {
  36. var obj = fixedWidth;
  37. if(!obj)obj = document.getElementsByTagName('HTML')[0];
  38. var doc = document.getElementsByTagName('HTML')[0];
  39. var clientW = doc.clientWidth||doc.scrollWidth;
  40. var clientH = doc.clientHeight||doc.scrollHeight;
  41. var offsetW = obj.offsetWidth||obj.scrollWidth;
  42. var offsetH = obj.offsetHeight||obj.scrollHeight;
  43. //alert( clientW + " : " + clientH + " / " + offsetW + " : " + offsetH )
  44. var gapWidth = offsetW - clientW ;
  45. var gapHeight = offsetH - clientH;
  46. if(gapWidth || gapHeight) {
  47. win.resizeBy(gapWidth,gapHeight);
  48. }
  49. }, 100);
  50. }
  51. };
  52. _WIN.Querystring = function (query) {
  53. this.params = new Object();
  54. this.get = function(key, defaultValue) {
  55. if (defaultValue == _NULL) {
  56. defaultValue = _NULL;
  57. }
  58. var value = this.params[key];
  59. if (value == _NULL) {
  60. value = defaultValue;
  61. }
  62. return value;
  63. };
  64. this.getUTF8 = function(key, defaultValue) {
  65. if (defaultValue == _NULL) {
  66. defaultValue = _NULL;
  67. }
  68. var value = unescape(this.params[key]);
  69. if (value == _NULL) {
  70. value = defaultValue;
  71. }
  72. return value;
  73. };
  74. var qs;
  75. if (query) {
  76. qs = query;
  77. }else {
  78. qs = location.search.substring(1, location.search.length)
  79. }
  80. if (qs.length == 0) {
  81. return;
  82. }
  83. qs = qs.replace(/\+/g, ' ');
  84. var args = qs.split('&');
  85. for (var i = 0; i < args.length; i++) {
  86. var value;
  87. var pair = args[i].split('=');
  88. var name = unescape(pair[0]);
  89. if (pair.length == 2) {
  90. value = pair[1];
  91. } else {
  92. value = name;
  93. }
  94. this.params[name] = value;
  95. }
  96. };
  97. _WIN.qs = new Querystring();
  98. _WIN.closeWindow = function () {
  99. completeAttach();
  100. top.opener = self;
  101. top.close();
  102. var _opener;
  103. if (opener && !opener.closed) {
  104. _opener = opener;
  105. }else{
  106. _opener = parent.opener;
  107. }
  108. if(_opener.Editor) {
  109. _opener.Editor.focus();
  110. } else {
  111. _opener.focus();
  112. }
  113. };
  114. _WIN.stripTags = function (str) {
  115. return str.replace(/<\/?[^>]+>/gi, '');
  116. };
  117. _WIN.getAttacher = function (name) {
  118. return PopupUtil.getOpener().Editor.getSidebar().getAttacher(name);
  119. };
  120. _WIN.getEmbeder = function (name) {
  121. return PopupUtil.getOpener().Editor.getSidebar().getEmbeder(name);
  122. };
  123. _WIN.registerAction = function (attacher) {
  124. if(!attacher) {
  125. return;
  126. }
  127. window.execAttach = attacher.attachHandler;
  128. };
  129. _WIN.registerSearch = function (searcher) {
  130. if(!searcher) {
  131. return;
  132. }
  133. window.execSearch = searcher.insertHandler;
  134. };
  135. _WIN.registerEmded = function (embeder) {
  136. if(!embeder) {
  137. return;
  138. }
  139. window.execEmbed = embeder.embedHandler;
  140. };
  141. _WIN.modifyResult = function () {}; //For Theme
  142. _WIN.completeAttach = function () {}; //For Theme
  143. _WIN.existEntry = function (attacher) {
  144. if(!attacher) {
  145. return _FALSE;
  146. }
  147. return attacher.existEntry();
  148. };
  149. _WIN.getFirstEntryData = function (attacher) {
  150. if(!attacher) {
  151. return _FALSE;
  152. }
  153. return attacher.getFirstEntryData();
  154. };
  155. _WIN.getAttrOfElement = function ( elementStr, attrName ) {
  156. var regExp = new RegExp(attrName+"=['\"]?([^\"'>]*)[\"' ]","i");
  157. var result = regExp.exec( elementStr );
  158. if ( result) {
  159. return result[1];
  160. }else{
  161. return _NULL;
  162. }
  163. };
  164. _WIN.getParamValOfObjectTag = function ( objectStr, paramName ) {
  165. var regExp = new RegExp("<param([^>]*)name=['\"]"+paramName+"['\"]([^>]*)>","gi");
  166. var result = regExp.exec(objectStr, "gi");
  167. var value = _NULL;
  168. if ( result ) {
  169. regExp = new RegExp("value=['\"]([^>'\"]*)['\"]", "gi");
  170. value = regExp.exec( result[0] );
  171. if ( value ) {
  172. return value[1];
  173. }
  174. }
  175. return _NULL;
  176. };
  177. _WIN.PopupUtil = {
  178. getOpener : function() {
  179. var _opener;
  180. if(opener && opener.Editor) {
  181. _opener = opener;
  182. } else if(parent.opener && parent.opener.Editor) {
  183. _opener = parent.opener;
  184. } else if(opener.opener && opener.opener.Editor) {
  185. _opener = opener.opener;
  186. }
  187. return _opener;
  188. }
  189. };
  190. _WIN.getDateFormat = function (date, format) {
  191. date = date ? date.trim() : '';
  192. if ((date.length != 8) || (date.indexOf('0') == 0)) return '';
  193. var year = date.substr(0, 4) + (format || '년 ');
  194. var _m = (date.substr(4, 2).indexOf('0') == 0) ? date.substr(5, 1) : date.substr(4, 2);
  195. var _d = (date.substr(6, 2).indexOf('0') == 0) ? date.substr(7, 1) : date.substr(6, 2);
  196. var month = (_m != '0') ? _m + (format || '월 ') : '';
  197. var day = ( _d != '0') ? (_d + (format ? '' : '일')) : '';
  198. return year + month + day;
  199. };
  200. _WIN.getDashedDateFormat = function (date) {
  201. date = date.trim();
  202. if (date.length != 8 || date.indexOf('00') == 0) return '';
  203. var yy = removeZero(date.substr(0, 4), '');
  204. var mm = removeZero(date.substr(4, 2), '-');
  205. var dd = removeZero(date.substr(6, 2), '-');
  206. return yy + mm + dd;
  207. };
  208. _WIN.removeZero = function (number, fmt) {
  209. return (number.indexOf('00') == 0) ? '' : fmt + number;
  210. };
  211. _WIN.getYearFormat = function (date) {
  212. date = date.trim() || '';
  213. if (date.length != 8) return "";
  214. return date.substr(0, 4) + '년 ';
  215. };
  216. _WIN.getDayFormat = function (date) {
  217. try {
  218. date = date.trim();
  219. if (date.length != 8) return date;
  220. var d = new Date(date.substr(0, 4), date.substr(4, 2) - 1, date.substr(6, 2));
  221. var dayFormat = ['일', '월', '화', '수', '목', '금', '토'];
  222. return dayFormat[d.getDay()];
  223. } catch(e) {}
  224. return '';
  225. };
  226. _WIN.stripBracket = function (text) {
  227. var splitText = text.trim().split(',');
  228. var result = [];
  229. splitText.each(function(txt) {
  230. result.push(txt.replace(/\[\[[\w]*\]\]/, ''));
  231. });
  232. return result.join(', ');
  233. };
  234. _WIN.getFieldJson = function (name, value) {
  235. if (value)
  236. return {name: name, value: value.stripTags()};
  237. return _NULL;
  238. };