/* ========================================================= // jquery.panorama.js // Author: OpenStudio (Arnault PACHOT) // Mail: apachot@openstudio.fr // Web: http://www.openstudio.fr // Copyright (c) 2008 Arnault Pachot // licence : GPL ========================================================= */ (function($) { $.fn.panorama = function(options) { this.each(function(){ var settings = { views_number: 300, views_columns: 20 }; var pano_element = this; var orig_src = $(this).attr("src"); var loaded = 0; var pano_mouse_position_x; var pano_mouse_position_y; var pano_mouse_delta_x = 0; var pano_mouse_delta_y = 0; var pano_mouse_down = false; var pano_current_number; var pano_timer; var pano_loading_stop = false; var pano_width = parseInt($(pano_element).attr("width")); pano_mouse_position_x = parseInt(pano_width/2); var pano_height = parseInt($(pano_element).attr("height")); pano_mouse_position_y = parseInt(pano_height/2); $(pano_element).css("margin", "0 0 0 0").css("padding", "0 0 0 0").wrap('
'); if(options) $.extend(settings, options); $(pano_element).after('[stop] '); var src_prefix = orig_src.substr(0, orig_src.indexOf('_',0)+1); var src_number = parseInt(orig_src.substr(orig_src.indexOf('_',0)+1)); pano_current_number = src_number; var src_sufix = orig_src.substr(orig_src.indexOf(src_number,0)+String(src_number).length); $(pano_element).after(''); $(pano_element).after(''); $(pano_element).parent().find(".pano_loading_stop").bind('click', function(){ pano_loading_stop = true; return false; }); $(pano_element).parent().find(".pano_loading_start a").bind('click', function(){ $(pano_element).parent().css("cursor", "wait"); $(pano_element).parent().find(".pano_loading_start").hide(); $(pano_element).parent().find(".pano_loading_percent").show(); $(pano_element).parent().find(".pano_loading_animation").show(); $(pano_element).parent().find(".pano_vues").remove(); pano_timer = setTimeout(function(){ clearTimeout(pano_timer); for (var i=0; i '); $(pano_element).parent().find("img.vue"+i).bind('load', function(){ if ($(pano_element).parent().find(".pano_loading_stop").css("display")=="none") $(pano_element).parent().find(".pano_loading_stop").show(); loaded++; if (pano_loading_stop) { pano_loading_stop=false; $(pano_element).parent().find(".pano_loading_stop").hide(); $(pano_element).parent().css("cursor", "default"); $(pano_element).parent().find(".pano_loading_percent").hide(); $(pano_element).parent().find(".pano_loading_start").show(); $(pano_element).parent().find(".pano_loading_percent span").html('loading...'); pano_timer = setTimeout(function(){ clearTimeout(pano_timer); window.stop(); }); } //if (loaded >= (settings.views_number-1)) { if (parseInt((loaded/settings.views_number)*100) > 90) { $(pano_element).parent().css("cursor", "pointer"); $(pano_element).parent().find(".pano_loading_stop").hide(); $(pano_element).parent().find(".pano_loading_percent").hide(); $(pano_element).parent().find(".pano_loading_animation").hide(); $(pano_element).parent().find(".pano_loading_masque").hide(); $(pano_element).bind('mousedown', function(e){ pano_mouse_down = true; pano_mouse_position_x = e.clientX; pano_mouse_position_y = e.clientY; $(pano_element).parent().css("cursor", "move"); return false; }); $(pano_element).bind('mouseup', function(){ pano_mouse_down = false; $("div.panorama").css("cursor", "pointer"); return false; }); $(pano_element).bind('mousemove', function(e){ if (pano_mouse_down) { pano_mouse_delta_x = parseInt((pano_mouse_position_x - e.clientX)/20); pano_mouse_delta_y = parseInt((pano_mouse_position_y - e.clientY)/20); if (pano_mouse_delta_x!=0||pano_mouse_delta_y!=0) { var pageCoords = "( " + e.pageX + ", " + e.pageY + " )"; var clientCoords = "( " + e.clientX + ", " + e.clientY + " )"; //src_number1=parseInt((settings.views_columns/pano_width)*pano_mouse_delta_x); //src_number=pano_current_number+src_number1+settings.views_number-settings.views_columns*parseInt(-5+((settings.views_number/settings.views_columns)/pano_height)*pano_mouse_delta_y); pano_current_number=pano_current_number-pano_mouse_delta_x+settings.views_columns*pano_mouse_delta_y; if (pano_current_number<0) pano_current_number = 0; if (pano_current_number>(settings.views_number-1)) pano_current_number = settings.views_number-1; $(pano_element).attr('src', src_prefix+pano_current_number+src_sufix); pano_mouse_position_x= e.clientX; pano_mouse_position_y= e.clientY; } } return false; }); } else { $(pano_element).parent().find(".pano_loading_percent span").html('loading...'+parseInt((loaded/settings.views_number)*100)+' % done.'); } }); } } }, 500); return false; }); }); }; $(document).ready(function(){ $("img.panorama").panorama(); }); })(jQuery);