function iRatePost(aUrl){
	new Request({
		url:aUrl,
		evalScripts:false,
		noCache:true,
		onFailure:function() {
			iRateValueUpdate('Wystąpił błąd poczas oddawania głosu.',1);
			if (document.RateBlock===true)
				document.RateBlock=false;
		},
		onRequest:function() {
			iRateValueUpdate('Czekaj...',1);
			if (document.RateBlock===true) return;
			document.RateBlock=true;
		},
		onSuccess:function(responseText, responseXML) {
			var res = responseText.replace(/^\s+|\s+$/g, '');
			if(res=='ERROR'){
				iRateValueUpdate('Wystąpił błąd poczas oddawania głosu.',1);
				if (document.RateBlock===true)
					document.RateBlock=true;
			}else{
				var s = res.split(":");
				if(s[0] == 'OK'){
					$('vote').style.display='none';
					$('rateScoreStar').className='value sv'+s[1]+'0';
					$('score').style.display='block';
					$('rateScoreText').innerHTML = 'Dziękujemy za ocenę!';
					$('rateScoreAvgTxt').innerHTML = 'Ocena: '+s[2];
				}
			}
		}
	}).send();
}
function iRateValueUpdate(score,display){
	if (document.RateBlock===true) return;
	if($('value'))$('value').style.display = (display==1)?'block':'none';
	if(score!='')$('rateScoreText').innerHTML = score;
}

function iForumQuote(s,d,u){
	var txt = '';
	if(!$(s)) return false;
	if(!$(d)) return false;
	txt = iGetSelectedText();
	if(txt==''){
		txt = $(s).innerHTML;
		txt = txt.replace("<br>", "\n", "g");
		var s = new RegExp("<script>(.*?)<\/script>","g");
		txt = txt.replace(s, " ");
		var r = new RegExp("<(.|\n)*?>","g");
		txt = txt.replace(r, " ");
	}
	txt = txt.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
	document.forms.topic.Body.value+='[quote="'+u+'"]'+txt+'[/quote]\n';
	document.forms.topic.Body.focus();
}
function iGetSelectedText(){
	var txt = '';
	if (window.getSelection){
		txt = window.getSelection();
	}else if (document.getSelection){
		txt = document.getSelection();
	}else if (document.selection){
		txt = document.selection.createRange().text;
	}else return;
	return txt;
}

Element.implement({
	slidingTip: function(title, message, options) {
		var _this = this, coords = _this.getCoordinates();
		var timeCreate = new Date();
		var classNameOrient = '';
		
		var options = $merge({
			elementSize: {x:0,y:0},
			eventEnd: "mouseleave",
			eventEndTrigger: _this, // parent
			topStartOffset: 90, // offset konca wjazdu
			topEndOffset: 100, // offset startu wjazdu
			leftOffset :0, //offset osuniecia od obiektu
			leftPosition: coords.left + coords.width / 2, //samo sie ustala
			align: 'center', //left,right,center
			corner: 'left', //left,right,center
			animDirection : 'up',
			animTopStart: 0,
			animTopEnd: 0,
			opacity: 1, // dojdz do opacity
			className: "tooltip",// linked to css
			morphOptions: {
				duration: 200,
				link: 'chain',
				transition: Fx.Transitions.Sine.easeOut
			},
			delay: 0, // ile ma zostac
			id: "tid_" + timeCreate.getTime()
		}, options);
		// jedna instancja dla danego typu
		if ($type(this.tip) != "element") {
			this.tip = new Element("div", {
				"class": options.className,
				id: options.id
			});
		}

		// tylko jeden div dla typu
		if ($(options.id))
			this.tip = $(options.id);
		
		// fire event for unclosed tooltips (ta sam klasa)
		$$('.'+options.className).each(function(item, idx){
			item.fireEvent('mouseover');
		});
		
		// budowanie html'a dla tooltipa
		this.tip.set({
			opacity: 0,
			html: '<div class="tip-top"></div><div class="tip"><div class="tip-title">'+title+'</div><div class="tip-text">'+message+'</div></div><div class="tip-bottom"></div>',
			styles: {
				left: options.leftPosition,
				position: 'absolute'
			}
		}).inject(document.body).removeEvents();
		if (options.align=='center'){
			if(options.corner=='right'){
				options.leftPosition=coords.left + coords.width / 2 - _this.tip.getSize().x + options.leftOffset;
				classNameOrient='tip-r';
				//dodaj klase - zmiana rogu
				if(options.leftPosition<0){
					options.corner='left';
					classNameOrient='tip-l';
					
				}
			}
			if(options.corner=='left'){
				options.leftPosition=coords.left + coords.width / 2 - options.leftOffset;
				classNameOrient='tip-l';
			}
			if(options.corner=='center') options.leftPosition=coords.left + coords.width / 2 - _this.tip.getSize().x / 2 + options.leftOffset;
			
		}
		if (options.align=='left'){
			classNameOrient='tip-l';
			if(options.corner=='left'){
				options.leftPosition=coords.left + options.leftOffset;
				if(options.leftPosition<0)options.corner='right';
			}
			if(options.corner=='right') options.leftPosition=coords.left - _this.tip.getSize().x + options.leftOffset;
			if(options.corner=='center') options.leftPosition=coords.left - _this.tip.getSize().x / 2 + options.leftOffset;
		}
		if (options.align=='right'){
			classNameOrient='tip-l';
			if(options.corner=='left') options.leftPosition=coords.left + _this.getSize().x - options.leftOffset;
			if(options.corner=='right') options.leftPosition=coords.left + _this.getSize().x - _this.tip.getSize().x + options.leftOffset;
			if(options.corner=='center') options.leftPosition=coords.left + _this.getSize().x - _this.tip.getSize().x / 2 + options.leftOffset;
		}
		// sprawdzamy czy diable nie jedzie za ekran (na razie tylko gora)
		if (Browser.Engine.trident){ 
			if (coords.top - _this.tip.getSize().y  - options.topEndOffset < 0) {
				if(options.animDirection=='up') options.animDirection='down';
			}
		}else{
			if (coords.top - document.body.scrollTop - _this.tip.getSize().y  - options.topEndOffset < 0) {
				if(options.animDirection=='up') options.animDirection='down';
			}
		}
		if(options.animDirection=='up'){
			options.animTopStart=coords.top - _this.tip.getSize().y - options.topStartOffset;
			options.animTopEnd=coords.top - _this.tip.getSize().y  - options.topEndOffset;
			//Dodaj klase dla tipa
			_this.tip.className=options.className+' '+classNameOrient+'b';
		}else if(options.animDirection=='down'){
			options.animTopStart=coords.bottom + options.topStartOffset;
			options.animTopEnd=coords.bottom + options.topEndOffset;
			//Dodaj klase dla tipa
			_this.tip.className=options.className+' '+classNameOrient+'t';
		}
		
		// ustawiamy left dla tip,a
		_this.tip.set({styles: {left:options.leftPosition}});

		if ($type(this.morph) == "object")
			this.morph.cancel();
		else
			this.morph = new Fx.Morph(this.tip, options.morphOptions);
		//IE hack
		if (Browser.Engine.trident){ 
			//alert('documentElement: '+document.documentElement.scrollTop);
			//alert('body: '+document.body.scrollTop);
			//alert(window.top.document.body.scrollTop);
			//alert((document.documentElement&&document.documentElement.scrollTop)?document.documentElement.scrollTop:document.body.scrollTop);
			options.animTopStart+=document.body.scrollTop;
			options.animTopEnd+=document.body.scrollTop;
			//iDump(coords);
			//alert('Top: '+options.animTopStart+'/Bottom:'+options.animTopEnd);
		}
		//alert('Top: '+options.animTopStart+'/Bottom:'+options.animTopEnd);
		// show it. really.
		this.morph.start({
			opacity: options.opacity,
			top: [options.animTopStart, options.animTopEnd]
		}).chain(function() {
			// once done, decide how to exit
			if (options.delay == 0) {
				// based on an event.
				options.eventEndTrigger.addEvent(options.eventEnd, function() {
					_this.morph.cancel();
					_this.slidingTipaway();
				});
				if(options.eventEnd=='mouseout'){
					_this.tip.addEvent('mouseover', function() {
						_this.morph.cancel();
						_this.slidingTipaway();
					});
				}
			}else {
				// based on a timed delay
				(function() {
					_this.slidingTipaway();
				}).delay(options.delay);
			}
		});
		_this.addEvent(options.eventEnd, function() {
			_this.morph.cancel();
			_this.slidingTipaway();
		});

		// define the tooltip close animation morph object
		var closeAnimation = {
			opacity: 0,
			top: options.animTopStart
		}

		this.store("closeAnimation", closeAnimation);

		return this;
	},
	slidingTipaway: function() {
		// animate slidingTip, backwards.
		if (this.tip) {
			this.morph.start(this.retrieve("closeAnimation"));
		}
		return this;
	}
});

function iToolTipInfo(className,defaultStyle,inTree){
	if(!inTree)
		inTree=document;
	allTipsInfo=inTree.getElements('.'+className);
	if ((inTree.hasClass)&&(inTree.hasClass(className)))
		allTipsInfo.combine([inTree]);
	allTipsInfo.each(function(item, idx){
		tipInfo=item.getElements('span');
		tipInfo.each(function(item_info, idx_info){
			//alert(item_info.innerHTML);
			iToolTipAttach(item,defaultStyle,'mouseover','mouseout','Informacja',item_info.innerHTML,'right','center');
		});
	});
}

function iToolTipFailed(className,defaultStyle,inTree){
	var fireFirstEvent=true;
	if(!inTree)
		inTree=document;
	allTipsFailed=inTree.getElements('.'+className);
	if ((inTree.hasClass)&&(inTree.hasClass(className)))
		allTipsFailed.combine([inTree]);
	
	//alert(allTipsFailed.length);
	allTipsFailed.each(function(item, idx){
		var tipInfo='';
		var tipItem;
		var showOnInput=true;
		var itemDisabled=false;
		if((item.get('tag')=='fieldset')){ //łączymy tip i failure (dla fieldseta)
			//TipInfo='';
			showOnInput=false;
			itemDisabled=false;
			tipItem='';
			item.getElements('.tip').each(function(tip, idx){
				if(tip.get('tag')=='legend'){
					tipItem=tip;
					item.getElements('.tipinfo').each(function(tiptext, idx){
						if(tiptext)
							tipInfo+=tiptext.innerHTML;
					});
				}
			});
			if(!tipItem){
				item.getChildren('legend.failure').each(function(tip, idx){
					//if(tip.get('tag')=='legend')
						tipItem=tip;
				});
			}
		}
		iProfilerBegin('B1');
		ErrMsg='';
		item_input='';
		item_inputs=[];
		inElems=item.getChildren('div');
		iProfilerEnd('B1');
		iProfilerBegin('B2');
		inElems.each(function(item_fail, idx,fail){
			iProfilerBegin('X');
			if(item_fail.hasClass('failure')&&(item_fail.get('tag')!='h4')){
				ErrMsg=item_fail.innerHTML;
			}
			iProfilerEnd('X');
			iProfilerBegin('Y');
			if(item_fail.hasClass('body')&&!(item_fail.hasClass('disabled'))){
				item_inputs=item_fail.getElements('input');
				item_inputs.combine(item_fail.getElements('select'));
				item_inputs.combine(item_fail.getElements('textarea'));
				if(item_inputs.length>0){
					item_input=item_inputs[0];
				}
			}
			iProfilerEnd('Y');
			iProfilerBegin('Z');
			if(item_fail.hasClass('body')&&(item_fail.hasClass('disabled'))){
				item_inputs=item_fail.getElements('input');
				item_inputs.combine(item_fail.getElements('select'));
				item_inputs.combine(item_fail.getElements('textarea'));
				if(item_inputs.length>0){
					item_input=item_inputs[0];
				}
				showOnInput=false;
				itemDisabled=true;
			}
			iProfilerEnd('Z');
		});
		iProfilerEnd('B2');
		if(!item_input){
			inElems=item.getChildren('.failure');
			inElems.each(function(item_fail, idx_fail){
				showOnInput=false;
				if(/*item_fail.hasClass('failure')&&*/(item_fail.get('tag')!='h4')&&(item_fail.get('tag')!='legend')){
					ErrMsg=item_fail.innerHTML;
				}
				if(item_fail.get('tag')=='h4'){
					tipItem=item_fail;
					
				}
			});
		}
		if(!showOnInput){
			if(itemDisabled){
				item_inputs.each(function(focitem,focidx){
					it=focitem.getParent();
					iToolTipAttach(it,defaultStyle,'mouseover','mouseout','Błędna wartość pola',ErrMsg,'left','left');
					if(fireFirstEvent){
						fireFirstEvent=false;
						it.fireEvent('mouseover',null,10);
					}
				});
			}
			if (tipItem) {
				iToolTipDeattach(tipItem,'mouseover');
				iToolTipDeattach(tipItem,'mouseout');
			}
			if(tipInfo!=''){
				ErrMsg+=tipInfo;
			}
			if(ErrMsg!=''){
				iToolTipAttach(tipItem,defaultStyle,'mouseover','mouseout','Błędna wartość pola',ErrMsg,'left','left');
				if(fireFirstEvent){
					fireFirstEvent=false;
					tipItem.fireEvent('mouseover',null,10);
				}
			}
		}else{
			item_inputs.each(function(focitem,focidx){
				iToolTipAttach(focitem,defaultStyle,'focus','blur','Błędna wartość pola',ErrMsg,'left','left');
				if(fireFirstEvent){
					fireFirstEvent=false;
					focitem.fireEvent('focus',null,50);
				}
			});
		}
	});
}

function iToolTipAttach(obj,defaultStyle,onEvent,offEvent,title,message,corner,align){
	if(!obj) return false;
	obj.addEvent(onEvent, function() {
		this.slidingTip(title,message, {
			eventEnd: offEvent, 
			//delay: 5 * 1000, // 5 sec delay
			leftOffset: -5,
			topStartOffset: 0,
			topEndOffset: 10, // offset startu wjazdu
			corner: corner,
			align: align,
			className: defaultStyle,
			elementSize: this.getSize()
		});
	});
}
function iToolTipDeattach(obj, event){
	obj.removeEvents(event);
}
window.addEvent("domready", function() {
	iToolTip(); // wolane w domchanged w id.js
});

function iToolTip(inTree) {
	iToolTipInfo('tip','default',inTree);
	iToolTipFailed('field-failure','default fail',inTree);
}

/*function iFailureTip(id,type,html) {
	switch(type) {
		case 'Calendar':
			//$$($(id+'_Day'),$(id+'_Month'),$(id+'_Year'))
			break;
		case 'File':
			//?
			break;
		case 'Select':
			//$(id)
			break;
		case 'PasswordConfirm':
			//$(id+'_Confirm')
			break;
		case 'Quarter':
			//$$($(id+'_Quarter'),$(id+'_Year'))
			break;
		case 'Div':
		case 'Fieldset':
			//$(id+'_Frame')
			break;
		default:
			//$(id)
			break;
	}
}*/

function iContractorAdevertisment(records) {
	var container=$('ContractorAdvertismentMain');
	var template_top='<div class="AdvItem AdvLine1"><a href="{Url}" class="ContractorAdvLink"><b>{Title}</b><p>{Body}</p><span>{City}, {Region}</span></a></div>';
	var template_bottom='<div class="AdvItem AdvLine2"><a href="{Url}" class="ContractorAdvLink"><b>{Title}</b><p>{Body}</p><span>{City}, {Region}</span></a></div>';
	document.vAnimate = {};//{fx_top_in:{}, fx_top_out:{}, fx_bottom_in:{}, fx_bottom_out:{}};
	var r,i=0;
	var top=[];
	var bottom=[];

	//split records
	var turnover=false;
	var len=records.length;
	for (i=0;i<len;i++) {
		r=Math.floor(Math.random() * records.length);
		if (turnover=!turnover) top.push(records[r]);
		else bottom.push(records[r]);
		records.erase(records[r]);
	}
	var divs_top=[];
	var divs_bottom=[];
	i=0;
	top.each(function(record) {
		var html=template_top.substitute(record);
		var div=Elements.from(html)[0];
		divs_top[i]=div;
		if (i) 
			div.setStyle('left','-297');
		i++;
		div.id='record_top_'+i;
		container.adopt(div);
	});
	document.vContractorTop=0;
	document.vDivsTop=divs_top;
	i=0;
	bottom.each(function(record) {
		var html=template_bottom.substitute(record);
		var div=Elements.from(html)[0];
		divs_bottom[i]=div;
		if (i)
			div.setStyle('left','-297');
		i++;
		div.id='record_bottom_'+i;
		container.adopt(div);
	});
	document.vContractorBottom=0;
	document.vDivsBottom=divs_bottom;
	
	if (top.length>1) {
		idTop = window.setInterval(vContractorAdvMoveTop,10000);
	}
	if (bottom.length>1) {
		var f=function () {
			idBottom = window.setInterval(vContractorAdvMoveBottom,10000);
		}.delay(150);
	}
	container.addEvent('mouseenter', function() {
		document.vAnimatePause=true;
		if (document.vAnimateSet) {
			if (fx=document.vAnimate.fx_top_in) fx.pause();
			if (fx=document.vAnimate.fx_top_out) fx.pause();
			if (fx=document.vAnimate.fx_bottom_in) fx.pause();
			if (fx=document.vAnimate.fx_bottom_out) fx.pause();
		}
	});
	container.addEvent('mouseleave', function() {
		if (document.vAnimateSet) {
			if (fx=document.vAnimate.fx_top_in) fx.resume();
			if (fx=document.vAnimate.fx_top_out) fx.resume();
			if (fx=document.vAnimate.fx_bottom_in) fx.resume();
			if (fx=document.vAnimate.fx_bottom_out) fx.resume();
		}
		document.vAnimatePause=false; 
	});
}

function vContractorAdvMoveTop() {
	if (!document.vAnimatePause) {
		var divs=document.vDivsTop;
		var _out=document.vContractorTop;
		var _in=(divs.length>_out+1)?(_out+1):0;
		document.vAnimate.fx_top_out=new Fx.Tween(divs[_out], {property: 'left'});
		document.vAnimate.fx_top_in=new Fx.Tween(divs[_in], {property: 'left'});
		document.vAnimateSet=false;
		document.vAnimate.fx_top_out.start(14,340).chain(function(){
			document.vContractorTop++;
			if (document.vContractorTop>=divs.length)
				document.vContractorTop=0;
			document.vAnimate.fx_top_in.start(-297,14);
		});
	}
}
function vContractorAdvMoveBottom() {
	if (!document.vAnimatePause) {
		var divs=document.vDivsBottom;
		var _out=document.vContractorBottom;
		var _in=(divs.length>_out+1)?(_out+1):0;
		//alert(divs[_out]);
		//alert(divs[_in]);
		document.vAnimate.fx_bottom_out=new Fx.Tween(divs[_out], {property: 'left'});
		document.vAnimate.fx_bottom_in=new Fx.Tween(divs[_in], {property: 'left'});
		document.vAnimateSet=false;
		document.vAnimate.fx_bottom_out.start(14,340).chain(function(){
			document.vContractorBottom++;
			if (document.vContractorBottom>=divs.length)
				document.vContractorBottom=0;
			document.vAnimate.fx_bottom_in.start(-297,14);
		});
	}
}