//IE nezna funkci trim()
if(typeof String.prototype.trim !== 'function') {
  String.prototype.trim = function() 
  {
    return this.replace(/^\s+|\s+$/g, ''); 
  };
}


function getDocumentHeight() 
{
	var D = document;
    return Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
};


var Dialog = {};
Dialog.Box = Class.create();
Object.extend(Dialog.Box.prototype, {
    initialize: function(id) {
      this.createOverlay();
  
      this.dialog_box = $(id);
      this.dialog_box.show = this.show.bind(this);
      this.dialog_box.persistent_show = this.persistent_show.bind(this);
      this.dialog_box.hide = this.hide.bind(this);
  
      this.parent_element = this.dialog_box.parentNode;
  
      this.dialog_box.style.position = "fixed";
  
      var e_dims = Element.getDimensions(this.dialog_box);
      var b_dims = Element.getDimensions(this.overlay);
  
      this.dialog_box.style.left = ((b_dims.width/2) - (e_dims.width/2)) + 'px';
      this.dialog_box.style.top = this.getScrollTop() + ((this.winHeight() - (e_dims.width/2))/2) + 'px';
      this.dialog_box.style.zIndex = this.overlay.style.zIndex + 1;
    },
  
    createOverlay: function() {
      if($('dialog_overlay')) {
        this.overlay = $('dialog_overlay');
      } else {
        this.overlay = document.createElement('div');
        this.overlay.id = 'dialog_overlay';
        Object.extend(this.overlay.style, {
        	position: 'absolute',
        	top: 0,
        	left: 0,
        	zIndex: 510,
        	width: '100%',
        	backgroundColor: '#000',
        	display: 'none'
        });
        document.body.insertBefore(this.overlay, document.body.childNodes[0]);
      }
    },
  
    moveDialogBox: function(where) {
      Element.remove(this.dialog_box);
      if(where == 'back')
        this.dialog_box = this.parent_element.appendChild(this.dialog_box);
      else
        this.dialog_box = this.overlay.parentNode.insertBefore(this.dialog_box, this.overlay);
    },
  
    show: function() {
      this.overlay.style.height = getDocumentHeight() +'px';
      this.moveDialogBox('out');
      	
      this.selectBoxes('hide');
      new Effect.Appear(this.overlay, {duration: 0.1, from: 0.0, to: 0.3});
      //this.dialog_box.style.display = 'fixed';
      
      var e_dims = Element.getDimensions(this.dialog_box);
      var b_dims = Element.getDimensions(this.overlay);
      
      this.dialog_box.style.left = ((b_dims.width/2) - (e_dims.width/2)) + 'px';
      this.dialog_box.style.top = ((this.winHeight() - (e_dims.width/2))/2) + 'px';
    	
    },
    
    getScrollTop: function() {
    	return (window.pageYOffset)?window.pageYOffset:(document.documentElement && document.documentElement.scrollTop)?document.documentElement.scrollTop:document.body.scrollTop;
    },
    
    persistent_show: function() {
      this.overlay.style.height = this.bodyHeight()+'px';
      this.moveDialogBox('out');
   
      this.selectBoxes('hide');
      new Effect.Appear(this.overlay, {duration: 0.1, from: 0.0, to: 0.3});
      
      this.dialog_box.style.display = '';
    	this.dialog_box.style.left = '0px';
      var e_dims = Element.getDimensions(this.dialog_box);
    	this.dialog_box.style.left = ((this.winWidth()/2) - (e_dims.width)/2) + 'px';
    	
    },
  
    hide: function() {
      this.selectBoxes('show');
      new Effect.Fade(this.overlay, {duration: 0});
      this.dialog_box.style.display = 'none';
      this.moveDialogBox('back');
      $A(this.dialog_box.getElementsByTagName('input')).each(function(e){if(e.type!='submit')e.value=''});
    },
  
    selectBoxes: function(what) {
      $A(document.getElementsByTagName('select')).each(function(select) {
        Element[what](select);
      });
  
      if(what == 'hide')
        $A(this.dialog_box.getElementsByTagName('select')).each(function(select){Element.show(select)})
    },
    
	bodyWidth: function() { return document.body.offsetWidth || window.innerWidth || document.documentElement.clientWidth || 0; },
	bodyHeight: function() { return document.body.offsetHeight || window.innerHeight || document.documentElement.clientHeight || 0; },
  
    winWidth: function() {
		 var viewportwidth;
		 
		 // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
		 
		 if (typeof window.innerWidth != 'undefined')
		 {
		      viewportwidth = window.innerWidth;
		 }
		 
		// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
		
		 else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0)
		 {
		       viewportwidth = document.documentElement.clientWidth;
		 }
		 
		 // older versions of IE
		 
		 else
		 {
		       viewportwidth = document.getElementsByTagName('body')[0].clientWidth
		 }
		 return viewportwidth;
    
     },
    winHeight: function() { 
		 var viewportheight;
		 
		 // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
		 
		 if (typeof window.innerHeight != 'undefined')
		 {
		      viewportheight = window.innerHeight
		 }
		 
		// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
		 else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientHeight != 'undefined' && document.documentElement.clientHeight != 0)
		 {
		       viewportheight = document.documentElement.clientHeight;
		 }
		 
		 // older versions of IE
		 else
		 {
		       viewportheight = document.getElementsByTagName('body')[0].clientHeight;
		 }
		 return viewportheight;
    }
  
  }); 


if (!Aspa)
{
	var Aspa = {};
}

Aspa.DialogEmailWatch = Class.create();
Object.extend(Aspa.DialogEmailWatch.prototype, {
    initialize: function(goodsId) {    	
    	var dial =  $('aspa-dialog');
    	if (dial) {
    		dial.remove();
		}
    	var div = document.createElement('div');
    	div.id = 'aspa-dialog';
    	document.body.appendChild(div);
    	
    	//div.style.display = 'none';
    	
    	var html = '<span class="aspa-dialog-close-mark" title="Zavřít" onclick="$(\'aspa-dialog\').hide();"></span>'; 
    	html += '<span class="aspa-dialog-title">Hlídání produktu</span>';
    	html +=  '<p class="aspa-dialog-info">Zašleme vám informaci o akční ceně a změně dostupnosti zboží!</p>';
    	html += '<div class="aspa-dialog-form">';
    		html += '<p class="aspa-dialog-color2">Zadejte prosím svůj e-mail:</p>';
    		html += 'Email:<input type="text" name="email" id="aspa-dialog-email"/>';
    			html += '<button id="aspa-dialog-submit-email-watch">Odeslat</button>';
    		html += '<div id="aspa-dialog-valid-errors" class="aspa-dialog-valid-errors"></div>';
    	html += '</div>';
    	
    	html += '<p class="aspa-dialog-color2">Jste u nás zaregistrovaný? ';
    	html += '<a href="/klient/prihlaseni/?goodsToWatch=' + goodsId + '">Přihlašte se</a></p>';
    	
    	var content = document.createElement('div');
    	
    	content.className = 'aspa-dialog';
    	content.id = 'aspa-dialog-content';
    	content.innerHTML = html;
    	div.appendChild(content);
    	
    	
    	
		new Dialog.Box('aspa-dialog');
		$('aspa-dialog').show();
		var settings = {
			       tl: { radius: 8 },
			       tr: { radius: 8 },
			       bl: { radius: 8 },
			       br: { radius: 8 },
			       antiAlias: true
			     };
		curvyCorners(settings, content);
	
		//volano na submitnuti zadosti 
		var submit = $('aspa-dialog-submit-email-watch');
    	submit.onclick = function() {
    		var emailStr = $('aspa-dialog-email').value;
    		emailStr = emailStr.trim();
    		//over, ze se jedna o valid email
    		if (null === emailStr.match(/^([a-z0-9\.\-\_])+@([a-z0-9\.\-\_])+\.([a-z])+$/i))
    		{
    			$('aspa-dialog-valid-errors').innerHTML = 'Chybně vyplněný email.';
    			return;
    		}
		
    		new Ajax.Request('/ajax-exec', {
			method: 'post',
			parameters: {command: 'createEmailWatch', goods: goodsId, email: emailStr},
			onSuccess: function(transport){
			  //alert(transport.responseText);
			  var response = transport.responseJSON || {result: false, message: 'Nastala chyba při zpracování požadavku.'};
			  $('aspa-dialog').hide();
			  new Aspa.DialogInfo(response.message);
			 },
			onFailure: function(res){ 
		    	alert('Nastala chyba při zpracování požadavku.'); 
			 }
	    });
     };
    
	var emailIn = $('aspa-dialog-email');
	emailIn.onkeypress = function()
	{
		
		if (window.event && window.event.keyCode==13)
		{
			$('aspa-dialog-submit-email-watch').onclick();
		}
	};
	
   }
 });


Aspa.DialogWatch = Class.create();
Object.extend(Aspa.DialogWatch.prototype, {
    initialize: function(goodsId) {    	
    	var dial =  $('aspa-dialog');
    	if (dial) {
    		dial.remove();
		}
    	var div = document.createElement('div');
    	div.id = 'aspa-dialog';
    	document.body.appendChild(div);
    	
    	//div.style.display = 'none';
    	
    	var html = '<span class="aspa-dialog-close-mark" title="Zavřít" onclick="$(\'aspa-dialog\').hide();"></span>';
    	html += '<span class="aspa-dialog-title">Hlídání produktu</span>';
    	html +=  '<p class="aspa-dialog-info">Zašleme vám informaci o akční ceně a změně dostupnosti zboží!</p>';
    	html += '<div><button id="aspa-dialog-add" class="bottom">Hlídat</button></div>';
    	
    	var content = document.createElement('div');
    	
    	content.className = 'aspa-dialog';
    	content.id = 'aspa-dialog-content';
    	content.innerHTML = html;
    	div.appendChild(content);
    	
		new Dialog.Box('aspa-dialog');
		$('aspa-dialog').show();
		var settings = {
			       tl: { radius: 8 },
			       tr: { radius: 8 },
			       bl: { radius: 8 },
			       br: { radius: 8 },
			       antiAlias: true
			     };
		curvyCorners(settings, content);
	
		//volano na submitnuti zadosti 
		var submit = $('aspa-dialog-add');
    	submit.onclick = function() {
    		new Ajax.Request('/ajax-exec', {
			method: 'post',
			parameters: {command: 'createWatch', goods: goodsId},
			onSuccess: function(transport){
			   //alert(transport.responseText);
			  var response = transport.responseJSON || {result: false, message: 'Nastala chyba při zpracování požadavku.'};
			  $('aspa-dialog').hide();
			  
			  if (response.result == true)
			  {
				 new Aspa.DialogWatchCreated(response.message);  
			  }
			  else
			  {
				  new Aspa.DialogInfo(response.message);
			  }
			 },
			onFailure: function(res){ 
		    	alert('Nastala chyba při zpracování požadavku.'); 
			 }
	    });
    	};
    }
 });


Aspa.DialogInfo = Class.create();
Object.extend(Aspa.DialogInfo.prototype, {
    initialize: function(html, callBack) {
    	var dial =  $('aspa-dialog');
    	//muze existovat pouze jenom jeden dialog
    	if (dial) {
    		dial.remove();
		}
    	var div = document.createElement('div');
    	div.id = 'aspa-dialog';
    	//div.style.display = 'none';
    	
    	var content = document.createElement('div');
    	content.className = 'aspa-dialog';
    	content.id = 'aspa-dialog-content';
    	html = '<span class="aspa-dialog-close-mark" title="Zavřít" onclick="$(\'aspa-dialog\').hide();"></span>' + html;
    	content.innerHTML = html;
    	content.style.backgroundColor = 'white';
    	
    	var confirmButton = document.createElement('button');
    	confirmButton.className = 'bottom';
    	confirmButton.innerHTML = 'Zavřít';
    	confirmButton.onclick = function(){
    		$('aspa-dialog').hide();
    		if (callBack) {
    			callBack();
			}
    	};
    	
    	var confirmDiv = document.createElement('div');
    	confirmDiv.appendChild(confirmButton);
    	content.appendChild(confirmDiv);
    	div.appendChild(content);
    	
    	document.body.appendChild(div);
		new Dialog.Box('aspa-dialog');
		var settings = {
	       tl: { radius: 15 },
	       tr: { radius: 15 },
	       bl: { radius: 15 },
	       br: { radius: 15 },
	       antiAlias: true
	     };
		$('aspa-dialog').show();
		curvyCorners(settings, content);
    }
});


Aspa.DialogWatchCreated = Class.create();
Object.extend(Aspa.DialogWatchCreated.prototype, {
    initialize: function(html, callBack) {
    	var dial =  $('aspa-dialog');
    	//muze existovat pouze jenom jeden dialog
    	if (dial) {
    		dial.remove();
		}
    	var div = document.createElement('div');
    	div.id = 'aspa-dialog';
    	//div.style.display = 'none';
    	
    	var content = document.createElement('div');
    	content.className = 'aspa-dialog';
    	content.id = 'aspa-dialog-content';
    	html = '<span class="aspa-dialog-close-mark" title="Zavřít" onclick="$(\'aspa-dialog\').hide();"></span><span class="aspa-dialog-title">Položka přidána</span>' + html;
    	content.innerHTML = html;
    	content.style.backgroundColor = 'white';
    	
    	var confirmButton = document.createElement('button');
    	confirmButton.className = 'bottom';
    	confirmButton.innerHTML = 'Zavřít';
    	confirmButton.onclick = function(){
    		$('aspa-dialog').hide();
    		if (callBack) {
    			callBack();
			}
    	};
    	
    	var confirmDiv = document.createElement('div');
    	confirmDiv.appendChild(confirmButton);
    	content.appendChild(confirmDiv);
    	div.appendChild(content);
    	
    	document.body.appendChild(div);
		new Dialog.Box('aspa-dialog');
		var settings = {
	       tl: { radius: 15 },
	       tr: { radius: 15 },
	       bl: { radius: 15 },
	       br: { radius: 15 },
	       antiAlias: true
	     };
		$('aspa-dialog').show();
		curvyCorners(settings, content);
    }
});
