/* --------------------------------------- formularovy validator ---------------------------- */
formValidator = SZN.ClassMaker.makeClass({
    NAME: "formValidator",
    VERSION: "1.0",
    CLASS: "class"
});
formValidator.prototype.$constructor = function(rootObj){
	this.root = SZN.gEl(rootObj);
	this.mailOnly = false;
	this.inputs = this.root.getElementsByTagName('input');
	this.warning = [];
	for(var i=0;i<this.inputs.length;i++){
		if(this.inputs[i].className == 'mailOnly'){ this.mailOnly = this.inputs[i]; }
		var warning = this.inputs[i].getAttribute('warning');
		if(warning == '1'){
			this.warning.push(this.inputs[i]);
		}
	}
	this._go();
}
formValidator.prototype._checkEmail = function(strng){
    var RegExp = /^((([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+(\.([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+)*)@((((([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.))*([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.)[\w]{2,4}|(((([0-9]){1,3}\.){3}([0-9]){1,3}))|(\[((([0-9]){1,3}\.){3}([0-9]){1,3})\])))$/
    if(RegExp.test(strng)){
        var error = '';
    }else{
        var error = 'spatne zadany email';
    }
    return error;
}
formValidator.prototype._check = function(){
	if(this.mailOnly == false){
		for(var i=0;i<this.warning.length;i++){
			if(this.warning[i].value == ''){
				this.message += this.warning[i].name+' - nevyplněno \n';
			}
		}
	} else {
		if(this.mailOnly.checked == false){
			for(var i=0;i<this.warning.length;i++){
				if(this.warning[i].value == ''){
					this.message += this.warning[i].name+' - nevyplněno \n';
				}
			}
		} else {
			var emailError = this._checkEmail(this.root.email.value);
			if(emailError != ''){ this.message = emailError; }
		}
	}
}
formValidator.prototype._onSubmit = function(e,elm){
	this.message = '';
	this._check();
	if(this.message != ''){
		SZN.Events.cancelDef(e);
		alert(this.message);
	} else { return true; }
}
formValidator.prototype._go = function(){
	this.submitAction = SZN.Events.addListener(this.root,'submit',this,'_onSubmit',false,true);
}

/*******************  Image Roller **********************
 *	Rollovani obrazku ulozenych v poli pri fadovacim prechodu
 *	Vyzaduje interpolator.js  
 **/
photoRoll = SZN.ClassMaker.makeClass({
    NAME: "photoRoll",
    VERSION: "1.0",
    CLASS: "class"
});
photoRoll.prototype.$constructor = function(photos,root,numThumbs,thbSize){
	this.photos = photos;
	this.root = SZN.gEl(root);
	this.numThumbs = numThumbs;
	this.thbSize = thbSize;
	this.numPhotos = this.photos.length;
	this.I = 0;
	SZN.Events.onDomReady(this,'_makeImgs');
}
photoRoll.prototype._randomNum = function(max){
	var rn = Math.floor(Math.random()*max);
	return rn;
}
photoRoll.prototype._makeImgs = function(){
	this.root.innerHTML = '';
	this.divs = [];
	this.imgs = [];
	var np = this.numThumbs <= this.numPhotos ? this.numThumbs : this.numPhotos;
	for(var i=0;i<np;i++){
		var imgDiv = SZN.cEl('div','','',{
			width: this.thbSize+'px',
			height: '80px',
			cssFloat: 'left',
			styleFloat: 'left',
			overflow: 'hidden',
			margin:'2px',
			positon:'relative'
		});
		var img = SZN.cEl('img');
		var ir = this._randomNum(this.numPhotos);
		img.src = this.photos[ir];
		img.width = this.thbSize;
		img.style.cursor = 'pointer';
		imgDiv.appendChild(img);
		this.divs.push(imgDiv);
		this.imgs.push(img);
		var loadNextImg = SZN.Events.addListener(img,'load',this,'_showImg',false);
		var showBigImg = SZN.Events.addListener(img,'click',this,'_showBigImg',false);
	}
	for(var i=0;i<np;i++){
		this.root.appendChild(this.divs[i]);
	}
	window.setInterval( SZN.bind(this, this._showNextImg), 3000);
}
photoRoll.prototype._showNextImg = function(){
	this.I = this.imgs.length == this.I ? 0 : this.I;
	var ir = this._randomNum(this.numPhotos);
	this.imgs[this.I].src = this.photos[ir];
	this.I++
}
photoRoll.prototype._showBigImg = function(e,elm){
	var elmsrc = elm.src.split("thumb_");
	var src = elmsrc[0]+elmsrc[1].split("_")[0]+'_mark.jpg';
	this.bg = SZN.cEl('div','','',{
		position: 'absolute',
		width: '100%',
		height: '100%',
		background: '#000',
		opacity: '0.6',
		filter: 'alpha(opacity=60)',
		top: '0px',
		left: '0px'
	});
	var scrolltop = document.documentElement.scrollTop || document.body.scrollTop;
	this.bg.style.top = scrolltop+'px';
	document.body.appendChild(this.bg);
	this._scrollBgAct = SZN.Events.addListener(window,'scroll',this,'_scrollBg',false); 
	this._makeImg(src);
}
photoRoll.prototype._scrollBg = function(e,elm){
	var scrolltop = document.documentElement.scrollTop || document.body.scrollTop;
	this.bg.style.top = scrolltop+'px';
	this.img.style.top = (scrolltop+20)+'px';
}
photoRoll.prototype._makeImg = function(src){
	this.img = SZN.cEl('img','','',{
		position: 'absolute',
		visibility:  'hidden',
		cursor: 'pointer',
		display: 'block',
		border: '5px solid #FFF'
	});
	document.body.appendChild(this.img);
	this.loadImgAct = SZN.Events.addListener(this.img,'load',this,'_posImg',false);
	this.imgCloseAct = SZN.Events.addListener(this.img,'click',this,'_closeImg',false);
	this.img.src = src;
}
photoRoll.prototype._closeImg = function(e,elm){
	document.body.removeChild(this.bg);
	document.body.removeChild(this.img);
	SZN.Events.removeListener(this.loadImgAct);
	SZN.Events.removeListener(this.imgCloseAct);
}
photoRoll.prototype._newImgSize = function(){
	var sizeImg = SZN.cEl('img');
	sizeImg.src = this.img.src;
	document.body.appendChild(sizeImg);
	var sizes = [];
	sizes.push( sizeImg.offsetWidth );
	sizes.push( sizeImg.offsetHeight );
	document.body.removeChild(sizeImg);
	return sizes;
}

photoRoll.prototype._posImg = function(e,elm){
	var scrolltop = document.documentElement.scrollTop || document.body.scrollTop;
	this.bodyWidth = document.documentElement.clientWidth || document.body.clientwidth || window.innerWidth || document.body.offsetWidth;
    this.bodyHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || document.body.offsetHeight;
	var im = this._newImgSize();
	var imw = im[0];
	var imh = im[1];

	this.img.removeAttribute('width');
	this.img.removeAttribute('height');

	if(imw >= imh){ 	
		if(imw > 1024){
			this.img.width = 1024;
			if(this.img.offsetHeight >= this.bodyHeight){
				this.img.removeAttribute('width');
				this.img.height = (this.bodyHeight-40);
				this.img.style.top = (20+scrolltop)+'px';
			} else {
				var pt = (( this.bodyHeight-this.img.offsetHeight )/2)+scrolltop;
				this.img.style.top = pt+'px';
			}
		} else{
			this.img.width = imw;
			if(imh >= this.bodyHeight){
				this.img.removeAttribute('width');
				this.img.height = (this.bodyHeight-40);
				this.img.style.top = (20+scrolltop)+'px';
			} else {
				var pt = (( this.bodyHeight-imh )/2)+scrolltop;
				this.img.style.top = pt+'px';
			}
		}
		
	} else {
		if(imh >= this.bodyHeight){
			this.img.removeAttribute('width');
			this.img.height = (this.bodyHeight-40);
			this.img.style.top = (scrolltop+20)+'px';
		} else {
			var pt = (( this.bodyHeight-imh )/2)+scrolltop;
			this.img.style.top = pt+'px';
		}
	}
	var pl = ((this.bodyWidth)-this.img.width)/2;
	this.img.style.left = (pl)+'px';
	this.img.style.visibility = 'visible';
}
photoRoll.prototype._showImg = function(e,elm){
	var intr = new SZN.CSSInterpolator(elm, 1400,{});
	var opacityInt = SZN.Browser.client == 'ie' ? 100 : 1;
	intr.addProperty('opacity',0,opacityInt,'');
	intr.start();
}
/*******************  Gallery **********************
 *	jednoducha galerie pro zobrazovani obrazku ktere jsou umistene v jednom elementu a jsou zobrazovane ve druhem elementu 
 **/
photoGallery = SZN.ClassMaker.makeClass({
    NAME: "photoGallery",
    VERSION: "1.0",
    CLASS: "class"
});
photoGallery.prototype.$constructor = function(root){
	this.root = SZN.gEl(root);
	this._go();
}
photoGallery.prototype._makeBg = function(src){
	this.bg = SZN.cEl('div','','',{
		position: 'absolute',
		width: '100%',
		height: '100%',
		background: '#000',
		opacity: '0.6',
		filter: 'alpha(opacity=60)',
		top: '0px',
		left: '0px'
	});
	var scrolltop = document.documentElement.scrollTop || document.body.scrollTop;
	this.bg.style.top = scrolltop+'px';
	document.body.appendChild(this.bg);
	this._scrollBgAct = SZN.Events.addListener(window,'scroll',this,'_scrollBg',false); 
	this._makeImg(src);
}
photoGallery.prototype._makeImg = function(src){
	this.img = SZN.cEl('img','','',{
		position: 'absolute',
		visibility:  'hidden',
		cursor: 'pointer',
		display: 'block',
		border: '5px solid #FFF'
	});
	document.body.appendChild(this.img);
	this.loadImgAct = SZN.Events.addListener(this.img,'load',this,'_posImg',false);
	this.imgCloseAct = SZN.Events.addListener(this.img,'click',this,'_closeImg',false);
	this.img.src = src;
}
photoGallery.prototype._scrollBg = function(e,elm){
	var scrolltop = document.documentElement.scrollTop || document.body.scrollTop;
	this.bg.style.top = scrolltop+'px';
	this.img.style.top = (scrolltop+20)+'px';
}
photoGallery.prototype._posImg = function(e,elm){
	var scrolltop = document.documentElement.scrollTop || document.body.scrollTop;
	this.bodyWidth = document.documentElement.clientWidth || document.body.clientwidth || window.innerWidth || document.body.offsetWidth;
    this.bodyHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || document.body.offsetHeight;
	var im = this._newImgSize();
	var imw = im[0];
	var imh = im[1];

	this.img.removeAttribute('width');
	this.img.removeAttribute('height');

	if(imw >= imh){ 	
		if(imw > 1024){
			this.img.width = 1024;
			if(this.img.offsetHeight >= this.bodyHeight){
				this.img.removeAttribute('width');
				this.img.height = (this.bodyHeight-40);
				this.img.style.top = (20+scrolltop)+'px';
			} else {
				var pt = (( this.bodyHeight-this.img.offsetHeight )/2)+scrolltop;
				this.img.style.top = pt+'px';
			}
		} else{
			this.img.width = imw;
			if(imh >= this.bodyHeight){
				this.img.removeAttribute('width');
				this.img.height = (this.bodyHeight-40);
				this.img.style.top = (20+scrolltop)+'px';
			} else {
				var pt = (( this.bodyHeight-imh )/2)+scrolltop;
				this.img.style.top = pt+'px';
			}
		}
		
	} else {
		if(imh >= this.bodyHeight){
			this.img.removeAttribute('width');
			this.img.height = (this.bodyHeight-40);
			this.img.style.top = (scrolltop+20)+'px';
		} else {
			var pt = (( this.bodyHeight-imh )/2)+scrolltop;
			this.img.style.top = pt+'px';
		}
	}
	var pl = ((this.bodyWidth)-this.img.width)/2;
	this.img.style.left = (pl)+'px';
	this.img.style.visibility = 'visible';
}
photoGallery.prototype._closeImg = function(e,elm){
	document.body.removeChild(this.bg);
	document.body.removeChild(this.img);
	SZN.Events.removeListener(this.loadImgAct);
	SZN.Events.removeListener(this.imgCloseAct);
}
photoGallery.prototype._newImgSize = function(){
	var sizeImg = SZN.cEl('img');
	sizeImg.src = this.img.src;
	document.body.appendChild(sizeImg);
	var sizes = [];
	sizes.push( sizeImg.offsetWidth );
	sizes.push( sizeImg.offsetHeight );
	document.body.removeChild(sizeImg);
	return sizes;
}
photoGallery.prototype._showImg	= function(e,elm){
	var src = elm.src.split('Path=')[1].split('&Size=')[0];
	this._makeBg(src);
}
photoGallery.prototype._go = function(){
	var imgs = this.root.getElementsByTagName('img');
	for(var i=0;i<imgs.length;i++){
		if(imgs[i].className == 'editorImage'){
			var showAction = SZN.Events.addListener(imgs[i],'click',this,'_showImg',false,true);
		}
	}
}
/**
* Kiteprogresstarifa.com links
**/
Links = SZN.ClassMaker.makeClass({
  NAME: "Links",
  VERSION: "1.0",
  CLASS: "class"
});
Links.prototype.$constructor = function(root){
  this.root = SZN.gEl(root);
  this.cats = [];
  this.catsStatus = {};
  var cats = this.root.getElementsByTagName('li');
  for(var i=0;i<cats.length;i++){
    if(cats[i].className == 'cat'){
      this.cats.push(cats[i]);
    }
  }
  this._go();
}
Links.prototype._status = function(id){
  if(this.catsStatus[id] != ''){
    if(this.catsStatus[id] == true){
      this.catsStatus[id] = false;
      return false;
    } else {
      this.catsStatus[id] = true;
      return true;
    }
  } else {
    this.catsStatus[id] = true;
    return true;
  }
}
Links.prototype._openCat = function(e,elm){
  var status = this._status(elm.id);
  var urls = elm.getElementsByTagName('ul')[0];
  if(urls){
    if(status){
      urls.style.display = 'block';
    } else {
      urls.style.display = 'none';
    }
  }
}
Links.prototype._go = function(){
  this.links = this.root.getElementsByTagName('li');
  for(var i=0;i<this.links.length;i++){
    var openAct = SZN.Events.addListener(this.links[i],'click',this,'_openCat',false,true);
  }
}

