
(function ($) {
	/*
	 * Simple GOOOGLE API 1.0.0
	 * January 27, 2010
	 * rumbero @ http://www.netcodev.de
	 */
	$.fn.gglMap = function (options){
		var settings = $.extend({},{isShow:false,isSet:false,_map:null,_mapid:0} , options);
		var _inst = this;
		this.showmap = function(){
			var _display = (settings.isShow) ? "none" : "block";
			$(this).css('display',_display);
			if( ! settings.isSet && ! settings.isShow ){
				if (GBrowserIsCompatible()) {
					
					if(settings._size==null){
						settings._map = new GMap2(document.getElementById("googlemap"));
					}else{
						settings._map = new GMap2(document.getElementById("googlemap"),{ size: new GSize(settings._size.w,settings._size.h) });
					}
					
					var mapControl = new GMapTypeControl();
					settings._map.addControl(mapControl);
					settings._map.addControl(new GLargeMapControl());
					//settings._mapid = settings._mapdata.length-1;
					if(settings._mapdata.length > 0){
						var point = "",marker = [],i = 0;
						var i = 0;
						for( i = 0;i < settings._mapdata.length;i++){
							//if(i == 0){
								//settings._map.setCenter(new GLatLng(settings._mapdata[0]._maplatitude,settings._mapdata[0]._maplongitude),settings._zoom);
							//}
							point = new GLatLng(settings._mapdata[i]._maplatitude,settings._mapdata[i]._maplongitude);
							marker = this.createMarker(point);
							settings._map.addOverlay(marker);	
						}
						settings._map.setCenter(new GLatLng(settings._mapdata[0]._maplatitude,settings._mapdata[0]._maplongitude),settings._zoom);
						
					}
				}
				settings.isSet=true;	
			}
			settings.isShow = (settings.isShow) ? false : true;	
		}
		this.createMarker = function(point) {
			
			var markerOptions = {};
			if(settings._mapdata[settings._mapid]._id=="1"){
				//alert(settings._mapid);
				var blueIcon = new GIcon(G_DEFAULT_ICON);
	        	blueIcon.image = "http://gmaps-samples.googlecode.com/svn/trunk/markers/blue/blank.png";
	        	blueIcon.iconSize  = new GSize(25, 40);
	        	var markerOptions = { icon:blueIcon };
				var marker = new GMarker(point,markerOptions);
					
			}else{
				var marker = new GMarker(point);
			}
			var email = (settings._mapdata[settings._mapid]._email != "") ? '<br /><a href="mailTo:'+settings._mapdata[settings._mapid]._email+'">'+settings._mapdata[settings._mapid]._email+'</a>' : "";
			var www = (settings._mapdata[settings._mapid]._www!="") ? '<br /><a target="_blank" href="http://'+settings._mapdata[settings._mapid]._www+'">'+settings._mapdata[settings._mapid]._www+'<a>' : "";
			var adress = "<strong>"+settings._mapdata[settings._mapid]._agency+"</strong><br /><strong>"+settings._mapdata[settings._mapid]._contact+"</strong><br />"+settings._mapdata[settings._mapid]._street+","+settings._mapdata[settings._mapid]._streetnr+"<br />"+settings._mapdata[settings._mapid]._plz+","+settings._mapdata[settings._mapid]._city+"<br />"+settings._mapdata[settings._mapid]._countryname+"<br />"+settings._mapdata[settings._mapid]._phone+"<br />"+settings._mapdata[settings._mapid]._mobil+email+www;
			GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml('<div style="width:240px">'+adress+'<\/div>'); } );
			settings._mapid++;
			return marker;
		}

		return this;
	}
	/*
	 * Simple Image Change 1.0.0
	 * January 19, 2010
	 * rumbero @ http://www.netcodev.de
	 */
	$.fn.imageChange = function (options) {
		var defaults = {changelist:[],layer:'',ctrl:'',msg:'',actIndex:0,isfade:false,baseid:$(this).attr('id')};
		var settings = $.extend({}, defaults, options);
		var _inst = this;
		this.init = function(){
			// set base css
			$(this).addClass(settings.basecss);
			// set two divs for image layer
			$(this).append('<div id="'+settings.baseid+'_ctrl"><div class="floatL ctrlbt0"><img src="'+settings.imgctrlitem.item0+'" /></div><div class="floatL ctrltxt"><div>'+settings.imglable+'</div></div><div class="floatL ctrlbt1"><img src="'+settings.imgctrlitem.item1+'" /></div><div class="clearL"></div></div>');
			$(this).append('<div id="'+settings.baseid+'_layer"></div>');
			$(this).append('<div id="'+settings.baseid+'_msg"></div>');
			// config control layer
			settings.ctrl = $("#"+settings.baseid+"_ctrl");
			settings.ctrl.addClass(settings.ctrlcss);
			settings.ctrl.css('z-index',3);
			// config control button
			$(".ctrlbt0").click(function(){_inst.change(0)});
			$(".ctrlbt0").children("img").css('display','none');
			$(".ctrlbt1").click(function(){_inst.change(1)});
			$(".ctrlbt1").children("img").css('display','block');
			// config layer
			settings.layer = $("#"+settings.baseid+"_layer");
			if( settings.divcss!=""){settings.layer.addClass(settings.divcss);}
			settings.layer.css('z-index',2);
			// config msg
			settings.msg = $("#"+settings.baseid+"_msg");
			settings.msg.addClass(settings.msgcss);
			settings.msg.css('z-index',1);
			settings.msg.append(settings.msgtxt);
			// set first image view
			this.callfirst();
		}
		this.callfirst = function(){
			if(this.loadimg()){
				settings.layer.fadeIn(settings.fadetime);
				settings.ctrl.fadeIn(settings.fadetime);
				settings.msg.fadeIn(settings.fadetime);
				settings.changelist[settings.actIndex].fadeIn(settings.fadetime);
			}
		}
		this.loadimg = function(){
			var res = false;
			if(settings.imglist.length > 0){
				for(var i = 0;i<settings.imglist.length;i++){
					settings.layer.append('<div id="'+settings.baseid+'_img_'+i+'"><img src="'+settings.imgpath+''+settings.imglist[i]+'" /></div>');
					settings.changelist[i] = $('#'+settings.baseid+'_img_'+i);
					settings.changelist[i].addClass(settings.imgcss);
				}
				res = true;
			}
			return res;
		}
		this.change = function(moveto){
			if( ! settings.isfade){
				if(moveto && settings.actIndex < settings.imglist.length-1){
					settings.isfade = true;
					settings.changelist[settings.actIndex].fadeOut(settings.fadetime);
					settings.changelist[settings.actIndex+1].fadeIn(settings.fadetime,function(){settings.isfade=false});
					settings.actIndex++;
					if(settings.actIndex == settings.imglist.length-1){$(".ctrlbt1").children("img").fadeOut(settings.fadetime);}
					if(settings.actIndex == 1 ){
						$(".ctrlbt0").children("img").fadeIn(settings.fadetime);
					}
				}else if( ! moveto && settings.actIndex > 0){
					settings.isfade = true;
					settings.changelist[settings.actIndex].fadeOut(settings.fadetime);
					settings.changelist[settings.actIndex-1].fadeIn(settings.fadetime,function(){settings.isfade=false});
					settings.actIndex--;
					if(settings.actIndex == 0){$(".ctrlbt0").children("img").fadeOut(settings.fadetime);}
					if(settings.actIndex == settings.imglist.length-2 ){
						$(".ctrlbt1").children("img").fadeIn(settings.fadetime);
					}
				}
			}
		}
		return this;
	}
	/*
	 * Simple Image Fader 1.0.0
	 * January 19, 2010
	 * rumbero @ http://www.netcodev.de
	 */	
	$.fn.imageFader = function (options) {
		var defaults = {layer:{l0:{obj:null,isready:false},l1:{obj:null,isready:false}},actlayer:'l1',actIndex:1};
		var settings = $.extend({}, defaults, options);
		var _inst = this;
		this.init = function(){
			// main id
			var _id = $(this).attr('id');
			// set base css
			$(this).addClass(settings.basecss);
			// set two divs for image layer
			$(this).append('<div id="'+_id+'_l0"><img src="" /></div>');
			$(this).append('<div id="'+_id+'_l1"><img src="" /></div>');
			// config low layer
			settings.layer.l0.obj = $("#"+_id+"_l0");
			if( settings.divcss!=""){settings.layer.l0.obj.addClass(settings.divcss);}
			settings.layer.l0.obj.css('z-index',1);
			settings.layer.l0.obj.children('img').attr('src',settings.imgpath+settings.imglist[1]);
			settings.layer.l0.obj.children('img').load(function(){settings.layer.l0.isready=true;});
			// config high layer
			settings.layer.l1.obj = $("#"+_id+"_l1");
			if( settings.divcss!=""){settings.layer.l1.obj.addClass(settings.divcss);}
			settings.layer.l1.obj.css('z-index',2);
			settings.layer.l1.obj.children('img').attr('src',settings.imgpath+settings.imglist[0]);
			settings.layer.l1.obj.children('img').load(function(){settings.layer.l1.isready=true;});
			// fire fadeIn with high layer
			self.setTimeout(function(){_inst.callfirst()},200);
		}
		this.callfirst = function(){
			if(settings.layer[settings.actlayer].isready){
				settings.layer[settings.actlayer].obj.fadeIn(settings.fadetime,function(){self.setTimeout(function(){_inst.change()},settings.changetime)});
			}else{self.setTimeout(function(){_inst.callfirst()},200)}
		}
		this.change = function(){
			var lastlayer = settings.actlayer;
			var nextlayer = (settings.actlayer=='l1') ? 'l0':'l1';
			if(settings.layer[nextlayer].isready){
				// set actual layer id
				settings.actlayer = nextlayer;
				// set actual Image Index
				settings.actIndex = (settings.actIndex < settings.imglist.length-1) ? settings.actIndex+1 : 0;
				// change z-Index
				settings.layer[settings.actlayer].obj.css('z-index',3);
				settings.layer[lastlayer].obj.css('z-index',1);
				settings.layer[settings.actlayer].obj.css('z-index',2);
				// new image fade in
				settings.layer[settings.actlayer].obj.fadeIn(settings.fadetime);
				settings.layer[lastlayer].obj.fadeOut(settings.fadetime,function(){_inst.setready(lastlayer);});
			}
			// call again
			self.setTimeout(function(){_inst.change()},settings.changetime);
		}
		this.setready = function(_id){
			settings.layer[_id].isready = false;
			settings.layer[_id].obj.children('img').attr('src',settings.imgpath+settings.imglist[settings.actIndex]);
		}
		return this;
	}
})(jQuery);
