var debug = 0;
var curID = 0;
var mouseX = 0;
var mouseY = 0;
var curID_object = 0;
var icon_dim = 24;
var myIcon = [];
var iconImg = [];
var iconOffset	= parseInt(icon_dim/2)-2;
var myZoom = [];
myZoom[0]=[1,2];
myZoom[1]=[3,4];
myZoom[2]=[5];
var imgWait = new Image();
imgWait.src = image_dir+"loading.gif";

$j(document).ready(function(){
    $j().mousemove(function(e){
        mouseX=e.pageX;
        mouseY=e.pageY;
        return false;
    });
});

function getIconsFromTour(div,id,drag) {
	if(typeof id=="undefined" || id<1) {
		myErr("Error: no valid ID!");
		return false;
	}
	$j.ajax({
		data:setParam({aktion:"getIconsFromTour",id:id}),
		success:function(o){
			ddbg(o,"getIconsFromTour:");
			$j("#label").appendTo(div);
			if(o.icons.length>0) {
				$j.each(o.icons,function(){
//					if(this.mode=="ort") return false;
					setIcon(div,this,drag,false);
				});
			}
			if(o.iconsEmpty.length>0) {
				$j.each(o.iconsEmpty,function(){
					setIcon(div,this,drag,false);
				});
			}
		},
		complete:function(r){
			ajMsgHide();
		}
	});
}

function getIconsFromOrt(div,id,drag) {
	if(typeof id=="undefined" || id<1) {
		myErr("Error: no valid ID!");
		return false;
	}
	$j.ajax({
		data:setParam({aktion:"getIconsFromOrt",id:id,aktuell:aktuell}),
		success:function(o){
			$j("#label").appendTo(div);
			if(o.icons.length>0) {
				ddbg(o.icons,"getIconsFromOrt:");
				$j.each(o.icons,function(){
					setIcon(div,this,drag,false);
				});
			}
        },
		complete:function(r){
			ajMsgHide();
		}
	});
}

function getIconFromOrt(div,id) {
	if(typeof id=="undefined" || id<1) {
		myErr("Error: no valid ID!");
		return false;
	}
	$j.ajax({
		data:setParam({aktion:"getIconFromOrt",id_ort:id_ort,id:id,aktuell:aktuell}),
		success:function(o){
			$j("#label").appendTo(div);
			if(o.icon!=null) {
				ddbg(o.icon,"getIconFromOrt:");
				setIcon(div,o.icon,true,false);
			}
        }
	});
}

function initViewCheck() {
	$j("img.imgCheck").bind("click",function(){
		var el = this;
		var id = parseInt(el.id.substr(1));
		var visible = $j(el).hasClass("on") ? 1 : 0;
		var src = $j(el).attr("src");
		var identity = $j(el).attr("name");
		$j.ajax({
			data:setParam({aktion:"updateVisibility",id:id,visible:(visible==1)?0:1}),
			success:function(o){
				var v = parseInt(o.visible);
				if(o.error==1) return false;
				else if(v==1) {
					$j(el).addClass("on").attr({src:image_dir+"button_nocheck_on.png"});
					myIcon[identity].show();
				}
				else {
					$j(el).removeClass("on").attr({src:image_dir+"button_nocheck_off.png"});
					myIcon[identity].hide();
				}
			}
		});		
	});
}

function initViewCheckPoints() {
	$j("img.imgCheck").bind("click",function(){
		var el = this;
        var z = el.id.substr(1,1);
        var zz = parseInt(z);
		var id = parseInt(el.id.substr(3));
		var visible = $j(el).hasClass("on") ? 1 : 0;
		var src = $j(el).attr("src");
		var identity = $j(el).attr("name");
		$j.ajax({
			data:setParam({aktion:"updateVisibilityPoints",id_master:id_ort,id_parent:id,col:"zoom_"+z,visible:(visible==1)?0:1}),
			success:function(o){
				var v = parseInt(o.visible);
				if(o.error==1) return false;
                if(v==1) {
                    $j(el).addClass("on").attr({src:image_dir+"button_nocheck_on.png"});
                }
                else {
                    $j(el).removeClass("on").attr({src:image_dir+"button_nocheck_off.png"});
                }
                ddbg({aktuell:aktuell,myZoom:myZoom[zz-1]},"initViewCheckPoints");
                if($j.inArray(aktuell,myZoom[zz-1])>-1) {
                    (v==1)?myIcon[identity].show():myIcon[identity].hide();
                }
			}
		});
	});
}

function updateIconFromTour(o) {
    if(typeof o=="undefined" || o==null) return false;
    ddbg(o,"update Icon Tour");
    $j.ajax({
		data:setParam({
            aktion:"updateIconFromTour",
            name:o.name,
            id:o.id,
            id_tour:o.id_tour,
            id_icon:o.id_icon,
            mode:o.mode,
            x:o.left,
            y:o.top
        }),
		success:function(o){
            ddbg(o,"update result tour:");
			aktionMsg("Position gespeichert!");
		}
	});
}

function updateIconFromOrt(o,div) {
    if(typeof o=="undefined" || o==null) return false;
    ddbg(o,"update Icon-Position Ort");
    $j.ajax({
		data:setParam({
            aktion:"updateIconFromOrt",
            name:o.name,
            id:o.id,
            id_ort:o.id_ort,
            id_icon:o.id_icon,
            mode:o.mode,
            x:o.left,
            y:o.top,
			aktuell:aktuell
        }),
		success:function(o){
            ddbg(o,"update result ort:");
//            getIconFromOrt(div,id)
			aktionMsg("Position gespeichert!");
		}
	});
}

function getVideoWin(div,id,name) {
	if($j("#accFrame").is(":visible")) $j("#accFrame").fadeOut();
	$j("#liVideos").fadeIn();
    $j("#liVideos h3 span#obj").html(name);
    var p = $j(div).offset();
    var left = p.left + parseInt($j(div).width())-20;
    $j("#liVideos").css({left:left+"px",top:(p.top-40)+"px"}).fadeIn().draggable({handle:"h3"});

	$j("#liVideos li").click(function(){
		var vid = this.id.substr(1);
   		$j.ajax({
			data:setParam({
            	aktion:"updateVideoFromStation",
    	        id_video:vid,
        	    id_station:id
        	}),
			success:function(o){
				if(o.error!=0) alert("Fehler beim Video Speichern!");
    	        ddbg("update video:");
				aktionMsg("Video gespeichert!");
			}
		});
	});
    $j("#liVideos #closerV").click(function(){
        $j("#liVideos").fadeOut();
        return false;
    });
}

function getIconWin(div,id,name,modus){
    var identity = MD5(name);
    var leftIcon = 0;
    var topIcon = 15;
    var bild = "";
    var sichtbar = 1;
    var zoom_1 = 1;
    var zoom_2 = 1;
    var zoom_3 = 1;
    $j("#accFrame h3 span#obj").html(name);
    var p = $j(div).offset();
    var left = p.left + parseInt($j(div).width())-20;
    $j("#accFrame").css({left:left+"px",top:(p.top-40)+"px"}).fadeIn().draggable({handle:"h3"});

    $j("#accordion ul li").hover(
        function(){
            var f = icon_path+$j(this).attr("name");
            var pos = $j(this).offset();
            var l = pos.left-30;
            var t = pos.top-12;
            $j("img#iconPreview").attr({src:f}).css({left:l+"px",top:t+"px"}).show();
            pos = null;
            delete pos;
            return false;
        },
        function(){
            var f = image_dir+"1&1.gif";
            $j("img#iconPreview").attr({src:f}).hide();
            return false;
        }
    );

    $j("#accordion ul li").bind("click",function(){
        var id_icon = parseInt(this.id.substr(1));
        if($j("#"+identity).is(":visible")) {
            leftIcon = $j("#"+identity).position().left;
            topIcon = $j("#"+identity).position().top;
            bild = myIcon[identity].bild;
            sichtbar = myIcon[identity].sichtbar;

            if(id_ort>0) {
                zoom_1 = myIcon[identity].zoom_1;
                zoom_2 = myIcon[identity].zoom_2;
                zoom_3 = myIcon[identity].zoom_3;
            }

            $j("#"+identity).remove();
            myIcon[identity].remove();
        }
        var obj = {
            identity:identity,
            id:id,
//            id_parent:(id_tour>0)?id_tour:id_ort,
            id_tour:id_tour,
            id_ort:id_ort,
            x:leftIcon,
            y:topIcon,
            z:1,
            left:leftIcon,
            top:topIcon,
            mode:modus,
            name:name,
            id_icon:id_icon,
            icon_name: $j(this).text(),
            icon_text: $j(this).attr("title"),
            icon_file:icon_path+$j(this).attr("name"),
            id_point:"null",
            bild:bild,
            sichtbar:sichtbar
        };
        if(id_ort>0) obj = $j.extend(obj,{
            zoom_1:zoom_1,
            zoom_2:zoom_2,
            zoom_3:zoom_3
        });
        ddbg(obj,"setIcon from getIconWin");
        if(id_tour>0) {
			updateIconFromTour(obj);
		}
        else if(id_ort>0) updateIconFromOrt(obj,div);
        setIcon(div,obj,true,true);
        if(id_tour>0 && $j(this).text()=="Movie") {
			getVideoWin(div,id,name);
		}
//        $j("#accFrame").fadeOut();
        return false;
    });
    $j("#accFrame #closer").click(function(){
        $j("#accFrame").fadeOut();
        return false;
    });
    $j("#accordion").accordion({
		collapsible:true,
		autoHeight:false
	});
}

function setIcon(div,o,drag){
	if(o.icon_file==null || o.x<0 || o.y<0) return false;
    var exist=0;

    if(typeof myIcon[o.identity]!="undefined") {
        $j("#"+o.identity).remove();
        myIcon[o.identity].remove();
        exist=1;
    }

    if(o.id_icon>0) $j("#z_"+o.identity).show();
	var left = o.x;
	var top = o.y;
	var bild = o.bild;
	if(left<0) left=0;
	if(top<0) top=0;
	
	myIcon[o.identity] = new Object();
	myIcon[o.identity] = $j("#icon").clone().attr({
		id:o.identity,
		title:o.name,
        mode:o.mode,
        idN:o.id,
        id_parent:o.id_parent
	}).css({
		backgroundImage:(o.icon_file!="")?"url("+o.icon_file.replace(/_[12]\.gif$/,"_ani.gif")+")":"none",
		left:left+"px",
		top:top+"px"
	}).appendTo(div);

    myIcon[o.identity].mode=o.mode;
    myIcon[o.identity].bild=o.bild;
    myIcon[o.identity].sichtbar=o.sichtbar;

    if(id_ort>0) {
        myIcon[o.identity].zoom_1=o.zoom_1;
        myIcon[o.identity].zoom_2=o.zoom_2;
        myIcon[o.identity].zoom_3=o.zoom_3;
    }
    if(o.icon_file.indexOf(".gif")>-1) {
//		ddbg($j("#"+o.identity).children("img"),"icon image:");
//		iconImg[o.identity] = new Image();
//		iconImg[o.identity].src = o.icon_file;
    	$j("#"+o.identity).children("img").attr({
//        	src:iconImg[o.identity].src,
        	src:o.icon_file,
            alt:o.name,
    		title:o.name
        });
    }
	if(o.sichtbar==1) {
    	if(id_tour>0) myIcon[o.identity].show();
        else if(id_ort>0) {
            switch(aktuell) {
                case 1:
                case 2:
                    if(o.zoom_1==1) {
                        myIcon[o.identity].show();
                        $j("#z1c"+o.id).addClass("on").attr({src:image_dir+"button_nocheck_on.png"});
                    }
                    break;
                case 3:
                case 4:
                    if(o.zoom_2==1) {
                        myIcon[o.identity].show();
                        $j("#z2c"+o.id).addClass("on").attr({src:image_dir+"button_nocheck_on.png"});
                    }
                    break;
                case 5:
                    if(o.zoom_3==1) {
                        myIcon[o.identity].show();
                        $j("#z3c"+o.id).addClass("on").attr({src:image_dir+"button_nocheck_on.png"});
                    }
                    break;
            }
        }
    }
	
	if(drag==true) myIcon[o.identity].draggable({containment:div});
	
	myIcon[o.identity].click(function(){
		if($j.inArray(o.mode,["intern","extern","stationen"])>-1) popup('points','visitenkarte',(typeof o.id_point!="undefined")?o.id_point:o.id);
		else if(o.icon_name=="Movie") {
			(intern)?myVideoIntern(div,o):myVideo(div,o);
		}
//		console.debug(o);
		return false;
	});
	
	myIcon[o.identity].hover(
		function(){
			$j(this).find("img").hide();
			showLabel($j(this).attr("title"));
			if(o.bild!="" && o.bild!="null") $j("#popupBild").attr({src:user_image_dir+o.bild}).show();
            ddbg(o,"Icon hover:");
			return false;
		},
		function(){
			$j(this).find("img").show();
			hideLabel();
			$j("#popupBild").hide();
			return false;
		}
	);

    myIcon[o.identity].bind("dragstop",function(e,ui){
        if(id_tour>0) {
		  var obj={
			  name:o.name,
			  id:parseInt($j(this).attr("idN")),
			  id_icon:o.id_icon,
			  id_tour:id_tour,
			  id_parent:o.id_parent,
			  mode:$j(this).attr("mode"),
			  left:ui.position.left,
			  top:ui.position.top
		  };
		  updateIconFromTour(obj);
		}
		else if(id_ort>0) {
		  var obj={
			  name:o.name,
			  id:parseInt($j(this).attr("idN")),
			  id_icon:o.id_icon,
			  id_ort:id_ort,
			  mode:$j(this).attr("mode"),
			  left:ui.position.left,
			  top:ui.position.top
		  };
		  updateIconFromOrt(obj,div);
		}
    	ddbg(obj,"Icon dragstop");
        return false;
    });
}

function aktionMsg(t) {
	$j("#aktionMsg span").html(t);
    $j("#aktionMsg").fadeIn("fast").fadeOut(1000);
}

function ajMsgShow(t) {
	$j("#aktionMsg span").html(t);
    $j("#aktionMsg").fadeIn(1000);
}

function ajMsgHide(t) {
    $j("#aktionMsg").fadeOut(1000);
}

function animateIcon(k,show){
	if(typeof myIcon[k]=="undefined") return;
	myIcon[k].find("img").hide();
	showLabel(myIcon[k].attr("title"));
	if(typeof myIcon[k].bild!="undefined" && myIcon[k].bild!="") $j("#popupBild").attr({src:user_image_dir+myIcon[k].bild}).show();
}

function deAnimateIcon(k,show){
	if(typeof myIcon[k]=="undefined") return;
	myIcon[k].find("img").show();
	hideLabel();
//    $j("#popupBild").hide();
}
function showLabel(txt){
	$j("#label").html(txt).show();
}
function hideLabel(){
	$j("#label").empty().hide();
}
function setParam(o) {
	return $j.extend({rein:1},o);
}
function ddbg(o,k){
    if(debug==0 || $j.browser.firefox==false) return;
	if(typeof console=="undefined" || (typeof console=="defined" && typeof console.debug=="undefined") || debug==0) return;
	if(typeof k!="undefined") console.info(k);
	console.debug(o);
}
function myErr(r){
	alert(r);
}
function _calcXY(x,y) {
	var x = Math.round((x-X)*fM);
	var y = Math.round((y-Y)*fM);
	if(x<0) x = 0;
	if(y<0) y = 0;
	return [x,y];
}
function _calcX(x) {
	var x = Math.round((x-X)*fM);
    alert("x:"+x)
	if(x<0) x = 0;
	return x;
}
function _calcY(y) {
	var y = Math.round((y-Y)*fM);
	if(y<0) y = 0;
	return y;
}
function myTT(el,t) {
	var left = mouseX+20;
	var top = mouseY-20;
	$j("#tt").html(t).css({left:left+"px",top:top+"px"}).fadeIn("fast");
	$j(el).mouseout(function(){
		$j("#tt").empty().fadeOut();
		return false;
	});
	window.setTimeout(function(){
		$j("#tt").empty().fadeOut("slow");
	},10000);
}

function myVideo(div,o) {
	var ll = $j(div).offset().left;
	var tt = $j(div).offset().top;
	var left = ll+parseInt(o.x)+20;
	var top = tt+parseInt(o.y)-(parseInt($j("#video").css("height"))+20);
	var swf = "";
	swf += '<object type="application/x-shockwave-flash" data="swf/flvplayer.swf" width="320" height="260">';
	swf += '<param name="movie" value="swf/flvplayer.swf" />';
	swf += '<param name="flashVars" value="file=%file%" />';
	swf += '<param name="wmode" value="transparent" />';
	swf += '<param name="autostart" value="true" />';
	swf += '<embed src="swf/flvplayer.swf" width="320" height="260" type="application/x-shockwave-flash" autostart="true" wmode="transparent" flashVars="file=%file%" />';
	swf += '</object>';

	$j.ajax({
		data:setParam({
            aktion:"getVideoFromStation",
            id_station:o.id
        }),
		success:function(r){
			ddbg(r,"getVideo:");
			swf = swf.replace(/%file%/g,"../videos/"+r.file);
			$j("#video").css({left:"200px",top:"100px"}).fadeIn().draggable({handle:"#txt"});
			$j("#video #txt").html("<b>"+r.titel+"</b> "+r.text);
			$j("#video #player").html(swf);
	
			$j("#video #close").click(function(){
		  		$j("#video").fadeOut();
		  		return false;
			});
		}
	});
}

function myVideoIntern(div,o) {
	var ll = $j(div).offset().left;
	var tt = $j(div).offset().top;
	var left = ll+parseInt(o.x)+20;
	var top = tt+parseInt(o.y)-20;
	var swf = "";
	swf += '<object type="application/x-shockwave-flash" data="../swf/flvplayer.swf" width="320" height="260">';
	swf += '<param name="movie" value="../swf/flvplayer.swf" />';
	swf += '<param name="flashVars" value="file=%file%" />';
	swf += '<param name="wmode" value="transparent" />';
	swf += '<param name="autostart" value="true" />';
	swf += '<embed src="../swf/flvplayer.swf" width="320" height="260" type="application/x-shockwave-flash" autostart="true" wmode="transparent" flashVars="file=%file%" />';
	swf += '</object>';

	$j.ajax({
		data:setParam({
            aktion:"getVideoFromStation",
            id_station:o.id
        }),
		success:function(r){
			swf = swf.replace(/%file%/g,"../videos/"+r.file);
			$j("#video").css({left:"300px",top:"100px"}).fadeIn().draggable({handle:"#txt"});
			$j("#video #txt").html("<b>"+r.titel+"</b> "+r.text);
			$j("#video #player").html(swf);
	
			$j("#video #close").click(function(){
		  		$j("#video").fadeOut();
		  		return false;
			});
		}
	});
}

