/* Image Zoom: v1.1 - 21 Digital Web Solutions cc, Werner Rottcher Date: 2009-09-03 * DEPENDANCIES - AJAX Loader Script - findObj() - Global system function OBJECT SAFE!, create as many as you need! Version 1.1 - BETA ------------ 1. Life begins */ var displaying = new Array(); var image_zoom_loading = false; function image_zoom(mdisplay_layer_name, mevent_layer_name, mimage_name, mphp_loader, msubmit_method) { var obj = this; //Setting Bind variable this.display_layer_name = mdisplay_layer_name; this.event_layer_name = mevent_layer_name; this.image_name = mimage_name; this.php_loader = mphp_loader; this.submit_method = msubmit_method; this.Opacity = 100; this.timeout = 0; var event_layer = findObj(mevent_layer_name); if (event_layer != null) { this.innerHTML = event_layer.innerHTML; } if(event_layer.addEventListener) { // DOM event_layer.addEventListener('mousemove', function daMouse(e) { var theTarget = e.target ? e.target : e.srcElement; obj.zoom(e, theTarget); }, true); } else if(event_layer.attachEvent ) { //IE event_layer.attachEvent('onmousemove', function(e) { var theTarget = e.target ? e.target : e.srcElement; obj.zoom(e, theTarget); }); } } image_zoom.prototype={ //now create the event handler function to process the event zoom: function (e, object) { var obj = this; if (image_zoom_loading) {return;} if( !e ) { //if the browser did not pass the event information to the //function, we will have to obtain it from the event register if( window.event ) { //Internet Explorer e = window.event; } else { //total failure, we have no way of referencing the event return; } } image_zoom_loading = true; var layer_name = ""; var layer = null; for (i = 0; i < displaying.length; i++) { img_zoom_obj = displaying[i]; if (img_zoom_obj.displaye_layer_name == obj.display_layer_name) { return; } else { for (j = 0; j < displaying.length; j++) { img_zoom_obj = displaying[i]; obj.hideLayer(img_zoom_obj.display_layer_name, true); img_zoom_obj.restoreInnerHTML(); } displaying = new Array(); } } displaying.push(obj); layer = findObj(obj.display_layer_name); layer.style.height = "auto"; layer.style.visibility = "hidden"; obj.Opacity = 0; obj.ajaxLoad(); obj.hideLayer(obj.event_layer_name); obj.showLayer(obj.display_layer_name); }, fadeIn: function(layer_name) { var obj = this; var mlayer = findObj(layer_name); obj.Opacity = obj.Opacity+4; if (this.Opacity <= 100) { if (IE) { mlayer.filters["alpha"].opacity = obj.Opacity; } else { mlayer.style.opacity = (obj.Opacity/100); } var timeoutFunction = function() {obj.fadeIn(layer_name)} this.timeout = setTimeout(timeoutFunction, 20); } else { clearTimeout(obj.timeout); obj.Opacity = 100; obj.timeout = null; } }, showLayer: function(mlayer) { var obj = this; var layer = findObj(mlayer); if (layer != null) { layer.style.visibility = "visible"; obj.fadeIn(mlayer); } }, hideLayer: function(mlayer, reset_height) { var obj = this; var layer = findObj(mlayer); if (layer != null) { layer.style.visibility = "hidden"; if (reset_height) { obj.Opacity = 0; if (IE) { layer.filters["alpha"].opacity = obj.Opacity; } else { layer.style.opacity = (obj.Opacity/100); } layer.style.height = "0px"; } layer.innerHTML = ""; } }, restoreInnerHTML: function() { var obj = this; var layer = findObj(obj.event_layer_name); if (layer != null) { layer.innerHTML = obj.innerHTML; layer.style.visibility = "visible"; } }, ajaxLoad: function () { var obj = this; try { setLoadingImage(obj.display_layer_name); xmlHttp = new ajaxObject(obj.php_loader, obj.display_layer_name, updateLayer); xmlHttp.update("image_name="+obj.image_name+"&method="+obj.submit_method, 'GET'); image_zoom_loading = false; } catch(err) { alert(err); } } }