/* Copyright 2009: SECRA GmbH */

var layerbnr;

function registerHistory(){
  YAHOO.util.History.register('infolayer', 'hidden', backBtnClick);
  YAHOO.util.History.initialize("yui-history-field", "yui-history-iframe");  
  backBtnClick(); // init
}

function backBtnClick(){
	var currentState = YAHOO.util.History.getCurrentState("infolayer");
	if(currentState=='hidden'){
		hideInfoLayer();
	} else {
		//if(currentState!='init'){
			currentState = currentState.replace('s','');
			showInfoLayer(currentState);
		//} else {
		//	hideInfoLayer();
		//}
	}
};

function updateCartCount(){
	if(document.getElementById("anzahl_warenkorb")){
		document.getElementById("anzahl_warenkorb").innerHTML = myCart.getCount();
	}
};

function getCascadedStyle(obj, cssie, cssns){
	 // ermittelt die CSS Werte der externen CSS Klassen
	if (obj.currentStyle){
	    return obj.currentStyle[cssie];
	} else if (window.getComputedStyle){
	  var objStyle=window.getComputedStyle(obj, "");
	  return objStyle.getPropertyValue(cssns);
	}
	return null;
};

function isIE(){
  browserName = navigator.appName;
  return browserName.indexOf("Microsoft Internet Explorer")==-1 ? false : true;		
}

/* Animationsfunktionen für die Karte */

var expandTimer;
var expandTimeout;
var expandTo = 600;
var shrinkTo = 247;
var moveSpeed = 40;
var initialLeft;
var initialTop;
var expandDelay = 600;
var shrinkDelay = 400;

function positionMap(){
	var gmapbox = document.getElementById("gmapdiv");
	initialLeft = parseInt(getCascadedStyle(gmapbox, 'marginLeft', 'margin-left'), 10);
	initialTop = parseInt(getCascadedStyle(gmapbox, 'marginTop', 'margin-top'), 10);
}

function shrinkMap(){
	clearTimeout(expandTimeout);
	expandTimeout = setTimeout(function(){
		clearInterval(expandTimer);
		expandTimer = setInterval(slowShrink, 50);
	}, shrinkDelay);
}

function slowExpand(){
	try {
		var gmapbox = document.getElementById("gmapdiv");
		var width = parseInt(getCascadedStyle(gmapbox, "width", "width"), 10);
		var margin = parseInt(getCascadedStyle(gmapbox, "marginLeft", "margin-left"), 10);	
		if(width<expandTo){
			if(expandTo-width<moveSpeed){
				step = expandTo-width;
			} else {
				step = moveSpeed;
			}
			gmapbox.style.width = (width + step) + "px";
	    	gmapbox.style.marginLeft = (margin - step) + "px";
	
		} else {
			gmap.map.checkResize();	
			clearInterval(expandTimer);
		}
	} catch(ex) {}
}

function expandMap(){
	clearTimeout(expandTimeout);
	expandTimeout = setTimeout(function(){
		clearInterval(expandTimer);
		expandTimer = setInterval(slowExpand, 50);	
	}, expandDelay);
}

function slowShrink(){
	try {
		var gmapbox = document.getElementById("gmapdiv");
		var width = parseInt(getCascadedStyle(gmapbox, "width", "width"), 10);
		var margin = parseInt(getCascadedStyle(gmapbox, "marginLeft", "margin-left"), 10);	
		if(width>shrinkTo){
			if(width-shrinkTo<moveSpeed){
				step = width-shrinkTo;
			} else {
				step = moveSpeed;
			}		
			gmapbox.style.width = (width - step) + "px";
			gmapbox.style.marginLeft = (margin + step) + "px";
		} else {
			gmapbox.style.width = shrinkTo + "px";
			gmapbox.style.marginLeft = initialLeft + "px";
			gmap.map.checkResize();	
			clearInterval(expandTimer);
		}	
	} catch(ex) {}
}

function createMarker(point, index) {
 // Erstellt ein Symbol mit einem Buchstaben für diesen Punkt mithilfe der Symbolklasse
  var letteredIcon = new GIcon();
  letteredIcon.image = "bitmaps/frontend/marker/numbers_" + index + ".gif";
  letteredIcon.iconSize = new GSize(32, 32);
  letteredIcon.iconAnchor = new GPoint(16, 16);

  markerOptions = { icon:letteredIcon };
  var marker = new GMarker(point, markerOptions);

  return marker;
}

function centerMap(){
  if(bounds.isEmpty()){
    gmap.map.setCenter(new GLatLng(51.3125194444, 9.49246944444), 11);
  } else {
  	var zoom = gmap.map.getBoundsZoomLevel(bounds);
  	if(zoom>15){
  		zoom = 15;
  	}
    gmap.map.setZoom(zoom);
    gmap.map.setCenter(bounds.getCenter());
  }
}

function toggleLayerCartItem(){
	toggleCartItem(layerbnr);
}

function toggleCartItem(bnr){
  if(!myCart.isInList(bnr)){
  	myCart.addToCart(bnr, 'web');
  	colorLink(bnr,'#ef3f02', cart_del_text);
  } else {
  	myCart.removeFromCart(bnr);
  	colorLink(bnr,'#505472', cart_add_text);
  }
  myCart.save();	
}

function drawCartItemLink(bnr){
  if(myCart.isInList(bnr)){
  	colorStaticLink('#ef3f02', cart_del_text);
  } else {
  	colorStaticLink('#505472', cart_add_text);
  }
}

function colorStaticLink(color,text){
	if(document.getElementById("layer_carttext")){
		document.getElementById("layer_carttext").style.color = color;
		document.getElementById("layer_carttext").innerHTML = text;
	}	
}

function colorLink(bnr, color, text){
	if(document.getElementById("carttext"+bnr)){
		document.getElementById("carttext"+bnr).style.color = color;
		document.getElementById("carttext"+bnr).innerHTML = text;
	}
	if(document.getElementById("layer_carttext")){
		document.getElementById("layer_carttext").style.color = color;
		document.getElementById("layer_carttext").innerHTML = text;
	}	
}

function getX(event) {
    return event.pageX || (event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft));
}

function getY(event) {
    return event.pageY || (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop));
}

function showInfoWindow(bnr, event){
	var imgobj = document.getElementById("infowindow_img");
	var divobj = document.getElementById("infowindow");
	var titelobj = document.getElementById("infowindow_titel");
	var beschrobj = document.getElementById("infowindow_beschreibung");
	var tagsobj = document.getElementById("infowindow_tags");
	var ortobj = document.getElementById("infowindow_ort");
	var copyrightobj = document.getElementById("infowindow_copyright");
	var newfile = 'imagebridge.php?bnr='+bnr+'&size=250';
	if(imgobj.src!=newfile){
		imgobj.src = newfile;
	}
	titelobj.innerHTML = img_titel[bnr];
	beschrobj.innerHTML = img_beschreibungen[bnr];
	tagsobj.innerHTML = img_tags[bnr];
	ortobj.innerHTML = img_orte[bnr];
	
	divobj.style.display = 'block';
	newx = (getX(event) + 10);
	newy = (getY(event) + 10);
	if(newx + parseInt(getCascadedStyle(divobj,"width", "width"), 10) + 40> Geometry.getViewportWidth()){
		newx = newx - parseInt(getCascadedStyle(divobj,"width", "width"), 10) - 20;
	}
	if(newy + parseInt(getCascadedStyle(divobj,"height", "height"), 10) + 40> Geometry.getViewportHeight()){
		newy = newy - parseInt(getCascadedStyle(divobj,"height", "height"), 10) - 20;
	}
	divobj.style.top = (newy) + "px";
	divobj.style.left = (newx) + "px";
}

function installInfoWindow(){
	// installiert den das Infofenster dynamisch als Child des
	// Body Tags
	
	var code = '';
	code = code + "<div id=\"infowindow\" class=\"infowindow\">\n";
	code = code + "  <table border=\"0\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">\n";
	code = code + "    <tr>\n";
	code = code + "      <td width=\"250\" height=\"250\" valign=\"middle\" align=\"center\">\n";
	code = code + "        <img class=\"imgbox\" id=\"infowindow_img\" src=\"bitmaps/frontend/lade.gif\" alt=\"\" border=\"0\" />\n";
	code = code + "      </td>\n";
	code = code + "      <td valign=\"top\" class=\"infowindow_info\">\n";
	code = code + "        <table border=\"0\" width=\"100%\" cellpadding=\"3\" cellspacing=\"0\">\n";
	code = code + "          <tr class=\"graudunkel\">\n";
	code = code + "            <td height=\"15\"><span id=\"infowindow_titel\"></span></td>\n";
	code = code + "          </tr>\n";
	code = code + "          <tr>\n";
	code = code + "            <td><span><b>Beschreibung:</b></span></td>\n";
	code = code + "          </tr>\n";
	code = code + "          <tr>\n";
	code = code + "            <td><span id=\"infowindow_beschreibung\"></span></td>\n";
	code = code + "          </tr>\n";
	code = code + "          <tr>\n";
	code = code + "            <td><span><b>Tags:</b></span></td>\n";
	code = code + "          </tr>\n";	
	code = code + "          <tr>\n";
	code = code + "            <td><span id=\"infowindow_tags\"></span></td>\n";
	code = code + "          </tr>\n";
	code = code + "          <tr>\n";
	code = code + "            <td><span><b>Ortsangabe:</b></span></td>\n";
	code = code + "          </tr>\n";	
	code = code + "          <tr>\n";
	code = code + "            <td><span id=\"infowindow_ort\"></span></td>\n";
	code = code + "          </tr>\n";		
	code = code + "        </table>\n";
	code = code + "      </td>\n";
	code = code + "    </tr>\n";
	code = code + "  </table>  \n";
	code = code + "</div>";	
	document.body.appendChild(toDOM(code));
}

function toDOM(HTMLContent) {
    var docFrag = document.createDocumentFragment();
    var d = document.createElement('div');
	d.innerHTML = HTMLContent;
  	while(d.firstChild) {
    	docFrag.appendChild(d.firstChild);
    }
    return docFrag;
}

function hideInfoWindow(){
	var divobj = document.getElementById("infowindow");
	var imgobj = document.getElementById("infowindow_img");
	imgobj.src = 'bitmaps/frontend/lade.gif';
	divobj.style.display = 'block';
	divobj.style.top = "0px";
	divobj.style.left = "0px";
}

function showInfoLayer(bnr){
	YAHOO.util.History.navigate('infolayer', 's'+bnr);
	
	var layer = document.getElementById("bilddetails");
	var imgobj = document.getElementById("infolayer_image");
	var titelobj = document.getElementById("infolayer_titel");
	var beschrobj = document.getElementById("infolayer_beschreibung");
	var tagsobj = document.getElementById("infolayer_tags");
	var strasseobj = document.getElementById("infolayer_strasse");
	var plzobj = document.getElementById("infolayer_plz");
	var ortobj = document.getElementById("infolayer_ort");
	var copyrightobj = document.getElementById("infolayer_copyright");
	var newfile = 'imagebridge.php?bnr='+bnr+'&size=250';	
	layer.style.display = 'block';
	if(imgobj.src!=newfile){
		imgobj.src = newfile;
	}	
	titelobj.innerHTML = imgdata[bnr].titel;
	beschrobj.innerHTML = imgdata[bnr].beschreibung;
	tagsobj.innerHTML = imgdata[bnr].tags;
	strasseobj.innerHTML = imgdata[bnr].strasse;
	plzobj.innerHTML = imgdata[bnr].plz;	
	ortobj.innerHTML = imgdata[bnr].ort;	
	if(imgdata[bnr].copyright==''){
		document.getElementById('copy1').style.visibility = 'hidden';
		document.getElementById('copy2').style.visibility = 'hidden';		
	} else {
		copyrightobj.innerHTML = imgdata[bnr].copyright;
		document.getElementById('copy1').style.visibility = 'visible';
		document.getElementById('copy2').style.visibility = 'visible';		
	}

    layerbnr = bnr;	
	drawCartItemLink(bnr);
	
	if(imgdata[bnr].lat!=null && imgdata[bnr].lon!=null){
		if(!isIE()){
			document.getElementById("mappos_row").style.display = 'table-row';
		} else {
			document.getElementById("mappos_row").style.display = 'block';
		}
		gmap.map.setCenter(new GLatLng(imgdata[bnr].lat, imgdata[bnr].lon), 15);
	} else {
		document.getElementById("mappos_row").style.display = 'none';
		centerMap();
	}
}

function hideInfoLayer(){
	YAHOO.util.History.navigate('infolayer', 'hidden');
	
	var layer = document.getElementById("bilddetails");
	var imgobj = document.getElementById("infolayer_image");
	layer.style.display = 'none';	
	imgobj.src = 'bitmaps/frontend/lade.gif';	
	layer.scrollTop = 0;
	centerMap();
}
