/*
 * CSS & jQuery clickable maps plugin
 * http://winstonwolf.pl/clickable-maps
 * script version: 4.0.4 | January 17th, 2012
 * Copyright (C) 2011 Winston_Wolf | All rights reserved
*/
(function($){$.fn.cssMap=function(options){var s=$.extend({'size':'810','tooltips':true,'tooltipArrowHeight':5,'multipleClick':false,'searchUrl':'search.php','searchLink':'Search','searchLinkVar':'region','clicksLimit':0,'cities':false,'visibleList':false,'agentsListId':'','loadingText':'Loading ...','onHover':function(e){},'onClick':function(e){}},options);return this.each(function(index){if(!$(this).attr('id')){$(this).attr('id','css-map'+(index+1));} var mapContainer='#'+$(this).attr('id'),mapList=$(mapContainer).find('ul').first(),mapListClass=$(mapList).attr('class'),li=$(mapList).find('li'),wH=window.location.hash,countClicks='',cli='',allSizes='',M={init:function(){M.clearMap();$(mapContainer).addClass('css-map-container m'+s.size);var mapUrl=mapList.css('background-image').replace(/^url\("?([^\"\))]+)"?\)$/i,'$1');this.loader(mapUrl);},loader:function(mapUrl){var mapImg=new Image(),preloader=$('<span />',{'class':'map-loader',text:s.loadingText}).appendTo($(mapContainer));preloader.css({'left':'50%','margin-left':preloader.outerWidth()/-2,'margin-top':preloader.outerHeight()/-2,'top':$(mapList).outerHeight()/2});$(mapContainer).addClass('m'+s.size);$(mapList).addClass('css-map');M.agentslist.hideAgents();$(mapImg).load(function(){if($.browser.msie&&parseInt($.browser.version)<=7)var ie=true;if(s.cities&&!ie){$(mapContainer).append('<span class="cities '+mapListClass+'-cities" />');} M.regions.init();if($(s.agentsListId).length){M.agentslist.init();} if(s.multipleClick){M.searchButton();} preloader.delay(750).fadeOut('slow');}).error(function(){if(mapUrl=='none'){mapUrl=' file not found';}preloader.fadeOut();$(mapList).removeClass();$(mapContainer).prepend('<p class="map-error"><b>Map image not found!</b><br/>Check path to the map: '+mapUrl+'</p>');}).attr('src',mapUrl);},regions:{init:function(){li.each(function(){var t=$(this),lC=t.attr('class'),lA=t.children('a'),lH=$(lA).attr('href');if(typeof lH=="undefined"||lH.length<2){$(t).remove();} M.regions.createSpans($(t),lC);M.regions.copyList($(t),lC,lA,lH);M.selectRegion.init($(t),lC,lA,lH);});if(s.visibleList){M.regions.createList(cli);M.selectRegion.initVisibleList();} M.regions.autoSelectRegion();},createSpans:function(l,lC){var tmp='',spans=82;switch(mapListClass){case'deutschland':switch(lC){case'de1':case'de14':case'de16':spans=33;break;case'de3':case'de5':case'de6':case'de12':spans=9;break;case'de9':spans=64;break;case'de2':case'de4':case'de7':case'de10':spans=42;break;default:spans=25;} break;} l.prepend('<span class="m" />').append('<span class="bg" />');for(var s=1;s<spans;s++){tmp+='<span class="s'+s+'" />';} l.find('.m').append(tmp);},showTooltip:function(l){if(s.tooltips){var lA=mapList.find(l).children('a'),aMT=(lA.outerHeight()*-1)-s.tooltipArrowHeight,aML=lA.outerWidth()/-2;if($(lA).hasClass('tooltip-middle'))aMT=lA.outerHeight()/-2;if($(lA).hasClass('tooltip-top')){aMT=lA.outerHeight()/2-s.tooltipArrowHeight;} if($(lA).hasClass('tooltip-left')||$(lA).hasClass('tooltip-right'))aML=0;lA.css({'margin-left':aML,'margin-top':aMT});}},hideTooltips:function(){mapList.find('a').css('margin-top','-9999em');},copyList:function(l,lC,lA,lH){var lT=lA.html();if(typeof lH!="undefined"&&lH.length>=2){cli+='<li class="'+lC+'"><a href="'+lH+'">'+lT+'</a></li>';}},createList:function(cli){$(mapList).after('<ul class="map-visible-list">'+cli+'</ul>');},autoSelectRegion:function(){var a=$(mapContainer).find('.active-region'),lC=mapContainer+' .'+a.parent('li').attr('class');if(a.length){M.selectRegion.clicked($(lC));}}},selectRegion:{init:function(l,lC,lA,lH){var lC=mapContainer+' .'+lC,code=null;if($('base').length){lH=$('base').attr('href')+lH;} l.hover(function(){M.selectRegion.onHover($(lC));},function(){M.selectRegion.unHover($(lC));}).click(function(){M.selectRegion.clicked($(lC));if($(s.agentsListId).length||s.multipleClick){return false;}else{window.location.href=lH;}});lA.focus(function(){M.selectRegion.onHover($(lC));}).blur(function(){M.selectRegion.unHover($(lC));}).keypress(function(e){code=(e.keyCode?e.keyCode:e.which);if(code==13){M.selectRegion.clicked($(lC));if($(s.agentsListId).length||s.multipleClick){return false;}else{window.location.href=lH;}}});},initVisibleList:function(){var vLi=$(mapContainer+' .map-visible-list').find('li');vLi.each(function(){var vA=$(this).children('a'),vC=mapContainer+' .'+$(this).attr('class');vA.hover(function(){M.selectRegion.onHover($(vC));},function(){M.selectRegion.unHover($(vC));}).focus(function(){M.selectRegion.onHover($(vC));}).blur(function(){M.selectRegion.unHover($(vC));}).click(function(){M.selectRegion.clicked($(vC));return false;}).keypress(function(){code=(e.keyCode?e.keyCode:e.which);if(code==13){M.selectRegion.clicked($(vC));return false;}});});},onHover:function(e){M.regions.hideTooltips();$(mapContainer).find('.focus');M.regions.showTooltip(e);e.addClass('focus');s.onHover(e);},unHover:function(e){M.regions.hideTooltips();e.removeClass('focus');},clicked:function(e){var lA=e.children('a'),lH=lA.attr('href'),r='';if(e.hasClass('active-region')){e.removeClass('active-region').removeClass('focus');if($(s.agentsListId).length){$(s.agentsListId).find('li').hide();} countClicks--;} else{if(s.clicksLimit==0||!s.multipleClick){s.clicksLimit=Infinity;} if(s.clicksLimit==1){r='region';}else{r='regions';} if(countClicks<s.clicksLimit){if(!s.multipleClick){$(mapContainer).find('.active-region').removeClass('active-region');} e.addClass('active-region');if($(s.agentsListId).length){M.agentslist.showAgent(lH);} countClicks++;s.onClick(e);} else{alert('You can select only '+s.clicksLimit+' '+r+'!');}}},multiple:function(){var clickedRegions=[],sb=$(mapContainer).find('.map-search-link');li.each(function(){var lA=$(this).children('a'),lH=lA.attr('href'),nlH;if(/#/i.test(lH)){nlH=lH.slice(1);} else if(/&/i.test(lH)){nlH=lH.slice(lH.indexOf('?')+(s.searchLinkVar.length)+2,lH.indexOf('&'));} else{nlH=lH.slice(lH.indexOf('?')+(s.searchLinkVar.length)+2);} if($(this).hasClass('active-region')){clickedRegions.push(nlH);}});if(clickedRegions.length){sb.attr('href',s.searchUrl+'?'+s.searchLinkVar+'='+clickedRegions.join('|'));} else{sb.attr('href',s.searchUrl);}}},searchButton:function(){var sB=$('<a />',{href:s.searchUrl,'class':'map-search-link',text:s.searchLink});$(mapList).after(sB);sB.hover(function(){M.selectRegion.multiple();}).focus(function(){M.selectRegion.multiple();}).click(function(){M.selectRegion.multiple();}).keypress(function(){code=(e.keyCode?e.keyCode:e.which);if(code==13)M.selectRegion.multiple();});},agentslist:{init:function(){$(mapList).find('.active-region').each(function(){var lH=$(this).children('a').attr('href');$(s.agentsListId).find(lH).each(function(){M.agentslist.showAgent(lH);});});},showAgent:function(lH){M.agentslist.hideAgents();if($(lH).length){$(lH+','+lH+' li').show();}},hideAgents:function(){$(s.agentsListId).find('li').hide();}},clearMap:function(){for(var i=100;i<1290;i+=5){allSizes+=' m'+i;} $(mapContainer).removeClass(allSizes);$(mapList).removeClass('css-map');$(mapContainer).find('span, .map-visible-list, .map-search-link').remove();$(mapContainer).find('li').removeClass('focus').removeClass('active-region');}};M.init();});}})(jQuery);
