// JavaScript Document

var obnovenie=1;

function okno(stranka,sirka,vyska) { window.open(stranka,"_blank","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width="+sirka+",height="+vyska+",top=100,left=100"); }

function objektStyle(objekt)
{
	if (document.getElementById) { return document.getElementById(objekt).style; }
	else if (document.all) { return document.all.objekt.style; }
}

function ajaxObject(layer, url) {                                    // This is the object constructor
   var that=this;                                                    // A workaround for some javascript idiosyncrocies
   var updating = false;                                             // Set to true if this object is already working on a request
   this.callback = function() {}                                     // A post-processing call -- a stub you overwrite.

   this.update = function(passData) {                                // Initiates the server call.
      if (updating==true) { return false; }                          // Abort if we're already processing a call.
      updating=true;                                                 // Set the updating flag.
      var AJAX = null;                                               // Initialize the AJAX variable.
      if (window.XMLHttpRequest) {                                   // Are we working with mozilla?
         AJAX=new XMLHttpRequest();                                  //  Yes -- this is mozilla.
      } else {                                                       // Not Mozilla, must be IE
         AJAX=new ActiveXObject("Microsoft.XMLHTTP");                //  Wheee, ActiveX, how do we format c: again?
      }                                                              // End setup Ajax.
      if (AJAX==null) {                                              // If we couldn't initialize Ajax...
         alert("Your browser doesn't support AJAX.");                // Sorry msg.                                              
         return false                                                // Return false (WARNING - SAME AS ALREADY PROCESSING!)
      } else {
         AJAX.onreadystatechange = function() {                      // When the browser has the request info..
            if (AJAX.readyState==4 || AJAX.readyState=="complete") { //   see if the complete flag is set.
               LayerID.innerHTML=AJAX.responseText;                  //   It is, so put the new data in the object's layer
               delete AJAX;                                          //   delete the AJAX object since it's done.
               updating=false;                                       //   Set the updating flag to false so we can do a new request
               that.callback();                                      //   Call the post-processing function.
            }                                                        // End Ajax readystate check.
         }                                                           // End create post-process fucntion block.
         var timestamp = new Date();                                 // Get a new date (this will make the url unique)
         var uri=urlCall+'?'+passData+'&timestamp='+(timestamp*1);   // Append date to url (so the browser doesn't cache the call)
         AJAX.open("GET", uri, true);                                // Open the url this object was set-up with.
         AJAX.send(null);                                            // Send the request.
         return true;                                                // Everything went a-ok.
      }                                                              // End Ajax setup aok if/else block                 
   }
      
   // This area set up on constructor calls.
   var LayerID = document.getElementById(layer);                     // Remember the layer associated with this object.
   var urlCall = url;                                                // Remember the url associated with this object.
}

function contReplace(objekt,obsah)
{
 var obja=document.getElementById(objekt);
 var objb=document.getElementById(obsah);
 obja.innerHTML=objb.innerHTML;
}

function contChange(objekt,text)
{
 var obja=document.getElementById(objekt);
 obja.innerHTML=text;
}

/*function contLoad(objekt,poziadavka)
{
 var ajaxobj=new ajaxObject(objekt,"/inc/ajax.php");
 var obj=document.getElementById(objekt);
 obj.innerHTML='<center>&nbsp;<br /><img src="/images/loading.gif" border="0" alt="Loading..." /></center>';
 ajaxobj.update(poziadavka);
}
*/
function contLoad(objekt, poziadavka)
{
	if(objekt != 'prstenajax')
		$("#"+objekt).append('<img src="/images/loading.gif" border="0" width="16" height="16" alt="Loading..." />');
	$('#' + objekt).fadeTo(100, 0.07);
	$.ajax(
	{
		type: "POST",
		url: "/inc/ajax.php",
		data: "ajax=1&"+poziadavka,
		success: function(vysledok) { $("#"+objekt).html(vysledok).fadeTo(100, 1);  }
	});
}

function zobraz_prsten(id, what){
	contLoad('prstenajax', 's=vyber_prsten&id=' + id + '&what=' + what);
}

function getCookie(meno)
{
 var nameEQ = meno + "=";
 var ca = document.cookie.split(';');
 for(var i=0;i < ca.length;i++)
 {
  var c = ca[i];
  while (c.charAt(0)==' ') c = c.substring(1,c.length);
  if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
 }
 return null;
}

function openFlash(id,subor,parametre,sirka,vyska,wmode,scale,align)
{
	var params="";
	var vystup='<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'+sirka+'" height="'+vyska+'" id="'+id+'">';
	if (parametre!="") params="?"+parametre;
	else params="";
	vystup=vystup+'<param name="movie" value="'+subor+params+'" /><param name="quality" value="high" />';
	if (wmode!="") vystup=vystup+'<param name="wmode" value="'+wmode+'" />';
	if (scale!="") vystup=vystup+'<param name="scale" value="'+scale+'" />';
	vystup=vystup+'<embed src="'+subor+params+'" quality="high"';
	if (wmode!="") vystup=vystup+' wmode="'+wmode+'"';
	if (scale!="") vystup=vystup+' scale="'+scale+'"';
	if (align!="") vystup=vystup+' align="'+align+'"';
	vystup=vystup+' width="'+sirka+'" height="'+vyska+'" name="'+id+'"';
	if (parametre!="") vystup=vystup+' FlashVars="'+parametre+'"';
	vystup=vystup+' type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>';
	document.write(vystup);
}

function menuOn()
{
	document.getElementById("imglogo").src="/images/logo-on.png";
	objektStyle("menu").visibility="visible";
}
function menuOff()
{
	document.getElementById("imglogo").src="/images/logo-off.png";
	objektStyle("menu").visibility="hidden";
}
function menuOver(kat,id)
{
	if (kat==1) var menusip="sipka";
	else var menusip="kocka";
	document.getElementById("menudot"+id).src="/images/menu-"+menusip+"-on.png";
}
function menuOut(kat,id)
{
	if (kat==1) var menusip="sipka";
	else var menusip="kocka";
	document.getElementById("menudot"+id).src="/images/menu-"+menusip+"-off.png";
}

function mapaClick(mesto)
{
	contLoad('predajne','s=predajne&mesto='+mesto);
}
function mestoClick(mesto,id)
{
	contLoad('predajne','s=predajne&mesto='+mesto);
}

function zlOver(id)
{
	document.getElementById("zlminus"+id).src="/images/table-minus.png";
	document.getElementById("zlplus"+id).src="/images/table-plus.png";
}
function zlOut(id)
{
	document.getElementById("zlminus"+id).src="/images/nic.gif";
	document.getElementById("zlplus"+id).src="/images/nic.gif";
}

function minus(typ,id)
{
	document.getElementById("zlks"+id).value=document.getElementById("zlks"+id).value-1;
	prepocitat(typ,id);
}
function plus(typ,id)
{
	document.getElementById("zlks"+id).value=document.getElementById("zlks"+id).value-1+2;
	prepocitat(typ,id);
}

function zaokruhlit(num,dec)
{
	var vystup=Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
	return vystup;
}
function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ' ' + '$2');
	}
	return x1 + x2;
}
function zlatoStart()
{
	for (i=1;i<12;i++) prepocitat(1,i);
}
function striebroStart()
{
	for (i=1;i<3;i++) prepocitat(2,i);
}

function prepocitat(typ,id)
{
	var poplatok=document.getElementById("zlpoplatok"+id).value-1+1;
	var ceur=((document.inzlato.zlcgram.value*document.getElementById("zlgram"+id).value)+poplatok)+5+0.49;
	ceur=zaokruhlit(ceur,0);
	var ckc=(ceur*document.inzlato.zlkurz.value)+0.49;
	ckc=zaokruhlit(ckc,0);
	if(typ == 2){
		ceur *= 1.015;
		ckc *= 1.015;
	}
	if (document.inzlato.jazyk.value=="cz") var suma=ckc*document.getElementById("zlks"+id).value;
	else var suma=ceur*document.getElementById("zlks"+id).value;
	var celkom=0;
	contChange("zlcenaeur"+id,addCommas(zaokruhlit(ceur,0)));
	contChange("zlcenakc"+id,addCommas(zaokruhlit(ckc,0)));
	if (document.inzlato.jazyk.value=="cz") document.getElementById("zlcenaval"+id).value=addCommas(zaokruhlit(ckc,0))+" Kč";
	else document.getElementById("zlcenaval"+id).value=addCommas(zaokruhlit(ceur,0))+" EUR";
	document.getElementById("zlsuma"+id).value=suma;
	if (typ==1) var mx=12;
	if (typ==2) var mx=3;
	for (x=1;x<mx;x++) celkom=celkom+document.getElementById("zlsuma"+x).value*1;
	var celkovasuma=addCommas(zaokruhlit(celkom,0));
	if (document.inzlato.jazyk.value=="cz")
	{
		if (typ==2) var sumadph=zaokruhlit(celkom+((celkom/100)*20),0);
		if (typ==1) contChange("zlsuma",celkovasuma+" Kč");
		if (typ==2) contChange("zlsuma",celkovasuma+" Kč ("+sumadph+" Kč s DPH)");
		document.inzlato.zlsumain.value=celkovasuma+" Kc";
	}
	else
	{
		if (typ==2) var sumadph=zaokruhlit(celkom+((celkom/100)*20),0);
		if (typ==1) contChange("zlsuma",celkovasuma+" &euro;");
		if (typ==2) contChange("zlsuma",celkovasuma+" &euro; ("+sumadph+" &euro; s DPH)");
		document.inzlato.zlsumain.value=celkovasuma+" EUR";
	}
}

function addCart(id,ks,velkost,pd,farba,gravir,text,font,kamen)
{
	contLoad("objadd","s=objadd&polozka="+id+"&mnozstvo="+ks+"&velkost="+velkost+"&dp="+pd+"&farba="+farba+"&gravir="+gravir+"&text="+text+"&font="+font+"&kamen="+kamen);
	contLoad("kosikbtn","s=kosik");
	return(1);
}


/////////////////////////////////////////////////


		// When the WINDOW is ready, initialize. We are going with
		// the window load rather than the document so that we
		// know our image will be ready as well (complete with
		// gettable dimentions).
		if(1==0)
		$( window ).load(function(){
 
			// First, let's get refernces to the elements we will
			// be using.
			var view = $( "#view" );
			var image = $( "#image" );
 
			// Create the ZOOM element - this will be added with
			// Javascript since it's more of an "effect".
			var zoom = $( "<a id='zoom'><span><br /></span></a>" );
 
			// Before we start messing with the scripts, let's
			// update the display to allow for the absolute
			// positioning of the image and zoomer.
 
			// Set an explicit height / width on the view based
			// on the initial size of the image.
			view.width( image.width() );
			view.height( image.height() );
 
			// Now that the view has an explicit width and height,
			// we can change the displays for positioning.
			image.css( "position", "absolute" );
 
			// Set an exlicit height on the image (to make sure
			// that some of the later calcualtions don't get
			// messed up - I saw some irradic caculated-height
			// behavior).
			image.height( image.height() );
 
			// Before we add the zoom square, we need it to match
			// the aspect ratio of the image.
			zoom.width( Math.floor( image.width() / 2 ) );
			zoom.height( Math.floor( image.height() / 2 ) );
 
			// Now, add the zoom square to the view.
			view.append( zoom );
 
 
			// ---------------------------------------------- //
			// ---------------------------------------------- //
 
 
			// Now that we have our UI set up physically, we need
			// to bind the event handlers.
 
			// We want to show and hide the zoom only when the
			// user hovers over the view.
			view.hover(
				function( event ){
					// Show the soom.
					zoom.show();
				},
				function( event ){
					// Hide the zoom.
					zoom.hide();
				}
			);
 
 
			// As the user mouses over the view, we can get the
			// mouse coordinates in terms of the page; we need
			// to be able to translate those into VIEW-based
			// X and Y cooridates. As such, let's get the offset
			// of the view as our base 0x0 coordinate.
			//
			// NOTE: We are doing this here so that we do it once,
			// rather than every time the mouse moves.
			viewOffset = view.offset();
 
			// Get the jQuery-ed version of the window as we will
			// need to access it's scroll offsets every time the
			// mouse moves over the div.
			//
			// NOTE: This will change the change the refernce to
			// "window" for all of the code in this closure.
			var window = $( window );
 
 
			// As the user moves across the view, we want to move
			// the zoom square with them.
			view.mousemove(
				function( event ){
					// Get the window scroll top; the mouse
					// position is relative to the window, NOT
					// the document.
					var windowScrollTop = window.scrollTop();
					var windowScrollLeft = window.scrollLeft();
 
					// Translate the mouse X / Y into view-local
					// coordinates that can be used to position
					// the zoom box.
					setZoomPosition(
						Math.floor(
							event.clientX - viewOffset.left + windowScrollLeft
						),
						Math.floor(
							event.clientY - viewOffset.top + windowScrollTop
						)
					);
				}
			);
 
 
			// I position the zoom box within the view based on
			// the given view-local mouse coordinates.
			var setZoomPosition = function( mouseLeft, mouseTop ){
				// Ideally, we want to keep the zoom box centered
				// on the mouse. As such, we want the given mouse
				// left and mouse top coordiantes to be in the
				// middle of the zoom box.
				var zoomLeft = (mouseLeft - (zoom.width() / 2));
				var zoomTop = (mouseTop - (zoom.height() / 2))
 
				// As we move the zoom box around, however, we
				// never want it to go out of bounds of the view.
 
				// Protect the top-left bounds.
				zoomLeft = Math.max( zoomLeft, 0 );
				zoomTop = Math.max( zoomTop, 0 );
 
				// Protect the bottom-right bounds. Because the
				// bottom and right need to take the dimensions
				// of the zoom box into account, be sure to use
				// the outer width to include the border.
				zoomLeft = Math.min(
					zoomLeft,
					(view.width() - zoom.outerWidth())
					);
				zoomTop = Math.min(
					zoomTop,
					(view.height() - zoom.outerHeight())
					);
 
				// Position the zoom box in the bounds of the
				// image view box.
				zoom.css({
					left: (zoomLeft + "px"),
					top: (zoomTop + "px")
				});
			};
 
 
			// Now that we have the mouse movements being tracked
			// properly, we need to track the click on the zoom to
			// zoom in the image on demand. To do that, however,
			// we need to start storing some information with the
			// image so we can manipulate it as needed.
			image.data({
				zoomFactor: (view.width() / zoom.width()),
				zoom: 1,
				top: 0,
				left: 0,
				width: image.width(),
				height: image.height(),
				originalWidth: image.width(),
				originalHeight: image.height()
			});
 
 
			// Now, let's attach the click event handler to the
			// zoom box.
			zoom.click(
				function( event ){
					// First, prevent the default since this is
					// not a navigational link.
					event.preventDefault();
 
					// Let's pass the position of the zoom box
					// off to the function that is responsible
					// for zooming the image.
					zoomImage(
						zoom.position().left,
						zoom.position().top
					);
				}
			);
 
 
			// I take the zoom box coordinates and translate them
			// into an actual image zoom based on the existing
			// zoom and offset of the image.
			//
			// NOTE: We don't care about the dimensions of the
			// zoom box itself as those should have already been
			// properly translated into the zoom *factor*.
			var zoomImage = function( zoomLeft, zoomTop ){
				// Get a reference to the image data object so we
				// don't need to keep retreiving it.
				var imageData = image.data();
 
				// Check to see if we have reached the max zoom
				// or if the image is currently animating.
				// If so, just return out.
				if (
					(imageData.zoom == 5) ||
					(image.is( ":animated" ))
					){
 
					// Zooming in beyond this is pointless (and
					// can cause the browser to mis-render the
					// image).
					return;
 
				}
 
				// Scale the image up based on the zoom factor.
				imageData.width =
					(image.width() * imageData.zoomFactor);
 
				imageData.height =
					(image.height() * imageData.zoomFactor);
 
				// Change the offset set data to re-position the
				// 0,0 coordinate back up in the top left.
				imageData.left =
					((imageData.left - zoomLeft) * imageData.zoomFactor);
 
				imageData.top =
					((imageData.top - zoomTop) * imageData.zoomFactor);
 
				// Increase the zoom.
				imageData.zoom++;
 
				// Animate the zoom.
				image.animate(
					{
						width: imageData.width,
						height: imageData.height,
						left: imageData.left,
						top: imageData.top
					},
					300
				);
			};
 
 
			// I reset the image zoom.
			var resetZoom = function(){
				// Get a reference to the image data object so we
				// don't need to keep retreiving it.
				var imageData = image.data();
 
				// Reset the image data.
				imageData.zoom = 1;
				imageData.top = 0;
				imageData.left = 0;
				imageData.width = imageData.originalWidth;
				imageData.height = imageData.originalHeight;
 
				// Animate the zoom.
				image.animate(
					{
						width: imageData.width,
						height: imageData.height,
						left: imageData.left,
						top: imageData.top
					},
					300
				);
			};
 
 
			// As a final step, to make sure that the image can
			// be zoomed out, bind the mousedown to the document.
			//$( document ).mousedown(
			zoom.mouseleave(
				function( event ){
					resetZoom();
					// Check to see if the view is in the event
					// bubble chain for the mouse down. If it is,
					// then this click was in the view or its
					// child elements.
					var closestView = $( event.target ).closest( "#view" );
 
					// Check to see if this mouse down was in the
					// image view.
					if (!closestView.size()){
 
						// The view was not found in the chain.
						// This was clicked outside of the view.
						// Reset the image zoom.
						resetZoom();
 
					}
				}
			);
 
		});
 



