DECLARE @tsql VARCHAR(MAX) if not exists (select * from sysobjects where id = object_id(N'vw_Indoo_template_0107a') and OBJECTPROPERTY(id, N'IsView') = 1) BEGIN SET @tsql = 'CREATE VIEW vw_Indoo_template_0107a AS SELECT cg, max([0]) as m0, max([1]) as m1, max([2]) as m2, max([3]) as m3 FROM (SELECT id, rownum, (rownum - 1) % 4 AS rg, FLOOR((rownum - 1) / 4) AS cg FROM (SELECT id, ROW_NUMBER() OVER (ORDER BY id) AS rownum FROM Indoo_template_0107) as select1) as select2 PIVOT (max(id) FOR rg IN ([0], [1], [2], [3])) AS pvt group by cg' EXEC (@tsql) END GO DECLARE @tsql VARCHAR(MAX) if not exists (select * from sysobjects where id = object_id(N'vw_Indoo_template_0107b') and OBJECTPROPERTY(id, N'IsView') = 1) BEGIN SET @tsql = 'create view vw_Indoo_template_0107b as SELECT dbo.vw_Indoo_template_0107a.cg AS newID, Indoo_template_0107_1.Title AS Title_1, Indoo_template_0107_1.ID AS ID_1, Indoo_template_0107_1.FileContent AS FileContent_1, Indoo_template_0107_1.FileMimeType AS FileFileMimeType_1, Indoo_template_0107_2.Title AS Title_2, Indoo_template_0107_2.ID AS ID_2, Indoo_template_0107_2.FileContent AS FileContent_2, Indoo_template_0107_2.FileMimeType AS FileFileMimeType_2, Indoo_template_0107_3.Title AS Title_3, Indoo_template_0107_3.ID AS ID_3, Indoo_template_0107_3.FileContent AS FileContent_3, Indoo_template_0107_3.FileMimeType AS FileFileMimeType_3, Indoo_template_0107_4.Title AS Title_4, Indoo_template_0107_4.ID AS ID_4, Indoo_template_0107_4.FileContent AS FileContent_4, Indoo_template_0107_4.FileMimeType AS FileFileMimeType_4, Indoo_template_0107_2.FileDate AS FileDate_2, Indoo_template_0107_2.UserID AS UserID_2, Indoo_template_0107_2.FileName AS FileName_2, Indoo_template_0107_2.FileSize AS FileSize_2, Indoo_template_0107_2.FileDescription AS FileDescription_2, Indoo_template_0107_1.FileDate AS FileDate_1, Indoo_template_0107_1.UserID AS UserID_1, Indoo_template_0107_1.FileName AS FileName_1, Indoo_template_0107_1.FileSize AS FileSize_1, Indoo_template_0107_1.FileDescription AS FileDescription_1, Indoo_template_0107_3.FileDate AS FileDate_3, Indoo_template_0107_3.UserID AS UserID_3, Indoo_template_0107_3.FileName AS FileName_3, Indoo_template_0107_3.FileSize AS FileSize_3, Indoo_template_0107_3.FileDescription AS FileDescription_3, Indoo_template_0107_4.UserID AS UserID_4, Indoo_template_0107_4.FileName AS FileName_4, Indoo_template_0107_4.FileSize AS FileSize_4, Indoo_template_0107_4.FileDescription AS FileDescription_4, Indoo_template_0107_4.FileDate AS FileDate_4 FROM dbo.vw_Indoo_template_0107a LEFT OUTER JOIN dbo.Indoo_template_0107 AS Indoo_template_0107_1 ON dbo.vw_Indoo_template_0107a.m0 = Indoo_template_0107_1.ID LEFT OUTER JOIN dbo.Indoo_template_0107 AS Indoo_template_0107_2 ON dbo.vw_Indoo_template_0107a.m1 = Indoo_template_0107_2.ID LEFT OUTER JOIN dbo.Indoo_template_0107 AS Indoo_template_0107_3 ON dbo.vw_Indoo_template_0107a.m2 = Indoo_template_0107_3.ID LEFT OUTER JOIN dbo.Indoo_template_0107 AS Indoo_template_0107_4 ON dbo.vw_Indoo_template_0107a.m3 = Indoo_template_0107_4.ID' EXEC (@tsql) END tablename vw_Indoo_template_0107b binaryData.fileSytemDBPath notSkipSqlOnImport on gridView.recordcount 2 gridView.inlineEdit version 01.05.00 connectionType 0 connectionString tableKeyColumn newId gridview.bulkimport gridview.bulkexport gridview.bulkdelete gridview.insertrecord gridview.editrecord gridview.deleterecord gridview.viewrecord hidegridview gridView.hideElement 2 gridView.pagerecord hidegridviewonedit grideditshowabovegridview editbuttonsinlastcoulumns gridedit.captionposition gridedit.checkwebpageonexit gridEdit.mode gridEdit.valueID gridEdit.TextboxWidth gridEdit.redirectURL gridEdit.txt_Save gridEdit.txt_Insert gridEdit.txt_Back gridEdit.txt_Next gridEdit.txt_Finish gridEdit.txt_cancel gridEdit_customHTMLForm gridEdit.isBinary on networkCredential.userName networkCredential.passWord sqldeveloperwindowcb importexportcb gridView.importStopAfterErrorCount 10 isEmptyCaptionReplaced gridedit.allowunecryptedquerystring gridedit.isgridvieweditredirected gridview.ispagenumbertextbox gridView.gridDdlForm 0 gridView.ID gridEdit.ID gridEdit.validRedirectURLSetParameter gridEdit.validRedirectURLDelParameter gridEdit.sendToMail gridView.OrderBy gridView.SqlWhere moduleHeader [setObject:viewPage.gridView.txt_filter=Filter row(s)] moduleFooter htmlHeadBlock <style type="text/css"> .boxIndoo_template_0107 { overIndoo_template_0107flow: none; border: 5px ridge #ccc; z-index: 150; background: #fff; font-size:11px; font-family: Tahoma, Arial, Sans-Serif; } .boxIndoo_template_01071 { padding-right: 10px; padding-left: 10px; } .boxIndoo_template_01072 { padding-right: 10px; text-align:right; } .boxIndoo_template_01073 { padding-left: 10px; text-align:left; } </style> <script type="text/javascript"> Indoo_template_0107_ids = new Array; function Indoo_template_0107_getOther(ids,value){ var j=-1; for(var i = 0; i < Indoo_template_0107_ids.length; i++) { if (Indoo_template_0107_ids[i]==ids){ j=i } } var out; if (j+value<Indoo_template_0107_ids.length && j+value>-1){ out = Indoo_template_0107_ids[j+value]; el=document.getElementById(out); Control.Modal.close(); if(typeof(el.click)!='undefined'){ el.click(); }else{ el.onclick(); } }else{ out = Indoo_template_0107_ids[j]; } ; //alert(document.getElementById(Indoo_template_0107_ids[j+value]).onclick()); } </script> <script src="http://prototypejs.org/assets/2007/6/20/prototype.js"></script> <style> #modal_container { padding:5px; background-color:#fff; border:1px solid #666; overflow:auto; font-family:"Lucida Grande",Verdana; font-size:12px; color:#333; text-align:left; } #modal_overlay { background-color:#000; } </style> <!-- �e en modal ki dela tukaj, ne pa na dnn-ju... --> <script> // script.aculo.us effects.js v1.7.1_beta3, Fri May 25 17:19:41 +0200 2007 // Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // Contributors: // Justin Palmer (http://encytemedia.com/) // Mark Pilgrim (http://diveintomark.org/) // Martin Bialasinki // // script.aculo.us is freely distributable under the terms of an MIT-style license. // For details, see the script.aculo.us web site: http://script.aculo.us/ // converts rgb() and #xxx to #xxxxxx format, // returns self (or first argument) if not convertable String.prototype.parseColor = function() { var color = '#'; if(this.slice(0,4) == 'rgb(') { var cols = this.slice(4,this.length-1).split(','); var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3); } else { if(this.slice(0,1) == '#') { if(this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase(); if(this.length==7) color = this.toLowerCase(); } } return(color.length==7 ? color : (arguments[0] || this)); } /*--------------------------------------------------------------------------*/ Element.collectTextNodes = function(element) { return $A($(element).childNodes).collect( function(node) { return (node.nodeType==3 ? node.nodeValue : (node.hasChildNodes() ? Element.collectTextNodes(node) : '')); }).flatten().join(''); } Element.collectTextNodesIgnoreClass = function(element, className) { return $A($(element).childNodes).collect( function(node) { return (node.nodeType==3 ? node.nodeValue : ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? Element.collectTextNodesIgnoreClass(node, className) : '')); }).flatten().join(''); } Element.setContentZoom = function(element, percent) { element = $(element); element.setStyle({fontSize: (percent/100) + 'em'}); if(Prototype.Browser.WebKit) window.scrollBy(0,0); return element; } Element.getInlineOpacity = function(element){ return $(element).style.opacity || ''; } Element.forceRerendering = function(element) { try { element = $(element); var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch(e) { } }; /*--------------------------------------------------------------------------*/ Array.prototype.call = function() { var args = arguments; this.each(function(f){ f.apply(this, args) }); } /*--------------------------------------------------------------------------*/ var Effect = { _elementDoesNotExistError: { name: 'ElementDoesNotExistError', message: 'The specified DOM element does not exist, but is required for this effect to operate' }, tagifyText: function(element) { if(typeof Builder == 'undefined') throw("Effect.tagifyText requires including script.aculo.us' builder.js library"); var tagifyStyle = 'position:relative'; if(Prototype.Browser.IE) tagifyStyle += ';zoom:1'; element = $(element); $A(element.childNodes).each( function(child) { if(child.nodeType==3) { child.nodeValue.toArray().each( function(character) { element.insertBefore( Builder.node('span',{style: tagifyStyle}, character == ' ' ? String.fromCharCode(160) : character), child); }); Element.remove(child); } }); }, multiple: function(element, effect) { var elements; if(((typeof element == 'object') || (typeof element == 'function')) && (element.length)) elements = element; else elements = $(element).childNodes; var options = Object.extend({ speed: 0.1, delay: 0.0 }, arguments[2] || {}); var masterDelay = options.delay; $A(elements).each( function(element, index) { new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay })); }); }, PAIRS: { 'slide': ['SlideDown','SlideUp'], 'blind': ['BlindDown','BlindUp'], 'appear': ['Appear','Fade'] }, toggle: function(element, effect) { element = $(element); effect = (effect || 'appear').toLowerCase(); var options = Object.extend({ queue: { position:'end', scope:(element.id || 'global'), limit: 1 } }, arguments[2] || {}); Effect[element.visible() ? Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options); } }; var Effect2 = Effect; // deprecated /* ------------- transitions ------------- */ Effect.Transitions = { linear: Prototype.K, sinoidal: function(pos) { return (-Math.cos(pos*Math.PI)/2) + 0.5; }, reverse: function(pos) { return 1-pos; }, flicker: function(pos) { var pos = ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4; return (pos > 1 ? 1 : pos); }, wobble: function(pos) { return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5; }, pulse: function(pos, pulses) { pulses = pulses || 5; return ( Math.round((pos % (1/pulses)) * pulses) == 0 ? ((pos * pulses * 2) - Math.floor(pos * pulses * 2)) : 1 - ((pos * pulses * 2) - Math.floor(pos * pulses * 2)) ); }, none: function(pos) { return 0; }, full: function(pos) { return 1; } }; /* ------------- core effects ------------- */ Effect.ScopedQueue = Class.create(); Object.extend(Object.extend(Effect.ScopedQueue.prototype, Enumerable), { initialize: function() { this.effects = []; this.interval = null; }, _each: function(iterator) { this.effects._each(iterator); }, add: function(effect) { var timestamp = new Date().getTime(); var position = (typeof effect.options.queue == 'string') ? effect.options.queue : effect.options.queue.position; switch(position) { case 'front': // move unstarted effects after this effect this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) { e.startOn += effect.finishOn; e.finishOn += effect.finishOn; }); break; case 'with-last': timestamp = this.effects.pluck('startOn').max() || timestamp; break; case 'end': // start effect after last queued effect has finished timestamp = this.effects.pluck('finishOn').max() || timestamp; break; } effect.startOn += timestamp; effect.finishOn += timestamp; if(!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit)) this.effects.push(effect); if(!this.interval) this.interval = setInterval(this.loop.bind(this), 15); }, remove: function(effect) { this.effects = this.effects.reject(function(e) { return e==effect }); if(this.effects.length == 0) { clearInterval(this.interval); this.interval = null; } }, loop: function() { var timePos = new Date().getTime(); for(var i=0, len=this.effects.length;i<len;i++) this.effects[i] && this.effects[i].loop(timePos); } }); Effect.Queues = { instances: $H(), get: function(queueName) { if(typeof queueName != 'string') return queueName; if(!this.instances[queueName]) this.instances[queueName] = new Effect.ScopedQueue(); return this.instances[queueName]; } } Effect.Queue = Effect.Queues.get('global'); Effect.DefaultOptions = { transition: Effect.Transitions.sinoidal, duration: 1.0, // seconds fps: 100, // 100= assume 66fps max. sync: false, // true for combining from: 0.0, to: 1.0, delay: 0.0, queue: 'parallel' } Effect.Base = function() {}; Effect.Base.prototype = { position: null, start: function(options) { function codeForEvent(options,eventName){ return ( (options[eventName+'Internal'] ? 'this.options.'+eventName+'Internal(this);' : '') + (options[eventName] ? 'this.options.'+eventName+'(this);' : '') ); } if(options.transition === false) options.transition = Effect.Transitions.linear; this.options = Object.extend(Object.extend({},Effect.DefaultOptions), options || {}); this.currentFrame = 0; this.state = 'idle'; this.startOn = this.options.delay*1000; this.finishOn = this.startOn+(this.options.duration*1000); this.fromToDelta = this.options.to-this.options.from; this.totalTime = this.finishOn-this.startOn; this.totalFrames = this.options.fps*this.options.duration; eval('this.render = function(pos){ '+ 'if(this.state=="idle"){this.state="running";'+ codeForEvent(options,'beforeSetup')+ (this.setup ? 'this.setup();':'')+ codeForEvent(options,'afterSetup')+ '};if(this.state=="running"){'+ 'pos=this.options.transition(pos)*'+this.fromToDelta+'+'+this.options.from+';'+ 'this.position=pos;'+ codeForEvent(options,'beforeUpdate')+ (this.update ? 'this.update(pos);':'')+ codeForEvent(options,'afterUpdate')+ '}}'); this.event('beforeStart'); if(!this.options.sync) Effect.Queues.get(typeof this.options.queue == 'string' ? 'global' : this.options.queue.scope).add(this); }, loop: function(timePos) { if(timePos >= this.startOn) { if(timePos >= this.finishOn) { this.render(1.0); this.cancel(); this.event('beforeFinish'); if(this.finish) this.finish(); this.event('afterFinish'); return; } var pos = (timePos - this.startOn) / this.totalTime, frame = Math.round(pos * this.totalFrames); if(frame > this.currentFrame) { this.render(pos); this.currentFrame = frame; } } }, cancel: function() { if(!this.options.sync) Effect.Queues.get(typeof this.options.queue == 'string' ? 'global' : this.options.queue.scope).remove(this); this.state = 'finished'; }, event: function(eventName) { if(this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this); if(this.options[eventName]) this.options[eventName](this); }, inspect: function() { var data = $H(); for(property in this) if(typeof this[property] != 'function') data[property] = this[property]; return '#<Effect:' + data.inspect() + ',options:' + $H(this.options).inspect() + '>'; } } Effect.Parallel = Class.create(); Object.extend(Object.extend(Effect.Parallel.prototype, Effect.Base.prototype), { initialize: function(effects) { this.effects = effects || []; this.start(arguments[1]); }, update: function(position) { this.effects.invoke('render', position); }, finish: function(position) { this.effects.each( function(effect) { effect.render(1.0); effect.cancel(); effect.event('beforeFinish'); if(effect.finish) effect.finish(position); effect.event('afterFinish'); }); } }); Effect.Event = Class.create(); Object.extend(Object.extend(Effect.Event.prototype, Effect.Base.prototype), { initialize: function() { var options = Object.extend({ duration: 0 }, arguments[0] || {}); this.start(options); }, update: Prototype.emptyFunction }); Effect.Opacity = Class.create(); Object.extend(Object.extend(Effect.Opacity.prototype, Effect.Base.prototype), { initialize: function(element) { this.element = $(element); if(!this.element) throw(Effect._elementDoesNotExistError); // make this work on IE on elements without 'layout' if(Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) this.element.setStyle({zoom: 1}); var options = Object.extend({ from: this.element.getOpacity() || 0.0, to: 1.0 }, arguments[1] || {}); this.start(options); }, update: function(position) { this.element.setOpacity(position); } }); Effect.Move = Class.create(); Object.extend(Object.extend(Effect.Move.prototype, Effect.Base.prototype), { initialize: function(element) { this.element = $(element); if(!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ x: 0, y: 0, mode: 'relative' }, arguments[1] || {}); this.start(options); }, setup: function() { // Bug in Opera: Opera returns the "real" position of a static element or // relative element that does not have top/left explicitly set. // ==> Always set top and left for position relative elements in your stylesheets // (to 0 if you do not need them) this.element.makePositioned(); this.originalLeft = parseFloat(this.element.getStyle('left') || '0'); this.originalTop = parseFloat(this.element.getStyle('top') || '0'); if(this.options.mode == 'absolute') { // absolute movement, so we need to calc deltaX and deltaY this.options.x = this.options.x - this.originalLeft; this.options.y = this.options.y - this.originalTop; } }, update: function(position) { this.element.setStyle({ left: Math.round(this.options.x * position + this.originalLeft) + 'px', top: Math.round(this.options.y * position + this.originalTop) + 'px' }); } }); // for backwards compatibility Effect.MoveBy = function(element, toTop, toLeft) { return new Effect.Move(element, Object.extend({ x: toLeft, y: toTop }, arguments[3] || {})); }; Effect.Scale = Class.create(); Object.extend(Object.extend(Effect.Scale.prototype, Effect.Base.prototype), { initialize: function(element, percent) { this.element = $(element); if(!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ scaleX: true, scaleY: true, scaleContent: true, scaleFromCenter: false, scaleMode: 'box', // 'box' or 'contents' or {} with provided values scaleFrom: 100.0, scaleTo: percent }, arguments[2] || {}); this.start(options); }, setup: function() { this.restoreAfterFinish = this.options.restoreAfterFinish || false; this.elementPositioning = this.element.getStyle('position'); this.originalStyle = {}; ['top','left','width','height','fontSize'].each( function(k) { this.originalStyle[k] = this.element.style[k]; }.bind(this)); this.originalTop = this.element.offsetTop; this.originalLeft = this.element.offsetLeft; var fontSize = this.element.getStyle('font-size') || '100%'; ['em','px','%','pt'].each( function(fontSizeType) { if(fontSize.indexOf(fontSizeType)>0) { this.fontSize = parseFloat(fontSize); this.fontSizeType = fontSizeType; } }.bind(this)); this.factor = (this.options.scaleTo - this.options.scaleFrom)/100; this.dims = null; if(this.options.scaleMode=='box') this.dims = [this.element.offsetHeight, this.element.offsetWidth]; if(/^content/.test(this.options.scaleMode)) this.dims = [this.element.scrollHeight, this.element.scrollWidth]; if(!this.dims) this.dims = [this.options.scaleMode.originalHeight, this.options.scaleMode.originalWidth]; }, update: function(position) { var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position); if(this.options.scaleContent && this.fontSize) this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType }); this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale); }, finish: function(position) { if(this.restoreAfterFinish) this.element.setStyle(this.originalStyle); }, setDimensions: function(height, width) { var d = {}; if(this.options.scaleX) d.width = Math.round(width) + 'px'; if(this.options.scaleY) d.height = Math.round(height) + 'px'; if(this.options.scaleFromCenter) { var topd = (height - this.dims[0])/2; var leftd = (width - this.dims[1])/2; if(this.elementPositioning == 'absolute') { if(this.options.scaleY) d.top = this.originalTop-topd + 'px'; if(this.options.scaleX) d.left = this.originalLeft-leftd + 'px'; } else { if(this.options.scaleY) d.top = -topd + 'px'; if(this.options.scaleX) d.left = -leftd + 'px'; } } this.element.setStyle(d); } }); Effect.Highlight = Class.create(); Object.extend(Object.extend(Effect.Highlight.prototype, Effect.Base.prototype), { initialize: function(element) { this.element = $(element); if(!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || {}); this.start(options); }, setup: function() { // Prevent executing on elements not in the layout flow if(this.element.getStyle('display')=='none') { this.cancel(); return; } // Disable background image during the effect this.oldStyle = {}; if (!this.options.keepBackgroundImage) { this.oldStyle.backgroundImage = this.element.getStyle('background-image'); this.element.setStyle({backgroundImage: 'none'}); } if(!this.options.endcolor) this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff'); if(!this.options.restorecolor) this.options.restorecolor = this.element.getStyle('background-color'); // init color calculations this._base = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this)); this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this)); }, update: function(position) { this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){ return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart()); }.bind(this)) }); }, finish: function() { this.element.setStyle(Object.extend(this.oldStyle, { backgroundColor: this.options.restorecolor })); } }); Effect.ScrollTo = Class.create(); Object.extend(Object.extend(Effect.ScrollTo.prototype, Effect.Base.prototype), { initialize: function(element) { this.element = $(element); this.start(arguments[1] || {}); }, setup: function() { Position.prepare(); var offsets = Position.cumulativeOffset(this.element); if(this.options.offset) offsets[1] += this.options.offset; var max = window.innerHeight ? window.height - window.innerHeight : document.body.scrollHeight - (document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight); this.scrollStart = Position.deltaY; this.delta = (offsets[1] > max ? max : offsets[1]) - this.scrollStart; }, update: function(position) { Position.prepare(); window.scrollTo(Position.deltaX, this.scrollStart + (position*this.delta)); } }); /* ------------- combination effects ------------- */ Effect.Fade = function(element) { element = $(element); var oldOpacity = element.getInlineOpacity(); var options = Object.extend({ from: element.getOpacity() || 1.0, to: 0.0, afterFinishInternal: function(effect) { if(effect.options.to!=0) return; effect.element.hide().setStyle({opacity: oldOpacity}); }}, arguments[1] || {}); return new Effect.Opacity(element,options); } Effect.Appear = function(element) { element = $(element); var options = Object.extend({ from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0), to: 1.0, // force Safari to render floated elements properly afterFinishInternal: function(effect) { effect.element.forceRerendering(); }, beforeSetup: function(effect) { effect.element.setOpacity(effect.options.from).show(); }}, arguments[1] || {}); return new Effect.Opacity(element,options); } Effect.Puff = function(element) { element = $(element); var oldStyle = { opacity: element.getInlineOpacity(), position: element.getStyle('position'), top: element.style.top, left: element.style.left, width: element.style.width, height: element.style.height }; return new Effect.Parallel( [ new Effect.Scale(element, 200, { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], Object.extend({ duration: 1.0, beforeSetupInternal: function(effect) { Position.absolutize(effect.effects[0].element) }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().setStyle(oldStyle); } }, arguments[1] || {}) ); } Effect.BlindUp = function(element) { element = $(element); element.makeClipping(); return new Effect.Scale(element, 0, Object.extend({ scaleContent: false, scaleX: false, restoreAfterFinish: true, afterFinishInternal: function(effect) { effect.element.hide().undoClipping(); } }, arguments[1] || {}) ); } Effect.BlindDown = function(element) { element = $(element); var elementDimensions = element.getDimensions(); return new Effect.Scale(element, 100, Object.extend({ scaleContent: false, scaleX: false, scaleFrom: 0, scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, restoreAfterFinish: true, afterSetup: function(effect) { effect.element.makeClipping().setStyle({height: '0px'}).show(); }, afterFinishInternal: function(effect) { effect.element.undoClipping(); } }, arguments[1] || {})); } Effect.SwitchOff = function(element) { element = $(element); var oldOpacity = element.getInlineOpacity(); return new Effect.Appear(element, Object.extend({ duration: 0.4, from: 0, transition: Effect.Transitions.flicker, afterFinishInternal: function(effect) { new Effect.Scale(effect.element, 1, { duration: 0.3, scaleFromCenter: true, scaleX: false, scaleContent: false, restoreAfterFinish: true, beforeSetup: function(effect) { effect.element.makePositioned().makeClipping(); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity}); } }) } }, arguments[1] || {})); } Effect.DropOut = function(element) { element = $(element); var oldStyle = { top: element.getStyle('top'), left: element.getStyle('left'), opacity: element.getInlineOpacity() }; return new Effect.Parallel( [ new Effect.Move(element, {x: 0, y: 100, sync: true }), new Effect.Opacity(element, { sync: true, to: 0.0 }) ], Object.extend( { duration: 0.5, beforeSetup: function(effect) { effect.effects[0].element.makePositioned(); }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle); } }, arguments[1] || {})); } Effect.Shake = function(element) { element = $(element); var oldStyle = { top: element.getStyle('top'), left: element.getStyle('left') }; return new Effect.Move(element, { x: 20, y: 0, duration: 0.05, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: -20, y: 0, duration: 0.05, afterFinishInternal: function(effect) { effect.element.undoPositioned().setStyle(oldStyle); }}) }}) }}) }}) }}) }}); } Effect.SlideDown = function(element) { element = $(element).cleanWhitespace(); // SlideDown need to have the content of the element wrapped in a container element with fixed height! var oldInnerBottom = element.down().getStyle('bottom'); var elementDimensions = element.getDimensions(); return new Effect.Scale(element, 100, Object.extend({ scaleContent: false, scaleX: false, scaleFrom: window.opera ? 0 : 1, scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, restoreAfterFinish: true, afterSetup: function(effect) { effect.element.makePositioned(); effect.element.down().makePositioned(); if(window.opera) effect.element.setStyle({top: ''}); effect.element.makeClipping().setStyle({height: '0px'}).show(); }, afterUpdateInternal: function(effect) { effect.element.down().setStyle({bottom: (effect.dims[0] - effect.element.clientHeight) + 'px' }); }, afterFinishInternal: function(effect) { effect.element.undoClipping().undoPositioned(); effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); } }, arguments[1] || {}) ); } Effect.SlideUp = function(element) { element = $(element).cleanWhitespace(); var oldInnerBottom = element.down().getStyle('bottom'); return new Effect.Scale(element, window.opera ? 0 : 1, Object.extend({ scaleContent: false, scaleX: false, scaleMode: 'box', scaleFrom: 100, restoreAfterFinish: true, beforeStartInternal: function(effect) { effect.element.makePositioned(); effect.element.down().makePositioned(); if(window.opera) effect.element.setStyle({top: ''}); effect.element.makeClipping().show(); }, afterUpdateInternal: function(effect) { effect.element.down().setStyle({bottom: (effect.dims[0] - effect.element.clientHeight) + 'px' }); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().undoPositioned().setStyle({bottom: oldInnerBottom}); effect.element.down().undoPositioned(); } }, arguments[1] || {}) ); } // Bug in opera makes the TD containing this element expand for a instance after finish Effect.Squish = function(element) { return new Effect.Scale(element, window.opera ? 1 : 0, { restoreAfterFinish: true, beforeSetup: function(effect) { effect.element.makeClipping(); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping(); } }); } Effect.Grow = function(element) { element = $(element); var options = Object.extend({ direction: 'center', moveTransition: Effect.Transitions.sinoidal, scaleTransition: Effect.Transitions.sinoidal, opacityTransition: Effect.Transitions.full }, arguments[1] || {}); var oldStyle = { top: element.style.top, left: element.style.left, height: element.style.height, width: element.style.width, opacity: element.getInlineOpacity() }; var dims = element.getDimensions(); var initialMoveX, initialMoveY; var moveX, moveY; switch (options.direction) { case 'top-left': initialMoveX = initialMoveY = moveX = moveY = 0; break; case 'top-right': initialMoveX = dims.width; initialMoveY = moveY = 0; moveX = -dims.width; break; case 'bottom-left': initialMoveX = moveX = 0; initialMoveY = dims.height; moveY = -dims.height; break; case 'bottom-right': initialMoveX = dims.width; initialMoveY = dims.height; moveX = -dims.width; moveY = -dims.height; break; case 'center': initialMoveX = dims.width / 2; initialMoveY = dims.height / 2; moveX = -dims.width / 2; moveY = -dims.height / 2; break; } return new Effect.Move(element, { x: initialMoveX, y: initialMoveY, duration: 0.01, beforeSetup: function(effect) { effect.element.hide().makeClipping().makePositioned(); }, afterFinishInternal: function(effect) { new Effect.Parallel( [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }), new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }), new Effect.Scale(effect.element, 100, { scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true}) ], Object.extend({ beforeSetup: function(effect) { effect.effects[0].element.setStyle({height: '0px'}).show(); }, afterFinishInternal: function(effect) { effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle); } }, options) ) } }); } Effect.Shrink = function(element) { element = $(element); var options = Object.extend({ direction: 'center', moveTransition: Effect.Transitions.sinoidal, scaleTransition: Effect.Transitions.sinoidal, opacityTransition: Effect.Transitions.none }, arguments[1] || {}); var oldStyle = { top: element.style.top, left: element.style.left, height: element.style.height, width: element.style.width, opacity: element.getInlineOpacity() }; var dims = element.getDimensions(); var moveX, moveY; switch (options.direction) { case 'top-left': moveX = moveY = 0; break; case 'top-right': moveX = dims.width; moveY = 0; break; case 'bottom-left': moveX = 0; moveY = dims.height; break; case 'bottom-right': moveX = dims.width; moveY = dims.height; break; case 'center': moveX = dims.width / 2; moveY = dims.height / 2; break; } return new Effect.Parallel( [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }), new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}), new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }) ], Object.extend({ beforeStartInternal: function(effect) { effect.effects[0].element.makePositioned().makeClipping(); }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); } }, options) ); } Effect.Pulsate = function(element) { element = $(element); var options = arguments[1] || {}; var oldOpacity = element.getInlineOpacity(); var transition = options.transition || Effect.Transitions.sinoidal; var reverser = function(pos){ return transition(1-Effect.Transitions.pulse(pos, options.pulses)) }; reverser.bind(transition); return new Effect.Opacity(element, Object.extend(Object.extend({ duration: 2.0, from: 0, afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); } }, options), {transition: reverser})); } Effect.Fold = function(element) { element = $(element); var oldStyle = { top: element.style.top, left: element.style.left, width: element.style.width, height: element.style.height }; element.makeClipping(); return new Effect.Scale(element, 5, Object.extend({ scaleContent: false, scaleX: false, afterFinishInternal: function(effect) { new Effect.Scale(element, 1, { scaleContent: false, scaleY: false, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().setStyle(oldStyle); } }); }}, arguments[1] || {})); }; Effect.Morph = Class.create(); Object.extend(Object.extend(Effect.Morph.prototype, Effect.Base.prototype), { initialize: function(element) { this.element = $(element); if(!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ style: {} }, arguments[1] || {}); if (typeof options.style == 'string') { if(options.style.indexOf(':') == -1) { var cssText = '', selector = '.' + options.style; $A(document.styleSheets).reverse().each(function(styleSheet) { if (styleSheet.cssRules) cssRules = styleSheet.cssRules; else if (styleSheet.rules) cssRules = styleSheet.rules; $A(cssRules).reverse().each(function(rule) { if (selector == rule.selectorText) { cssText = rule.style.cssText; throw $break; } }); if (cssText) throw $break; }); this.style = cssText.parseStyle(); options.afterFinishInternal = function(effect){ effect.element.addClassName(effect.options.style); effect.transforms.each(function(transform) { if(transform.style != 'opacity') effect.element.style[transform.style] = ''; }); } } else this.style = options.style.parseStyle(); } else this.style = $H(options.style) this.start(options); }, setup: function(){ function parseColor(color){ if(!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff'; color = color.parseColor(); return $R(0,2).map(function(i){ return parseInt( color.slice(i*2+1,i*2+3), 16 ) }); } this.transforms = this.style.map(function(pair){ var property = pair[0], value = pair[1], unit = null; if(value.parseColor('#zzzzzz') != '#zzzzzz') { value = value.parseColor(); unit = 'color'; } else if(property == 'opacity') { value = parseFloat(value); if(Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) this.element.setStyle({zoom: 1}); } else if(Element.CSS_LENGTH.test(value)) { var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/); value = parseFloat(components[1]); unit = (components.length == 3) ? components[2] : null; } var originalValue = this.element.getStyle(property); return { style: property.camelize(), originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0), targetValue: unit=='color' ? parseColor(value) : value, unit: unit }; }.bind(this)).reject(function(transform){ return ( (transform.originalValue == transform.targetValue) || ( transform.unit != 'color' && (isNaN(transform.originalValue) || isNaN(transform.targetValue)) ) ) }); }, update: function(position) { var style = {}, transform, i = this.transforms.length; while(i--) style[(transform = this.transforms[i]).style] = transform.unit=='color' ? '#'+ (Math.round(transform.originalValue[0]+ (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() + (Math.round(transform.originalValue[1]+ (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() + (Math.round(transform.originalValue[2]+ (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() : transform.originalValue + Math.round( ((transform.targetValue - transform.originalValue) * position) * 1000)/1000 + transform.unit; this.element.setStyle(style, true); } }); Effect.Transform = Class.create(); Object.extend(Effect.Transform.prototype, { initialize: function(tracks){ this.tracks = []; this.options = arguments[1] || {}; this.addTracks(tracks); }, addTracks: function(tracks){ tracks.each(function(track){ var data = $H(track).values().first(); this.tracks.push($H({ ids: $H(track).keys().first(), effect: Effect.Morph, options: { style: data } })); }.bind(this)); return this; }, play: function(){ return new Effect.Parallel( this.tracks.map(function(track){ var elements = [$(track.ids) || $$(track.ids)].flatten(); return elements.map(function(e){ return new track.effect(e, Object.extend({ sync:true }, track.options)) }); }).flatten(), this.options ); } }); Element.CSS_PROPERTIES = $w( 'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' + 'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' + 'borderRightColor borderRightStyle borderRightWidth borderSpacing ' + 'borderTopColor borderTopStyle borderTopWidth bottom clip color ' + 'fontSize fontWeight height left letterSpacing lineHeight ' + 'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+ 'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' + 'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' + 'right textIndent top width wordSpacing zIndex'); Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/; String.prototype.parseStyle = function(){ var element = document.createElement('div'); element.innerHTML = '<div style="' + this + '"></div>'; var style = element.childNodes[0].style, styleRules = $H(); Element.CSS_PROPERTIES.each(function(property){ if(style[property]) styleRules[property] = style[property]; }); if(Prototype.Browser.IE && this.indexOf('opacity') > -1) { styleRules.opacity = this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]; } return styleRules; }; Element.morph = function(element, style) { new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || {})); return element; }; ['getInlineOpacity','forceRerendering','setContentZoom', 'collectTextNodes','collectTextNodesIgnoreClass','morph'].each( function(f) { Element.Methods[f] = Element[f]; } ); Element.Methods.visualEffect = function(element, effect, options) { s = effect.dasherize().camelize(); effect_class = s.charAt(0).toUpperCase() + s.substring(1); new Effect[effect_class](element, options); return $(element); }; Element.addMethods(); /** * @author Ryan Johnson <ryan@livepipe.net> * @copyright 2007 LivePipe LLC * @package Object.Event * @license MIT * @url http://livepipe.net/projects/object_event/ * @version 1.0.0 */ Object.Event = { extend: function(object){ object._objectEventSetup = function(event_name){ this._observers = this._observers || {}; this._observers[event_name] = this._observers[event_name] || []; }; object.observe = function(event_name,observer){ if(typeof(event_name) == 'string' && typeof(observer) != 'undefined'){ this._objectEventSetup(event_name); if(!this._observers[event_name].include(observer)) this._observers[event_name].push(observer); }else for(var e in event_name) this.observe(e,event_name[e]); }; object.stopObserving = function(event_name,observer){ this._objectEventSetup(event_name); this._observers[event_name] = this._observers[event_name].without(observer); }; object.notify = function(event_name){ this._objectEventSetup(event_name); var collected_return_values = []; var args = $A(arguments).slice(1); try{ for(var i = 0; i < this._observers[event_name].length; ++i) collected_return_values.push(this._observers[event_name][i].apply(this._observers[event_name][i],args) || null); }catch(e){ if(e == $break) return false; else throw e; } return collected_return_values; }; if(object.prototype){ object.prototype._objectEventSetup = object._objectEventSetup; object.prototype.observe = object.observe; object.prototype.stopObserving = object.stopObserving; object.prototype.notify = function(event_name){ if(object.notify){ var args = $A(arguments).slice(1); args.unshift(this); args.unshift(event_name); object.notify.apply(object,args); } this._objectEventSetup(event_name); var args = $A(arguments).slice(1); var collected_return_values = []; try{ if(this.options && this.options[event_name] && typeof(this.options[event_name]) == 'function') collected_return_values.push(this.options[event_name].apply(this,args) || null); for(var i = 0; i < this._observers[event_name].length; ++i) collected_return_values.push(this._observers[event_name][i].apply(this._observers[event_name][i],args) || null); }catch(e){ if(e == $break) return false; else throw e; } return collected_return_values; };; } } }; /** * @author Ryan Johnson <ryan@livepipe.net> * @copyright 2007 LivePipe LLC * @package Control.Modal * @license MIT * @url http://livepipe.net/projects/control_modal/ * @version 2.2.3 */ if(typeof(Control) == "undefined") Control = {}; Control.Modal = Class.create(); Object.extend(Control.Modal,{ loaded: false, loading: false, loadingTimeout: false, overlay: false, container: false, current: false, ie: false, effects: { containerFade: false, containerAppear: false, overlayFade: false, overlayAppear: false }, targetRegexp: /#(.+)$/, imgRegexp: /\.(jpe?g|gif|png|tiff?)$/i, overlayStyles: { position: 'absolute',// change indoo sql grid for ff, original value fixed top: 0, left: 0, width: '100%', height: '1000%', zIndex: 9998 }, overlayIEStyles: { position: 'absolute', top: 0, left: 0, zIndex: 9998 }, disableHoverClose: false, load: function(){ if(!Control.Modal.loaded){ Control.Modal.loaded = true; Control.Modal.ie = !(typeof document.body.style.maxHeight != 'undefined'); Control.Modal.overlay = $(document.createElement('div')); Control.Modal.overlay.id = 'modal_overlay'; Object.extend(Control.Modal.overlay.style,Control.Modal['overlay' + (Control.Modal.ie ? 'IE' : '') + 'Styles']); Control.Modal.overlay.hide(); Control.Modal.container = $(document.createElement('div')); Control.Modal.container.id = 'modal_container'; Control.Modal.container.hide(); Control.Modal.loading = $(document.createElement('div')); Control.Modal.loading.id = 'modal_loading'; Control.Modal.loading.hide(); var body_tag = document.getElementsByTagName('body')[0]; body_tag.appendChild(Control.Modal.overlay); body_tag.appendChild(Control.Modal.container); body_tag.appendChild(Control.Modal.loading); Control.Modal.container.observe('mouseout',function(event){ if(!Control.Modal.disableHoverClose && Control.Modal.current && Control.Modal.current.options.hover && !Position.within(Control.Modal.container,Event.pointerX(event),Event.pointerY(event))) Control.Modal.close(); }); } }, open: function(contents,options){ options = options || {}; if(!options.contents) options.contents = contents; var modal_instance = new Control.Modal(false,options); modal_instance.open(); return modal_instance; }, close: function(force){ if(typeof(force) != 'boolean') force = false; if(Control.Modal.current) Control.Modal.current.close(force); }, attachEvents: function(){ Event.observe(window,'load',Control.Modal.load); Event.observe(window,'unload',Event.unloadCache,false); }, center: function(element){ if(!element._absolutized){ element.setStyle({ position: 'absolute' }); element._absolutized = true; } var dimensions = element.getDimensions(); Position.prepare(); var offset_left = (Position.deltaX + Math.floor((Control.Modal.getWindowWidth() - dimensions.width) / 2)); var offset_top = (Position.deltaY + ((Control.Modal.getWindowHeight() > dimensions.height) ? Math.floor((Control.Modal.getWindowHeight() - dimensions.height) / 2) : 0)); element.setStyle({ top: ((dimensions.height <= Control.Modal.getDocumentHeight()) ? ((offset_top != null && offset_top > 0) ? offset_top : '0') + 'px' : 0), left: ((dimensions.width <= Control.Modal.getDocumentWidth()) ? ((offset_left != null && offset_left > 0) ? offset_left : '0') + 'px' : 0) }); }, getWindowWidth: function(){ return (self.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || 0); }, getWindowHeight: function(){ return (self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0); }, getDocumentWidth: function(){ return Math.min(document.body.scrollWidth,Control.Modal.getWindowWidth()); }, getDocumentHeight: function(){ return Math.max(document.body.scrollHeight,Control.Modal.getWindowHeight()); }, onKeyDown: function(event){ if(event.keyCode == Event.KEY_ESC) Control.Modal.close(); } }); Object.extend(Control.Modal.prototype,{ mode: '', html: false, href: '', element: false, src: false, imageLoaded: false, ajaxRequest: false, initialize: function(element,options){ this.element = $(element); this.options = { beforeOpen: Prototype.emptyFunction, afterOpen: Prototype.emptyFunction, beforeClose: Prototype.emptyFunction, afterClose: Prototype.emptyFunction, onSuccess: Prototype.emptyFunction, onFailure: Prototype.emptyFunction, onException: Prototype.emptyFunction, beforeImageLoad: Prototype.emptyFunction, afterImageLoad: Prototype.emptyFunction, autoOpenIfLinked: true, contents: false, loading: false, //display loading indicator fade: false, fadeDuration: 0.75, image: false, imageCloseOnClick: true, hover: false, iframe: false, iframeTemplate: new Template('<iframe src="#{href}" width="100%" height="100%" frameborder="0" id="#{id}"></iframe>'), evalScripts: true, //for Ajax, define here instead of in requestOptions requestOptions: {}, //for Ajax.Request overlayDisplay: true, overlayClassName: '', overlayCloseOnClick: true, containerClassName: '', opacity: 0.3, zIndex: 9998, width: null, height: null, offsetLeft: 0, //for use with 'relative' offsetTop: 0, //for use with 'relative' position: 'absolute' //'absolute' or 'relative' }; Object.extend(this.options,options || {}); var target_match = false; var image_match = false; if(this.element){ target_match = Control.Modal.targetRegexp.exec(this.element.href); image_match = Control.Modal.imgRegexp.exec(this.element.href); } if(this.options.position == 'mouse') this.options.hover = true; if(this.options.contents){ this.mode = 'contents'; }else if(this.options.image || image_match){ this.mode = 'image'; this.src = this.element.href; }else if(target_match){ this.mode = 'named'; var x = $(target_match[1]); this.html = x.innerHTML; x.remove(); this.href = target_match[1]; }else{ this.mode = (this.options.iframe) ? 'iframe' : 'ajax'; this.href = this.element.href; } if(this.element){ if(this.options.hover){ this.element.observe('mouseover',this.open.bind(this)); this.element.observe('mouseout',function(event){ if(!Position.within(Control.Modal.container,Event.pointerX(event),Event.pointerY(event))) this.close(); }.bindAsEventListener(this)); }else{ this.element.onclick = function(event){ this.open(); Event.stop(event); return false; }.bindAsEventListener(this); } } var targets = Control.Modal.targetRegexp.exec(window.location); this.position = function(event){ if(this.options.position == 'absolute') Control.Modal.center(Control.Modal.container); else{ var xy = (event && this.options.position == 'mouse' ? [Event.pointerX(event),Event.pointerY(event)] : Position.cumulativeOffset(this.element)); Control.Modal.container.setStyle({ position: 'absolute', top: xy[1] + (typeof(this.options.offsetTop) == 'function' ? this.options.offsetTop() : this.options.offsetTop) + 'px', left: xy[0] + (typeof(this.options.offsetLeft) == 'function' ? this.options.offsetLeft() : this.options.offsetLeft) + 'px' }); } if(Control.Modal.ie){ Control.Modal.overlay.setStyle({ height: Control.Modal.getDocumentHeight() + 'px', width: Control.Modal.getDocumentWidth() + 'px' }); } }.bind(this); if(this.mode == 'named' && this.options.autoOpenIfLinked && targets && targets[1] && targets[1] == this.href) this.open(); }, showLoadingIndicator: function(){ if(this.options.loading){ Control.Modal.loadingTimeout = window.setTimeout(function(){ var modal_image = $('modal_image'); if(modal_image) modal_image.hide(); Control.Modal.loading.style.zIndex = this.options.zIndex + 1; Control.Modal.loading.update('<img id="modal_loading" src="' + this.options.loading + '"/>'); Control.Modal.loading.show(); Control.Modal.center(Control.Modal.loading); }.bind(this),250); } }, hideLoadingIndicator: function(){ if(this.options.loading){ if(Control.Modal.loadingTimeout) window.clearTimeout(Control.Modal.loadingTimeout); var modal_image = $('modal_image'); if(modal_image) modal_image.show(); Control.Modal.loading.hide(); } }, open: function(force){ if(!force && this.notify('beforeOpen') === false) return; if(!Control.Modal.loaded) Control.Modal.load(); Control.Modal.close(); if(!this.options.hover) Event.observe($(document.getElementsByTagName('body')[0]),'keydown',Control.Modal.onKeyDown); Control.Modal.current = this; if(!this.options.hover) Control.Modal.overlay.setStyle({ zIndex: this.options.zIndex, opacity: this.options.opacity }); Control.Modal.container.setStyle({ zIndex: this.options.zIndex + 1, width: (this.options.width ? (typeof(this.options.width) == 'function' ? this.options.width() : this.options.width) + 'px' : null), height: (this.options.height ? (typeof(this.options.height) == 'function' ? this.options.height() : this.options.height) + 'px' : null) }); if(Control.Modal.ie && !this.options.hover){ $A(document.getElementsByTagName('select')).each(function(select){ select.style.visibility = 'hidden'; }); } Control.Modal.overlay.addClassName(this.options.overlayClassName); Control.Modal.container.addClassName(this.options.containerClassName); switch(this.mode){ case 'image': this.imageLoaded = false; this.notify('beforeImageLoad'); this.showLoadingIndicator(); var img = document.createElement('img'); img.onload = function(img){ this.hideLoadingIndicator(); this.update([img]); if(this.options.imageCloseOnClick) $(img).observe('click',Control.Modal.close); this.position(); this.notify('afterImageLoad'); img.onload = null; }.bind(this,img); img.src = this.src; img.id = 'modal_image'; break; case 'ajax': this.notify('beforeLoad'); var options = { method: 'post', onSuccess: function(request){ this.hideLoadingIndicator(); this.update(request.responseText); this.notify('onSuccess',request); this.ajaxRequest = false; }.bind(this), onFailure: function(){ this.notify('onFailure'); }.bind(this), onException: function(){ this.notify('onException'); }.bind(this) }; Object.extend(options,this.options.requestOptions); this.showLoadingIndicator(); this.ajaxRequest = new Ajax.Request(this.href,options); break; case 'iframe': this.update(this.options.iframeTemplate.evaluate({href: this.href, id: 'modal_iframe'})); break; case 'contents': this.update((typeof(this.options.contents) == 'function' ? this.options.contents() : this.options.contents)); break; case 'named': this.update(this.html); break; } if(!this.options.hover){ if(this.options.overlayCloseOnClick && this.options.overlayDisplay) Control.Modal.overlay.observe('click',Control.Modal.close); if(this.options.overlayDisplay){ if(this.options.fade){ if(Control.Modal.effects.overlayFade) Control.Modal.effects.overlayFade.cancel(); Control.Modal.effects.overlayAppear = new Effect.Appear(Control.Modal.overlay,{ queue: { position: 'front', scope: 'Control.Modal' }, to: this.options.opacity, duration: this.options.fadeDuration / 2 }); }else Control.Modal.overlay.show(); } } if(this.options.position == 'mouse'){ this.mouseHoverListener = this.position.bindAsEventListener(this); this.element.observe('mousemove',this.mouseHoverListener); } this.notify('afterOpen'); }, update: function(html){ if(typeof(html) == 'string') Control.Modal.container.update(html); else{ Control.Modal.container.update(''); (html.each) ? html.each(function(node){ Control.Modal.container.appendChild(node); }) : Control.Modal.container.appendChild(node); } if(this.options.fade){ if(Control.Modal.effects.containerFade) Control.Modal.effects.containerFade.cancel(); Control.Modal.effects.containerAppear = new Effect.Appear(Control.Modal.container,{ queue: { position: 'end', scope: 'Control.Modal' }, to: 1, duration: this.options.fadeDuration / 2 }); }else Control.Modal.container.show(); this.position(); Event.observe(window,'resize',this.position,false); Event.observe(window,'scroll',this.position,false); }, close: function(force){ if(!force && this.notify('beforeClose') === false) return; if(this.ajaxRequest) this.ajaxRequest.transport.abort(); this.hideLoadingIndicator(); if(this.mode == 'image'){ var modal_image = $('modal_image'); if(this.options.imageCloseOnClick && modal_image) modal_image.stopObserving('click',Control.Modal.close); } if(Control.Modal.ie && !this.options.hover){ $A(document.getElementsByTagName('select')).each(function(select){ select.style.visibility = 'visible'; }); } if(!this.options.hover) Event.stopObserving(window,'keyup',Control.Modal.onKeyDown); Control.Modal.current = false; Event.stopObserving(window,'resize',this.position,false); Event.stopObserving(window,'scroll',this.position,false); if(!this.options.hover){ if(this.options.overlayCloseOnClick && this.options.overlayDisplay) Control.Modal.overlay.stopObserving('click',Control.Modal.close); if(this.options.overlayDisplay){ if(this.options.fade){ if(Control.Modal.effects.overlayAppear) Control.Modal.effects.overlayAppear.cancel(); Control.Modal.effects.overlayFade = new Effect.Fade(Control.Modal.overlay,{ queue: { position: 'end', scope: 'Control.Modal' }, from: this.options.opacity, to: 0, duration: this.options.fadeDuration / 2 }); }else Control.Modal.overlay.hide(); } } if(this.options.fade){ if(Control.Modal.effects.containerAppear) Control.Modal.effects.containerAppear.cancel(); Control.Modal.effects.containerFade = new Effect.Fade(Control.Modal.container,{ queue: { position: 'front', scope: 'Control.Modal' }, from: 1, to: 0, duration: this.options.fadeDuration / 2, afterFinish: function(){ Control.Modal.container.update(''); this.resetClassNameAndStyles(); }.bind(this) }); }else{ //Control.Modal.container.hide(); Control.Modal.container.update(''); this.resetClassNameAndStyles(); } if(this.options.position == 'mouse') this.element.stopObserving('mousemove',this.mouseHoverListener); this.notify('afterClose'); }, resetClassNameAndStyles: function(){ Control.Modal.overlay.removeClassName(this.options.overlayClassName); Control.Modal.container.removeClassName(this.options.containerClassName); Control.Modal.container.setStyle({ height: null, width: null, top: null, left: null }); }, notify: function(event_name){ try{ if(this.options[event_name]) return [this.options[event_name].apply(this.options[event_name],$A(arguments).slice(1))]; }catch(e){ if(e != $break) throw e; else return false; } } }); if(typeof(Object.Event) != 'undefined') Object.Event.extend(Control.Modal); Control.Modal.attachEvents(); </script> <script> function Indoo_template_0107_f(el_id, link){ return '<table class="boxIndoo_template_0107" ><tr>' + '<td class="boxIndoo_template_01073"><a href="javascript:Indoo_template_0107_getOther(\'' + el_id + '\',-1)">Previous</a>&nbsp;&nbsp;' + '<a href="javascript:Indoo_template_0107_getOther(\'' + el_id + '\',+1)">Next</a></td>' + '<td class="boxIndoo_template_01072"><a href="#" onclick="Control.Modal.close()">Close</a></td>' + '</tr><tr><td class="boxIndoo_template_01073" colspan="2"><center><br /><strong>' + document.getElementById(el_id+'y').innerHTML + '</strong><br /></center></td>' + '</tr><tr><td class="boxIndoo_template_01071" colspan="2"><center>' + link + '</center></td></tr><tr>' + '<td class="boxIndoo_template_01073" colspan="2"><br />' + document.getElementById(el_id+'x').innerHTML + '<br /><br /></td></tr><tr>' + '<td class="boxIndoo_template_01073"><a href="#" onclick="Control.Modal.close()">Close</a></td>' + '<td class="boxIndoo_template_01072"><a href="javascript:Indoo_template_0107_getOther(\'' + el_id + '\',-1)">Previous</a>&nbsp;&nbsp;' + '<a href="javascript:Indoo_template_0107_getOther(\'' + el_id + '\',+1)">Next</a></td>' + '</tr></table>' } function funcIndoo_template_0107a__(imgId,text){ vid=text.substring(text.indexOf('http://www.youtube.com/v/')+25,text.indexOf('&')) document.getElementById(imgId).src="http://img.youtube.com/vi/" + vid + "/default.jpg" } function func_indoo_template_0107_pr1(el){ el.previousSibling.style.display='none'; pn=el.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode; pn.style.visibility ='hidden'; el.style.width=''; el.style.height=''; window.scrollBy(0,1); window.scrollBy(0,-1); pn.style.visibility ='visible'; } function func_indoo_template_0107_pr2(el){ el.previousSibling.style.display='none'; el.width='1px'; el.height='1px' } </script> startupScriptBlock onSubmitScriptBlock sqlOnInsertRecord sqlOnUpdateRecord sqlOnViewModule sqlOnViewRecord addcreatestatement createKeyColumn gridViewColumn.0.Visible on gridViewColumn.0.allowExport gridViewColumn.0.allowEdit gridViewColumn.0.allowFilter 1 gridViewColumn.0.allowSort on gridViewColumn.0.allowImport gridViewColumn.0.columnName Title_1 gridViewColumn.0.caption Title gridViewColumn.0.width gridViewColumn.0.defaultContent gridViewColumn.0.formatData gridViewColumn.0.importDefault gridViewColumn.0.filterAdditionalColumn Title_2,Title_3,Title_4 gridViewColumn.0.defaultSortColumn gridViewColumn.0.isBoolean gridViewColumn.0.isLink gridViewColumn.0.isOther 2 gridViewColumn.0.isBinary on gridViewColumn.0.isJoin gridViewColumn.0.isHtmlAttributes gridViewColumn.1.Visible on gridViewColumn.1.allowExport gridViewColumn.1.allowEdit gridViewColumn.1.allowFilter 0 gridViewColumn.1.allowSort on gridViewColumn.1.allowImport gridViewColumn.1.columnName Title_2 gridViewColumn.1.caption gridViewColumn.1.width gridViewColumn.1.defaultContent gridViewColumn.1.formatData gridViewColumn.1.importDefault gridViewColumn.1.filterAdditionalColumn gridViewColumn.1.defaultSortColumn gridViewColumn.1.isBoolean gridViewColumn.1.isLink gridViewColumn.1.isOther 2 gridViewColumn.1.isBinary on gridViewColumn.1.isJoin gridViewColumn.1.isHtmlAttributes gridViewColumn.1.binaryData.columnName FileContent_2 gridViewColumn.1.binaryData.showType 1 gridViewColumn.1.binaryData.FilenameSource 2 gridViewColumn.1.binaryData.mimeTypeSource 2 gridviewcolumn.1.binarydata.isforcedownload gridViewColumn.1.binaryData.allowExport gridViewColumn.1.binaryData.allowImport gridViewColumn.1.binaryData.target _blank gridViewColumn.1.binaryData.mimeTypeColumnName FileFileMimeType_2 gridViewColumn.1.binaryData.Filename gridViewColumn.1.binaryData.defaultImageUrl gridViewColumn.0.binaryData.columnName FileContent_1 gridViewColumn.0.binaryData.showType 1 gridViewColumn.0.binaryData.FilenameSource 2 gridViewColumn.0.binaryData.mimeTypeSource 2 gridviewcolumn.0.binarydata.isforcedownload gridViewColumn.0.binaryData.allowExport gridViewColumn.0.binaryData.allowImport gridViewColumn.0.binaryData.target _blank gridViewColumn.0.binaryData.mimeTypeColumnName FileFileMimeType_1 gridViewColumn.0.binaryData.Filename gridViewColumn.0.binaryData.defaultImageUrl gridViewColumn.2.Visible on gridViewColumn.2.allowExport gridViewColumn.2.allowEdit gridViewColumn.2.allowFilter 0 gridViewColumn.2.allowSort on gridViewColumn.2.allowImport gridViewColumn.2.columnName Title_3 gridViewColumn.2.caption gridViewColumn.2.width gridViewColumn.2.defaultContent gridViewColumn.2.formatData gridViewColumn.2.importDefault gridViewColumn.2.filterAdditionalColumn gridViewColumn.2.defaultSortColumn gridViewColumn.2.isBoolean gridViewColumn.2.isLink gridViewColumn.2.isOther 2 gridViewColumn.2.isBinary on gridViewColumn.2.isJoin gridViewColumn.2.isHtmlAttributes gridViewColumn.2.binaryData.columnName FileContent_3 gridViewColumn.2.binaryData.showType 1 gridViewColumn.2.binaryData.FilenameSource 2 gridViewColumn.2.binaryData.mimeTypeSource 2 gridviewcolumn.2.binarydata.isforcedownload gridViewColumn.2.binaryData.allowExport gridViewColumn.2.binaryData.allowImport gridViewColumn.2.binaryData.target _blank gridViewColumn.2.binaryData.mimeTypeColumnName FileFileMimeType_3 gridViewColumn.2.binaryData.Filename gridViewColumn.2.binaryData.defaultImageUrl gridViewColumn.3.Visible on gridViewColumn.3.allowExport gridViewColumn.3.allowEdit gridViewColumn.3.allowFilter 0 gridViewColumn.3.allowSort on gridViewColumn.3.allowImport gridViewColumn.3.columnName Title_4 gridViewColumn.3.caption gridViewColumn.3.width gridViewColumn.3.defaultContent gridViewColumn.3.formatData gridViewColumn.3.importDefault gridViewColumn.3.filterAdditionalColumn gridViewColumn.3.defaultSortColumn gridViewColumn.3.isBoolean gridViewColumn.3.isLink gridViewColumn.3.isOther 2 gridViewColumn.3.isBinary on gridViewColumn.3.isJoin gridViewColumn.3.isHtmlAttributes gridViewColumn.3.binaryData.columnName FileContent_4 gridViewColumn.3.binaryData.showType 1 gridViewColumn.3.binaryData.FilenameSource 2 gridViewColumn.3.binaryData.mimeTypeSource 2 gridviewcolumn.3.binarydata.isforcedownload gridViewColumn.3.binaryData.allowExport gridViewColumn.3.binaryData.allowImport gridViewColumn.3.binaryData.target _blank gridViewColumn.3.binaryData.thumbnailWidth gridViewColumn.3.binaryData.thumbnailHeight gridViewColumn.3.binaryData.mimeTypeColumnName FileFileMimeType_3 gridViewColumn.3.binaryData.Filename gridViewColumn.3.binaryData.defaultImageUrl gridViewColumn.0.binaryData.thumbnailWidth gridViewColumn.0.binaryData.thumbnailHeight gridViewColumn.1.binaryData.thumbnailWidth gridViewColumn.1.binaryData.thumbnailHeight gridViewColumn.2.binaryData.thumbnailWidth gridViewColumn.2.binaryData.thumbnailHeight sqlOnUpdateFinishRecord gridViewColumn.0.binaryData.mimeType gridViewColumn.0.binaryData.isBinaryIdFromColumn on gridViewColumn.0.binaryData.binaryIdFromColumn ID_1 gridViewColumn.4.Visible gridViewColumn.4.allowExport gridViewColumn.4.allowEdit gridViewColumn.4.allowFilter 0 gridViewColumn.4.allowSort gridViewColumn.4.allowImport gridViewColumn.4.columnName ID_1 gridViewColumn.4.caption gridViewColumn.4.width gridViewColumn.4.defaultContent gridViewColumn.4.formatData gridViewColumn.4.importDefault gridViewColumn.4.filterAdditionalColumn gridViewColumn.4.defaultSortColumn gridViewColumn.4.isBoolean gridViewColumn.4.isLink gridViewColumn.4.isOther 0 gridViewColumn.4.isBinary gridViewColumn.4.isJoin gridViewColumn.4.isHtmlAttributes gridViewColumn.5.Visible gridViewColumn.5.allowExport gridViewColumn.5.allowEdit gridViewColumn.5.allowFilter 0 gridViewColumn.5.allowSort gridViewColumn.5.allowImport gridViewColumn.5.columnName ID_2 gridViewColumn.5.caption gridViewColumn.5.width gridViewColumn.5.defaultContent gridViewColumn.5.formatData gridViewColumn.5.importDefault gridViewColumn.5.filterAdditionalColumn gridViewColumn.5.defaultSortColumn gridViewColumn.5.isBoolean gridViewColumn.5.isLink gridViewColumn.5.isOther 0 gridViewColumn.5.isBinary gridViewColumn.5.isJoin gridViewColumn.5.isHtmlAttributes gridViewColumn.6.Visible gridViewColumn.6.allowExport gridViewColumn.6.allowEdit gridViewColumn.6.allowFilter 0 gridViewColumn.6.allowSort gridViewColumn.6.allowImport gridViewColumn.6.columnName ID_3 gridViewColumn.6.caption gridViewColumn.6.width gridViewColumn.6.defaultContent gridViewColumn.6.formatData gridViewColumn.6.importDefault gridViewColumn.6.filterAdditionalColumn gridViewColumn.6.defaultSortColumn gridViewColumn.6.isBoolean gridViewColumn.6.isLink gridViewColumn.6.isOther 0 gridViewColumn.6.isBinary gridViewColumn.6.isJoin gridViewColumn.6.isHtmlAttributes gridViewColumn.7.Visible gridViewColumn.7.allowExport gridViewColumn.7.allowEdit gridViewColumn.7.allowFilter 0 gridViewColumn.7.allowSort gridViewColumn.7.allowImport gridViewColumn.7.columnName ID_4 gridViewColumn.7.caption gridViewColumn.7.width gridViewColumn.7.defaultContent gridViewColumn.7.formatData gridViewColumn.7.importDefault gridViewColumn.7.filterAdditionalColumn gridViewColumn.7.defaultSortColumn gridViewColumn.7.isBoolean gridViewColumn.7.isLink gridViewColumn.7.isOther 0 gridViewColumn.7.isBinary gridViewColumn.7.isJoin gridViewColumn.7.isHtmlAttributes gridViewColumn.1.binaryData.isBinaryIdFromColumn on gridViewColumn.1.binaryData.binaryIdFromColumn ID_2 gridViewColumn.2.binaryData.isBinaryIdFromColumn on gridViewColumn.2.binaryData.binaryIdFromColumn ID_3 gridViewColumn.3.binaryData.isBinaryIdFromColumn on gridViewColumn.3.binaryData.binaryIdFromColumn ID_4 gridViewColumn.8.columnName FileDate_2 gridViewColumn.8.Visible gridViewColumn.8.allowExport gridViewColumn.8.allowEdit gridViewColumn.8.allowFilter 0 gridViewColumn.8.allowSort gridViewColumn.8.allowImport gridViewColumn.8.isOther 0 gridViewColumn.9.columnName UserID_2 gridViewColumn.9.Visible gridViewColumn.9.allowExport gridViewColumn.9.allowEdit gridViewColumn.9.allowFilter 0 gridViewColumn.9.allowSort gridViewColumn.9.allowImport gridViewColumn.9.isOther 0 gridViewColumn.10.columnName FileName_2 gridViewColumn.10.Visible gridViewColumn.10.allowExport gridViewColumn.10.allowEdit gridViewColumn.10.allowFilter 0 gridViewColumn.10.allowSort gridViewColumn.10.allowImport gridViewColumn.10.isOther 0 gridViewColumn.11.columnName FileSize_2 gridViewColumn.11.Visible gridViewColumn.11.allowExport gridViewColumn.11.allowEdit gridViewColumn.11.allowFilter 0 gridViewColumn.11.allowSort gridViewColumn.11.allowImport gridViewColumn.11.isOther 0 gridViewColumn.12.columnName FileDescription_2 gridViewColumn.12.Visible gridViewColumn.12.allowExport gridViewColumn.12.allowEdit gridViewColumn.12.allowFilter 0 gridViewColumn.12.allowSort gridViewColumn.12.allowImport gridViewColumn.12.isOther 0 gridViewColumn.13.columnName FileDate_1 gridViewColumn.13.Visible gridViewColumn.13.allowExport gridViewColumn.13.allowEdit gridViewColumn.13.allowFilter 1 gridViewColumn.13.allowSort gridViewColumn.13.allowImport gridViewColumn.13.isOther 0 gridViewColumn.14.columnName UserID_1 gridViewColumn.14.Visible gridViewColumn.14.allowExport gridViewColumn.14.allowEdit gridViewColumn.14.allowFilter 1 gridViewColumn.14.allowSort gridViewColumn.14.allowImport gridViewColumn.14.isOther 0 gridViewColumn.15.columnName FileName_1 gridViewColumn.15.Visible gridViewColumn.15.allowExport gridViewColumn.15.allowEdit gridViewColumn.15.allowFilter 1 gridViewColumn.15.allowSort gridViewColumn.15.allowImport gridViewColumn.15.isOther 0 gridViewColumn.16.columnName FileSize_1 gridViewColumn.16.Visible gridViewColumn.16.allowExport gridViewColumn.16.allowEdit gridViewColumn.16.allowFilter 1 gridViewColumn.16.allowSort gridViewColumn.16.allowImport gridViewColumn.16.isOther 0 gridViewColumn.17.columnName FileDescription_1 gridViewColumn.17.Visible gridViewColumn.17.allowExport gridViewColumn.17.allowEdit gridViewColumn.17.allowFilter 1 gridViewColumn.17.allowSort gridViewColumn.17.allowImport gridViewColumn.17.isOther 0 gridViewColumn.18.columnName FileDate_3 gridViewColumn.18.Visible gridViewColumn.18.allowExport gridViewColumn.18.allowEdit gridViewColumn.18.allowFilter 0 gridViewColumn.18.allowSort gridViewColumn.18.allowImport gridViewColumn.18.isOther 0 gridViewColumn.19.columnName UserID_3 gridViewColumn.19.Visible gridViewColumn.19.allowExport gridViewColumn.19.allowEdit gridViewColumn.19.allowFilter 0 gridViewColumn.19.allowSort gridViewColumn.19.allowImport gridViewColumn.19.isOther 0 gridViewColumn.20.columnName FileName_3 gridViewColumn.20.Visible gridViewColumn.20.allowExport gridViewColumn.20.allowEdit gridViewColumn.20.allowFilter 0 gridViewColumn.20.allowSort gridViewColumn.20.allowImport gridViewColumn.20.isOther 0 gridViewColumn.21.columnName FileSize_3 gridViewColumn.21.Visible gridViewColumn.21.allowExport gridViewColumn.21.allowEdit gridViewColumn.21.allowFilter 0 gridViewColumn.21.allowSort gridViewColumn.21.allowImport gridViewColumn.21.isOther 0 gridViewColumn.22.columnName FileDescription_3 gridViewColumn.22.Visible gridViewColumn.22.allowExport gridViewColumn.22.allowEdit gridViewColumn.22.allowFilter 0 gridViewColumn.22.allowSort gridViewColumn.22.allowImport gridViewColumn.22.isOther 0 gridViewColumn.23.columnName UserID_4 gridViewColumn.23.Visible gridViewColumn.23.allowExport gridViewColumn.23.allowEdit gridViewColumn.23.allowFilter 0 gridViewColumn.23.allowSort gridViewColumn.23.allowImport gridViewColumn.23.isOther 0 gridViewColumn.24.columnName FileName_4 gridViewColumn.24.Visible gridViewColumn.24.allowExport gridViewColumn.24.allowEdit gridViewColumn.24.allowFilter 0 gridViewColumn.24.allowSort gridViewColumn.24.allowImport gridViewColumn.24.isOther 0 gridViewColumn.25.columnName FileSize_4 gridViewColumn.25.Visible gridViewColumn.25.allowExport gridViewColumn.25.allowEdit gridViewColumn.25.allowFilter 0 gridViewColumn.25.allowSort gridViewColumn.25.allowImport gridViewColumn.25.isOther 0 gridViewColumn.26.columnName FileDescription_4 gridViewColumn.26.Visible gridViewColumn.26.allowExport gridViewColumn.26.allowEdit gridViewColumn.26.allowFilter 0 gridViewColumn.26.allowSort gridViewColumn.26.allowImport gridViewColumn.26.isOther 0 gridViewColumn.27.columnName FileDate_4 gridViewColumn.27.Visible gridViewColumn.27.allowExport gridViewColumn.27.allowEdit gridViewColumn.27.allowFilter 0 gridViewColumn.27.allowSort gridViewColumn.27.allowImport gridViewColumn.27.isOther 0 gridViewColumn.8.caption gridViewColumn.9.caption gridViewColumn.10.caption gridViewColumn.11.caption gridViewColumn.12.caption gridViewColumn.13.caption Date gridViewColumn.14.caption Username gridViewColumn.15.caption File name gridViewColumn.16.caption File size gridViewColumn.17.caption Description gridViewColumn.18.caption gridViewColumn.19.caption gridViewColumn.20.caption gridViewColumn.21.caption gridViewColumn.22.caption gridViewColumn.23.caption gridViewColumn.24.caption gridViewColumn.25.caption gridViewColumn.26.caption gridViewColumn.27.caption gridViewColumn.9.width gridViewColumn.9.defaultContent gridViewColumn.9.formatData gridViewColumn.9.importDefault gridViewColumn.9.filterAdditionalColumn gridViewColumn.9.defaultSortColumn gridViewColumn.9.isBoolean gridViewColumn.9.isLink gridViewColumn.9.isBinary gridViewColumn.9.isJoin on gridViewColumn.9.isHtmlAttributes gridViewColumn.9.navigateUrlTarget _blank gridViewColumn.9.joinTableName Users gridViewColumn.9.joinTableIdColumnName UserID gridViewColumn.9.joinTableColumnName Username gridViewColumn.13.width gridViewColumn.13.defaultContent gridViewColumn.13.formatData gridViewColumn.13.importDefault gridViewColumn.13.filterAdditionalColumn FileDate_2,FileDate_3,FileDate_4 gridViewColumn.13.defaultSortColumn gridViewColumn.13.isBoolean gridViewColumn.13.isLink gridViewColumn.13.isBinary gridViewColumn.13.isJoin gridViewColumn.13.isHtmlAttributes gridViewColumn.14.width gridViewColumn.14.defaultContent gridViewColumn.14.formatData gridViewColumn.14.importDefault gridViewColumn.14.filterAdditionalColumn UserID_2,UserID_3,UserID_4 gridViewColumn.14.defaultSortColumn gridViewColumn.14.isBoolean gridViewColumn.14.isLink gridViewColumn.14.isBinary gridViewColumn.14.isJoin on gridViewColumn.14.isHtmlAttributes gridViewColumn.15.width gridViewColumn.15.defaultContent gridViewColumn.15.formatData gridViewColumn.15.importDefault gridViewColumn.15.filterAdditionalColumn FileName_2;FileName_3,FileName_4 gridViewColumn.15.defaultSortColumn gridViewColumn.15.isBoolean gridViewColumn.15.isLink gridViewColumn.15.isBinary gridViewColumn.15.isJoin gridViewColumn.15.isHtmlAttributes gridViewColumn.14.navigateUrlTarget _blank gridViewColumn.14.joinTableName Users gridViewColumn.14.joinTableIdColumnName UserID gridViewColumn.14.joinTableColumnName Username gridViewColumn.19.width gridViewColumn.19.defaultContent gridViewColumn.19.formatData gridViewColumn.19.importDefault gridViewColumn.19.filterAdditionalColumn gridViewColumn.19.defaultSortColumn gridViewColumn.19.isBoolean gridViewColumn.19.isLink gridViewColumn.19.isBinary gridViewColumn.19.isJoin on gridViewColumn.19.isHtmlAttributes gridViewColumn.19.navigateUrlTarget _blank gridViewColumn.19.joinTableName Users gridViewColumn.19.joinTableIdColumnName UserID gridViewColumn.19.joinTableColumnName Username gridViewColumn.23.width gridViewColumn.23.defaultContent gridViewColumn.23.formatData gridViewColumn.23.importDefault gridViewColumn.23.filterAdditionalColumn gridViewColumn.23.defaultSortColumn gridViewColumn.23.isBoolean gridViewColumn.23.isLink gridViewColumn.23.isBinary gridViewColumn.23.isJoin on gridViewColumn.23.isHtmlAttributes gridViewColumn.23.navigateUrlTarget _blank gridViewColumn.23.joinTableName Users gridViewColumn.23.joinTableIdColumnName UserID gridViewColumn.23.joinTableColumnName Username gridViewColumn.16.width gridViewColumn.16.defaultContent gridViewColumn.16.formatData gridViewColumn.16.importDefault gridViewColumn.16.filterAdditionalColumn FileSize_2,FileSize_3,FileSize_4 gridViewColumn.16.defaultSortColumn gridViewColumn.16.isBoolean gridViewColumn.16.isLink gridViewColumn.16.isBinary gridViewColumn.16.isJoin gridViewColumn.16.isHtmlAttributes gridViewColumn.17.width gridViewColumn.17.defaultContent gridViewColumn.17.formatData gridViewColumn.17.importDefault gridViewColumn.17.filterAdditionalColumn FileDescription_2,FileDescription_3,FileDescription_4 gridViewColumn.17.defaultSortColumn gridViewColumn.17.isBoolean gridViewColumn.17.isLink gridViewColumn.17.isBinary gridViewColumn.17.isJoin gridViewColumn.17.isHtmlAttributes gridViewColumn.28.Visible gridViewColumn.28.allowExport gridViewColumn.28.allowEdit gridViewColumn.28.allowFilter 0 gridViewColumn.28.allowSort gridViewColumn.28.allowImport gridViewColumn.28.columnName newID gridViewColumn.28.caption gridViewColumn.28.width gridViewColumn.28.defaultContent gridViewColumn.28.formatData gridViewColumn.28.importDefault gridViewColumn.28.filterAdditionalColumn gridViewColumn.28.defaultSortColumn gridViewColumn.28.isBoolean gridViewColumn.28.isLink gridViewColumn.28.isOther 0 gridViewColumn.28.isBinary gridViewColumn.28.isJoin gridViewColumn.28.isHtmlAttributes showGridView on showGridEdit on gridview.sqlstatementquery gridViewColumn.0.binaryData.FilenameColumnName FileName_1 gridViewColumn.1.binaryData.FilenameColumnName FileName_2 gridViewColumn.2.binaryData.FilenameColumnName FileName_3 gridViewColumn.3.binaryData.FilenameColumnName FileName_4 gridViewColumn.0.customHTMLForm <SCRIPT> id_[columnField:newID]_[columnIndex] = 'Indoo_template_0107_x[columnField:newID]_[columnIndex]'; Indoo_template_0107_c[columnField:newID]_[columnIndex] = '<IMG src="[indoogrid:moduleFolder]images/preload.gif" onerror="this.width=\'1px\';this.height=\'1px\'" /><img onerror="func_indoo_template_0107_pr2(this);" src="[indooGrid:binaryLink]" style="heght:1px;width:1px;" onload="func_indoo_template_0107_pr1(this);"/></'; document.write('<a href="" id="'+id_[columnField:newID]_[columnIndex]+'"><img src="[indooGrid:binaryLinkThumbnail]" border="0" onerror="this.width=\'1px\';this.height=\'1px\'" /></a>') new Control.Modal(id_[columnField:newID]_[columnIndex],{overlayDisplay: true,contents: function(){return Indoo_template_0107_f(id_[columnField:newID]_[columnIndex],Indoo_template_0107_c[columnField:newID]_[columnIndex])}}); Indoo_template_0107_ids[Indoo_template_0107_ids.length]=id_[columnField:newID]_[columnIndex]; </SCRIPT> <TEXTAREA id=Indoo_template_0107_x[columnField:newID]_[columnIndex]x style="DISPLAY: none">[columnField:FileDescription_2]</TEXTAREA><TEXTAREA id=Indoo_template_0107_x[columnField:newID]_[columnIndex]y style="DISPLAY: none">[columnField:Title_2]</TEXTAREA> gridViewColumn.1.customHTMLForm <SCRIPT> id_[columnField:newID]_[columnIndex] = 'Indoo_template_0107_x[columnField:newID]_[columnIndex]'; Indoo_template_0107_c[columnField:newID]_[columnIndex] = '<IMG src="[indoogrid:moduleFolder]images/preload.gif" onerror="this.width=\'1px\';this.height=\'1px\'" /><img onerror="func_indoo_template_0107_pr2(this);" src="[indooGrid:binaryLink]" style="heght:1px;width:1px;" onload="func_indoo_template_0107_pr1(this);"/></'; document.write('<a href="" id="'+id_[columnField:newID]_[columnIndex]+'"><img src="[indooGrid:binaryLinkThumbnail]" border="0" onerror="this.width=\'1px\';this.height=\'1px\'" /></a>') new Control.Modal(id_[columnField:newID]_[columnIndex],{overlayDisplay: true,contents: function(){return Indoo_template_0107_f(id_[columnField:newID]_[columnIndex],Indoo_template_0107_c[columnField:newID]_[columnIndex])}}); Indoo_template_0107_ids[Indoo_template_0107_ids.length]=id_[columnField:newID]_[columnIndex]; </SCRIPT> <TEXTAREA id=Indoo_template_0107_x[columnField:newID]_[columnIndex]x style="DISPLAY: none">[columnField:FileDescription_2]</TEXTAREA><TEXTAREA id=Indoo_template_0107_x[columnField:newID]_[columnIndex]y style="DISPLAY: none">[columnField:Title_2]</TEXTAREA> gridViewColumn.2.customHTMLForm <SCRIPT> id_[columnField:newID]_[columnIndex] = 'Indoo_template_0107_x[columnField:newID]_[columnIndex]'; Indoo_template_0107_c[columnField:newID]_[columnIndex] = '<IMG src="[indoogrid:moduleFolder]images/preload.gif" onerror="this.width=\'1px\';this.height=\'1px\'" /><img onerror="func_indoo_template_0107_pr2(this);" src="[indooGrid:binaryLink]" style="heght:1px;width:1px;" onload="func_indoo_template_0107_pr1(this);"/></'; document.write('<a href="" id="'+id_[columnField:newID]_[columnIndex]+'"><img src="[indooGrid:binaryLinkThumbnail]" border="0" onerror="this.width=\'1px\';this.height=\'1px\'" /></a>') new Control.Modal(id_[columnField:newID]_[columnIndex],{overlayDisplay: true,contents: function(){return Indoo_template_0107_f(id_[columnField:newID]_[columnIndex],Indoo_template_0107_c[columnField:newID]_[columnIndex])}}); Indoo_template_0107_ids[Indoo_template_0107_ids.length]=id_[columnField:newID]_[columnIndex]; </SCRIPT> <TEXTAREA id=Indoo_template_0107_x[columnField:newID]_[columnIndex]x style="DISPLAY: none">[columnField:FileDescription_2]</TEXTAREA><TEXTAREA id=Indoo_template_0107_x[columnField:newID]_[columnIndex]y style="DISPLAY: none">[columnField:Title_2]</TEXTAREA> gridViewColumn.3.customHTMLForm <SCRIPT> id_[columnField:newID]_[columnIndex] = 'Indoo_template_0107_x[columnField:newID]_[columnIndex]'; Indoo_template_0107_c[columnField:newID]_[columnIndex] = '<IMG src="[indoogrid:moduleFolder]images/preload.gif" onerror="this.width=\'1px\';this.height=\'1px\'" /><img onerror="func_indoo_template_0107_pr2(this);" src="[indooGrid:binaryLink]" style="heght:1px;width:1px;" onload="func_indoo_template_0107_pr1(this);"/></'; document.write('<a href="" id="'+id_[columnField:newID]_[columnIndex]+'"><img src="[indooGrid:binaryLinkThumbnail]" border="0" onerror="this.width=\'1px\';this.height=\'1px\'" /></a>') new Control.Modal(id_[columnField:newID]_[columnIndex],{overlayDisplay: true,contents: function(){return Indoo_template_0107_f(id_[columnField:newID]_[columnIndex],Indoo_template_0107_c[columnField:newID]_[columnIndex])}}); Indoo_template_0107_ids[Indoo_template_0107_ids.length]=id_[columnField:newID]_[columnIndex]; </SCRIPT> <TEXTAREA id=Indoo_template_0107_x[columnField:newID]_[columnIndex]x style="DISPLAY: none">[columnField:FileDescription_2]</TEXTAREA><TEXTAREA id=Indoo_template_0107_x[columnField:newID]_[columnIndex]y style="DISPLAY: none">[columnField:Title_2]</TEXTAREA> alternateTablename alternateConnectionString tablename vw_Indoo_template_0107b binaryData.fileSytemDBPath |DataDirectory|indooGrid\ notSkipSqlOnImport on gridView.recordcount 2 gridView.inlineEdit version 01.05.00 connectionType 0 connectionString tableKeyColumn newId gridview.bulkimport gridview.bulkexport gridview.bulkdelete gridview.insertrecord gridview.editrecord gridview.deleterecord gridview.viewrecord hidegridview gridView.hideElement 2 gridView.pagerecord hidegridviewonedit grideditshowabovegridview editbuttonsinlastcoulumns gridedit.captionposition gridedit.checkwebpageonexit gridEdit.mode gridEdit.valueID gridEdit.TextboxWidth gridEdit.redirectURL gridEdit.txt_Save gridEdit.txt_Insert gridEdit.txt_Back gridEdit.txt_Next gridEdit.txt_Finish gridEdit.txt_cancel gridEdit_customHTMLForm gridEdit.isBinary on networkCredential.userName networkCredential.passWord sqldeveloperwindowcb importexportcb gridView.importStopAfterErrorCount 10 isEmptyCaptionReplaced gridedit.allowunecryptedquerystring gridedit.isgridvieweditredirected gridview.ispagenumbertextbox gridView.gridDdlForm 0 gridView.ID gridEdit.ID gridEdit.validRedirectURLSetParameter gridEdit.validRedirectURLDelParameter gridEdit.sendToMail gridView.OrderBy gridView.SqlWhere moduleHeader [setObject:viewPage.gridView.txt_filter=Filter row(s)] moduleFooter htmlHeadBlock <style type="text/css"> .boxIndoo_template_0107 { overIndoo_template_0107flow: none; border: 5px ridge #ccc; z-index: 150; background: #fff; font-size:11px; font-family: Tahoma, Arial, Sans-Serif; } .boxIndoo_template_01071 { padding-right: 10px; padding-left: 10px; } .boxIndoo_template_01072 { padding-right: 10px; text-align:right; } .boxIndoo_template_01073 { padding-left: 10px; text-align:left; } </style> <script type="text/javascript"> Indoo_template_0107_ids = new Array; function Indoo_template_0107_getOther(ids,value){ var j=-1; for(var i = 0; i < Indoo_template_0107_ids.length; i++) { if (Indoo_template_0107_ids[i]==ids){ j=i } } var out; if (j+value<Indoo_template_0107_ids.length && j+value>-1){ out = Indoo_template_0107_ids[j+value]; el=document.getElementById(out); Control.Modal.close(); if(typeof(el.click)!='undefined'){ el.click(); }else{ el.onclick(); } }else{ out = Indoo_template_0107_ids[j]; } ; //alert(document.getElementById(Indoo_template_0107_ids[j+value]).onclick()); } </script> <script src="http://prototypejs.org/assets/2007/6/20/prototype.js"></script> <style> #modal_container { padding:5px; background-color:#fff; border:1px solid #666; overflow:auto; font-family:"Lucida Grande",Verdana; font-size:12px; color:#333; text-align:left; } #modal_overlay { background-color:#000; } </style> <!-- �e en modal ki dela tukaj, ne pa na dnn-ju... --> <script> // script.aculo.us effects.js v1.7.1_beta3, Fri May 25 17:19:41 +0200 2007 // Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // Contributors: // Justin Palmer (http://encytemedia.com/) // Mark Pilgrim (http://diveintomark.org/) // Martin Bialasinki // // script.aculo.us is freely distributable under the terms of an MIT-style license. // For details, see the script.aculo.us web site: http://script.aculo.us/ // converts rgb() and #xxx to #xxxxxx format, // returns self (or first argument) if not convertable String.prototype.parseColor = function() { var color = '#'; if(this.slice(0,4) == 'rgb(') { var cols = this.slice(4,this.length-1).split(','); var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3); } else { if(this.slice(0,1) == '#') { if(this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase(); if(this.length==7) color = this.toLowerCase(); } } return(color.length==7 ? color : (arguments[0] || this)); } /*--------------------------------------------------------------------------*/ Element.collectTextNodes = function(element) { return $A($(element).childNodes).collect( function(node) { return (node.nodeType==3 ? node.nodeValue : (node.hasChildNodes() ? Element.collectTextNodes(node) : '')); }).flatten().join(''); } Element.collectTextNodesIgnoreClass = function(element, className) { return $A($(element).childNodes).collect( function(node) { return (node.nodeType==3 ? node.nodeValue : ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? Element.collectTextNodesIgnoreClass(node, className) : '')); }).flatten().join(''); } Element.setContentZoom = function(element, percent) { element = $(element); element.setStyle({fontSize: (percent/100) + 'em'}); if(Prototype.Browser.WebKit) window.scrollBy(0,0); return element; } Element.getInlineOpacity = function(element){ return $(element).style.opacity || ''; } Element.forceRerendering = function(element) { try { element = $(element); var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch(e) { } }; /*--------------------------------------------------------------------------*/ Array.prototype.call = function() { var args = arguments; this.each(function(f){ f.apply(this, args) }); } /*--------------------------------------------------------------------------*/ var Effect = { _elementDoesNotExistError: { name: 'ElementDoesNotExistError', message: 'The specified DOM element does not exist, but is required for this effect to operate' }, tagifyText: function(element) { if(typeof Builder == 'undefined') throw("Effect.tagifyText requires including script.aculo.us' builder.js library"); var tagifyStyle = 'position:relative'; if(Prototype.Browser.IE) tagifyStyle += ';zoom:1'; element = $(element); $A(element.childNodes).each( function(child) { if(child.nodeType==3) { child.nodeValue.toArray().each( function(character) { element.insertBefore( Builder.node('span',{style: tagifyStyle}, character == ' ' ? String.fromCharCode(160) : character), child); }); Element.remove(child); } }); }, multiple: function(element, effect) { var elements; if(((typeof element == 'object') || (typeof element == 'function')) && (element.length)) elements = element; else elements = $(element).childNodes; var options = Object.extend({ speed: 0.1, delay: 0.0 }, arguments[2] || {}); var masterDelay = options.delay; $A(elements).each( function(element, index) { new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay })); }); }, PAIRS: { 'slide': ['SlideDown','SlideUp'], 'blind': ['BlindDown','BlindUp'], 'appear': ['Appear','Fade'] }, toggle: function(element, effect) { element = $(element); effect = (effect || 'appear').toLowerCase(); var options = Object.extend({ queue: { position:'end', scope:(element.id || 'global'), limit: 1 } }, arguments[2] || {}); Effect[element.visible() ? Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options); } }; var Effect2 = Effect; // deprecated /* ------------- transitions ------------- */ Effect.Transitions = { linear: Prototype.K, sinoidal: function(pos) { return (-Math.cos(pos*Math.PI)/2) + 0.5; }, reverse: function(pos) { return 1-pos; }, flicker: function(pos) { var pos = ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4; return (pos > 1 ? 1 : pos); }, wobble: function(pos) { return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5; }, pulse: function(pos, pulses) { pulses = pulses || 5; return ( Math.round((pos % (1/pulses)) * pulses) == 0 ? ((pos * pulses * 2) - Math.floor(pos * pulses * 2)) : 1 - ((pos * pulses * 2) - Math.floor(pos * pulses * 2)) ); }, none: function(pos) { return 0; }, full: function(pos) { return 1; } }; /* ------------- core effects ------------- */ Effect.ScopedQueue = Class.create(); Object.extend(Object.extend(Effect.ScopedQueue.prototype, Enumerable), { initialize: function() { this.effects = []; this.interval = null; }, _each: function(iterator) { this.effects._each(iterator); }, add: function(effect) { var timestamp = new Date().getTime(); var position = (typeof effect.options.queue == 'string') ? effect.options.queue : effect.options.queue.position; switch(position) { case 'front': // move unstarted effects after this effect this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) { e.startOn += effect.finishOn; e.finishOn += effect.finishOn; }); break; case 'with-last': timestamp = this.effects.pluck('startOn').max() || timestamp; break; case 'end': // start effect after last queued effect has finished timestamp = this.effects.pluck('finishOn').max() || timestamp; break; } effect.startOn += timestamp; effect.finishOn += timestamp; if(!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit)) this.effects.push(effect); if(!this.interval) this.interval = setInterval(this.loop.bind(this), 15); }, remove: function(effect) { this.effects = this.effects.reject(function(e) { return e==effect }); if(this.effects.length == 0) { clearInterval(this.interval); this.interval = null; } }, loop: function() { var timePos = new Date().getTime(); for(var i=0, len=this.effects.length;i<len;i++) this.effects[i] && this.effects[i].loop(timePos); } }); Effect.Queues = { instances: $H(), get: function(queueName) { if(typeof queueName != 'string') return queueName; if(!this.instances[queueName]) this.instances[queueName] = new Effect.ScopedQueue(); return this.instances[queueName]; } } Effect.Queue = Effect.Queues.get('global'); Effect.DefaultOptions = { transition: Effect.Transitions.sinoidal, duration: 1.0, // seconds fps: 100, // 100= assume 66fps max. sync: false, // true for combining from: 0.0, to: 1.0, delay: 0.0, queue: 'parallel' } Effect.Base = function() {}; Effect.Base.prototype = { position: null, start: function(options) { function codeForEvent(options,eventName){ return ( (options[eventName+'Internal'] ? 'this.options.'+eventName+'Internal(this);' : '') + (options[eventName] ? 'this.options.'+eventName+'(this);' : '') ); } if(options.transition === false) options.transition = Effect.Transitions.linear; this.options = Object.extend(Object.extend({},Effect.DefaultOptions), options || {}); this.currentFrame = 0; this.state = 'idle'; this.startOn = this.options.delay*1000; this.finishOn = this.startOn+(this.options.duration*1000); this.fromToDelta = this.options.to-this.options.from; this.totalTime = this.finishOn-this.startOn; this.totalFrames = this.options.fps*this.options.duration; eval('this.render = function(pos){ '+ 'if(this.state=="idle"){this.state="running";'+ codeForEvent(options,'beforeSetup')+ (this.setup ? 'this.setup();':'')+ codeForEvent(options,'afterSetup')+ '};if(this.state=="running"){'+ 'pos=this.options.transition(pos)*'+this.fromToDelta+'+'+this.options.from+';'+ 'this.position=pos;'+ codeForEvent(options,'beforeUpdate')+ (this.update ? 'this.update(pos);':'')+ codeForEvent(options,'afterUpdate')+ '}}'); this.event('beforeStart'); if(!this.options.sync) Effect.Queues.get(typeof this.options.queue == 'string' ? 'global' : this.options.queue.scope).add(this); }, loop: function(timePos) { if(timePos >= this.startOn) { if(timePos >= this.finishOn) { this.render(1.0); this.cancel(); this.event('beforeFinish'); if(this.finish) this.finish(); this.event('afterFinish'); return; } var pos = (timePos - this.startOn) / this.totalTime, frame = Math.round(pos * this.totalFrames); if(frame > this.currentFrame) { this.render(pos); this.currentFrame = frame; } } }, cancel: function() { if(!this.options.sync) Effect.Queues.get(typeof this.options.queue == 'string' ? 'global' : this.options.queue.scope).remove(this); this.state = 'finished'; }, event: function(eventName) { if(this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this); if(this.options[eventName]) this.options[eventName](this); }, inspect: function() { var data = $H(); for(property in this) if(typeof this[property] != 'function') data[property] = this[property]; return '#<Effect:' + data.inspect() + ',options:' + $H(this.options).inspect() + '>'; } } Effect.Parallel = Class.create(); Object.extend(Object.extend(Effect.Parallel.prototype, Effect.Base.prototype), { initialize: function(effects) { this.effects = effects || []; this.start(arguments[1]); }, update: function(position) { this.effects.invoke('render', position); }, finish: function(position) { this.effects.each( function(effect) { effect.render(1.0); effect.cancel(); effect.event('beforeFinish'); if(effect.finish) effect.finish(position); effect.event('afterFinish'); }); } }); Effect.Event = Class.create(); Object.extend(Object.extend(Effect.Event.prototype, Effect.Base.prototype), { initialize: function() { var options = Object.extend({ duration: 0 }, arguments[0] || {}); this.start(options); }, update: Prototype.emptyFunction }); Effect.Opacity = Class.create(); Object.extend(Object.extend(Effect.Opacity.prototype, Effect.Base.prototype), { initialize: function(element) { this.element = $(element); if(!this.element) throw(Effect._elementDoesNotExistError); // make this work on IE on elements without 'layout' if(Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) this.element.setStyle({zoom: 1}); var options = Object.extend({ from: this.element.getOpacity() || 0.0, to: 1.0 }, arguments[1] || {}); this.start(options); }, update: function(position) { this.element.setOpacity(position); } }); Effect.Move = Class.create(); Object.extend(Object.extend(Effect.Move.prototype, Effect.Base.prototype), { initialize: function(element) { this.element = $(element); if(!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ x: 0, y: 0, mode: 'relative' }, arguments[1] || {}); this.start(options); }, setup: function() { // Bug in Opera: Opera returns the "real" position of a static element or // relative element that does not have top/left explicitly set. // ==> Always set top and left for position relative elements in your stylesheets // (to 0 if you do not need them) this.element.makePositioned(); this.originalLeft = parseFloat(this.element.getStyle('left') || '0'); this.originalTop = parseFloat(this.element.getStyle('top') || '0'); if(this.options.mode == 'absolute') { // absolute movement, so we need to calc deltaX and deltaY this.options.x = this.options.x - this.originalLeft; this.options.y = this.options.y - this.originalTop; } }, update: function(position) { this.element.setStyle({ left: Math.round(this.options.x * position + this.originalLeft) + 'px', top: Math.round(this.options.y * position + this.originalTop) + 'px' }); } }); // for backwards compatibility Effect.MoveBy = function(element, toTop, toLeft) { return new Effect.Move(element, Object.extend({ x: toLeft, y: toTop }, arguments[3] || {})); }; Effect.Scale = Class.create(); Object.extend(Object.extend(Effect.Scale.prototype, Effect.Base.prototype), { initialize: function(element, percent) { this.element = $(element); if(!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ scaleX: true, scaleY: true, scaleContent: true, scaleFromCenter: false, scaleMode: 'box', // 'box' or 'contents' or {} with provided values scaleFrom: 100.0, scaleTo: percent }, arguments[2] || {}); this.start(options); }, setup: function() { this.restoreAfterFinish = this.options.restoreAfterFinish || false; this.elementPositioning = this.element.getStyle('position'); this.originalStyle = {}; ['top','left','width','height','fontSize'].each( function(k) { this.originalStyle[k] = this.element.style[k]; }.bind(this)); this.originalTop = this.element.offsetTop; this.originalLeft = this.element.offsetLeft; var fontSize = this.element.getStyle('font-size') || '100%'; ['em','px','%','pt'].each( function(fontSizeType) { if(fontSize.indexOf(fontSizeType)>0) { this.fontSize = parseFloat(fontSize); this.fontSizeType = fontSizeType; } }.bind(this)); this.factor = (this.options.scaleTo - this.options.scaleFrom)/100; this.dims = null; if(this.options.scaleMode=='box') this.dims = [this.element.offsetHeight, this.element.offsetWidth]; if(/^content/.test(this.options.scaleMode)) this.dims = [this.element.scrollHeight, this.element.scrollWidth]; if(!this.dims) this.dims = [this.options.scaleMode.originalHeight, this.options.scaleMode.originalWidth]; }, update: function(position) { var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position); if(this.options.scaleContent && this.fontSize) this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType }); this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale); }, finish: function(position) { if(this.restoreAfterFinish) this.element.setStyle(this.originalStyle); }, setDimensions: function(height, width) { var d = {}; if(this.options.scaleX) d.width = Math.round(width) + 'px'; if(this.options.scaleY) d.height = Math.round(height) + 'px'; if(this.options.scaleFromCenter) { var topd = (height - this.dims[0])/2; var leftd = (width - this.dims[1])/2; if(this.elementPositioning == 'absolute') { if(this.options.scaleY) d.top = this.originalTop-topd + 'px'; if(this.options.scaleX) d.left = this.originalLeft-leftd + 'px'; } else { if(this.options.scaleY) d.top = -topd + 'px'; if(this.options.scaleX) d.left = -leftd + 'px'; } } this.element.setStyle(d); } }); Effect.Highlight = Class.create(); Object.extend(Object.extend(Effect.Highlight.prototype, Effect.Base.prototype), { initialize: function(element) { this.element = $(element); if(!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || {}); this.start(options); }, setup: function() { // Prevent executing on elements not in the layout flow if(this.element.getStyle('display')=='none') { this.cancel(); return; } // Disable background image during the effect this.oldStyle = {}; if (!this.options.keepBackgroundImage) { this.oldStyle.backgroundImage = this.element.getStyle('background-image'); this.element.setStyle({backgroundImage: 'none'}); } if(!this.options.endcolor) this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff'); if(!this.options.restorecolor) this.options.restorecolor = this.element.getStyle('background-color'); // init color calculations this._base = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this)); this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this)); }, update: function(position) { this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){ return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart()); }.bind(this)) }); }, finish: function() { this.element.setStyle(Object.extend(this.oldStyle, { backgroundColor: this.options.restorecolor })); } }); Effect.ScrollTo = Class.create(); Object.extend(Object.extend(Effect.ScrollTo.prototype, Effect.Base.prototype), { initialize: function(element) { this.element = $(element); this.start(arguments[1] || {}); }, setup: function() { Position.prepare(); var offsets = Position.cumulativeOffset(this.element); if(this.options.offset) offsets[1] += this.options.offset; var max = window.innerHeight ? window.height - window.innerHeight : document.body.scrollHeight - (document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight); this.scrollStart = Position.deltaY; this.delta = (offsets[1] > max ? max : offsets[1]) - this.scrollStart; }, update: function(position) { Position.prepare(); window.scrollTo(Position.deltaX, this.scrollStart + (position*this.delta)); } }); /* ------------- combination effects ------------- */ Effect.Fade = function(element) { element = $(element); var oldOpacity = element.getInlineOpacity(); var options = Object.extend({ from: element.getOpacity() || 1.0, to: 0.0, afterFinishInternal: function(effect) { if(effect.options.to!=0) return; effect.element.hide().setStyle({opacity: oldOpacity}); }}, arguments[1] || {}); return new Effect.Opacity(element,options); } Effect.Appear = function(element) { element = $(element); var options = Object.extend({ from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0), to: 1.0, // force Safari to render floated elements properly afterFinishInternal: function(effect) { effect.element.forceRerendering(); }, beforeSetup: function(effect) { effect.element.setOpacity(effect.options.from).show(); }}, arguments[1] || {}); return new Effect.Opacity(element,options); } Effect.Puff = function(element) { element = $(element); var oldStyle = { opacity: element.getInlineOpacity(), position: element.getStyle('position'), top: element.style.top, left: element.style.left, width: element.style.width, height: element.style.height }; return new Effect.Parallel( [ new Effect.Scale(element, 200, { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], Object.extend({ duration: 1.0, beforeSetupInternal: function(effect) { Position.absolutize(effect.effects[0].element) }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().setStyle(oldStyle); } }, arguments[1] || {}) ); } Effect.BlindUp = function(element) { element = $(element); element.makeClipping(); return new Effect.Scale(element, 0, Object.extend({ scaleContent: false, scaleX: false, restoreAfterFinish: true, afterFinishInternal: function(effect) { effect.element.hide().undoClipping(); } }, arguments[1] || {}) ); } Effect.BlindDown = function(element) { element = $(element); var elementDimensions = element.getDimensions(); return new Effect.Scale(element, 100, Object.extend({ scaleContent: false, scaleX: false, scaleFrom: 0, scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, restoreAfterFinish: true, afterSetup: function(effect) { effect.element.makeClipping().setStyle({height: '0px'}).show(); }, afterFinishInternal: function(effect) { effect.element.undoClipping(); } }, arguments[1] || {})); } Effect.SwitchOff = function(element) { element = $(element); var oldOpacity = element.getInlineOpacity(); return new Effect.Appear(element, Object.extend({ duration: 0.4, from: 0, transition: Effect.Transitions.flicker, afterFinishInternal: function(effect) { new Effect.Scale(effect.element, 1, { duration: 0.3, scaleFromCenter: true, scaleX: false, scaleContent: false, restoreAfterFinish: true, beforeSetup: function(effect) { effect.element.makePositioned().makeClipping(); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity}); } }) } }, arguments[1] || {})); } Effect.DropOut = function(element) { element = $(element); var oldStyle = { top: element.getStyle('top'), left: element.getStyle('left'), opacity: element.getInlineOpacity() }; return new Effect.Parallel( [ new Effect.Move(element, {x: 0, y: 100, sync: true }), new Effect.Opacity(element, { sync: true, to: 0.0 }) ], Object.extend( { duration: 0.5, beforeSetup: function(effect) { effect.effects[0].element.makePositioned(); }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle); } }, arguments[1] || {})); } Effect.Shake = function(element) { element = $(element); var oldStyle = { top: element.getStyle('top'), left: element.getStyle('left') }; return new Effect.Move(element, { x: 20, y: 0, duration: 0.05, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: -20, y: 0, duration: 0.05, afterFinishInternal: function(effect) { effect.element.undoPositioned().setStyle(oldStyle); }}) }}) }}) }}) }}) }}); } Effect.SlideDown = function(element) { element = $(element).cleanWhitespace(); // SlideDown need to have the content of the element wrapped in a container element with fixed height! var oldInnerBottom = element.down().getStyle('bottom'); var elementDimensions = element.getDimensions(); return new Effect.Scale(element, 100, Object.extend({ scaleContent: false, scaleX: false, scaleFrom: window.opera ? 0 : 1, scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, restoreAfterFinish: true, afterSetup: function(effect) { effect.element.makePositioned(); effect.element.down().makePositioned(); if(window.opera) effect.element.setStyle({top: ''}); effect.element.makeClipping().setStyle({height: '0px'}).show(); }, afterUpdateInternal: function(effect) { effect.element.down().setStyle({bottom: (effect.dims[0] - effect.element.clientHeight) + 'px' }); }, afterFinishInternal: function(effect) { effect.element.undoClipping().undoPositioned(); effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); } }, arguments[1] || {}) ); } Effect.SlideUp = function(element) { element = $(element).cleanWhitespace(); var oldInnerBottom = element.down().getStyle('bottom'); return new Effect.Scale(element, window.opera ? 0 : 1, Object.extend({ scaleContent: false, scaleX: false, scaleMode: 'box', scaleFrom: 100, restoreAfterFinish: true, beforeStartInternal: function(effect) { effect.element.makePositioned(); effect.element.down().makePositioned(); if(window.opera) effect.element.setStyle({top: ''}); effect.element.makeClipping().show(); }, afterUpdateInternal: function(effect) { effect.element.down().setStyle({bottom: (effect.dims[0] - effect.element.clientHeight) + 'px' }); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().undoPositioned().setStyle({bottom: oldInnerBottom}); effect.element.down().undoPositioned(); } }, arguments[1] || {}) ); } // Bug in opera makes the TD containing this element expand for a instance after finish Effect.Squish = function(element) { return new Effect.Scale(element, window.opera ? 1 : 0, { restoreAfterFinish: true, beforeSetup: function(effect) { effect.element.makeClipping(); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping(); } }); } Effect.Grow = function(element) { element = $(element); var options = Object.extend({ direction: 'center', moveTransition: Effect.Transitions.sinoidal, scaleTransition: Effect.Transitions.sinoidal, opacityTransition: Effect.Transitions.full }, arguments[1] || {}); var oldStyle = { top: element.style.top, left: element.style.left, height: element.style.height, width: element.style.width, opacity: element.getInlineOpacity() }; var dims = element.getDimensions(); var initialMoveX, initialMoveY; var moveX, moveY; switch (options.direction) { case 'top-left': initialMoveX = initialMoveY = moveX = moveY = 0; break; case 'top-right': initialMoveX = dims.width; initialMoveY = moveY = 0; moveX = -dims.width; break; case 'bottom-left': initialMoveX = moveX = 0; initialMoveY = dims.height; moveY = -dims.height; break; case 'bottom-right': initialMoveX = dims.width; initialMoveY = dims.height; moveX = -dims.width; moveY = -dims.height; break; case 'center': initialMoveX = dims.width / 2; initialMoveY = dims.height / 2; moveX = -dims.width / 2; moveY = -dims.height / 2; break; } return new Effect.Move(element, { x: initialMoveX, y: initialMoveY, duration: 0.01, beforeSetup: function(effect) { effect.element.hide().makeClipping().makePositioned(); }, afterFinishInternal: function(effect) { new Effect.Parallel( [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }), new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }), new Effect.Scale(effect.element, 100, { scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true}) ], Object.extend({ beforeSetup: function(effect) { effect.effects[0].element.setStyle({height: '0px'}).show(); }, afterFinishInternal: function(effect) { effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle); } }, options) ) } }); } Effect.Shrink = function(element) { element = $(element); var options = Object.extend({ direction: 'center', moveTransition: Effect.Transitions.sinoidal, scaleTransition: Effect.Transitions.sinoidal, opacityTransition: Effect.Transitions.none }, arguments[1] || {}); var oldStyle = { top: element.style.top, left: element.style.left, height: element.style.height, width: element.style.width, opacity: element.getInlineOpacity() }; var dims = element.getDimensions(); var moveX, moveY; switch (options.direction) { case 'top-left': moveX = moveY = 0; break; case 'top-right': moveX = dims.width; moveY = 0; break; case 'bottom-left': moveX = 0; moveY = dims.height; break; case 'bottom-right': moveX = dims.width; moveY = dims.height; break; case 'center': moveX = dims.width / 2; moveY = dims.height / 2; break; } return new Effect.Parallel( [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }), new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}), new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }) ], Object.extend({ beforeStartInternal: function(effect) { effect.effects[0].element.makePositioned().makeClipping(); }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); } }, options) ); } Effect.Pulsate = function(element) { element = $(element); var options = arguments[1] || {}; var oldOpacity = element.getInlineOpacity(); var transition = options.transition || Effect.Transitions.sinoidal; var reverser = function(pos){ return transition(1-Effect.Transitions.pulse(pos, options.pulses)) }; reverser.bind(transition); return new Effect.Opacity(element, Object.extend(Object.extend({ duration: 2.0, from: 0, afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); } }, options), {transition: reverser})); } Effect.Fold = function(element) { element = $(element); var oldStyle = { top: element.style.top, left: element.style.left, width: element.style.width, height: element.style.height }; element.makeClipping(); return new Effect.Scale(element, 5, Object.extend({ scaleContent: false, scaleX: false, afterFinishInternal: function(effect) { new Effect.Scale(element, 1, { scaleContent: false, scaleY: false, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().setStyle(oldStyle); } }); }}, arguments[1] || {})); }; Effect.Morph = Class.create(); Object.extend(Object.extend(Effect.Morph.prototype, Effect.Base.prototype), { initialize: function(element) { this.element = $(element); if(!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ style: {} }, arguments[1] || {}); if (typeof options.style == 'string') { if(options.style.indexOf(':') == -1) { var cssText = '', selector = '.' + options.style; $A(document.styleSheets).reverse().each(function(styleSheet) { if (styleSheet.cssRules) cssRules = styleSheet.cssRules; else if (styleSheet.rules) cssRules = styleSheet.rules; $A(cssRules).reverse().each(function(rule) { if (selector == rule.selectorText) { cssText = rule.style.cssText; throw $break; } }); if (cssText) throw $break; }); this.style = cssText.parseStyle(); options.afterFinishInternal = function(effect){ effect.element.addClassName(effect.options.style); effect.transforms.each(function(transform) { if(transform.style != 'opacity') effect.element.style[transform.style] = ''; }); } } else this.style = options.style.parseStyle(); } else this.style = $H(options.style) this.start(options); }, setup: function(){ function parseColor(color){ if(!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff'; color = color.parseColor(); return $R(0,2).map(function(i){ return parseInt( color.slice(i*2+1,i*2+3), 16 ) }); } this.transforms = this.style.map(function(pair){ var property = pair[0], value = pair[1], unit = null; if(value.parseColor('#zzzzzz') != '#zzzzzz') { value = value.parseColor(); unit = 'color'; } else if(property == 'opacity') { value = parseFloat(value); if(Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) this.element.setStyle({zoom: 1}); } else if(Element.CSS_LENGTH.test(value)) { var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/); value = parseFloat(components[1]); unit = (components.length == 3) ? components[2] : null; } var originalValue = this.element.getStyle(property); return { style: property.camelize(), originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0), targetValue: unit=='color' ? parseColor(value) : value, unit: unit }; }.bind(this)).reject(function(transform){ return ( (transform.originalValue == transform.targetValue) || ( transform.unit != 'color' && (isNaN(transform.originalValue) || isNaN(transform.targetValue)) ) ) }); }, update: function(position) { var style = {}, transform, i = this.transforms.length; while(i--) style[(transform = this.transforms[i]).style] = transform.unit=='color' ? '#'+ (Math.round(transform.originalValue[0]+ (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() + (Math.round(transform.originalValue[1]+ (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() + (Math.round(transform.originalValue[2]+ (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() : transform.originalValue + Math.round( ((transform.targetValue - transform.originalValue) * position) * 1000)/1000 + transform.unit; this.element.setStyle(style, true); } }); Effect.Transform = Class.create(); Object.extend(Effect.Transform.prototype, { initialize: function(tracks){ this.tracks = []; this.options = arguments[1] || {}; this.addTracks(tracks); }, addTracks: function(tracks){ tracks.each(function(track){ var data = $H(track).values().first(); this.tracks.push($H({ ids: $H(track).keys().first(), effect: Effect.Morph, options: { style: data } })); }.bind(this)); return this; }, play: function(){ return new Effect.Parallel( this.tracks.map(function(track){ var elements = [$(track.ids) || $$(track.ids)].flatten(); return elements.map(function(e){ return new track.effect(e, Object.extend({ sync:true }, track.options)) }); }).flatten(), this.options ); } }); Element.CSS_PROPERTIES = $w( 'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' + 'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' + 'borderRightColor borderRightStyle borderRightWidth borderSpacing ' + 'borderTopColor borderTopStyle borderTopWidth bottom clip color ' + 'fontSize fontWeight height left letterSpacing lineHeight ' + 'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+ 'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' + 'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' + 'right textIndent top width wordSpacing zIndex'); Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/; String.prototype.parseStyle = function(){ var element = document.createElement('div'); element.innerHTML = '<div style="' + this + '"></div>'; var style = element.childNodes[0].style, styleRules = $H(); Element.CSS_PROPERTIES.each(function(property){ if(style[property]) styleRules[property] = style[property]; }); if(Prototype.Browser.IE && this.indexOf('opacity') > -1) { styleRules.opacity = this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]; } return styleRules; }; Element.morph = function(element, style) { new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || {})); return element; }; ['getInlineOpacity','forceRerendering','setContentZoom', 'collectTextNodes','collectTextNodesIgnoreClass','morph'].each( function(f) { Element.Methods[f] = Element[f]; } ); Element.Methods.visualEffect = function(element, effect, options) { s = effect.dasherize().camelize(); effect_class = s.charAt(0).toUpperCase() + s.substring(1); new Effect[effect_class](element, options); return $(element); }; Element.addMethods(); /** * @author Ryan Johnson <ryan@livepipe.net> * @copyright 2007 LivePipe LLC * @package Object.Event * @license MIT * @url http://livepipe.net/projects/object_event/ * @version 1.0.0 */ Object.Event = { extend: function(object){ object._objectEventSetup = function(event_name){ this._observers = this._observers || {}; this._observers[event_name] = this._observers[event_name] || []; }; object.observe = function(event_name,observer){ if(typeof(event_name) == 'string' && typeof(observer) != 'undefined'){ this._objectEventSetup(event_name); if(!this._observers[event_name].include(observer)) this._observers[event_name].push(observer); }else for(var e in event_name) this.observe(e,event_name[e]); }; object.stopObserving = function(event_name,observer){ this._objectEventSetup(event_name); this._observers[event_name] = this._observers[event_name].without(observer); }; object.notify = function(event_name){ this._objectEventSetup(event_name); var collected_return_values = []; var args = $A(arguments).slice(1); try{ for(var i = 0; i < this._observers[event_name].length; ++i) collected_return_values.push(this._observers[event_name][i].apply(this._observers[event_name][i],args) || null); }catch(e){ if(e == $break) return false; else throw e; } return collected_return_values; }; if(object.prototype){ object.prototype._objectEventSetup = object._objectEventSetup; object.prototype.observe = object.observe; object.prototype.stopObserving = object.stopObserving; object.prototype.notify = function(event_name){ if(object.notify){ var args = $A(arguments).slice(1); args.unshift(this); args.unshift(event_name); object.notify.apply(object,args); } this._objectEventSetup(event_name); var args = $A(arguments).slice(1); var collected_return_values = []; try{ if(this.options && this.options[event_name] && typeof(this.options[event_name]) == 'function') collected_return_values.push(this.options[event_name].apply(this,args) || null); for(var i = 0; i < this._observers[event_name].length; ++i) collected_return_values.push(this._observers[event_name][i].apply(this._observers[event_name][i],args) || null); }catch(e){ if(e == $break) return false; else throw e; } return collected_return_values; };; } } }; /** * @author Ryan Johnson <ryan@livepipe.net> * @copyright 2007 LivePipe LLC * @package Control.Modal * @license MIT * @url http://livepipe.net/projects/control_modal/ * @version 2.2.3 */ if(typeof(Control) == "undefined") Control = {}; Control.Modal = Class.create(); Object.extend(Control.Modal,{ loaded: false, loading: false, loadingTimeout: false, overlay: false, container: false, current: false, ie: false, effects: { containerFade: false, containerAppear: false, overlayFade: false, overlayAppear: false }, targetRegexp: /#(.+)$/, imgRegexp: /\.(jpe?g|gif|png|tiff?)$/i, overlayStyles: { position: 'absolute',// change indoo sql grid for ff, original value fixed top: 0, left: 0, width: '100%', height: '1000%', zIndex: 9998 }, overlayIEStyles: { position: 'absolute', top: 0, left: 0, zIndex: 9998 }, disableHoverClose: false, load: function(){ if(!Control.Modal.loaded){ Control.Modal.loaded = true; Control.Modal.ie = !(typeof document.body.style.maxHeight != 'undefined'); Control.Modal.overlay = $(document.createElement('div')); Control.Modal.overlay.id = 'modal_overlay'; Object.extend(Control.Modal.overlay.style,Control.Modal['overlay' + (Control.Modal.ie ? 'IE' : '') + 'Styles']); Control.Modal.overlay.hide(); Control.Modal.container = $(document.createElement('div')); Control.Modal.container.id = 'modal_container'; Control.Modal.container.hide(); Control.Modal.loading = $(document.createElement('div')); Control.Modal.loading.id = 'modal_loading'; Control.Modal.loading.hide(); var body_tag = document.getElementsByTagName('body')[0]; body_tag.appendChild(Control.Modal.overlay); body_tag.appendChild(Control.Modal.container); body_tag.appendChild(Control.Modal.loading); Control.Modal.container.observe('mouseout',function(event){ if(!Control.Modal.disableHoverClose && Control.Modal.current && Control.Modal.current.options.hover && !Position.within(Control.Modal.container,Event.pointerX(event),Event.pointerY(event))) Control.Modal.close(); }); } }, open: function(contents,options){ options = options || {}; if(!options.contents) options.contents = contents; var modal_instance = new Control.Modal(false,options); modal_instance.open(); return modal_instance; }, close: function(force){ if(typeof(force) != 'boolean') force = false; if(Control.Modal.current) Control.Modal.current.close(force); }, attachEvents: function(){ Event.observe(window,'load',Control.Modal.load); Event.observe(window,'unload',Event.unloadCache,false); }, center: function(element){ if(!element._absolutized){ element.setStyle({ position: 'absolute' }); element._absolutized = true; } var dimensions = element.getDimensions(); Position.prepare(); var offset_left = (Position.deltaX + Math.floor((Control.Modal.getWindowWidth() - dimensions.width) / 2)); var offset_top = (Position.deltaY + ((Control.Modal.getWindowHeight() > dimensions.height) ? Math.floor((Control.Modal.getWindowHeight() - dimensions.height) / 2) : 0)); element.setStyle({ top: ((dimensions.height <= Control.Modal.getDocumentHeight()) ? ((offset_top != null && offset_top > 0) ? offset_top : '0') + 'px' : 0), left: ((dimensions.width <= Control.Modal.getDocumentWidth()) ? ((offset_left != null && offset_left > 0) ? offset_left : '0') + 'px' : 0) }); }, getWindowWidth: function(){ return (self.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || 0); }, getWindowHeight: function(){ return (self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0); }, getDocumentWidth: function(){ return Math.min(document.body.scrollWidth,Control.Modal.getWindowWidth()); }, getDocumentHeight: function(){ return Math.max(document.body.scrollHeight,Control.Modal.getWindowHeight()); }, onKeyDown: function(event){ if(event.keyCode == Event.KEY_ESC) Control.Modal.close(); } }); Object.extend(Control.Modal.prototype,{ mode: '', html: false, href: '', element: false, src: false, imageLoaded: false, ajaxRequest: false, initialize: function(element,options){ this.element = $(element); this.options = { beforeOpen: Prototype.emptyFunction, afterOpen: Prototype.emptyFunction, beforeClose: Prototype.emptyFunction, afterClose: Prototype.emptyFunction, onSuccess: Prototype.emptyFunction, onFailure: Prototype.emptyFunction, onException: Prototype.emptyFunction, beforeImageLoad: Prototype.emptyFunction, afterImageLoad: Prototype.emptyFunction, autoOpenIfLinked: true, contents: false, loading: false, //display loading indicator fade: false, fadeDuration: 0.75, image: false, imageCloseOnClick: true, hover: false, iframe: false, iframeTemplate: new Template('<iframe src="#{href}" width="100%" height="100%" frameborder="0" id="#{id}"></iframe>'), evalScripts: true, //for Ajax, define here instead of in requestOptions requestOptions: {}, //for Ajax.Request overlayDisplay: true, overlayClassName: '', overlayCloseOnClick: true, containerClassName: '', opacity: 0.3, zIndex: 9998, width: null, height: null, offsetLeft: 0, //for use with 'relative' offsetTop: 0, //for use with 'relative' position: 'absolute' //'absolute' or 'relative' }; Object.extend(this.options,options || {}); var target_match = false; var image_match = false; if(this.element){ target_match = Control.Modal.targetRegexp.exec(this.element.href); image_match = Control.Modal.imgRegexp.exec(this.element.href); } if(this.options.position == 'mouse') this.options.hover = true; if(this.options.contents){ this.mode = 'contents'; }else if(this.options.image || image_match){ this.mode = 'image'; this.src = this.element.href; }else if(target_match){ this.mode = 'named'; var x = $(target_match[1]); this.html = x.innerHTML; x.remove(); this.href = target_match[1]; }else{ this.mode = (this.options.iframe) ? 'iframe' : 'ajax'; this.href = this.element.href; } if(this.element){ if(this.options.hover){ this.element.observe('mouseover',this.open.bind(this)); this.element.observe('mouseout',function(event){ if(!Position.within(Control.Modal.container,Event.pointerX(event),Event.pointerY(event))) this.close(); }.bindAsEventListener(this)); }else{ this.element.onclick = function(event){ this.open(); Event.stop(event); return false; }.bindAsEventListener(this); } } var targets = Control.Modal.targetRegexp.exec(window.location); this.position = function(event){ if(this.options.position == 'absolute') Control.Modal.center(Control.Modal.container); else{ var xy = (event && this.options.position == 'mouse' ? [Event.pointerX(event),Event.pointerY(event)] : Position.cumulativeOffset(this.element)); Control.Modal.container.setStyle({ position: 'absolute', top: xy[1] + (typeof(this.options.offsetTop) == 'function' ? this.options.offsetTop() : this.options.offsetTop) + 'px', left: xy[0] + (typeof(this.options.offsetLeft) == 'function' ? this.options.offsetLeft() : this.options.offsetLeft) + 'px' }); } if(Control.Modal.ie){ Control.Modal.overlay.setStyle({ height: Control.Modal.getDocumentHeight() + 'px', width: Control.Modal.getDocumentWidth() + 'px' }); } }.bind(this); if(this.mode == 'named' && this.options.autoOpenIfLinked && targets && targets[1] && targets[1] == this.href) this.open(); }, showLoadingIndicator: function(){ if(this.options.loading){ Control.Modal.loadingTimeout = window.setTimeout(function(){ var modal_image = $('modal_image'); if(modal_image) modal_image.hide(); Control.Modal.loading.style.zIndex = this.options.zIndex + 1; Control.Modal.loading.update('<img id="modal_loading" src="' + this.options.loading + '"/>'); Control.Modal.loading.show(); Control.Modal.center(Control.Modal.loading); }.bind(this),250); } }, hideLoadingIndicator: function(){ if(this.options.loading){ if(Control.Modal.loadingTimeout) window.clearTimeout(Control.Modal.loadingTimeout); var modal_image = $('modal_image'); if(modal_image) modal_image.show(); Control.Modal.loading.hide(); } }, open: function(force){ if(!force && this.notify('beforeOpen') === false) return; if(!Control.Modal.loaded) Control.Modal.load(); Control.Modal.close(); if(!this.options.hover) Event.observe($(document.getElementsByTagName('body')[0]),'keydown',Control.Modal.onKeyDown); Control.Modal.current = this; if(!this.options.hover) Control.Modal.overlay.setStyle({ zIndex: this.options.zIndex, opacity: this.options.opacity }); Control.Modal.container.setStyle({ zIndex: this.options.zIndex + 1, width: (this.options.width ? (typeof(this.options.width) == 'function' ? this.options.width() : this.options.width) + 'px' : null), height: (this.options.height ? (typeof(this.options.height) == 'function' ? this.options.height() : this.options.height) + 'px' : null) }); if(Control.Modal.ie && !this.options.hover){ $A(document.getElementsByTagName('select')).each(function(select){ select.style.visibility = 'hidden'; }); } Control.Modal.overlay.addClassName(this.options.overlayClassName); Control.Modal.container.addClassName(this.options.containerClassName); switch(this.mode){ case 'image': this.imageLoaded = false; this.notify('beforeImageLoad'); this.showLoadingIndicator(); var img = document.createElement('img'); img.onload = function(img){ this.hideLoadingIndicator(); this.update([img]); if(this.options.imageCloseOnClick) $(img).observe('click',Control.Modal.close); this.position(); this.notify('afterImageLoad'); img.onload = null; }.bind(this,img); img.src = this.src; img.id = 'modal_image'; break; case 'ajax': this.notify('beforeLoad'); var options = { method: 'post', onSuccess: function(request){ this.hideLoadingIndicator(); this.update(request.responseText); this.notify('onSuccess',request); this.ajaxRequest = false; }.bind(this), onFailure: function(){ this.notify('onFailure'); }.bind(this), onException: function(){ this.notify('onException'); }.bind(this) }; Object.extend(options,this.options.requestOptions); this.showLoadingIndicator(); this.ajaxRequest = new Ajax.Request(this.href,options); break; case 'iframe': this.update(this.options.iframeTemplate.evaluate({href: this.href, id: 'modal_iframe'})); break; case 'contents': this.update((typeof(this.options.contents) == 'function' ? this.options.contents() : this.options.contents)); break; case 'named': this.update(this.html); break; } if(!this.options.hover){ if(this.options.overlayCloseOnClick && this.options.overlayDisplay) Control.Modal.overlay.observe('click',Control.Modal.close); if(this.options.overlayDisplay){ if(this.options.fade){ if(Control.Modal.effects.overlayFade) Control.Modal.effects.overlayFade.cancel(); Control.Modal.effects.overlayAppear = new Effect.Appear(Control.Modal.overlay,{ queue: { position: 'front', scope: 'Control.Modal' }, to: this.options.opacity, duration: this.options.fadeDuration / 2 }); }else Control.Modal.overlay.show(); } } if(this.options.position == 'mouse'){ this.mouseHoverListener = this.position.bindAsEventListener(this); this.element.observe('mousemove',this.mouseHoverListener); } this.notify('afterOpen'); }, update: function(html){ if(typeof(html) == 'string') Control.Modal.container.update(html); else{ Control.Modal.container.update(''); (html.each) ? html.each(function(node){ Control.Modal.container.appendChild(node); }) : Control.Modal.container.appendChild(node); } if(this.options.fade){ if(Control.Modal.effects.containerFade) Control.Modal.effects.containerFade.cancel(); Control.Modal.effects.containerAppear = new Effect.Appear(Control.Modal.container,{ queue: { position: 'end', scope: 'Control.Modal' }, to: 1, duration: this.options.fadeDuration / 2 }); }else Control.Modal.container.show(); this.position(); Event.observe(window,'resize',this.position,false); Event.observe(window,'scroll',this.position,false); }, close: function(force){ if(!force && this.notify('beforeClose') === false) return; if(this.ajaxRequest) this.ajaxRequest.transport.abort(); this.hideLoadingIndicator(); if(this.mode == 'image'){ var modal_image = $('modal_image'); if(this.options.imageCloseOnClick && modal_image) modal_image.stopObserving('click',Control.Modal.close); } if(Control.Modal.ie && !this.options.hover){ $A(document.getElementsByTagName('select')).each(function(select){ select.style.visibility = 'visible'; }); } if(!this.options.hover) Event.stopObserving(window,'keyup',Control.Modal.onKeyDown); Control.Modal.current = false; Event.stopObserving(window,'resize',this.position,false); Event.stopObserving(window,'scroll',this.position,false); if(!this.options.hover){ if(this.options.overlayCloseOnClick && this.options.overlayDisplay) Control.Modal.overlay.stopObserving('click',Control.Modal.close); if(this.options.overlayDisplay){ if(this.options.fade){ if(Control.Modal.effects.overlayAppear) Control.Modal.effects.overlayAppear.cancel(); Control.Modal.effects.overlayFade = new Effect.Fade(Control.Modal.overlay,{ queue: { position: 'end', scope: 'Control.Modal' }, from: this.options.opacity, to: 0, duration: this.options.fadeDuration / 2 }); }else Control.Modal.overlay.hide(); } } if(this.options.fade){ if(Control.Modal.effects.containerAppear) Control.Modal.effects.containerAppear.cancel(); Control.Modal.effects.containerFade = new Effect.Fade(Control.Modal.container,{ queue: { position: 'front', scope: 'Control.Modal' }, from: 1, to: 0, duration: this.options.fadeDuration / 2, afterFinish: function(){ Control.Modal.container.update(''); this.resetClassNameAndStyles(); }.bind(this) }); }else{ //Control.Modal.container.hide(); Control.Modal.container.update(''); this.resetClassNameAndStyles(); } if(this.options.position == 'mouse') this.element.stopObserving('mousemove',this.mouseHoverListener); this.notify('afterClose'); }, resetClassNameAndStyles: function(){ Control.Modal.overlay.removeClassName(this.options.overlayClassName); Control.Modal.container.removeClassName(this.options.containerClassName); Control.Modal.container.setStyle({ height: null, width: null, top: null, left: null }); }, notify: function(event_name){ try{ if(this.options[event_name]) return [this.options[event_name].apply(this.options[event_name],$A(arguments).slice(1))]; }catch(e){ if(e != $break) throw e; else return false; } } }); if(typeof(Object.Event) != 'undefined') Object.Event.extend(Control.Modal); Control.Modal.attachEvents(); </script> <script> function Indoo_template_0107_f(el_id, link){ return '<table class="boxIndoo_template_0107" ><tr>' + '<td class="boxIndoo_template_01073"><a href="javascript:Indoo_template_0107_getOther(\'' + el_id + '\',-1)">Previous</a>&nbsp;&nbsp;' + '<a href="javascript:Indoo_template_0107_getOther(\'' + el_id + '\',+1)">Next</a></td>' + '<td class="boxIndoo_template_01072"><a href="#" onclick="Control.Modal.close()">Close</a></td>' + '</tr><tr><td class="boxIndoo_template_01073" colspan="2"><center><br /><strong>' + document.getElementById(el_id+'y').innerHTML + '</strong><br /></center></td>' + '</tr><tr><td class="boxIndoo_template_01071" colspan="2"><center>' + link + '</center></td></tr><tr>' + '<td class="boxIndoo_template_01073" colspan="2"><br />' + document.getElementById(el_id+'x').innerHTML + '<br /><br /></td></tr><tr>' + '<td class="boxIndoo_template_01073"><a href="#" onclick="Control.Modal.close()">Close</a></td>' + '<td class="boxIndoo_template_01072"><a href="javascript:Indoo_template_0107_getOther(\'' + el_id + '\',-1)">Previous</a>&nbsp;&nbsp;' + '<a href="javascript:Indoo_template_0107_getOther(\'' + el_id + '\',+1)">Next</a></td>' + '</tr></table>' } function funcIndoo_template_0107a__(imgId,text){ vid=text.substring(text.indexOf('http://www.youtube.com/v/')+25,text.indexOf('&')) document.getElementById(imgId).src="http://img.youtube.com/vi/" + vid + "/default.jpg" } function func_indoo_template_0107_pr1(el){ el.previousSibling.style.display='none'; pn=el.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode; pn.style.visibility ='hidden'; el.style.width=''; el.style.height=''; window.scrollBy(0,1); window.scrollBy(0,-1); pn.style.visibility ='visible'; } function func_indoo_template_0107_pr2(el){ el.previousSibling.style.display='none'; el.width='1px'; el.height='1px' } </script> startupScriptBlock onSubmitScriptBlock sqlOnInsertRecord sqlOnUpdateRecord sqlOnViewModule sqlOnViewRecord addcreatestatement createKeyColumn gridViewColumn.0.Visible on gridViewColumn.0.allowExport gridViewColumn.0.allowEdit gridViewColumn.0.allowFilter 1 gridViewColumn.0.allowSort on gridViewColumn.0.allowImport gridViewColumn.0.columnName Title_1 gridViewColumn.0.caption Title gridViewColumn.0.width gridViewColumn.0.defaultContent gridViewColumn.0.formatData gridViewColumn.0.importDefault gridViewColumn.0.filterAdditionalColumn Title_2,Title_3,Title_4 gridViewColumn.0.defaultSortColumn gridViewColumn.0.isBoolean gridViewColumn.0.isLink gridViewColumn.0.isOther 2 gridViewColumn.0.isBinary on gridViewColumn.0.isJoin gridViewColumn.0.isHtmlAttributes gridViewColumn.1.Visible on gridViewColumn.1.allowExport gridViewColumn.1.allowEdit gridViewColumn.1.allowFilter 0 gridViewColumn.1.allowSort on gridViewColumn.1.allowImport gridViewColumn.1.columnName Title_2 gridViewColumn.1.caption gridViewColumn.1.width gridViewColumn.1.defaultContent gridViewColumn.1.formatData gridViewColumn.1.importDefault gridViewColumn.1.filterAdditionalColumn gridViewColumn.1.defaultSortColumn gridViewColumn.1.isBoolean gridViewColumn.1.isLink gridViewColumn.1.isOther 2 gridViewColumn.1.isBinary on gridViewColumn.1.isJoin gridViewColumn.1.isHtmlAttributes gridViewColumn.1.binaryData.columnName FileContent_2 gridViewColumn.1.binaryData.showType 1 gridViewColumn.1.binaryData.FilenameSource 2 gridViewColumn.1.binaryData.mimeTypeSource 2 gridviewcolumn.1.binarydata.isforcedownload gridViewColumn.1.binaryData.allowExport gridViewColumn.1.binaryData.allowImport gridViewColumn.1.binaryData.target _blank gridViewColumn.1.binaryData.mimeTypeColumnName FileFileMimeType_2 gridViewColumn.1.binaryData.Filename gridViewColumn.1.binaryData.defaultImageUrl gridViewColumn.0.binaryData.columnName FileContent_1 gridViewColumn.0.binaryData.showType 1 gridViewColumn.0.binaryData.FilenameSource 2 gridViewColumn.0.binaryData.mimeTypeSource 2 gridviewcolumn.0.binarydata.isforcedownload gridViewColumn.0.binaryData.allowExport gridViewColumn.0.binaryData.allowImport gridViewColumn.0.binaryData.target _blank gridViewColumn.0.binaryData.mimeTypeColumnName FileFileMimeType_1 gridViewColumn.0.binaryData.Filename gridViewColumn.0.binaryData.defaultImageUrl gridViewColumn.2.Visible on gridViewColumn.2.allowExport gridViewColumn.2.allowEdit gridViewColumn.2.allowFilter 0 gridViewColumn.2.allowSort on gridViewColumn.2.allowImport gridViewColumn.2.columnName Title_3 gridViewColumn.2.caption gridViewColumn.2.width gridViewColumn.2.defaultContent gridViewColumn.2.formatData gridViewColumn.2.importDefault gridViewColumn.2.filterAdditionalColumn gridViewColumn.2.defaultSortColumn gridViewColumn.2.isBoolean gridViewColumn.2.isLink gridViewColumn.2.isOther 2 gridViewColumn.2.isBinary on gridViewColumn.2.isJoin gridViewColumn.2.isHtmlAttributes gridViewColumn.2.binaryData.columnName FileContent_3 gridViewColumn.2.binaryData.showType 1 gridViewColumn.2.binaryData.FilenameSource 2 gridViewColumn.2.binaryData.mimeTypeSource 2 gridviewcolumn.2.binarydata.isforcedownload gridViewColumn.2.binaryData.allowExport gridViewColumn.2.binaryData.allowImport gridViewColumn.2.binaryData.target _blank gridViewColumn.2.binaryData.mimeTypeColumnName FileFileMimeType_3 gridViewColumn.2.binaryData.Filename gridViewColumn.2.binaryData.defaultImageUrl gridViewColumn.3.Visible on gridViewColumn.3.allowExport gridViewColumn.3.allowEdit gridViewColumn.3.allowFilter 0 gridViewColumn.3.allowSort on gridViewColumn.3.allowImport gridViewColumn.3.columnName Title_4 gridViewColumn.3.caption gridViewColumn.3.width gridViewColumn.3.defaultContent gridViewColumn.3.formatData gridViewColumn.3.importDefault gridViewColumn.3.filterAdditionalColumn gridViewColumn.3.defaultSortColumn gridViewColumn.3.isBoolean gridViewColumn.3.isLink gridViewColumn.3.isOther 2 gridViewColumn.3.isBinary on gridViewColumn.3.isJoin gridViewColumn.3.isHtmlAttributes gridViewColumn.3.binaryData.columnName FileContent_4 gridViewColumn.3.binaryData.showType 1 gridViewColumn.3.binaryData.FilenameSource 2 gridViewColumn.3.binaryData.mimeTypeSource 2 gridviewcolumn.3.binarydata.isforcedownload gridViewColumn.3.binaryData.allowExport gridViewColumn.3.binaryData.allowImport gridViewColumn.3.binaryData.target _blank gridViewColumn.3.binaryData.thumbnailWidth gridViewColumn.3.binaryData.thumbnailHeight gridViewColumn.3.binaryData.mimeTypeColumnName FileFileMimeType_3 gridViewColumn.3.binaryData.Filename gridViewColumn.3.binaryData.defaultImageUrl gridViewColumn.0.binaryData.thumbnailWidth gridViewColumn.0.binaryData.thumbnailHeight gridViewColumn.1.binaryData.thumbnailWidth gridViewColumn.1.binaryData.thumbnailHeight gridViewColumn.2.binaryData.thumbnailWidth gridViewColumn.2.binaryData.thumbnailHeight sqlOnUpdateFinishRecord gridViewColumn.0.binaryData.mimeType gridViewColumn.0.binaryData.isBinaryIdFromColumn on gridViewColumn.0.binaryData.binaryIdFromColumn ID_1 gridViewColumn.4.Visible gridViewColumn.4.allowExport gridViewColumn.4.allowEdit gridViewColumn.4.allowFilter 0 gridViewColumn.4.allowSort gridViewColumn.4.allowImport gridViewColumn.4.columnName ID_1 gridViewColumn.4.caption gridViewColumn.4.width gridViewColumn.4.defaultContent gridViewColumn.4.formatData gridViewColumn.4.importDefault gridViewColumn.4.filterAdditionalColumn gridViewColumn.4.defaultSortColumn gridViewColumn.4.isBoolean gridViewColumn.4.isLink gridViewColumn.4.isOther 0 gridViewColumn.4.isBinary gridViewColumn.4.isJoin gridViewColumn.4.isHtmlAttributes gridViewColumn.5.Visible gridViewColumn.5.allowExport gridViewColumn.5.allowEdit gridViewColumn.5.allowFilter 0 gridViewColumn.5.allowSort gridViewColumn.5.allowImport gridViewColumn.5.columnName ID_2 gridViewColumn.5.caption gridViewColumn.5.width gridViewColumn.5.defaultContent gridViewColumn.5.formatData gridViewColumn.5.importDefault gridViewColumn.5.filterAdditionalColumn gridViewColumn.5.defaultSortColumn gridViewColumn.5.isBoolean gridViewColumn.5.isLink gridViewColumn.5.isOther 0 gridViewColumn.5.isBinary gridViewColumn.5.isJoin gridViewColumn.5.isHtmlAttributes gridViewColumn.6.Visible gridViewColumn.6.allowExport gridViewColumn.6.allowEdit gridViewColumn.6.allowFilter 0 gridViewColumn.6.allowSort gridViewColumn.6.allowImport gridViewColumn.6.columnName ID_3 gridViewColumn.6.caption gridViewColumn.6.width gridViewColumn.6.defaultContent gridViewColumn.6.formatData gridViewColumn.6.importDefault gridViewColumn.6.filterAdditionalColumn gridViewColumn.6.defaultSortColumn gridViewColumn.6.isBoolean gridViewColumn.6.isLink gridViewColumn.6.isOther 0 gridViewColumn.6.isBinary gridViewColumn.6.isJoin gridViewColumn.6.isHtmlAttributes gridViewColumn.7.Visible gridViewColumn.7.allowExport gridViewColumn.7.allowEdit gridViewColumn.7.allowFilter 0 gridViewColumn.7.allowSort gridViewColumn.7.allowImport gridViewColumn.7.columnName ID_4 gridViewColumn.7.caption gridViewColumn.7.width gridViewColumn.7.defaultContent gridViewColumn.7.formatData gridViewColumn.7.importDefault gridViewColumn.7.filterAdditionalColumn gridViewColumn.7.defaultSortColumn gridViewColumn.7.isBoolean gridViewColumn.7.isLink gridViewColumn.7.isOther 0 gridViewColumn.7.isBinary gridViewColumn.7.isJoin gridViewColumn.7.isHtmlAttributes gridViewColumn.1.binaryData.isBinaryIdFromColumn on gridViewColumn.1.binaryData.binaryIdFromColumn ID_2 gridViewColumn.2.binaryData.isBinaryIdFromColumn on gridViewColumn.2.binaryData.binaryIdFromColumn ID_3 gridViewColumn.3.binaryData.isBinaryIdFromColumn on gridViewColumn.3.binaryData.binaryIdFromColumn ID_4 gridViewColumn.8.columnName FileDate_2 gridViewColumn.8.Visible gridViewColumn.8.allowExport gridViewColumn.8.allowEdit gridViewColumn.8.allowFilter 0 gridViewColumn.8.allowSort gridViewColumn.8.allowImport gridViewColumn.8.isOther 0 gridViewColumn.9.columnName UserID_2 gridViewColumn.9.Visible gridViewColumn.9.allowExport gridViewColumn.9.allowEdit gridViewColumn.9.allowFilter 0 gridViewColumn.9.allowSort gridViewColumn.9.allowImport gridViewColumn.9.isOther 0 gridViewColumn.10.columnName FileName_2 gridViewColumn.10.Visible gridViewColumn.10.allowExport gridViewColumn.10.allowEdit gridViewColumn.10.allowFilter 0 gridViewColumn.10.allowSort gridViewColumn.10.allowImport gridViewColumn.10.isOther 0 gridViewColumn.11.columnName FileSize_2 gridViewColumn.11.Visible gridViewColumn.11.allowExport gridViewColumn.11.allowEdit gridViewColumn.11.allowFilter 0 gridViewColumn.11.allowSort gridViewColumn.11.allowImport gridViewColumn.11.isOther 0 gridViewColumn.12.columnName FileDescription_2 gridViewColumn.12.Visible gridViewColumn.12.allowExport gridViewColumn.12.allowEdit gridViewColumn.12.allowFilter 0 gridViewColumn.12.allowSort gridViewColumn.12.allowImport gridViewColumn.12.isOther 0 gridViewColumn.13.columnName FileDate_1 gridViewColumn.13.Visible gridViewColumn.13.allowExport gridViewColumn.13.allowEdit gridViewColumn.13.allowFilter 1 gridViewColumn.13.allowSort gridViewColumn.13.allowImport gridViewColumn.13.isOther 0 gridViewColumn.14.columnName UserID_1 gridViewColumn.14.Visible gridViewColumn.14.allowExport gridViewColumn.14.allowEdit gridViewColumn.14.allowFilter 1 gridViewColumn.14.allowSort gridViewColumn.14.allowImport gridViewColumn.14.isOther 0 gridViewColumn.15.columnName FileName_1 gridViewColumn.15.Visible gridViewColumn.15.allowExport gridViewColumn.15.allowEdit gridViewColumn.15.allowFilter 1 gridViewColumn.15.allowSort gridViewColumn.15.allowImport gridViewColumn.15.isOther 0 gridViewColumn.16.columnName FileSize_1 gridViewColumn.16.Visible gridViewColumn.16.allowExport gridViewColumn.16.allowEdit gridViewColumn.16.allowFilter 1 gridViewColumn.16.allowSort gridViewColumn.16.allowImport gridViewColumn.16.isOther 0 gridViewColumn.17.columnName FileDescription_1 gridViewColumn.17.Visible gridViewColumn.17.allowExport gridViewColumn.17.allowEdit gridViewColumn.17.allowFilter 1 gridViewColumn.17.allowSort gridViewColumn.17.allowImport gridViewColumn.17.isOther 0 gridViewColumn.18.columnName FileDate_3 gridViewColumn.18.Visible gridViewColumn.18.allowExport gridViewColumn.18.allowEdit gridViewColumn.18.allowFilter 0 gridViewColumn.18.allowSort gridViewColumn.18.allowImport gridViewColumn.18.isOther 0 gridViewColumn.19.columnName UserID_3 gridViewColumn.19.Visible gridViewColumn.19.allowExport gridViewColumn.19.allowEdit gridViewColumn.19.allowFilter 0 gridViewColumn.19.allowSort gridViewColumn.19.allowImport gridViewColumn.19.isOther 0 gridViewColumn.20.columnName FileName_3 gridViewColumn.20.Visible gridViewColumn.20.allowExport gridViewColumn.20.allowEdit gridViewColumn.20.allowFilter 0 gridViewColumn.20.allowSort gridViewColumn.20.allowImport gridViewColumn.20.isOther 0 gridViewColumn.21.columnName FileSize_3 gridViewColumn.21.Visible gridViewColumn.21.allowExport gridViewColumn.21.allowEdit gridViewColumn.21.allowFilter 0 gridViewColumn.21.allowSort gridViewColumn.21.allowImport gridViewColumn.21.isOther 0 gridViewColumn.22.columnName FileDescription_3 gridViewColumn.22.Visible gridViewColumn.22.allowExport gridViewColumn.22.allowEdit gridViewColumn.22.allowFilter 0 gridViewColumn.22.allowSort gridViewColumn.22.allowImport gridViewColumn.22.isOther 0 gridViewColumn.23.columnName UserID_4 gridViewColumn.23.Visible gridViewColumn.23.allowExport gridViewColumn.23.allowEdit gridViewColumn.23.allowFilter 0 gridViewColumn.23.allowSort gridViewColumn.23.allowImport gridViewColumn.23.isOther 0 gridViewColumn.24.columnName FileName_4 gridViewColumn.24.Visible gridViewColumn.24.allowExport gridViewColumn.24.allowEdit gridViewColumn.24.allowFilter 0 gridViewColumn.24.allowSort gridViewColumn.24.allowImport gridViewColumn.24.isOther 0 gridViewColumn.25.columnName FileSize_4 gridViewColumn.25.Visible gridViewColumn.25.allowExport gridViewColumn.25.allowEdit gridViewColumn.25.allowFilter 0 gridViewColumn.25.allowSort gridViewColumn.25.allowImport gridViewColumn.25.isOther 0 gridViewColumn.26.columnName FileDescription_4 gridViewColumn.26.Visible gridViewColumn.26.allowExport gridViewColumn.26.allowEdit gridViewColumn.26.allowFilter 0 gridViewColumn.26.allowSort gridViewColumn.26.allowImport gridViewColumn.26.isOther 0 gridViewColumn.27.columnName FileDate_4 gridViewColumn.27.Visible gridViewColumn.27.allowExport gridViewColumn.27.allowEdit gridViewColumn.27.allowFilter 0 gridViewColumn.27.allowSort gridViewColumn.27.allowImport gridViewColumn.27.isOther 0 gridViewColumn.8.caption gridViewColumn.9.caption gridViewColumn.10.caption gridViewColumn.11.caption gridViewColumn.12.caption gridViewColumn.13.caption Date gridViewColumn.14.caption Username gridViewColumn.15.caption File name gridViewColumn.16.caption File size gridViewColumn.17.caption Description gridViewColumn.18.caption gridViewColumn.19.caption gridViewColumn.20.caption gridViewColumn.21.caption gridViewColumn.22.caption gridViewColumn.23.caption gridViewColumn.24.caption gridViewColumn.25.caption gridViewColumn.26.caption gridViewColumn.27.caption gridViewColumn.9.width gridViewColumn.9.defaultContent gridViewColumn.9.formatData gridViewColumn.9.importDefault gridViewColumn.9.filterAdditionalColumn gridViewColumn.9.defaultSortColumn gridViewColumn.9.isBoolean gridViewColumn.9.isLink gridViewColumn.9.isBinary gridViewColumn.9.isJoin on gridViewColumn.9.isHtmlAttributes gridViewColumn.9.navigateUrlTarget _blank gridViewColumn.9.joinTableName Users gridViewColumn.9.joinTableIdColumnName UserID gridViewColumn.9.joinTableColumnName Username gridViewColumn.13.width gridViewColumn.13.defaultContent gridViewColumn.13.formatData gridViewColumn.13.importDefault gridViewColumn.13.filterAdditionalColumn FileDate_2,FileDate_3,FileDate_4 gridViewColumn.13.defaultSortColumn gridViewColumn.13.isBoolean gridViewColumn.13.isLink gridViewColumn.13.isBinary gridViewColumn.13.isJoin gridViewColumn.13.isHtmlAttributes gridViewColumn.14.width gridViewColumn.14.defaultContent gridViewColumn.14.formatData gridViewColumn.14.importDefault gridViewColumn.14.filterAdditionalColumn UserID_2,UserID_3,UserID_4 gridViewColumn.14.defaultSortColumn gridViewColumn.14.isBoolean gridViewColumn.14.isLink gridViewColumn.14.isBinary gridViewColumn.14.isJoin on gridViewColumn.14.isHtmlAttributes gridViewColumn.15.width gridViewColumn.15.defaultContent gridViewColumn.15.formatData gridViewColumn.15.importDefault gridViewColumn.15.filterAdditionalColumn FileName_2;FileName_3,FileName_4 gridViewColumn.15.defaultSortColumn gridViewColumn.15.isBoolean gridViewColumn.15.isLink gridViewColumn.15.isBinary gridViewColumn.15.isJoin gridViewColumn.15.isHtmlAttributes gridViewColumn.14.navigateUrlTarget _blank gridViewColumn.14.joinTableName Users gridViewColumn.14.joinTableIdColumnName UserID gridViewColumn.14.joinTableColumnName Username gridViewColumn.19.width gridViewColumn.19.defaultContent gridViewColumn.19.formatData gridViewColumn.19.importDefault gridViewColumn.19.filterAdditionalColumn gridViewColumn.19.defaultSortColumn gridViewColumn.19.isBoolean gridViewColumn.19.isLink gridViewColumn.19.isBinary gridViewColumn.19.isJoin on gridViewColumn.19.isHtmlAttributes gridViewColumn.19.navigateUrlTarget _blank gridViewColumn.19.joinTableName Users gridViewColumn.19.joinTableIdColumnName UserID gridViewColumn.19.joinTableColumnName Username gridViewColumn.23.width gridViewColumn.23.defaultContent gridViewColumn.23.formatData gridViewColumn.23.importDefault gridViewColumn.23.filterAdditionalColumn gridViewColumn.23.defaultSortColumn gridViewColumn.23.isBoolean gridViewColumn.23.isLink gridViewColumn.23.isBinary gridViewColumn.23.isJoin on gridViewColumn.23.isHtmlAttributes gridViewColumn.23.navigateUrlTarget _blank gridViewColumn.23.joinTableName Users gridViewColumn.23.joinTableIdColumnName UserID gridViewColumn.23.joinTableColumnName Username gridViewColumn.16.width gridViewColumn.16.defaultContent gridViewColumn.16.formatData gridViewColumn.16.importDefault gridViewColumn.16.filterAdditionalColumn FileSize_2,FileSize_3,FileSize_4 gridViewColumn.16.defaultSortColumn gridViewColumn.16.isBoolean gridViewColumn.16.isLink gridViewColumn.16.isBinary gridViewColumn.16.isJoin gridViewColumn.16.isHtmlAttributes gridViewColumn.17.width gridViewColumn.17.defaultContent gridViewColumn.17.formatData gridViewColumn.17.importDefault gridViewColumn.17.filterAdditionalColumn FileDescription_2,FileDescription_3,FileDescription_4 gridViewColumn.17.defaultSortColumn gridViewColumn.17.isBoolean gridViewColumn.17.isLink gridViewColumn.17.isBinary gridViewColumn.17.isJoin gridViewColumn.17.isHtmlAttributes gridViewColumn.28.Visible gridViewColumn.28.allowExport gridViewColumn.28.allowEdit gridViewColumn.28.allowFilter 0 gridViewColumn.28.allowSort gridViewColumn.28.allowImport gridViewColumn.28.columnName newID gridViewColumn.28.caption gridViewColumn.28.width gridViewColumn.28.defaultContent gridViewColumn.28.formatData gridViewColumn.28.importDefault gridViewColumn.28.filterAdditionalColumn gridViewColumn.28.defaultSortColumn gridViewColumn.28.isBoolean gridViewColumn.28.isLink gridViewColumn.28.isOther 0 gridViewColumn.28.isBinary gridViewColumn.28.isJoin gridViewColumn.28.isHtmlAttributes showGridView on showGridEdit on gridview.sqlstatementquery gridViewColumn.0.binaryData.FilenameColumnName FileName_1 gridViewColumn.1.binaryData.FilenameColumnName FileName_2 gridViewColumn.2.binaryData.FilenameColumnName FileName_3 gridViewColumn.3.binaryData.FilenameColumnName FileName_4 gridViewColumn.0.customHTMLForm <SCRIPT> id_[columnField:newID]_[columnIndex] = 'Indoo_template_0107_x[columnField:newID]_[columnIndex]'; Indoo_template_0107_c[columnField:newID]_[columnIndex] = '<IMG src="[indoogrid:moduleFolder]images/preload.gif" onerror="this.width=\'1px\';this.height=\'1px\'" /><img onerror="func_indoo_template_0107_pr2(this);" src="[indooGrid:binaryLink]" style="heght:1px;width:1px;" onload="func_indoo_template_0107_pr1(this);"/></'; document.write('<a href="" id="'+id_[columnField:newID]_[columnIndex]+'"><img src="[indooGrid:binaryLinkThumbnail]" border="0" onerror="this.width=\'1px\';this.height=\'1px\'" /></a>') new Control.Modal(id_[columnField:newID]_[columnIndex],{overlayDisplay: true,contents: function(){return Indoo_template_0107_f(id_[columnField:newID]_[columnIndex],Indoo_template_0107_c[columnField:newID]_[columnIndex])}}); Indoo_template_0107_ids[Indoo_template_0107_ids.length]=id_[columnField:newID]_[columnIndex]; </SCRIPT> <TEXTAREA id=Indoo_template_0107_x[columnField:newID]_[columnIndex]x style="DISPLAY: none">[columnField:FileDescription_2]</TEXTAREA><TEXTAREA id=Indoo_template_0107_x[columnField:newID]_[columnIndex]y style="DISPLAY: none">[columnField:Title_2]</TEXTAREA> gridViewColumn.1.customHTMLForm <SCRIPT> id_[columnField:newID]_[columnIndex] = 'Indoo_template_0107_x[columnField:newID]_[columnIndex]'; Indoo_template_0107_c[columnField:newID]_[columnIndex] = '<IMG src="[indoogrid:moduleFolder]images/preload.gif" onerror="this.width=\'1px\';this.height=\'1px\'" /><img onerror="func_indoo_template_0107_pr2(this);" src="[indooGrid:binaryLink]" style="heght:1px;width:1px;" onload="func_indoo_template_0107_pr1(this);"/></'; document.write('<a href="" id="'+id_[columnField:newID]_[columnIndex]+'"><img src="[indooGrid:binaryLinkThumbnail]" border="0" onerror="this.width=\'1px\';this.height=\'1px\'" /></a>') new Control.Modal(id_[columnField:newID]_[columnIndex],{overlayDisplay: true,contents: function(){return Indoo_template_0107_f(id_[columnField:newID]_[columnIndex],Indoo_template_0107_c[columnField:newID]_[columnIndex])}}); Indoo_template_0107_ids[Indoo_template_0107_ids.length]=id_[columnField:newID]_[columnIndex]; </SCRIPT> <TEXTAREA id=Indoo_template_0107_x[columnField:newID]_[columnIndex]x style="DISPLAY: none">[columnField:FileDescription_2]</TEXTAREA><TEXTAREA id=Indoo_template_0107_x[columnField:newID]_[columnIndex]y style="DISPLAY: none">[columnField:Title_2]</TEXTAREA> gridViewColumn.2.customHTMLForm <SCRIPT> id_[columnField:newID]_[columnIndex] = 'Indoo_template_0107_x[columnField:newID]_[columnIndex]'; Indoo_template_0107_c[columnField:newID]_[columnIndex] = '<IMG src="[indoogrid:moduleFolder]images/preload.gif" onerror="this.width=\'1px\';this.height=\'1px\'" /><img onerror="func_indoo_template_0107_pr2(this);" src="[indooGrid:binaryLink]" style="heght:1px;width:1px;" onload="func_indoo_template_0107_pr1(this);"/></'; document.write('<a href="" id="'+id_[columnField:newID]_[columnIndex]+'"><img src="[indooGrid:binaryLinkThumbnail]" border="0" onerror="this.width=\'1px\';this.height=\'1px\'" /></a>') new Control.Modal(id_[columnField:newID]_[columnIndex],{overlayDisplay: true,contents: function(){return Indoo_template_0107_f(id_[columnField:newID]_[columnIndex],Indoo_template_0107_c[columnField:newID]_[columnIndex])}}); Indoo_template_0107_ids[Indoo_template_0107_ids.length]=id_[columnField:newID]_[columnIndex]; </SCRIPT> <TEXTAREA id=Indoo_template_0107_x[columnField:newID]_[columnIndex]x style="DISPLAY: none">[columnField:FileDescription_2]</TEXTAREA><TEXTAREA id=Indoo_template_0107_x[columnField:newID]_[columnIndex]y style="DISPLAY: none">[columnField:Title_2]</TEXTAREA> gridViewColumn.3.customHTMLForm <SCRIPT> id_[columnField:newID]_[columnIndex] = 'Indoo_template_0107_x[columnField:newID]_[columnIndex]'; Indoo_template_0107_c[columnField:newID]_[columnIndex] = '<IMG src="[indoogrid:moduleFolder]images/preload.gif" onerror="this.width=\'1px\';this.height=\'1px\'" /><img onerror="func_indoo_template_0107_pr2(this);" src="[indooGrid:binaryLink]" style="heght:1px;width:1px;" onload="func_indoo_template_0107_pr1(this);"/></'; document.write('<a href="" id="'+id_[columnField:newID]_[columnIndex]+'"><img src="[indooGrid:binaryLinkThumbnail]" border="0" onerror="this.width=\'1px\';this.height=\'1px\'" /></a>') new Control.Modal(id_[columnField:newID]_[columnIndex],{overlayDisplay: true,contents: function(){return Indoo_template_0107_f(id_[columnField:newID]_[columnIndex],Indoo_template_0107_c[columnField:newID]_[columnIndex])}}); Indoo_template_0107_ids[Indoo_template_0107_ids.length]=id_[columnField:newID]_[columnIndex]; </SCRIPT> <TEXTAREA id=Indoo_template_0107_x[columnField:newID]_[columnIndex]x style="DISPLAY: none">[columnField:FileDescription_2]</TEXTAREA><TEXTAREA id=Indoo_template_0107_x[columnField:newID]_[columnIndex]y style="DISPLAY: none">[columnField:Title_2]</TEXTAREA> alternateTablename alternateConnectionString