123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- /**
- * Library functions for resizing widgets
- *
- */
- // event handler temporary storage variables for IE 4
- //
- var old_mousemove_handler;
- var old_mouseup_handler;
- // define variables used in vertical resize handlers
- //
- var element_being_vert_resized;
- var element_being_vert_resized_orig_opacity;
- var min_vert_resize_height;
- var max_vert_resize_height;
- var original_vert_click_pos;
- var original_vert_height;
- /**
- * Begin a (vertical only) resize of some element
- *
- * Note that this event handler is only intended
- * to be called for an event (usually mousedown)
- * that is registered as a tag attribute (not with
- * addEventListener() and ilk).
- *
- * @param evt The JavaScript event object
- * @param resize_element The element being resized
- * @param min_height The minimum allowable resize height
- * @param max_height The maximum allowable resize height
- * @param handle_element The handle element that was clicked
- * upon to initiate the resize
- *
- */
- function startVertResizeDrag(evt, resize_element, min_height,
- max_height, handle_element)
- {
- // assign variables used in other handlers
- //
- element_being_vert_resized = resize_element;
- min_vert_resize_height = min_height;
- max_vert_resize_height = max_height;
- // dim element to emphasize effect
- //
- element_being_vert_resized_orig_opacity = element_being_vert_resized.style.opacity;
- element_being_vert_resized.style.opacity = 0.25;
- // detemine original vertical click coordinates
- //
- original_vert_click_pos = evt.clientY;
- original_vert_height = element_being_vert_resized.offsetHeight;
- // add drag and finish drag listeners
- //
- if (document.addEventListener) // DOM Level 2 Event Model
- {
- document.addEventListener('mousemove', continueVertResizeDrag, true);
- document.addEventListener('mouseup', finishVertResizeDrag, true);
- }
- else if (document.attachEvent) // IE 5+ Event Model
- {
- document.attachEvent("onmousemove", continueVertResizeDrag);
- document.attachEvent("onmouseup", finishVertResizeDrag);
- }
- else // IE 4 Event Model
- {
- old_mousemove_handler = document.onmousemove;
- old_mouseup_handler = document.onmouseup;
- document.onmousemove = continueVertResizeDrag;
- document.onmouseup = finishVertResizeDrag;
- }
- // indicate that the event has been handled
- //
- if (evt.stopPropagation) evt.stopPropagation(); // DOM Level 2
- else evt.cancelBubble = true; // IE
- // don't let any default action happen
- //
- if (evt.preventDefault) evt.preventDefault(); // DOM Level 2
- else evt.returnValue = false; // IE
- // to top it all off, return false too
- //
- return false;
- }
- /**
- * Continue a (vertical only) resize of some element
- *
- * @param evt The JavaScript event object
- *
- */
- function continueVertResizeDrag(evt)
- {
- // IE blows
- //
- if (!evt) evt = window.event;
- if (!evt) return true;
- // adjust height of resize item according to current mouse position
- //
- delta_resize = original_vert_click_pos - evt.clientY;
- new_height = original_vert_height - delta_resize;
- if (new_height >= min_vert_resize_height && new_height <= max_vert_resize_height)
- element_being_vert_resized.style.height = new_height + 'px';
-
- // indicate that the event has been handled
- //
- if (evt.stopPropagation) evt.stopPropagation(); // DOM Level 2
- else evt.cancelBubble = true; // IE
- // to top it all off, return false too
- //
- return false;
- }
- /**
- * Finish a (vertical only) resize of some element
- *
- * @param evt The JavaScript event object
- *
- */
- function finishVertResizeDrag(evt)
- {
- // IE blows
- //
- if (!evt) evt = window.event;
- if (!evt) return true;
- // restore element's original opacity
- //
- element_being_vert_resized.style.opacity = element_being_vert_resized_orig_opacity;
- // unregister all event listeners
- //
- if (document.removeEventListener) // DOM Event Model
- {
- document.removeEventListener("mousemove", continueVertResizeDrag, true);
- document.removeEventListener("mouseup", finishVertResizeDrag, true);
- }
- else if (document.detachEvent) // IE 5+ Event Model
- {
- document.detachEvent("onmousemove", continueVertResizeDrag);
- document.detachEvent("onmouseup", finishVertResizeDrag);
- }
- else // IE 4 Event Model
- {
- document.onmousemove = old_mousemove_handler;
- document.onmouseup = old_mouseup_handler;
- }
- // indicate that the event has been handled
- //
- if (evt.stopPropagation) evt.stopPropagation(); // DOM Level 2
- else evt.cancelBubble = true; // IE
- // to top it all off, return false too
- //
- return false;
- }
|