$(document).ready(function() {
//select all the a tag with name equal to modal
$('a[name=modal]').click(function(e) {
//Cancel the link behavior
e.preventDefault();
//Get the A tag
var id = $(this).attr('href');
//Get the screen height and width
var maskHeight = $(document).height();
var maskWidth = $(window).width();
//Set heigth and width to mask to fill up the whole screen
$('#mask').css({'width':maskWidth,'height':maskHeight});
//transition effect
$('#mask').fadeIn(1000);
$('#mask').fadeTo("slow",0.8);
//Get the window height and width
var winH = $(window).height();
var winW = $(window).width();
//Set the popup window to center
$(id).css('top', winH/2-$(id).height()/2);
$(id).css('left', winW/2-$(id).width()/2);
//transition effect
$(id).fadeIn(2000);
});
//if close button is clicked
$('.window .close').click(function (e) {
//Cancel the link behavior
e.preventDefault();
$('#mask').hide();
$('.window').hide();
});
//if mask is clicked
$('#mask').click(function () {
$(this).hide();
$('.window').hide();
});
});
//** Smooth Navigational Menu- By Dynamic Drive DHTML code library: http://www.dynamicdrive.com
//** Script Download/ instructions page: http://www.dynamicdrive.com/dynamicindex1/ddlevelsmenu/
//** Menu created: Nov 12, 2008
//** Dec 12th, 08" (v1.01): Fixed Shadow issue when multiple LIs within the same UL (level) contain sub menus: http://www.dynamicdrive.com/forums/showthread.php?t=39177&highlight=smooth
//** Feb 11th, 09" (v1.02): The currently active main menu item (LI A) now gets a CSS class of ".selected", including sub menu items.
//** May 1st, 09" (v1.3):
//** 1) Now supports vertical (side bar) menu mode- set "orientation" to 'v'
//** 2) In IE6, shadows are now always disabled
//** July 27th, 09" (v1.31): Fixed bug so shadows can be disabled if desired.
//** Feb 2nd, 10" (v1.4): Adds ability to specify delay before sub menus appear and disappear, respectively. See showhidedelay variable below
//** Dec 17th, 10" (v1.5): Updated menu shadow to use CSS3 box shadows when the browser is FF3.5+, IE9+, Opera9.5+, or Safari3+/Chrome. Only .js file changed.
var ddsmoothmenu={
//Specify full URL to down and right arrow images (23 is padding-right added to top level LIs with drop downs):
arrowimages: {down:['downarrowclass', '../../vcms_temi/'+tema+'immagini/down.gif'], right:['rightarrowclass', '../../vcms_temi/'+tema+'immagini/right.gif']},
transition: {overtime:300, outtime:300}, //duration of slide in/ out animation, in milliseconds
shadow: {enable:false, offsetx:5, offsety:5}, //enable shadow?
showhidedelay: {showdelay: 100, hidedelay: 200}, //set delay in milliseconds before sub menus appear and disappear, respectively
///////Stop configuring beyond here///////////////////////////
detectwebkit: navigator.userAgent.toLowerCase().indexOf("applewebkit")!=-1, //detect WebKit browsers (Safari, Chrome etc)
detectie6: document.all && !window.XMLHttpRequest,
css3support: window.msPerformance || (!document.all && document.querySelector), //detect browsers that support CSS3 box shadows (ie9+ or FF3.5+, Safari3+, Chrome etc)
getajaxmenu:function($, setting){ //function to fetch external page containing the panel DIVs
var $menucontainer=$('#'+setting.contentsource[0]) //reference empty div on page that will hold menu
$menucontainer.html("Loading Menu...")
$.ajax({
url: setting.contentsource[1], //path to external menu file
async: true,
error:function(ajaxrequest){
$menucontainer.html('Error fetching content. Server Response: '+ajaxrequest.responseText)
},
success:function(content){
$menucontainer.html(content)
ddsmoothmenu.buildmenu($, setting)
}
})
},
buildmenu:function($, setting){
var smoothmenu=ddsmoothmenu
var $mainmenu=$("#"+setting.mainmenuid+">ul") //reference main menu UL
//$mainmenu.parent().get(0).className=setting.classname || "ddsmoothmenu"
var $headers=$mainmenu.find("ul").parent()
$headers.hover(
function(e){
$(this).children('a:eq(0)').addClass('selected')
},
function(e){
$(this).children('a:eq(0)').removeClass('selected')
}
)
$headers.each(function(i){ //loop through each LI header
var $curobj=$(this).css({zIndex: 100-i}) //reference current LI header
var $subul=$(this).find('ul:eq(0)').css({display:'block'})
$subul.data('timers', {})
this._dimensions={w:this.offsetWidth, h:this.offsetHeight, subulw:$subul.outerWidth(), subulh:$subul.outerHeight()}
this.istopheader=$curobj.parents("ul").length==1? true : false //is top level header?
$subul.css({top:this.istopheader && setting.orientation!='v'? this._dimensions.h+"px" : 0})
$curobj.children("a:eq(0)").css(this.istopheader? {paddingRight: smoothmenu.arrowimages.down[2]} : {}).append( //add arrow images
''
)
$curobj.hover(
function(e){
var $targetul=$subul //reference UL to reveal
var header=$curobj.get(0) //reference header LI as DOM object
clearTimeout($targetul.data('timers').hidetimer)
$targetul.data('timers').showtimer=setTimeout(function(){
header._offsets={left:$curobj.offset().left, top:$curobj.offset().top}
var menuleft=header.istopheader && setting.orientation!='v'? 0 : header._dimensions.w
menuleft=(header._offsets.left+menuleft+header._dimensions.subulw>$(window).width())? (header.istopheader && setting.orientation!='v'? -header._dimensions.subulw+header._dimensions.w : -header._dimensions.w) : menuleft //calculate this sub menu's offsets from its parent
if ($targetul.queue().length<=1){ //if 1 or less queued animations
$targetul.css({left:menuleft+"px", width:header._dimensions.subulw+'px'}).animate({height:'show',opacity:'show'}, ddsmoothmenu.transition.overtime)
}
}, ddsmoothmenu.showhidedelay.showdelay)
},
function(e){
var $targetul=$subul
var header=$curobj.get(0)
clearTimeout($targetul.data('timers').showtimer)
$targetul.data('timers').hidetimer=setTimeout(function(){
$targetul.animate({height:'hide', opacity:'hide'}, ddsmoothmenu.transition.outtime)
}, ddsmoothmenu.showhidedelay.hidedelay)
}
) //end hover
}) //end $headers.each()
$mainmenu.find("ul").css({display:'none', visibility:'visible'})
},
init:function(setting){
if (typeof setting.customtheme=="object" && setting.customtheme.length==2){ //override default menu colors (default/hover) with custom set?
var mainmenuid='#'+setting.mainmenuid
var mainselector=(setting.orientation=="v")? mainmenuid : mainmenuid+', '+mainmenuid
document.write('')
}
this.shadow.enable=(document.all && !window.XMLHttpRequest)? false : this.shadow.enable //in IE6, always disable shadow
jQuery(document).ready(function($){ //ajax menu?
if (typeof setting.contentsource=="object"){ //if external ajax menu
ddsmoothmenu.getajaxmenu($, setting)
}
else{ //else if markup menu
ddsmoothmenu.buildmenu($, setting)
}
})
}
} //end ddsmoothmenu variable
function conferma_reload() {
$.fn.colorbox.close();
location.href=location.href;
}
$(document).ready(function(){
jQuery('.lightbox').lightbox();
$(".vcms_submit").live("click",function(){
var data = '';
data = $(this).closest("form").serialize();
var vcms_varblock = data.split('&');
$.each(vcms_varblock, function(key, value) {
var vcms_varvar = value.split('=');
window[vcms_varvar[0]] = vcms_varvar[1];
if(typeof larghezza_box_vcms == 'undefined'){ larghezza_box_vcms ='400';}
});
$.ajax({
type: "POST",
url: "../../cms/azioni_admin/comandi.php",
data: data,
success:function(data){
//alert(data);
$().colorbox({html: data, open:true,width:larghezza_box_vcms});
$('#loader').delay(500).animate({'opacity':1},500);
$('body').delay(500).css("background-image", "url('')");
}
});
return false;
});
$(function()
{
//$('.vcms_modulo').jScrollPane();
});
$("#vcms_esegui_submit").live("click",function(){
var data = $(this).closest("form").serialize();
$.ajax({
type: "POST",
url: "http://www.vectordesign.it//cms/azioni_admin/comandi.php",
data: data,
success:function(data){
$().colorbox({html: data, open:true});
$.fn.colorbox.close();
location.reload();
}
});
return false;
});
$(".azioni").colorbox({width:"700px",height:"150px", iframe:true, onClosed:function(){ location.href=location.href; }});
$(".dati").colorbox({width:"750px",height:"150px", iframe:true});
$(".layout").colorbox({width:"1034px",height:"100px", iframe:true});
$(".minipad").colorbox({width:"400px",height:"100px", iframe:true});
$(".midpad").colorbox({width:"480px",height:"100px", iframe:true});
$(".elementi").colorbox({width:"785px",height:"150px", iframe:true});
$(".pagina").colorbox({width:"960px",height:"150px", iframe:true, escKey:true,onLoad: function() {
$('#cboxClose').remove(); $('#cboxTitle').remove();
}
});
$('#logo').bind( 'tripleclick', function(event){
$.fn.colorbox({href:'http://www.vectordesign.it//vcmslogin', open: true, iframe: true, width:400, height:100});
});
});
/*
AnythingSlider v1.5.6.4
By Chris Coyier: http://css-tricks.com
with major improvements by Doug Neiner: http://pixelgraphics.us/
based on work by Remy Sharp: http://jqueryfordesigners.com/
crazy mods by Rob Garrison (aka Mottie)
To use the navigationFormatter function, you must have a function that
accepts two paramaters, and returns a string of HTML text.
index = integer index (1 based);
panel = jQuery wrapped LI item this tab references
@return = Must return a string of HTML/Text
navigationFormatter: function(index, panel){
return "Panel #" + index; // This would have each tab with the text 'Panel #X' where X = index
}
*/
(function($) {
$.anythingSlider = function(el, options) {
// To avoid scope issues, use 'base' instead of 'this'
// to reference this class from internal events and functions.
var base = this;
// Wraps the ul in the necessary divs and then gives Access to jQuery element
base.$el = $(el).addClass('anythingBase').wrap('
');
// Add a reverse reference to the DOM object
base.$el.data("AnythingSlider", base);
base.init = function(){
base.options = $.extend({}, $.anythingSlider.defaults, options);
if ($.isFunction(base.options.onBeforeInitialize)) { base.$el.bind('before_initialize', base.options.onBeforeInitialize); }
base.$el.trigger('before_initialize', base);
// Cache existing DOM elements for later
// base.$el = original ul
// for wrap - get parent() then closest in case the ul has "anythingSlider" class
base.$wrapper = base.$el.parent().closest('div.anythingSlider').addClass('anythingSlider-' + base.options.theme);
base.$window = base.$el.closest('div.anythingWindow');
base.$controls = $('').appendTo( $(base.options.appendControlsTo).length ? $(base.options.appendControlsTo) : base.$wrapper);
base.$nav = $('
');
this.esqueleto.navigator = $('.'+this.options.name+'-navigator', this.esqueleto.lightbox);
this.esqueleto.buttons.div = $('.'+this.options.name+'-buttons', this.esqueleto.lightbox);
this.esqueleto.buttons.close = $('.'+this.options.name+'-button-close', this.esqueleto.lightbox);
this.esqueleto.buttons.prev = $('.'+this.options.name+'-button-left', this.esqueleto.lightbox);
this.esqueleto.buttons.max = $('.'+this.options.name+'-button-max', this.esqueleto.lightbox);
this.esqueleto.buttons.next = $('.'+this.options.name+'-button-right', this.esqueleto.lightbox);
this.esqueleto.buttons.custom = $('.'+this.options.name+'-buttons-custom', this.esqueleto.lightbox);
this.esqueleto.background = $('.'+this.options.name+'-background', this.esqueleto.lightbox);
this.esqueleto.html = $('.'+this.options.name+'-html', this.esqueleto.lightbox);
this.esqueleto.move = $('').append(this.esqueleto.lightbox);
this.esqueleto.move.css({
'position' : 'absolute',
'z-index' : this.options.zIndex,
'top' : -999,
'left' : -999
});
$('body').append(this.esqueleto.move);
this.addevents();
return this.esqueleto.lightbox;
},
addevents: function() {
this.esqueleto.buttons.close.bind('click', $.proxy(function(ev) {
this.close();
ev.preventDefault();
}, this));
$(window).bind('resize', $.proxy(function() {
if (this.visible)
{
this.overlay.resize();
if (!this.maximized) {
this.movebox();
}
}
}, this));
$(window).bind('scroll', $.proxy(function() {
if (this.visible && !this.maximized)
{
this.movebox();
}
}, this));
$(document).bind('keydown', $.proxy(function(event) {
if (this.visible) {
if (event.keyCode == 27 && this.overlay.options.hideOnClick) { // esc
this.close();
}
if (this.gallery.total > 1) {
if (event.keyCode == 37){
this.esqueleto.buttons.prev.triggerHandler('click', event);
}
if (event.keyCode == 39){
this.esqueleto.buttons.next.triggerHandler('click', event);
}
}
}
}, this));
this.esqueleto.buttons.max.bind('click', $.proxy(function(event) {
this.maximinimize();
event.preventDefault();
}, this));
// heredamos los eventos, desde el overlay:
this.overlay.element.bind('show', $.proxy(function() { $(this).triggerHandler('show'); }, this));
this.overlay.element.bind('hide', $.proxy(function() { $(this).triggerHandler('close'); }, this));
},
create_gallery: function(href) {
if ($.isArray(href) && href.length > 1 && href[0].match(this.imgsreg)) {
this.gallery.images = href;
this.gallery.current = 0;
this.gallery.total = href.length;
href = href[0];
this.esqueleto.buttons.prev.unbind('click');
this.esqueleto.buttons.next.unbind('click');
this.esqueleto.buttons.prev.bind('click', $.proxy(function(event){
if (this.gallery.current - 1 < 0) {
this.gallery.current = this.gallery.total - 1;
} else {
this.gallery.current = this.gallery.current - 1;
}
this.show(this.gallery.images[this.gallery.current]);
event.preventDefault();
}, this));
this.esqueleto.buttons.next.bind('click', $.proxy(function(event){
if (this.gallery.current + 1 >= this.gallery.total) {
this.gallery.current = 0;
} else {
this.gallery.current = this.gallery.current + 1;
}
this.show(this.gallery.images[this.gallery.current]);
event.preventDefault();
}, this));
}
if (this.gallery.total > 1) {
if (this.esqueleto.navigator.css("display") == "none") {
this.esqueleto.buttons.div.show();
}
this.esqueleto.buttons.prev.show();
this.esqueleto.buttons.next.show();
} else {
this.esqueleto.buttons.prev.hide();
this.esqueleto.buttons.next.hide();
}
},
custombuttons: function(buttons, anchor) {
$.each(buttons, $.proxy(function(i, button) {
this.esqueleto.buttons.custom.append($(''+button.html+'').bind('click', $.proxy(function(e) {
if ($.isFunction(button.callback)) {
button.callback(this.image.src, this, anchor[this.gallery.current || 0]);
}
e.preventDefault();
}, this)));
}, this));
this.esqueleto.buttons.div.show();
},
show: function(href, options, callback, anchor) {
var type = '';
var beforeopen = false;
if (($.isArray(href) && href.length <= 1) || href=='') {
return false;
};
this.loading();
beforeopen = this.visible;
this.open();
if (!beforeopen) { this.movebox(); };
this.create_gallery(href, options);
if ($.isArray(href) && href.length > 1) {
href = href[0];
}
var temp = href.split("%LIGHTBOX%");
var href = temp[0];
var title = temp[1] || '';
options = $.extend(true, {
'width' : 0,
'height' : 0,
'modal' : 0,
'force' : '',
'title' : title,
'autoresize' : true,
'move' : -1,
'iframe' : false,
'flashvars' : '',
'cufon' : true,
'onOpen' : function() {},
'onClose' : function() {}
}, options || {});
this.options.onOpen = options.onOpen;
this.options.onClose = options.onClose;
this.options.cufon = options.cufon;
urloptions = this.unserialize(href);
options = $.extend({}, options, urloptions);
var size = { x: $(window).width(), y: $(window).height() };
// calcular porcentajes si es que existen:
if (options.width && (options.width+'').indexOf("p") > 0) {
options.width = (size.x-20) * options.width.substring(0, options.width.indexOf("p")) / 100;
}
if (options.height && (options.height+'').indexOf("p") > 0) {
options.height = (size.y-20) * options.height.substring(0, options.height.indexOf("p")) / 100;
}
this.esqueleto.background.unbind('complete');
this.overlay.options.hideOnClick = !options.modal;
this.esqueleto.buttons.max.removeClass(this.options.name+'-button-min');
this.esqueleto.buttons.max.addClass(this.options.name+'-button-max');
this.maximized = !(options.move > 0 || (options.move == -1 && options.autoresize));
if ($.isArray(options.buttons)) {
this.custombuttons(options.buttons, anchor);
}
if (!this.esqueleto.buttons.custom.is(":empty")) {
this.esqueleto.buttons.div.show();
}
if (options.force != '') {
type = options.force;
} else if (options.iframe) {
type = 'iframe';
} else if (href.match(this.imgsreg)) {
type = 'image';
} else {
$.each(this.videoregs, $.proxy(function(i, e) {
if (href.split('?')[0].match(e.reg)) {
if (e.split) {
videoid = href.split(e.split)[e.index].split('?')[0].split('&')[0];
href = e.url.replace("%id%", videoid);
}
type = e.iframe ? 'iframe' : 'flash';
options.width = options.width ? options.width : this.options.flash.width;
options.height = options.height ? options.height : this.options.flash.height;
return false;
}
}, this));
$.each(this.mapsreg, function(i, e) {
if (href.match(e.reg)) {
type = 'iframe';
if (e.split) {
id = href.split(e.split)[e.index];
href = e.url.replace("%id%", id).replace("%width%", options.width).replace("%height%", options.height);
}
}
});
if (type=='') {
if (href.match(/#/)) {
obj = href.substr(href.indexOf("#"));
if ($(obj).length > 0) {
type = 'inline';
href = obj;
} else {
type = 'ajax';
}
} else {
type = 'ajax';
}
}
}
if (type=='image') {
this.esqueleto.buttons.max.hide();
var image = new Image();
image.onload = $.proxy(function() {
image.onload = function() {};
if (!this.visible) { return false };
this.image = {
width : image.width,
height : image.height,
src : image.src
};
if (options.width) {
width = parseInt(options.width);
height = parseInt(options.height);
} else {
if (options.autoresize) {
var objsize = this.calculate(image.width, image.height);
width = objsize.width;
height = objsize.height;
if (image.width != width || image.height != height) {
this.esqueleto.buttons.div.show();
this.esqueleto.buttons.max.show();
}
} else {
width = image.width;
height = image.height;
}
}
this.resize(width, height);
this.esqueleto.background.bind('complete', $.proxy(function() {
if (!this.visible) { return false };
this.changemode('image');
this.esqueleto.background.empty();
this.esqueleto.html.empty();
if (options.title != '') {
this.esqueleto.background.append($('').html(options.title));
}
$(image).hide();
this.esqueleto.background.append(image);
$(image).stop().fadeIn(400, $.proxy(function() {this.esqueleto.background.removeClass(this.options.name+'-loading');}, this));
}, this));
}, this);
image.onerror = $.proxy(function() {
this.error("The requested image cannot be loaded. Please try again later.");
}, this);
image.src = href;
} else if (type=='flash' || type=='inline' || type=='ajax') {
if (type == 'inline') {
this.appendhtml($(href).clone(true).show(), options.width > 0 ? options.width : $(href).outerWidth(true), options.height > 0 ? options.height : $(href).outerHeight(true), 'html');
} else if (type == 'ajax') {
if (options.width) {
width = options.width;
height = options.height;
} else {
this.error("You need to specify the size of the lightbox.");
return false;
}
if (this.animations.ajax) { this.animations.ajax.abort(); };
this.animations.ajax = $.ajax({
url : href,
type : "GET",
cache : false,
dataType : "html",
error : $.proxy(function() { this.error("The requested content cannot be loaded. Please try again later.") }, this),
success : $.proxy(function(html) { this.appendhtml($(html), width, height, 'html'); }, this)
});
} else if (type == 'flash') {
var flash = this.swf2html(href, options.width, options.height, options.flashvars);
this.appendhtml($(flash), options.width, options.height, 'html');
}
} else if (type=='iframe') {
if (options.width) {
width = options.width;
height = options.height;
} else {
this.error("You need to specify the size of the lightbox.");
return false;
}
this.appendhtml($('').css(options), options.width, options.height, 'html');
}
this.callback = $.isFunction(callback) ? callback : function(e) {};
},
swf2html: function(href, width, height, flashvars) {
if (typeof flashvars == 'undefined' || flashvars == '') flashvars = 'autostart=1&autoplay=1&fullscreenbutton=1';
var str = '';
return str;
},
appendhtml: function(obj, width, height, mode) {
if (typeof mode !== 'undefined') {
this.changemode(mode);
}
this.resize(width + 30, height + 20);
this.esqueleto.background.bind('complete', $.proxy(function() {
this.esqueleto.background.removeClass(this.options.name+'-loading');
this.esqueleto.html.html(obj);
this.esqueleto.html.html(obj); // fix chrome bug
this.esqueleto.background.unbind('complete');
if (this.options.cufon && typeof Cufon !== 'undefined') {
Cufon.refresh();
}
this.options.onOpen();
}, this));
},
movebox: function(w, h) {
var size = { x: $(window).width(), y: $(window).height() };
var scroll = { x: $(window).scrollLeft(), y: $(window).scrollTop() };
var height = h!=null ? h : this.esqueleto.lightbox.outerHeight();
var width = w!=null ? w : this.esqueleto.lightbox.outerWidth();
var y = 0;
var x = 0;
//vertically center
x = scroll.x + ((size.x - width) / 2);
if (this.visible) {
y = scroll.y + (size.y - height) / 2;
} else if (this.options.emergefrom == "bottom") {
y = (scroll.y + size.y + 14);
} else {// top
y = (scroll.y - height) - 14;
}
if (this.visible) {
if (!this.animations.move) {
this.morph(this.esqueleto.move, {
'left' : x
}, 'move');
}
this.morph(this.esqueleto.move, {
'top' : y
}, 'move');
} else {
this.esqueleto.move.css({
'left' : x,
'top' : y
});
}
},
morph: function(el, prop, mode, callback, queue) {
if (parseFloat($.fn.jquery) < 1.6) {
var optall = $.speed({
queue : queue || false,
duration : this.options[mode+'Duration'],
easing : this.options[mode+'Transition'],
complete : ($.isFunction(callback) ? $.proxy(callback, this) : null)
});
return el[ optall.queue === false ? "each" : "queue" ](function() {
var opt = $.extend({}, optall), self = this;
opt.curAnim = $.extend({}, prop);
$.each( prop, function( name, val ) {
var e = new $.fx( self, opt, name );
e.custom( e.cur(true) || 0, val, "px" );
});
return true;
});
} else {
el.animate(prop, {
queue : queue || false,
duration : this.options[mode+'Duration'],
easing : this.options[mode+'Transition'],
complete : ($.isFunction(callback) ? $.proxy(callback, this) : null)
});
}
},
resize: function(x, y) {
if (this.visible) {
var size = { x: $(window).width(), y: $(window).height() };
var scroll = { x: $(window).scrollLeft(), y: $(window).scrollTop() };
var left = (scroll.x + (size.x - (x + 14)) / 2);
var top = (scroll.y + (size.y - (y + 14)) / 2);
if ($.browser.msie || ($.browser.mozilla && (parseFloat($.browser.version) < 1.9))) {
y += 4;
}
this.animations.move = true;
this.morph(this.esqueleto.move.stop(), {
'left': (this.maximized && left < 0) ? 0 : left,
'top' : (this.maximized && (y + 14) > size.y) ? scroll.y : top
}, 'move', $.proxy(function() { this.move = false; }, this.animations));
this.morph(this.esqueleto.html, { 'height': y - 20 }, 'resize');
this.morph(this.esqueleto.lightbox.stop(), { 'width': (x + 14), 'height': y - 20 }, 'resize', {}, true);
this.morph(this.esqueleto.buttons.div, { 'width': x, 'height': y }, 'resize');
this.morph(this.esqueleto.navigator, { 'width': x }, 'resize');
this.morph(this.esqueleto.navigator, { 'top': (y - 90) / 2 }, 'move');
this.morph(this.esqueleto.background.stop(), { 'width': x, 'height': y }, 'resize', function() { $(this.esqueleto.background).trigger('complete'); });
} else {
this.esqueleto.html.css({ 'height': y - 20 });
this.esqueleto.lightbox.css({ 'width': x + 14, 'height': y - 20 });
this.esqueleto.background.css({ 'width': x, 'height': y });
this.esqueleto.buttons.div.css({ 'width': x, 'height': y });
this.esqueleto.navigator.css({ 'width': x, 'height': 90 });
}
},
close: function(param) {
this.visible = false;
this.gallery = {};
this.options.onClose();
if ($.browser.msie) {
this.esqueleto.background.empty();
this.esqueleto.html.empty();
this.esqueleto.buttons.custom.empty();
this.esqueleto.move.css({'display': 'none'});
this.movebox();
} else {
this.esqueleto.move.animate({'opacity': 0, 'top': '-=40'}, {
queue : false,
complete : ($.proxy(function() {
this.esqueleto.background.empty();
this.esqueleto.html.empty();
this.esqueleto.buttons.custom.empty();
this.movebox();
this.esqueleto.move.css({'display': 'none', 'opacity': 1, 'overflow': 'visible'});
}, this))
});
}
this.overlay.hide($.proxy(function() {
if ($.isFunction(this.callback))
{
this.callback.apply(this, $.makeArray(param));
}
}, this));
this.esqueleto.background.stop(true, false);
this.esqueleto.background.unbind('complete');
},
open: function() {
this.visible = true;
if ($.browser.msie) {
this.esqueleto.move.get(0).style.removeAttribute('filter');
this.esqueleto.buttons.div.css({'position': 'static'}).css({'position': 'absolute'});
}
this.esqueleto.move.css({ 'display' : 'block', 'overflow':'visible' }).show();
this.overlay.show();
},
shake: function() {
var x = this.options.shake.distance;
var d = this.options.shake.duration;
var t = this.options.shake.transition;
var o = this.options.shake.loops;
var l = this.esqueleto.move.position().left;
var e = this.esqueleto.move;
for (i=0; i maxx)
{
y = y * (maxx / x);
x = maxx;
if (y > maxy)
{
x = x * (maxy / y);
y = maxy;
}
}
else if (y > maxy)
{
x = x * (maxy / y);
y = maxy;
if (x > maxx)
{
y = y * (maxx / x);
x = maxx;
}
}
// End Resizing
return {width: parseInt(x), height: parseInt(y)};
},
loading: function() {
this.changemode('image');
this.esqueleto.background.empty();
this.esqueleto.html.empty();
this.esqueleto.background.addClass(this.options.name+'-loading');
this.esqueleto.buttons.div.hide();
if (this.visible == false) {
this.movebox(this.options.width, this.options.height);
this.resize(this.options.width, this.options.height);
}
},
maximinimize: function() {
if (this.maximized) {
this.maximized = false;
this.esqueleto.buttons.max.removeClass(this.options.name+'-button-min');
this.esqueleto.buttons.max.addClass(this.options.name+'-button-max');
var objsize = this.calculate(this.image.width, this.image.height);
this.loading();
this.esqueleto.buttons.div.show();
this.resize(objsize.width, objsize.height);
} else {
this.maximized = true;
this.esqueleto.buttons.max.removeClass(this.options.name+'-button-max');
this.esqueleto.buttons.max.addClass(this.options.name+'-button-min');
this.loading();
this.esqueleto.buttons.div.show();
this.resize(this.image.width, this.image.height);
}
}
}, //end object
lightbox: function(url, options, callback) {
if (typeof url !== 'undefined') {
return $.LightBoxObject.show(url, options, callback);
} else {
return $.LightBoxObject;
}
}
});
$.fn.lightbox = function(options, callback) {
return $(this).live('click', function(e) {
e.preventDefault();
$(this).blur();
var sel = [];
var rel = $.trim($(this).attr('rel')) || '';
var til = $.trim($(this).attr('title')) || '';
var lnk = $(this);
rel = rel.replace('[','\\\\[');
rel = rel.replace(']','\\\\]');
if (!rel || rel == '' || rel === 'nofollow') {
sel = $(this).attr('href');
copy_options = (til || til != '') ? $.extend({}, options, {'title': til}) : options;
} else {
var rels = [];
var antes = [];
var desps = [];
var encon = false;
$("a[rel=" + rel + "], area[rel=" + rel + "]").each($.proxy(function(i, el) {
if (this == el) {
antes.unshift(el);
encon = true;
} else if (encon == false) {
desps.push(el);
} else {
antes.push(el);
}
}, this));
rels = lnk = antes.concat(desps);
$.each(rels, function() {
var title = $.trim($(this).attr('data-descrizione')) || '';
title = title ? "%LIGHTBOX%" + title : '';
sel.push($(this).attr('href') + title);
});
if (sel.length == 1) {
sel = sel[0];
}
copy_options = options;
}
$.LightBoxObject.show(sel, copy_options, callback, lnk);
});
};
$(function() {
if (parseFloat($.fn.jquery) > 1.2) {
$.LightBoxObject.create();
} else {
throw "The jQuery version that was loaded is too old. Lightbox Evolution requires jQuery 1.3+";
}
});
})(jQuery);/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
* Licensed under the MIT License (LICENSE.txt).
*
* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
* Thanks to: Seamus Leahy for adding deltaX and deltaY
*
* Version: 3.0.4
*
* Requires: 1.2.2+
*/
(function($) {
var types = ['DOMMouseScroll', 'mousewheel'];
$.event.special.mousewheel = {
setup: function() {
if ( this.addEventListener ) {
for ( var i=types.length; i; ) {
this.addEventListener( types[--i], handler, false );
}
} else {
this.onmousewheel = handler;
}
},
teardown: function() {
if ( this.removeEventListener ) {
for ( var i=types.length; i; ) {
this.removeEventListener( types[--i], handler, false );
}
} else {
this.onmousewheel = null;
}
}
};
$.fn.extend({
mousewheel: function(fn) {
return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
},
unmousewheel: function(fn) {
return this.unbind("mousewheel", fn);
}
});
function handler(event) {
var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
event = $.event.fix(orgEvent);
event.type = "mousewheel";
// Old school scrollwheel delta
if ( event.wheelDelta ) { delta = event.wheelDelta/120; }
if ( event.detail ) { delta = -event.detail/3; }
// New school multidimensional scroll (touchpads) deltas
deltaY = delta;
// Gecko
if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
deltaY = 0;
deltaX = -1*delta;
}
// Webkit
if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }
if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }
// Add event and delta to the front of the arguments
args.unshift(event, delta, deltaX, deltaY);
return $.event.handle.apply(this, args);
}
})(jQuery);/*
* jQuery TinySort - A plugin to sort child nodes by (sub) contents or attributes.
*
* Version: 1.0.4
*
* Copyright (c) 2008 Ron Valstar
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* description
* - A plugin to sort child nodes by (sub) contents or attributes.
*
* Usage:
* $("ul#people>li").tsort();
* $("ul#people>li").tsort("span.surname");
* $("ul#people>li").tsort("span.surname",{order:"desc"});
* $("ul#people>li").tsort({place:"end"});
*
* Change default like so:
* $.tinysort.defaults.order = "desc";
*
* in this update:
* - changed setArray to pushStack
*
* in last update:
* - tested with jQuery 1.4.1
* - correct isNum return
*
* Todos
* - fix mixed literal/numeral values
* - determine if I have to use pushStack or pushStack
*
*/
;(function($) {
// default settings
$.tinysort = {
id: "TinySort"
,version: "1.0.4"
,defaults: {
order: "asc" // order: asc, desc or rand
,attr: "" // order by attribute value
,place: "start" // place ordered elements at position: start, end, org (original position), first
,returns: false // return all elements or only the sorted ones (true/false)
}
};
$.fn.extend({
tinysort: function(_find,_settings) {
if (_find&&typeof(_find)!="string") {
_settings = _find;
_find = null;
}
var oSettings = $.extend({}, $.tinysort.defaults, _settings);
var oElements = {}; // contains sortable- and non-sortable list per parent
this.each(function(i) {
// element or sub selection
var mElm = (!_find||_find=="")?$(this):$(this).find(_find);
// text or attribute value
var sSort = oSettings.order=="rand"?""+Math.random():(oSettings.attr==""?mElm.text():mElm.attr(oSettings.attr));
// to sort or not to sort
var mParent = $(this).parent();
if (!oElements[mParent]) oElements[mParent] = {s:[],n:[]}; // s: sort, n: not sort
if (mElm.length>0) oElements[mParent].s.push({s:sSort,e:$(this),n:i}); // s:string, e:element, n:number
else oElements[mParent].n.push({e:$(this),n:i});
});
//
// sort
for (var sParent in oElements) {
var oParent = oElements[sParent];
oParent.s.sort(
function zeSort(a,b) {
var x = a.s.toLowerCase?a.s.toLowerCase():a.s;
var y = b.s.toLowerCase?b.s.toLowerCase():b.s;
if (isNum(a.s)&&isNum(b.s)) {
x = parseFloat(a.s);
y = parseFloat(b.s);
}
return (oSettings.order=="asc"?1:-1)*(xy?1:0));
}
);
}
//
// order elements and fill new order
var aNewOrder = [];
for (var sParent in oElements) {
var oParent = oElements[sParent];
var aOrg = []; // list for original position
var iLow = $(this).length;
switch (oSettings.place) {
case "first": $.each(oParent.s,function(i,obj) { iLow = Math.min(iLow,obj.n) }); break;
case "org": $.each(oParent.s,function(i,obj) { aOrg.push(obj.n) }); break;
case "end": iLow = oParent.n.length; break;
default: iLow = 0;
}
var aCnt = [0,0]; // count how much we've sorted for retreival from either the sort list or the non-sort list (oParent.s/oParent.n)
for (var i=0;i<$(this).length;i++) {
var bSList = i>=iLow&&i0?x[1]:false;
};
// array contains
function contains(a,n) {
var bInside = false;
$.each(a,function(i,m) {
if (!bInside) bInside = m==n;
});
return bInside;
};
// set functions
$.fn.TinySort = $.fn.Tinysort = $.fn.tsort = $.fn.tinysort;
})(jQuery);/*
* jQuery validation plug-in 1.5.5
*
* http://bassistance.de/jquery-plugins/jquery-plugin-validation/
* http://docs.jquery.com/Plugins/Validation
*
* Copyright (c) 2006 - 2008 Jörn Zaefferer
*
* $Id: jquery.validate.js 6403 2009-06-17 14:27:16Z joern.zaefferer $
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
(function($) {
$.extend($.fn, {
// http://docs.jquery.com/Plugins/Validation/validate
validate: function( options ) {
// if nothing is selected, return nothing; can't chain anyway
if (!this.length) {
options && options.debug && window.console && console.warn( "nothing selected, can't validate, returning nothing" );
return;
}
// check if a validator for this form was already created
var validator = $.data(this[0], 'validator');
if ( validator ) {
return validator;
}
validator = new $.validator( options, this[0] );
$.data(this[0], 'validator', validator);
if ( validator.settings.onsubmit ) {
// allow suppresing validation by adding a cancel class to the submit button
this.find("input, button").filter(".cancel").click(function() {
validator.cancelSubmit = true;
});
// when a submitHandler is used, capture the submitting button
if (validator.settings.submitHandler) {
this.find("input, button").filter(":submit").click(function() {
validator.submitButton = this;
});
}
// validate the form on submit
this.submit( function( event ) {
if ( validator.settings.debug )
// prevent form submit to be able to see console output
event.preventDefault();
function handle() {
if ( validator.settings.submitHandler ) {
if (validator.submitButton) {
// insert a hidden input as a replacement for the missing submit button
var hidden = $("").attr("name", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);
}
validator.settings.submitHandler.call( validator, validator.currentForm );
if (validator.submitButton) {
// and clean up afterwards; thanks to no-block-scope, hidden can be referenced
hidden.remove();
}
return false;
}
return true;
}
// prevent submit for invalid forms or custom submit handlers
if ( validator.cancelSubmit ) {
validator.cancelSubmit = false;
return handle();
}
if ( validator.form() ) {
if ( validator.pendingRequest ) {
validator.formSubmitted = true;
return false;
}
return handle();
} else {
validator.focusInvalid();
return false;
}
});
}
return validator;
},
// http://docs.jquery.com/Plugins/Validation/valid
valid: function() {
if ( $(this[0]).is('form')) {
return this.validate().form();
} else {
var valid = true;
var validator = $(this[0].form).validate();
this.each(function() {
valid &= validator.element(this);
});
return valid;
}
},
// attributes: space seperated list of attributes to retrieve and remove
removeAttrs: function(attributes) {
var result = {},
$element = this;
$.each(attributes.split(/\s/), function(index, value) {
result[value] = $element.attr(value);
$element.removeAttr(value);
});
return result;
},
// http://docs.jquery.com/Plugins/Validation/rules
rules: function(command, argument) {
var element = this[0];
if (command) {
var settings = $.data(element.form, 'validator').settings;
var staticRules = settings.rules;
var existingRules = $.validator.staticRules(element);
switch(command) {
case "add":
$.extend(existingRules, $.validator.normalizeRule(argument));
staticRules[element.name] = existingRules;
if (argument.messages)
settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );
break;
case "remove":
if (!argument) {
delete staticRules[element.name];
return existingRules;
}
var filtered = {};
$.each(argument.split(/\s/), function(index, method) {
filtered[method] = existingRules[method];
delete existingRules[method];
});
return filtered;
}
}
var data = $.validator.normalizeRules(
$.extend(
{},
$.validator.metadataRules(element),
$.validator.classRules(element),
$.validator.attributeRules(element),
$.validator.staticRules(element)
), element);
// make sure required is at front
if (data.required) {
var param = data.required;
delete data.required;
data = $.extend({required: param}, data);
}
return data;
}
});
// Custom selectors
$.extend($.expr[":"], {
// http://docs.jquery.com/Plugins/Validation/blank
blank: function(a) {return !$.trim(a.value);},
// http://docs.jquery.com/Plugins/Validation/filled
filled: function(a) {return !!$.trim(a.value);},
// http://docs.jquery.com/Plugins/Validation/unchecked
unchecked: function(a) {return !a.checked;}
});
// constructor for validator
$.validator = function( options, form ) {
this.settings = $.extend( {}, $.validator.defaults, options );
this.currentForm = form;
this.init();
};
$.validator.format = function(source, params) {
if ( arguments.length == 1 )
return function() {
var args = $.makeArray(arguments);
args.unshift(source);
return $.validator.format.apply( this, args );
};
if ( arguments.length > 2 && params.constructor != Array ) {
params = $.makeArray(arguments).slice(1);
}
if ( params.constructor != Array ) {
params = [ params ];
}
$.each(params, function(i, n) {
source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
});
return source;
};
$.extend($.validator, {
defaults: {
messages: {},
groups: {},
rules: {},
errorClass: "error",
validClass: "valid",
errorElement: "label",
focusInvalid: true,
errorContainer: $( [] ),
errorLabelContainer: $( [] ),
onsubmit: true,
ignore: [],
ignoreTitle: false,
onfocusin: function(element) {
this.lastActive = element;
// hide error label and remove error class on focus if enabled
if ( this.settings.focusCleanup && !this.blockFocusCleanup ) {
this.settings.unhighlight && this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
this.errorsFor(element).hide();
}
},
onfocusout: function(element) {
if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {
this.element(element);
}
},
onkeyup: function(element) {
if ( element.name in this.submitted || element == this.lastElement ) {
this.element(element);
}
},
onclick: function(element) {
if ( element.name in this.submitted )
this.element(element);
},
highlight: function( element, errorClass, validClass ) {
$(element).addClass(errorClass).removeClass(validClass);
},
unhighlight: function( element, errorClass, validClass ) {
$(element).removeClass(errorClass).addClass(validClass);
}
},
// http://docs.jquery.com/Plugins/Validation/Validator/setDefaults
setDefaults: function(settings) {
$.extend( $.validator.defaults, settings );
},
messages: {
required: "This field is required.",
remote: "Please fix this field.",
email: "Please enter a valid email address.",
url: "Please enter a valid URL.",
date: "Please enter a valid date.",
dateISO: "Please enter a valid date (ISO).",
dateDE: "Bitte geben Sie ein gültiges Datum ein.",
number: "Please enter a valid number.",
numberDE: "Bitte geben Sie eine Nummer ein.",
digits: "Please enter only digits",
creditcard: "Please enter a valid credit card number.",
equalTo: "Please enter the same value again.",
accept: "Please enter a value with a valid extension.",
maxlength: $.validator.format("Please enter no more than {0} characters."),
minlength: $.validator.format("Please enter at least {0} characters."),
rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
range: $.validator.format("Please enter a value between {0} and {1}."),
max: $.validator.format("Please enter a value less than or equal to {0}."),
min: $.validator.format("Please enter a value greater than or equal to {0}.")
},
autoCreateRanges: false,
prototype: {
init: function() {
this.labelContainer = $(this.settings.errorLabelContainer);
this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);
this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );
this.submitted = {};
this.valueCache = {};
this.pendingRequest = 0;
this.pending = {};
this.invalid = {};
this.reset();
var groups = (this.groups = {});
$.each(this.settings.groups, function(key, value) {
$.each(value.split(/\s/), function(index, name) {
groups[name] = key;
});
});
var rules = this.settings.rules;
$.each(rules, function(key, value) {
rules[key] = $.validator.normalizeRule(value);
});
function delegate(event) {
var validator = $.data(this[0].form, "validator");
validator.settings["on" + event.type] && validator.settings["on" + event.type].call(validator, this[0] );
}
$(this.currentForm)
.delegate("focusin focusout keyup", ":text, :password, :file, select, textarea", delegate)
.delegate("click", ":radio, :checkbox", delegate);
if (this.settings.invalidHandler)
$(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler);
},
// http://docs.jquery.com/Plugins/Validation/Validator/form
form: function() {
this.checkForm();
$.extend(this.submitted, this.errorMap);
this.invalid = $.extend({}, this.errorMap);
if (!this.valid())
$(this.currentForm).triggerHandler("invalid-form", [this]);
this.showErrors();
return this.valid();
},
checkForm: function() {
this.prepareForm();
for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
this.check( elements[i] );
}
return this.valid();
},
// http://docs.jquery.com/Plugins/Validation/Validator/element
element: function( element ) {
element = this.clean( element );
this.lastElement = element;
this.prepareElement( element );
this.currentElements = $(element);
var result = this.check( element );
if ( result ) {
delete this.invalid[element.name];
} else {
this.invalid[element.name] = true;
}
if ( !this.numberOfInvalids() ) {
// Hide error containers on last error
this.toHide = this.toHide.add( this.containers );
}
this.showErrors();
return result;
},
// http://docs.jquery.com/Plugins/Validation/Validator/showErrors
showErrors: function(errors) {
if(errors) {
// add items to error list and map
$.extend( this.errorMap, errors );
this.errorList = [];
for ( var name in errors ) {
this.errorList.push({
message: errors[name],
element: this.findByName(name)[0]
});
}
// remove items from success list
this.successList = $.grep( this.successList, function(element) {
return !(element.name in errors);
});
}
this.settings.showErrors
? this.settings.showErrors.call( this, this.errorMap, this.errorList )
: this.defaultShowErrors();
},
// http://docs.jquery.com/Plugins/Validation/Validator/resetForm
resetForm: function() {
if ( $.fn.resetForm )
$( this.currentForm ).resetForm();
this.submitted = {};
this.prepareForm();
this.hideErrors();
this.elements().removeClass( this.settings.errorClass );
},
numberOfInvalids: function() {
return this.objectLength(this.invalid);
},
objectLength: function( obj ) {
var count = 0;
for ( var i in obj )
count++;
return count;
},
hideErrors: function() {
this.addWrapper( this.toHide ).hide();
},
valid: function() {
return this.size() == 0;
},
size: function() {
return this.errorList.length;
},
focusInvalid: function() {
if( this.settings.focusInvalid ) {
try {
$(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter(":visible").focus();
} catch(e) {
// ignore IE throwing errors when focusing hidden elements
}
}
},
findLastActive: function() {
var lastActive = this.lastActive;
return lastActive && $.grep(this.errorList, function(n) {
return n.element.name == lastActive.name;
}).length == 1 && lastActive;
},
elements: function() {
var validator = this,
rulesCache = {};
// select all valid inputs inside the form (no submit or reset buttons)
// workaround $Query([]).add until http://dev.jquery.com/ticket/2114 is solved
return $([]).add(this.currentForm.elements)
.filter(":input")
.not(":submit, :reset, :image, [disabled]")
.not( this.settings.ignore )
.filter(function() {
!this.name && validator.settings.debug && window.console && console.error( "%o has no name assigned", this);
// select only the first element for each name, and only those with rules specified
if ( this.name in rulesCache || !validator.objectLength($(this).rules()) )
return false;
rulesCache[this.name] = true;
return true;
});
},
clean: function( selector ) {
return $( selector )[0];
},
errors: function() {
return $( this.settings.errorElement + "." + this.settings.errorClass, this.errorContext );
},
reset: function() {
this.successList = [];
this.errorList = [];
this.errorMap = {};
this.toShow = $([]);
this.toHide = $([]);
this.formSubmitted = false;
this.currentElements = $([]);
},
prepareForm: function() {
this.reset();
this.toHide = this.errors().add( this.containers );
},
prepareElement: function( element ) {
this.reset();
this.toHide = this.errorsFor(element);
},
check: function( element ) {
element = this.clean( element );
// if radio/checkbox, validate first element in group instead
if (this.checkable(element)) {
element = this.findByName( element.name )[0];
}
var rules = $(element).rules();
var dependencyMismatch = false;
for( method in rules ) {
var rule = { method: method, parameters: rules[method] };
try {
var result = $.validator.methods[method].call( this, element.value.replace(/\r/g, ""), element, rule.parameters );
// if a method indicates that the field is optional and therefore valid,
// don't mark it as valid when there are no other rules
if ( result == "dependency-mismatch" ) {
dependencyMismatch = true;
continue;
}
dependencyMismatch = false;
if ( result == "pending" ) {
this.toHide = this.toHide.not( this.errorsFor(element) );
return;
}
if( !result ) {
this.formatAndAdd( element, rule );
return false;
}
} catch(e) {
this.settings.debug && window.console && console.log("exception occured when checking element " + element.id
+ ", check the '" + rule.method + "' method");
throw e;
}
}
if (dependencyMismatch)
return;
if ( this.objectLength(rules) )
this.successList.push(element);
return true;
},
// return the custom message for the given element and validation method
// specified in the element's "messages" metadata
customMetaMessage: function(element, method) {
if (!$.metadata)
return;
var meta = this.settings.meta
? $(element).metadata()[this.settings.meta]
: $(element).metadata();
return meta && meta.messages && meta.messages[method];
},
// return the custom message for the given element name and validation method
customMessage: function( name, method ) {
var m = this.settings.messages[name];
return m && (m.constructor == String
? m
: m[method]);
},
// return the first defined argument, allowing empty strings
findDefined: function() {
for(var i = 0; i < arguments.length; i++) {
if (arguments[i] !== undefined)
return arguments[i];
}
return undefined;
},
defaultMessage: function( element, method) {
return this.findDefined(
this.customMessage( element.name, method ),
this.customMetaMessage( element, method ),
// title is never undefined, so handle empty string as undefined
!this.settings.ignoreTitle && element.title || undefined,
$.validator.messages[method],
"Warning: No message defined for " + element.name + ""
);
},
formatAndAdd: function( element, rule ) {
var message = this.defaultMessage( element, rule.method );
if ( typeof message == "function" )
message = message.call(this, rule.parameters, element);
this.errorList.push({
message: message,
element: element
});
this.errorMap[element.name] = message;
this.submitted[element.name] = message;
},
addWrapper: function(toToggle) {
if ( this.settings.wrapper )
toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
return toToggle;
},
defaultShowErrors: function() {
for ( var i = 0; this.errorList[i]; i++ ) {
var error = this.errorList[i];
this.settings.highlight && this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
this.showLabel( error.element, error.message );
}
if( this.errorList.length ) {
this.toShow = this.toShow.add( this.containers );
}
if (this.settings.success) {
for ( var i = 0; this.successList[i]; i++ ) {
this.showLabel( this.successList[i] );
}
}
if (this.settings.unhighlight) {
for ( var i = 0, elements = this.validElements(); elements[i]; i++ ) {
this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );
}
}
this.toHide = this.toHide.not( this.toShow );
this.hideErrors();
this.addWrapper( this.toShow ).show();
},
validElements: function() {
return this.currentElements.not(this.invalidElements());
},
invalidElements: function() {
return $(this.errorList).map(function() {
return this.element;
});
},
showLabel: function(element, message) {
var label = this.errorsFor( element );
if ( label.length ) {
// refresh error/success class
label.removeClass().addClass( this.settings.errorClass );
// check if we have a generated label, replace the message then
label.attr("generated") && label.html(message);
} else {
// create label
label = $("<" + this.settings.errorElement + "/>")
.attr({"for": this.idOrName(element), generated: true})
.addClass(this.settings.errorClass)
.html(message || "");
if ( this.settings.wrapper ) {
// make sure the element is visible, even in IE
// actually showing the wrapped element is handled elsewhere
label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
}
if ( !this.labelContainer.append(label).length )
this.settings.errorPlacement
? this.settings.errorPlacement(label, $(element) )
: label.insertAfter(element);
}
if ( !message && this.settings.success ) {
label.text("");
typeof this.settings.success == "string"
? label.addClass( this.settings.success )
: this.settings.success( label );
}
this.toShow = this.toShow.add(label);
},
errorsFor: function(element) {
return this.errors().filter("[for='" + this.idOrName(element) + "']");
},
idOrName: function(element) {
return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);
},
checkable: function( element ) {
return /radio|checkbox/i.test(element.type);
},
findByName: function( name ) {
// select by name and filter by form for performance over form.find("[name=...]")
var form = this.currentForm;
return $(document.getElementsByName(name)).map(function(index, element) {
return element.form == form && element.name == name && element || null;
});
},
getLength: function(value, element) {
switch( element.nodeName.toLowerCase() ) {
case 'select':
return $("option:selected", element).length;
case 'input':
if( this.checkable( element) )
return this.findByName(element.name).filter(':checked').length;
}
return value.length;
},
depend: function(param, element) {
return this.dependTypes[typeof param]
? this.dependTypes[typeof param](param, element)
: true;
},
dependTypes: {
"boolean": function(param, element) {
return param;
},
"string": function(param, element) {
return !!$(param, element.form).length;
},
"function": function(param, element) {
return param(element);
}
},
optional: function(element) {
return !$.validator.methods.required.call(this, $.trim(element.value), element) && "dependency-mismatch";
},
startRequest: function(element) {
if (!this.pending[element.name]) {
this.pendingRequest++;
this.pending[element.name] = true;
}
},
stopRequest: function(element, valid) {
this.pendingRequest--;
// sometimes synchronization fails, make sure pendingRequest is never < 0
if (this.pendingRequest < 0)
this.pendingRequest = 0;
delete this.pending[element.name];
if ( valid && this.pendingRequest == 0 && this.formSubmitted && this.form() ) {
$(this.currentForm).submit();
} else if (!valid && this.pendingRequest == 0 && this.formSubmitted) {
$(this.currentForm).triggerHandler("invalid-form", [this]);
}
},
previousValue: function(element) {
return $.data(element, "previousValue") || $.data(element, "previousValue", previous = {
old: null,
valid: true,
message: this.defaultMessage( element, "remote" )
});
}
},
classRuleSettings: {
required: {required: true},
email: {email: true},
url: {url: true},
date: {date: true},
dateISO: {dateISO: true},
dateDE: {dateDE: true},
number: {number: true},
numberDE: {numberDE: true},
digits: {digits: true},
creditcard: {creditcard: true}
},
addClassRules: function(className, rules) {
className.constructor == String ?
this.classRuleSettings[className] = rules :
$.extend(this.classRuleSettings, className);
},
classRules: function(element) {
var rules = {};
var classes = $(element).attr('class');
classes && $.each(classes.split(' '), function() {
if (this in $.validator.classRuleSettings) {
$.extend(rules, $.validator.classRuleSettings[this]);
}
});
return rules;
},
attributeRules: function(element) {
var rules = {};
var $element = $(element);
for (method in $.validator.methods) {
var value = $element.attr(method);
if (value) {
rules[method] = value;
}
}
// maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs
if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {
delete rules.maxlength;
}
return rules;
},
metadataRules: function(element) {
if (!$.metadata) return {};
var meta = $.data(element.form, 'validator').settings.meta;
return meta ?
$(element).metadata()[meta] :
$(element).metadata();
},
staticRules: function(element) {
var rules = {};
var validator = $.data(element.form, 'validator');
if (validator.settings.rules) {
rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};
}
return rules;
},
normalizeRules: function(rules, element) {
// handle dependency check
$.each(rules, function(prop, val) {
// ignore rule when param is explicitly false, eg. required:false
if (val === false) {
delete rules[prop];
return;
}
if (val.param || val.depends) {
var keepRule = true;
switch (typeof val.depends) {
case "string":
keepRule = !!$(val.depends, element.form).length;
break;
case "function":
keepRule = val.depends.call(element, element);
break;
}
if (keepRule) {
rules[prop] = val.param !== undefined ? val.param : true;
} else {
delete rules[prop];
}
}
});
// evaluate parameters
$.each(rules, function(rule, parameter) {
rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;
});
// clean number parameters
$.each(['minlength', 'maxlength', 'min', 'max'], function() {
if (rules[this]) {
rules[this] = Number(rules[this]);
}
});
$.each(['rangelength', 'range'], function() {
if (rules[this]) {
rules[this] = [Number(rules[this][0]), Number(rules[this][1])];
}
});
if ($.validator.autoCreateRanges) {
// auto-create ranges
if (rules.min && rules.max) {
rules.range = [rules.min, rules.max];
delete rules.min;
delete rules.max;
}
if (rules.minlength && rules.maxlength) {
rules.rangelength = [rules.minlength, rules.maxlength];
delete rules.minlength;
delete rules.maxlength;
}
}
// To support custom messages in metadata ignore rule methods titled "messages"
if (rules.messages) {
delete rules.messages
}
return rules;
},
// Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
normalizeRule: function(data) {
if( typeof data == "string" ) {
var transformed = {};
$.each(data.split(/\s/), function() {
transformed[this] = true;
});
data = transformed;
}
return data;
},
// http://docs.jquery.com/Plugins/Validation/Validator/addMethod
addMethod: function(name, method, message) {
$.validator.methods[name] = method;
$.validator.messages[name] = message || $.validator.messages[name];
if (method.length < 3) {
$.validator.addClassRules(name, $.validator.normalizeRule(name));
}
},
methods: {
// http://docs.jquery.com/Plugins/Validation/Methods/required
required: function(value, element, param) {
// check if dependency is met
if ( !this.depend(param, element) )
return "dependency-mismatch";
switch( element.nodeName.toLowerCase() ) {
case 'select':
var options = $("option:selected", element);
return options.length > 0 && ( element.type == "select-multiple" || ($.browser.msie && !(options[0].attributes['value'].specified) ? options[0].text : options[0].value).length > 0);
case 'input':
if ( this.checkable(element) )
return this.getLength(value, element) > 0;
default:
return $.trim(value).length > 0;
}
},
// http://docs.jquery.com/Plugins/Validation/Methods/remote
remote: function(value, element, param) {
if ( this.optional(element) )
return "dependency-mismatch";
var previous = this.previousValue(element);
if (!this.settings.messages[element.name] )
this.settings.messages[element.name] = {};
this.settings.messages[element.name].remote = typeof previous.message == "function" ? previous.message(value) : previous.message;
param = typeof param == "string" && {url:param} || param;
if ( previous.old !== value ) {
previous.old = value;
var validator = this;
this.startRequest(element);
var data = {};
data[element.name] = value;
$.ajax($.extend(true, {
url: param,
mode: "abort",
port: "validate" + element.name,
dataType: "json",
data: data,
success: function(response) {
var valid = response === true;
if ( valid ) {
var submitted = validator.formSubmitted;
validator.prepareElement(element);
validator.formSubmitted = submitted;
validator.successList.push(element);
validator.showErrors();
} else {
var errors = {};
errors[element.name] = previous.message = response || validator.defaultMessage( element, "remote" );
validator.showErrors(errors);
}
previous.valid = valid;
validator.stopRequest(element, valid);
}
}, param));
return "pending";
} else if( this.pending[element.name] ) {
return "pending";
}
return previous.valid;
},
// http://docs.jquery.com/Plugins/Validation/Methods/minlength
minlength: function(value, element, param) {
return this.optional(element) || this.getLength($.trim(value), element) >= param;
},
// http://docs.jquery.com/Plugins/Validation/Methods/maxlength
maxlength: function(value, element, param) {
return this.optional(element) || this.getLength($.trim(value), element) <= param;
},
// http://docs.jquery.com/Plugins/Validation/Methods/rangelength
rangelength: function(value, element, param) {
var length = this.getLength($.trim(value), element);
return this.optional(element) || ( length >= param[0] && length <= param[1] );
},
// http://docs.jquery.com/Plugins/Validation/Methods/min
min: function( value, element, param ) {
return this.optional(element) || value >= param;
},
// http://docs.jquery.com/Plugins/Validation/Methods/max
max: function( value, element, param ) {
return this.optional(element) || value <= param;
},
// http://docs.jquery.com/Plugins/Validation/Methods/range
range: function( value, element, param ) {
return this.optional(element) || ( value >= param[0] && value <= param[1] );
},
// http://docs.jquery.com/Plugins/Validation/Methods/email
email: function(value, element) {
// contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
},
// http://docs.jquery.com/Plugins/Validation/Methods/url
url: function(value, element) {
// contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/
return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
},
// http://docs.jquery.com/Plugins/Validation/Methods/date
date: function(value, element) {
return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
},
// http://docs.jquery.com/Plugins/Validation/Methods/dateISO
dateISO: function(value, element) {
return this.optional(element) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value);
},
// http://docs.jquery.com/Plugins/Validation/Methods/dateDE
dateDE: function(value, element) {
return this.optional(element) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value);
},
// http://docs.jquery.com/Plugins/Validation/Methods/number
number: function(value, element) {
return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);
},
// http://docs.jquery.com/Plugins/Validation/Methods/numberDE
numberDE: function(value, element) {
return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
},
// http://docs.jquery.com/Plugins/Validation/Methods/digits
digits: function(value, element) {
return this.optional(element) || /^\d+$/.test(value);
},
// http://docs.jquery.com/Plugins/Validation/Methods/creditcard
// based on http://en.wikipedia.org/wiki/Luhn
creditcard: function(value, element) {
if ( this.optional(element) )
return "dependency-mismatch";
// accept only digits and dashes
if (/[^0-9-]+/.test(value))
return false;
var nCheck = 0,
nDigit = 0,
bEven = false;
value = value.replace(/\D/g, "");
for (n = value.length - 1; n >= 0; n--) {
var cDigit = value.charAt(n);
var nDigit = parseInt(cDigit, 10);
if (bEven) {
if ((nDigit *= 2) > 9)
nDigit -= 9;
}
nCheck += nDigit;
bEven = !bEven;
}
return (nCheck % 10) == 0;
},
// http://docs.jquery.com/Plugins/Validation/Methods/accept
accept: function(value, element, param) {
param = typeof param == "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif";
return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i"));
},
// http://docs.jquery.com/Plugins/Validation/Methods/equalTo
equalTo: function(value, element, param) {
return value == $(param).val();
}
}
});
// deprecated, use $.validator.format instead
$.format = $.validator.format;
})(jQuery);
// ajax mode: abort
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
;(function($) {
var ajax = $.ajax;
var pendingRequests = {};
$.ajax = function(settings) {
// create settings for compatibility with ajaxSetup
settings = $.extend(settings, $.extend({}, $.ajaxSettings, settings));
var port = settings.port;
if (settings.mode == "abort") {
if ( pendingRequests[port] ) {
pendingRequests[port].abort();
}
return (pendingRequests[port] = ajax.apply(this, arguments));
}
return ajax.apply(this, arguments);
};
})(jQuery);
// provides cross-browser focusin and focusout events
// IE has native support, in other browsers, use event caputuring (neither bubbles)
// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation
// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target
// provides triggerEvent(type: String, target: Element) to trigger delegated events
;(function($) {
$.each({
focus: 'focusin',
blur: 'focusout'
}, function( original, fix ){
$.event.special[fix] = {
setup:function() {
if ( $.browser.msie ) return false;
this.addEventListener( original, $.event.special[fix].handler, true );
},
teardown:function() {
if ( $.browser.msie ) return false;
this.removeEventListener( original,
$.event.special[fix].handler, true );
},
handler: function(e) {
arguments[0] = $.event.fix(e);
arguments[0].type = fix;
return $.event.handle.apply(this, arguments);
}
};
});
$.extend($.fn, {
delegate: function(type, delegate, handler) {
return this.bind(type, function(event) {
var target = $(event.target);
if (target.is(delegate)) {
return handler.apply(target, arguments);
}
});
},
triggerEvent: function(type, target) {
return this.triggerHandler(type, [$.event.fix({ type: type, target: target })]);
}
})
})(jQuery);
$(document).ready(function(){
$("#invia").click(function(){
//Recuperiamo tutte le variabili
var valid = '';
var isr = ' è richiesto.';
var name = $("#nome").val();
var mail = $("#email").val();
var subject = $("#oggetto").val();
var messaggio = $("#messaggio").val();
//Eseguiamo una serie di controlli
if (name.length<1) {
valid += '
Un nome valido'+isr;
}
if (!mail.match(/^([a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,4}$)/i)) {
valid += '
Un indirizzo e-mail valido'+isr;
}
if (subject.length<1) {
valid += '
Un oggetto valido'+isr;
}
//Se i controlli non vengono superati, appare il messaggio di errore.
if (valid!='') {
$("#risposta").fadeIn("slow");
$("#risposta").html("
Errore:
"+valid);
$("#risposta").css("background-color","#ffc0c0");
}
//Se i controlli vengono superati, compare un messaggio di invio in corso
else {
var datastr ='name=' + name + '&mail=' + mail + '&subject=' + subject + '&messaggio=' + encodeURIComponent(messaggio);
$("#risposta").css("display", "block");
$("#risposta").css("background-color","#FFFFA0");
$("#risposta").html("
Invio del messaggio in corso..
");
$("#risposta").fadeIn("slow");
setTimeout("send('"+datastr+"')",2000);
}
return false;
});
});
//Creazione della funzione di invio. Si baserà sul nostro file php "mail.php".
function send(datastr){
$.ajax({
type: "POST",
url: "http://www.mollyflex.it/cms/inclusioni/mail.php",
data: datastr,
cache: false,
success: function(html){
$("#risposta").fadeIn("slow");
$("#risposta").html(html);
$("#risposta").css("background-color","#e1ffc0");
setTimeout('$("#risposta").fadeOut("slow")',2000);
}
});
}
var MeOnTheMap = function(options){
this.options = {
address : "",
container : "",
defaultUI : true,
noDragging : false,
html : "",
zoomLevel : 16,
view : 0
};
this.preloads = [];
this.initialize = function(options) {
for (var opt in options){
this.options[opt] = options[opt];
}
this.preparePreloading();
this.container = document.getElementById(this.options.container);
if (!this.container) {
alert("Could not locate \"" + this.options.container + "\"");
return;
}
this.findLocation();
};
this.preparePreloading = function(){
var regxp = new RegExp('(src)=("[^"]*")','g');
var sources = this.options.html.match(regxp);
if (!sources)
return;
function getHandler(obj) {
return function(){
var el = document.getElementById(obj.id);
if (el){
el.parentNode.replaceChild(this, el);
obj.marker.tooltip.redraw(true);
}
};
};
for (var i = 0; i < sources.length; i++){
this.options.html = this.options.html.replace(sources[i],"style=\"visibility:visible\" id=\"preloadimg" + i + "\" src=\"\"");
var src = sources[0].split("=\"")[1];
src = src.substring(0,src.length - 1);
var img = new Image();
this.preloads.push({
element: img,
src: src,
id: "preloadimg" + i
});
img.onload = getHandler(this.preloads[this.preloads.length - 1]);
}
};
this.startPreloading = function(marker, map){
for (var i = 0; i < this.preloads.length; i++) {
this.preloads[i].marker = marker;
this.preloads[i].map = map;
this.preloads[i].element.src = this.preloads[i].src;
}
};
this.findLocation = function() {
var _this = this;
this.geoLocator = new GClientGeocoder();
this.geoLocator.getLatLng(this.options.address, function(response){
_this.handleGetLocatorResponse(response);
});
};
this.getIcon = function() {
var icon = new GIcon(G_DEFAULT_ICON);
icon.image = ind_1+"immagini/mappa/icon.png";
icon.shadow = ind_1+"immagini/mappa/shadow.png";
icon.iconSize = new GSize(35,35);
icon.shadowSize = new GSize(52, 35);
icon.iconAnchor = new GPoint(17, 35);
return icon;
};
this.handleGetLocatorResponse = function(response){
this.geoLocator = null;
if(!response) {
alert("Could not resolve this addess \"" + this.options.address + "\"");
return;
}
var type = "";
switch (this.options.view) {
case 1 : type = G_SATELLITE_MAP; break;
case 2 : type = G_HYBRID_MAP; break;
default : type = G_NORMAL_MAP; break;
}
this.map = new GMap2(this.container);
this.map.setMapType(type);
this.map.setCenter(response, this.options.zoomLevel);
this.map.disableScrollWheelZoom();
if (this.options.noDragging)
this.map.disableDragging();
if (this.options.defaultUI)
this.map.setUIToDefault();
this.marker = new GMarker(response,{icon: this.getIcon()});
this.map.addOverlay(this.marker);
if (!this.options.html || this.options.html == "")
return;
this.marker.tooltip = new Tooltip(this.marker, this.options.html);
this.map.addOverlay(this.marker.tooltip);
this.marker.tooltip.show();
if (this.newCenter) {
var markerPos = this.map.fromLatLngToDivPixel(this.marker.getPoint());
var pos = this.map.fromContainerPixelToLatLng({
x: markerPos.x + this.newCenter.x,
y: markerPos.y + this.newCenter.y
});
this.map.setCenter(pos);
}
this.startPreloading(this.marker, this.map);
};
this.adjustMapCenter = function(position){
if (!this.geoLocator && this.map){
var markerPos = this.map.fromLatLngToDivPixel(this.marker.getPoint());
var pos = this.map.fromContainerPixelToLatLng({
x: markerPos.x + position.x,
y: markerPos.y + position.y
});
this.map.setCenter(pos);
} else {
this.newCenter = position;
}
};
this.initialize(options);
};
function Tooltip(marker, text){
this.isIE6 = function(){
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
var ieversion = new Number(RegExp.$1);
return (ieversion == 6);
}
return false;
};
this.initialize = function(map){
this.map = map;
this.div = document.createElement("div");
var top = document.createElement("div"); top .className = "top" + ((this.isIE6()) ? " IE6" : "");
var middle = document.createElement("div"); middle.className = "middle" + ((this.isIE6()) ? " MIDDLEIE6" : "");
var bottom = document.createElement("div"); bottom.className = "bottom" + ((this.isIE6()) ? " BOTTOMIE6" : "");
middle.innerHTML = text;
this.div.appendChild(top );
this.div.appendChild(middle);
this.div.appendChild(bottom);
this.div.className = 'tooltip';
this.div.style.position = 'absolute';
this.div.style.visibility = 'hidden';
map.getPane(G_MAP_FLOAT_PANE).appendChild(this.div);
};
this.remove = function(){
this.div.parentNode.removeChild(this.div);
};
this.copy = function(){
return new Tooltip(this.marker, this.text, this.padding);
};
this.redraw = function(force){
if (!force)
return;
var markerPos = this.map.fromLatLngToDivPixel(this.marker.getPoint());
var iconAnchor = this.marker.getIcon().iconAnchor;
var xPos = (markerPos.x - (this.div.offsetWidth / 2));
var yPos = markerPos.y - iconAnchor.y - this.div.offsetHeight;
this.div.style.top = yPos + 'px';
this.div.style.left = xPos + 'px';
};
this.show = function(){
this.div.style.visibility = 'visible';
};
this.hide = function(){
this.div.style.visibility = 'hidden';
};
this.marker = marker;
this.text = text;
this.prototype = new GOverlay();
};// JavaScript Document$(function(){
//////////////////////////////////////////////////
// THE FOLLOWING CODE IS TAKEN FROM THE EXAMPLE //
//////////////////////////////////////////////////
(function($){
// A collection of elements to which the tripleclick event is bound.
var elems = $([]),
// Initialize the clicks counter and last-clicked timestamp.
clicks = 0,
last = 0;
// Click speed threshold, defaults to 500.
$.tripleclickThreshold = 300;
// Special event definition.
$.event.special.tripleclick = {
setup: function(){
// Add this element to the internal collection.
elems = elems.add( this );
// If this is the first element to which the event has been bound,
// bind a handler to document to catch all 'click' events.
if ( elems.length === 1 ) {
$(document).bind( 'click', click_handler );
}
},
teardown: function(){
// Remove this element from the internal collection.
elems = elems.not( this );
// If this is the last element removed, remove the document 'click'
// event handler that "powers" this special event.
if ( elems.length === 0 ) {
$(document).unbind( 'click', click_handler );
}
}
};
// This function is executed every time an element is clicked.
function click_handler( event ) {
var elem = $(event.target);
// If more than `threshold` time has passed since the last click, reset
// the clicks counter.
if ( event.timeStamp - last > $.tripleclickThreshold ) {
clicks = 0;
}
// Update the last-clicked timestamp.
last = event.timeStamp;
// Increment the clicks counter. If the counter has reached 3, trigger
// the "tripleclick" event and reset the clicks counter to 0. Trigger
// bound handlers using triggerHandler so the event doesn't propagate.
if ( ++clicks === 3 ) {
elem.trigger( 'tripleclick' );
clicks = 0;
}
};
})(jQuery);