﻿if(typeof(Class) != 'undefined') { 
var Slider = new Class({

	Implements: [Events, Options],

	options: {/*
		onChange: $empty,
		onComplete: $empty,*/
		onTick: function(position){
			if(this.options.snap) position = this.toPosition(this.step);
			this.knob.setStyle(this.property, position);
		},
		snap: false,
		offset: 0,
		range: false,
		wheel: false,
		steps: 100,
		mode: 'horizontal'
	},
	
	resize: function() {
		var offset, limit = {}, modifiers = {'x': false, 'y': false};
		switch (this.options.mode){
			case 'vertical':
				this.axis = 'y';
				this.property = 'top';
				offset = 'offsetHeight';
				break;
			case 'horizontal':
				this.axis = 'x';
				this.property = 'left';
				offset = 'offsetWidth';
		}
		this.half = this.knob[offset] / 2;
		this.full = this.element[offset] - this.knob[offset] + (this.options.offset * 2);
		this.min = 0;
		this.max = this.options.steps;
		this.range = this.max - this.min;
		this.steps = this.options.steps || this.full;
		this.stepSize = Math.abs(this.range) / this.steps;
		this.stepWidth = this.stepSize * this.full / Math.abs(this.range) ;
		limit[this.axis] = [- this.options.offset, this.full - this.options.offset];
		this.drag.options.limit = limit;
	},

	initialize: function(element, knob, options){
//		alert('init');
		this.setOptions(options);
		this.element = $(element);
		this.knob = $(knob);
		this.previousChange = this.previousEnd = this.step = -1;
		this.element.addEvent('mousedown', this.clickedElement.bind(this));
		if (this.options.wheel) this.element.addEvent('mousewheel', this.scrolledElement.bindWithEvent(this));
		var offset, limit = {}, modifiers = {'x': false, 'y': false};
		switch (this.options.mode){
			case 'vertical':
				this.axis = 'y';
				this.property = 'top';
				offset = 'offsetHeight';
				break;
			case 'horizontal':
				this.axis = 'x';
				this.property = 'left';
				offset = 'offsetWidth';
		}
		this.half = this.knob[offset] / 2;
		this.full = this.element[offset] - this.knob[offset] + (this.options.offset * 2);
		this.min = $chk(this.options.range[0]) ? this.options.range[0] : 0;
		this.max = $chk(this.options.range[1]) ? this.options.range[1] : this.options.steps;
		this.range = this.max - this.min;
		this.steps = this.options.steps || this.full;
		this.stepSize = Math.abs(this.range) / this.steps;
		this.stepWidth = this.stepSize * this.full / Math.abs(this.range) ;
		
		this.knob.setStyle('position', 'relative').setStyle(this.property, - this.options.offset);
		modifiers[this.axis] = this.property;
		limit[this.axis] = [- this.options.offset, this.full - this.options.offset];
		
		this.drag = new Drag(this.knob, {
			snap: 0,
			limit: limit,
			modifiers: modifiers,
			onDrag: this.draggedKnob.bind(this),
			onStart: this.draggedKnob.bind(this),
			onComplete: function(){
				this.draggedKnob();
				this.end();
			}.bind(this)
		});
		if (this.options.snap) {
			this.drag.options.grid = Math.ceil(this.stepWidth);
			this.drag.options.limit[this.axis][1] = this.full;
		}
	},

	set: function(step){
		if (!((this.range > 0) ^ (step < this.min))) step = this.min;
		if (!((this.range > 0) ^ (step > this.max))) step = this.max;
		
		this.step = Math.round(step);
		this.checkStep();
		this.end();
		this.fireEvent('tick', this.toPosition(this.step));
		return this;
	},

	clickedElement: function(event){
		var dir = this.range < 0 ? -1 : 1;
		var position = event.page[this.axis] - this.element.getPosition()[this.axis] - this.half;
		position = position.limit(-this.options.offset, this.full -this.options.offset);
		
		this.step = Math.round(this.min + dir * this.toStep(position));
		this.checkStep();
		this.end();
		this.fireEvent('tick', position);
	},
	
	scrolledElement: function(event){
		var mode = (this.options.mode == 'horizontal') ? (event.wheel < 0) : (event.wheel > 0);
		this.set(mode ? this.step - this.stepSize : this.step + this.stepSize);
		event.stop();
	},

	draggedKnob: function(){
		var dir = this.range < 0 ? -1 : 1;
		var position = this.drag.value.now[this.axis];
		var a = -this.options.offset;
		var b = this.full -this.options.offset;
		var c = position;
		position = position.limit(
								  -this.options.offset, 
								  this.full -this.options.offset
					);
		this.step = Math.round(this.min + dir * this.toStep(position));
		this.checkStep();
	},

	checkStep: function(){
		if (this.previousChange != this.step){
			this.previousChange = this.step;
			this.fireEvent('change', this.step);
		}
	},

	end: function(){
		if (this.previousEnd !== this.step){
			this.previousEnd = this.step;
			this.fireEvent('complete', this.step + '');
		}
	},

	toStep: function(position){
		var step = (position + this.options.offset) * this.stepSize / this.full * this.steps;
		return this.options.steps ? Math.round(step -= step % this.stepSize) : step;
	},

	toPosition: function(step){
		return (this.full * Math.abs(this.min - step)) / (this.steps * this.stepSize) - this.options.offset;
	} });

var Scroller = new Class({

	Implements: [Events, Options],

	options: {
		area: 20,
		velocity: 1,
		onChange: function(x, y){
			this.element.scrollTo(x, y);
		}
	},

	initialize: function(element, options){
		this.setOptions(options);
		this.element = $(element);
		this.listener = ($type(this.element) != 'element') ? $(this.element.getDocument().body) : this.element;
		this.timer = null;
		this.coord = this.getCoords.bind(this);
	},

	start: function(){
		this.listener.addEvent('mousemove', this.coord);
	},

	stop: function(){
		this.listener.removeEvent('mousemove', this.coord);
		this.timer = $clear(this.timer);
	},

	getCoords: function(event){
		this.page = (this.listener.get('tag') == 'body') ? event.client : event.page;
		if (!this.timer) this.timer = this.scroll.periodical(50, this);
	},

	scroll: function(){
		var size = this.element.getSize(), scroll = this.element.getScroll(), pos = this.element.getPosition(), change = {'x': 0, 'y': 0};
		for (var z in this.page){
			if (this.page[z] < (this.options.area + pos[z]) && scroll[z] != 0)
				change[z] = (this.page[z] - this.options.area - pos[z]) * this.options.velocity;
			else if (this.page[z] + this.options.area > (size[z] + pos[z]) && size[z] + size[z] != scroll[z])
				change[z] = (this.page[z] - size[z] + this.options.area - pos[z]) * this.options.velocity;
		}
		if (change.y || change.x) this.fireEvent('change', [scroll.x + change.x, scroll.y + change.y]);
	} });


var popUpWin=0;
function popUpWindow(URLStr, left, top, width, height)
{
  popUpWin = open(URLStr, 'YCpopUpWin', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=yes,width='+width+',height='+height+'');
  popUpWin.focus();
}

function popUpAdminWindow(URLStr, left, top, width, height)
{
  popUpWin = open(URLStr, 'YCpopUpWin', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width='+width+',height='+height+'');
  popUpWin.focus();
}

var swfobject=function(){var Z="undefined",P="object",B="Shockwave Flash",h="ShockwaveFlash.ShockwaveFlash",W="application/x-shockwave-flash",K="SWFObjectExprInst",G=window,g=document,N=navigator,f=[],H=[],Q=null,L=null,T=null,S=false,C=false;var a=function(){var l=typeof g.getElementById!=Z&&typeof g.getElementsByTagName!=Z&&typeof g.createElement!=Z&&typeof g.appendChild!=Z&&typeof g.replaceChild!=Z&&typeof g.removeChild!=Z&&typeof g.cloneNode!=Z,t=[0,0,0],n=null;if(typeof N.plugins!=Z&&typeof N.plugins[B]==P){n=N.plugins[B].description;if(n){n=n.replace(/^.*\s+(\S+\s+\S+$)/,"$1");t[0]=parseInt(n.replace(/^(.*)\..*$/,"$1"),10);t[1]=parseInt(n.replace(/^.*\.(.*)\s.*$/,"$1"),10);t[2]=/r/.test(n)?parseInt(n.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof G.ActiveXObject!=Z){var o=null,s=false;try{o=new ActiveXObject(h+".7")}catch(k){try{o=new ActiveXObject(h+".6");t=[6,0,21];o.AllowScriptAccess="always"}catch(k){if(t[0]==6){s=true}}if(!s){try{o=new ActiveXObject(h)}catch(k){}}}if(!s&&o){try{n=o.GetVariable("$version");if(n){n=n.split(" ")[1].split(",");t=[parseInt(n[0],10),parseInt(n[1],10),parseInt(n[2],10)]}}catch(k){}}}}var v=N.userAgent.toLowerCase(),j=N.platform.toLowerCase(),r=/webkit/.test(v)?parseFloat(v.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,i=false,q=j?/win/.test(j):/win/.test(v),m=j?/mac/.test(j):/mac/.test(v);/*@cc_on i=true;@if(@_win32)q=true;@elif(@_mac)m=true;@end@*/return{w3cdom:l,pv:t,webkit:r,ie:i,win:q,mac:m}}();var e=function(){if(!a.w3cdom){return }J(I);if(a.ie&&a.win){try{g.write("<script id=__ie_ondomload defer=true src=//:><\/script>");var i=c("__ie_ondomload");if(i){i.onreadystatechange=function(){if(this.readyState=="complete"){this.parentNode.removeChild(this);V()}}}}catch(j){}}if(a.webkit&&typeof g.readyState!=Z){Q=setInterval(function(){if(/loaded|complete/.test(g.readyState)){V()}},10)}if(typeof g.addEventListener!=Z){g.addEventListener("DOMContentLoaded",V,null)}M(V)}();function V(){if(S){return }if(a.ie&&a.win){var m=Y("span");try{var l=g.getElementsByTagName("body")[0].appendChild(m);l.parentNode.removeChild(l)}catch(n){return }}S=true;if(Q){clearInterval(Q);Q=null}var j=f.length;for(var k=0;k<j;k++){f[k]()}}function J(i){if(S){i()}else{f[f.length]=i}}function M(j){if(typeof G.addEventListener!=Z){G.addEventListener("load",j,false)}else{if(typeof g.addEventListener!=Z){g.addEventListener("load",j,false)}else{if(typeof G.attachEvent!=Z){G.attachEvent("onload",j)}else{if(typeof G.onload=="function"){var i=G.onload;G.onload=function(){i();j()}}else{G.onload=j}}}}}function I(){var l=H.length;for(var j=0;j<l;j++){var m=H[j].id;if(a.pv[0]>0){var k=c(m);if(k){H[j].width=k.getAttribute("width")?k.getAttribute("width"):"0";H[j].height=k.getAttribute("height")?k.getAttribute("height"):"0";if(O(H[j].swfVersion)){if(a.webkit&&a.webkit<312){U(k)}X(m,true)}else{if(H[j].expressInstall&&!C&&O("6.0.65")&&(a.win||a.mac)){D(H[j])}else{d(k)}}}}else{X(m,true)}}}function U(m){var k=m.getElementsByTagName(P)[0];if(k){var p=Y("embed"),r=k.attributes;if(r){var o=r.length;for(var n=0;n<o;n++){if(r[n].nodeName.toLowerCase()=="data"){p.setAttribute("src",r[n].nodeValue)}else{p.setAttribute(r[n].nodeName,r[n].nodeValue)}}}var q=k.childNodes;if(q){var s=q.length;for(var l=0;l<s;l++){if(q[l].nodeType==1&&q[l].nodeName.toLowerCase()=="param"){p.setAttribute(q[l].getAttribute("name"),q[l].getAttribute("value"))}}}m.parentNode.replaceChild(p,m)}}function F(i){if(a.ie&&a.win&&O("8.0.0")){G.attachEvent("onunload",function(){var k=c(i);if(k){for(var j in k){if(typeof k[j]=="function"){k[j]=function(){}}}k.parentNode.removeChild(k)}})}}function D(j){C=true;var o=c(j.id);if(o){if(j.altContentId){var l=c(j.altContentId);if(l){L=l;T=j.altContentId}}else{L=b(o)}if(!(/%$/.test(j.width))&&parseInt(j.width,10)<310){j.width="310"}if(!(/%$/.test(j.height))&&parseInt(j.height,10)<137){j.height="137"}g.title=g.title.slice(0,47)+" - Flash Player Installation";var n=a.ie&&a.win?"ActiveX":"PlugIn",k=g.title,m="MMredirectURL="+G.location+"&MMplayerType="+n+"&MMdoctitle="+k,p=j.id;if(a.ie&&a.win&&o.readyState!=4){var i=Y("div");p+="SWFObjectNew";i.setAttribute("id",p);o.parentNode.insertBefore(i,o);o.style.display="none";G.attachEvent("onload",function(){o.parentNode.removeChild(o)})}R({data:j.expressInstall,id:K,width:j.width,height:j.height},{flashvars:m},p)}}function d(j){if(a.ie&&a.win&&j.readyState!=4){var i=Y("div");j.parentNode.insertBefore(i,j);i.parentNode.replaceChild(b(j),i);j.style.display="none";G.attachEvent("onload",function(){j.parentNode.removeChild(j)})}else{j.parentNode.replaceChild(b(j),j)}}function b(n){var m=Y("div");if(a.win&&a.ie){m.innerHTML=n.innerHTML}else{var k=n.getElementsByTagName(P)[0];if(k){var o=k.childNodes;if(o){var j=o.length;for(var l=0;l<j;l++){if(!(o[l].nodeType==1&&o[l].nodeName.toLowerCase()=="param")&&!(o[l].nodeType==8)){m.appendChild(o[l].cloneNode(true))}}}}}return m}function R(AE,AC,q){var p,t=c(q);if(typeof AE.id==Z){AE.id=q}if(a.ie&&a.win){var AD="";for(var z in AE){if(AE[z]!=Object.prototype[z]){if(z=="data"){AC.movie=AE[z]}else{if(z.toLowerCase()=="styleclass"){AD+=' class="'+AE[z]+'"'}else{if(z!="classid"){AD+=" "+z+'="'+AE[z]+'"'}}}}}var AB="";for(var y in AC){if(AC[y]!=Object.prototype[y]){AB+='<param name="'+y+'" value="'+AC[y]+'" />'}}t.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+AD+">"+AB+"</object>";F(AE.id);p=c(AE.id)}else{if(a.webkit&&a.webkit<312){var AA=Y("embed");AA.setAttribute("type",W);for(var x in AE){if(AE[x]!=Object.prototype[x]){if(x=="data"){AA.setAttribute("src",AE[x])}else{if(x.toLowerCase()=="styleclass"){AA.setAttribute("class",AE[x])}else{if(x!="classid"){AA.setAttribute(x,AE[x])}}}}}for(var w in AC){if(AC[w]!=Object.prototype[w]){if(w!="movie"){AA.setAttribute(w,AC[w])}}}t.parentNode.replaceChild(AA,t);p=AA}else{var s=Y(P);s.setAttribute("type",W);for(var v in AE){if(AE[v]!=Object.prototype[v]){if(v.toLowerCase()=="styleclass"){s.setAttribute("class",AE[v])}else{if(v!="classid"){s.setAttribute(v,AE[v])}}}}for(var u in AC){if(AC[u]!=Object.prototype[u]&&u!="movie"){E(s,u,AC[u])}}t.parentNode.replaceChild(s,t);p=s}}return p}function E(k,i,j){var l=Y("param");l.setAttribute("name",i);l.setAttribute("value",j);k.appendChild(l)}function c(i){return g.getElementById(i)}function Y(i){return g.createElement(i)}function O(k){var j=a.pv,i=k.split(".");i[0]=parseInt(i[0],10);i[1]=parseInt(i[1],10);i[2]=parseInt(i[2],10);return(j[0]>i[0]||(j[0]==i[0]&&j[1]>i[1])||(j[0]==i[0]&&j[1]==i[1]&&j[2]>=i[2]))?true:false}function A(m,j){if(a.ie&&a.mac){return }var l=g.getElementsByTagName("head")[0],k=Y("style");k.setAttribute("type","text/css");k.setAttribute("media","screen");if(!(a.ie&&a.win)&&typeof g.createTextNode!=Z){k.appendChild(g.createTextNode(m+" {"+j+"}"))}l.appendChild(k);if(a.ie&&a.win&&typeof g.styleSheets!=Z&&g.styleSheets.length>0){var i=g.styleSheets[g.styleSheets.length-1];if(typeof i.addRule==P){i.addRule(m,j)}}}function X(k,i){var j=i?"visible":"hidden";if(S){c(k).style.visibility=j}else{A("#"+k,"visibility:"+j)}}return{registerObject:function(l,i,k){if(!a.w3cdom||!l||!i){return }var j={};j.id=l;j.swfVersion=i;j.expressInstall=k?k:false;H[H.length]=j;X(l,false)},getObjectById:function(l){var i=null;if(a.w3cdom&&S){var j=c(l);if(j){var k=j.getElementsByTagName(P)[0];if(!k||(k&&typeof j.SetVariable!=Z)){i=j}else{if(typeof k.SetVariable!=Z){i=k}}}}return i},embedSWF:function(n,u,r,t,j,m,k,p,s){if(!a.w3cdom||!n||!u||!r||!t||!j){return }r+="";t+="";if(O(j)){X(u,false);var q=(typeof s==P)?s:{};q.data=n;q.width=r;q.height=t;var o=(typeof p==P)?p:{};if(typeof k==P){for(var l in k){if(k[l]!=Object.prototype[l]){if(typeof o.flashvars!=Z){o.flashvars+="&"+l+"="+k[l]}else{o.flashvars=l+"="+k[l]}}}}J(function(){R(q,o,u);if(q.id==u){X(u,true)}})}else{if(m&&!C&&O("6.0.65")&&(a.win||a.mac)){X(u,false);J(function(){var i={};i.id=i.altContentId=u;i.width=r;i.height=t;i.expressInstall=m;D(i)})}}},getFlashPlayerVersion:function(){return{major:a.pv[0],minor:a.pv[1],release:a.pv[2]}},hasFlashPlayerVersion:O,createSWF:function(k,j,i){if(a.w3cdom&&S){return R(k,j,i)}else{return undefined}},createCSS:function(j,i){if(a.w3cdom){A(j,i)}},addDomLoadEvent:J,addLoadEvent:M,getQueryParamValue:function(m){var l=g.location.search||g.location.hash;if(m==null){return l}if(l){var k=l.substring(1).split("&");for(var j=0;j<k.length;j++){if(k[j].substring(0,k[j].indexOf("="))==m){return k[j].substring((k[j].indexOf("=")+1))}}}return""},expressInstallCallback:function(){if(C&&L){var i=c(K);if(i){i.parentNode.replaceChild(L,i);if(T){X(T,true);if(a.ie&&a.win){L.style.display="block"}}L=null;T=null;C=false}}}}}();

// -- NATIVE YAMAHA-MOTOR.RU SCRIPTS --
	sfHover = function() {
	// Find all unordered lists.
	var ieNavs = document.getElementsByTagName('ul');
	for(i=0; i<ieNavs.length; i++) {
		var ul = ieNavs[i];
		// If they have a class of nav add the menu hover.
		if(ul.className == "nav") setHover(ul);
	}
 }
	function setHover(nav) {
	var ieULs = nav.getElementsByTagName('ul');
	if (1) {
		// IE script to cover <select> elements with <iframe>s
		for (j=0; j<ieULs.length; j++) {
			var ieMat=document.createElement('iframe');
			if(document.location.protocol == "https:")
				ieMat.src="//0";
			else
				ieMat.src="javascript:''";
			ieMat.scrolling="no";
			ieMat.frameBorder="0";
			ieMat.style.width=ieULs[j].offsetWidth+"px";
			ieMat.style.height=ieULs[j].offsetHeight+"px";
			ieMat.style.zIndex="-1";
			try { ieULs[j].insertBefore(ieMat, ieULs[j].childNodes[0]); } catch(e) {};
			try { ieULs[j].style.zIndex="101" } catch(e) {};
		}
		// IE script to change class on mouseover
		var ieLIs = nav.getElementsByTagName('li');
		for (var i=0; i<ieLIs.length; i++) if (ieLIs[i]) {
			// Does this LI have children? If so add a sfnode class.
			if (ieLIs[i].getElementsByTagName("UL").length>0){
				ieLIs[i].className+=" sfnode";
			}
			
			// Add a sfhover class to the li.
			ieLIs[i].onmouseover=function() {this.className+=" sfhover"; }
			ieLIs[i].onmouseout=function() {this.className=this.className.replace(' sfhover', '');}
		}
	} else {
		// IE 5.0 doesn't support iframes so hide the select statements on hover and show on mouse out.
		// IE script to change class on mouseover
		var ieLIs = document.getElementById('nav').getElementsByTagName('li');
		for (var i=0; i<ieLIs.length; i++) if (ieLIs[i]) {
			ieLIs[i].onmouseover=function() {this.className+=" sfhover"; hideSelects(); } 
			ieLIs[i].onmouseout=function() {this.className='';/*this.className.replace(' sfhover', ''); alert(this.className); */showSelects()}
		}
	} }
	function hideSelects(){
	var oSelects=document.getElementsByTagName("select");
	for(var i=0;i<oSelects.length;i++)
		oSelects[i].className+=" hide"; }
	function showSelects(){
	var oSelects=document.getElementsByTagName("select");
	for(var i=0;i<oSelects.length;i++)
		oSelects[i].className=oSelects[i].className.replace(" hide",""); }

	function msegment_over(id, segment) {
	document.getElementById("t" + id).className = segment + '_segment_selector';
	return; }
	function msegment_out(id) {
	document.getElementById("t" + id).className = 'segment_selector';
	return; }

// -- UPLOADER --
/**
 * Fx.ProgressBar
 *
 * @version		1.1
 *
 * @license		MIT License
 *
 * @author		Harald Kirschner <mail [at] digitarald [dot] de>
 * @copyright	Authors
 */

Fx.ProgressBar = new Class({

	Extends: Fx,

	options: {
		text: null,
		url: null,
		transition: Fx.Transitions.Circ.easeOut,
		fit: true,
		link: 'cancel'
	},

	initialize: function(element, options) {
		this.element = $(element);
		this.parent(options);
				
		var url = this.options.url;
		if (url) {
			this.element.setStyles({
				'background-image': 'url(' + url + ')',
				'background-repeat': 'no-repeat'
			});
		}
		
		if (this.options.fit) {
			url = url || this.element.getStyle('background-image').replace(/^url\(["']?|["']?\)$/g, '');
			if (url) {
				var fill = new Image();
				fill.onload = function() {
					this.fill = fill.width;
					fill = fill.onload = null;
					this.set(this.now || 0);
				}.bind(this);
				fill.src = url;
				if (!this.fill && fill.width) fill.onload();
			}
		} else {
			this.set(0);
		}
	},

	start: function(to, total) {
		return this.parent(this.now, (arguments.length == 1) ? to.limit(0, 100) : to / total * 100);
	},

	set: function(to) {
		this.now = to;
		var css = (this.fill)
			? (((this.fill / -2) + (to / 100) * (this.element.width || 1) || 0).round() + 'px')
			: ((100 - to) + '%');
		
		this.element.setStyle('backgroundPosition', css + ' 0px').title = Math.round(to) + '%';
		
		var text = $(this.options.text);
		if (text) text.set('text', Math.round(to) + '%');
		
		return this;
	}

});
/**
 * Swiff.Uploader - Flash FileReference Control
 *
 * @version		3.0
 *
 * @license		MIT License
 *
 * @author		Harald Kirschner <http://digitarald.de>
 * @author		Valerio Proietti, <http://mad4milk.net>
 * @copyright	Authors
 */

Swiff.Uploader = new Class({

	Extends: Swiff,

	Implements: Events,

	options: {
		path: 'Swiff.Uploader.swf',
		
		target: null,
		zIndex: 9999,
		
		height: 30,
		width: 100,
		callBacks: null,
		params: {
			wMode: 'opaque',
			menu: 'false',
			allowScriptAccess: 'always'
		},

		typeFilter: null,
		multiple: true,
		queued: true,
		verbose: false,

		url: null,
		method: null,
		data: null,
		mergeData: true,
		fieldName: null,

		fileSizeMin: 1,
		fileSizeMax: null, // Official limit is 100 MB for FileReference, but I tested up to 2Gb!
		allowDuplicates: false,
		timeLimit: (Browser.Platform.linux) ? 0 : 30,

		buttonImage: null,
		policyFile: null,
		
		fileListMax: 0,
		fileListSizeMax: 0,

		instantStart: false,
		appendCookieData: false,
		
		fileClass: null
		/*
		onLoad: $empty,
		onFail: $empty,
		onStart: $empty,
		onQueue: $empty,
		onComplete: $empty,
		onBrowse: $empty,
		onDisabledBrowse: $empty,
		onCancel: $empty,
		onSelect: $empty,
		onSelectSuccess: $empty,
		onSelectFail: $empty,
		
		onButtonEnter: $empty,
		onButtonLeave: $empty,
		onButtonDown: $empty,
		onButtonDisable: $empty,
		
		onFileStart: $empty,
		onFileStop: $empty,
		onFileRequeue: $empty,
		onFileOpen: $empty,
		onFileProgress: $empty,
		onFileComplete: $empty,
		onFileRemove: $empty,
		
		onBeforeStart: $empty,
		onBeforeStop: $empty,
		onBeforeRemove: $empty
		*/
	},

	initialize: function(options) {
		// protected events to control the class, added
		// before setting options (which adds own events)
		this.addEvent('load', this.initializeSwiff, true)
			.addEvent('select', this.processFiles, true)
			.addEvent('complete', this.update, true)
			.addEvent('fileRemove', function(file) {
				this.fileList.erase(file);
			}.bind(this), true);

		this.setOptions(options);

		// callbacks are no longer in the options, every callback
		// is fired as event, this is just compat
		if (this.options.callBacks) {
			Hash.each(this.options.callBacks, function(fn, name) {
				this.addEvent(name, fn);
			}, this);
		}

		this.options.callBacks = {
			fireCallback: this.fireCallback.bind(this)
		};

		var path = this.options.path;
		if (!path.contains('?')) path += '?noCache=' + $time(); // cache in IE

		// container options for Swiff class
		this.options.container = this.box = new Element('span', {'class': 'swiff-uploader-box'}).inject($(this.options.container) || document.body);

		// target 
		this.target = $(this.options.target);
		if (this.target) {
			var scroll = window.getScroll();
			this.box.setStyles({
				position: 'absolute',
				visibility: 'visible',
				zIndex: this.options.zIndex,
				overflow: 'hidden',
				height: 1, width: 1,
				top: scroll.y, left: scroll.x
			});
			
			// we force wMode to transparent for the overlay effect
			this.parent(path, {
				params: {
					wMode: 'transparent'
				},
				height: '100%',
				width: '100%'
			});
			
			this.target.addEvent('mouseenter', this.reposition.bind(this, []));
			
			// button interactions, relayed to to the target
			this.addEvents({
				buttonEnter: this.targetRelay.bind(this, ['mouseenter']),
				buttonLeave: this.targetRelay.bind(this, ['mouseleave']),
				buttonDown: this.targetRelay.bind(this, ['mousedown']),
				buttonDisable: this.targetRelay.bind(this, ['disable'])
			});
			
			this.reposition();
			window.addEvent('resize', this.reposition.bind(this, []));
		} else {
			this.parent(path);
		}

		this.inject(this.box);

		this.fileList = [];
		
		this.size = this.uploading = this.bytesLoaded = this.percentLoaded = 0;
		
		if (Browser.Plugins.Flash.version < 9) {
			this.fireEvent('fail', ['flash']);
		} else {
			this.verifyLoad.delay(1000, this);
		}
	},
	
	verifyLoad: function() {
		if (this.loaded) return;
		if (!this.object.parentNode) {
			this.fireEvent('fail', ['disabled']);
		} else if (this.object.style.display == 'none') {
			this.fireEvent('fail', ['hidden']);
		} else if (!this.object.offsetWidth) {
			this.fireEvent('fail', ['empty']);
		}
	},

	fireCallback: function(name, args) {
		// file* callbacks are relayed to the specific file
		if (name.substr(0, 4) == 'file') {
			// updated queue data is the second argument
			if (args.length > 1) this.update(args[1]);
			var data = args[0];
			
			var file = this.findFile(data.id);
			this.fireEvent(name, file || data, 5);
			if (file) {
				var fire = name.replace(/^file([A-Z])/, function($0, $1) {
					return $1.toLowerCase();
				});
				file.update(data).fireEvent(fire, [data], 10);
			}
		} else {
			this.fireEvent(name, args, 5);
		}
	},

	update: function(data) {
		// the data is saved right to the instance 
		$extend(this, data);
		this.fireEvent('queue', [this], 10);
		return this;
	},

	findFile: function(id) {
		for (var i = 0; i < this.fileList.length; i++) {
			if (this.fileList[i].id == id) return this.fileList[i];
		}
		return null;
	},

	initializeSwiff: function() {
		// extracted options for the swf 
		this.remote('initialize', {
			width: this.options.width,
			height: this.options.height,
			typeFilter: this.options.typeFilter,
			multiple: this.options.multiple,
			queued: this.options.queued,
			url: this.options.url,
			method: this.options.method,
			data: this.options.data,
			mergeData: this.options.mergeData,
			fieldName: this.options.fieldName,
			verbose: this.options.verbose,
			fileSizeMin: this.options.fileSizeMin,
			fileSizeMax: this.options.fileSizeMax,
			allowDuplicates: this.options.allowDuplicates,
			timeLimit: this.options.timeLimit,
			buttonImage: this.options.buttonImage,
			policyFile: this.options.policyFile
		});

		this.loaded = true;

		this.appendCookieData();
	},
	
	targetRelay: function(name) {
		if (this.target) this.target.fireEvent(name);
	},

	reposition: function(coords) {
		// update coordinates, manual or automatically
		coords = coords || (this.target && this.target.offsetHeight)
			? this.target.getCoordinates(this.box.getOffsetParent())
			: {top: window.getScrollTop(), left: 0, width: 40, height: 40}
		this.box.setStyles(coords);
		this.fireEvent('reposition', [coords, this.box, this.target]);
	},

	setOptions: function(options) {
		if (options) {
			if (options.url) options.url = Swiff.Uploader.qualifyPath(options.url);
			if (options.buttonImage) options.buttonImage = Swiff.Uploader.qualifyPath(options.buttonImage);
			this.parent(options);
			if (this.loaded) this.remote('setOptions', options);
		}
		return this;
	},

	setEnabled: function(status) {
		this.remote('setEnabled', status);
	},

	start: function() {
		this.fireEvent('beforeStart');
		this.remote('start');
	},

	stop: function() {
		this.fireEvent('beforeStop');
		this.remote('stop');
	},

	remove: function() {
		this.fireEvent('beforeRemove');
		this.remote('remove');
	},

	fileStart: function(file) {
		this.remote('fileStart', file.id);
	},

	fileStop: function(file) {
		this.remote('fileStop', file.id);
	},

	fileRemove: function(file) {
		this.remote('fileRemove', file.id);
	},

	fileRequeue: function(file) {
		this.remote('fileRequeue', file.id);
	},

	appendCookieData: function() {
		var append = this.options.appendCookieData;
		if (!append) return;
		
		var hash = {};
		document.cookie.split(/;\s*/).each(function(cookie) {
			cookie = cookie.split('=');
			if (cookie.length == 2) {
				hash[decodeURIComponent(cookie[0])] = decodeURIComponent(cookie[1]);
			}
		});

		var data = this.options.data || {};
		if ($type(append) == 'string') data[append] = hash;
		else $extend(data, hash);

		this.setOptions({data: data});
	},

	processFiles: function(successraw, failraw, queue) {
		var cls = this.options.fileClass || Swiff.Uploader.File;

		var fail = [], success = [];

		if (successraw) {
			successraw.each(function(data) {
				var ret = new cls(this, data);
				if (!ret.validate()) {
					ret.remove.delay(10, ret);
					fail.push(ret);
				} else {
					this.size += data.size;
					this.fileList.push(ret);
					success.push(ret);
					ret.render();
				}
			}, this);

			this.fireEvent('selectSuccess', [success], 10);
		}

		if (failraw || fail.length) {
			fail.extend((failraw) ? failraw.map(function(data) {
				return new cls(this, data);
			}, this) : []).each(function(file) {
				file.invalidate().render();
			});

			this.fireEvent('selectFail', [fail], 10);
		}

		this.update(queue);

		if (this.options.instantStart && success.length) this.start();
	}

});

$extend(Swiff.Uploader, {

	STATUS_QUEUED: 0,
	STATUS_RUNNING: 1,
	STATUS_ERROR: 2,
	STATUS_COMPLETE: 3,
	STATUS_STOPPED: 4,

	log: function() {
		if (window.console && console.info) console.info.apply(console, arguments);
	},

	unitLabels: {
		b: [{min: 1, unit: 'B'}, {min: 1024, unit: 'kB'}, {min: 1048576, unit: 'MB'}, {min: 1073741824, unit: 'GB'}],
		s: [{min: 1, unit: 's'}, {min: 60, unit: 'm'}, {min: 3600, unit: 'h'}, {min: 86400, unit: 'd'}]
	},

	formatUnit: function(base, type, join) {
		var labels = Swiff.Uploader.unitLabels[(type == 'bps') ? 'b' : type];
		var append = (type == 'bps') ? '/s' : '';
		var i, l = labels.length, value;

		if (base < 1) return '0 ' + labels[0].unit + append;

		if (type == 's') {
			var units = [];

			for (i = l - 1; i >= 0; i--) {
				value = Math.floor(base / labels[i].min);
				if (value) {
					units.push(value + ' ' + labels[i].unit);
					base -= value * labels[i].min;
					if (!base) break;
				}
			}

			return (join === false) ? units : units.join(join || ', ');
		}

		for (i = l - 1; i >= 0; i--) {
			value = labels[i].min;
			if (base >= value) break;
		}

		return (base / value).toFixed(1) + ' ' + labels[i].unit + append;
	}

});

Swiff.Uploader.qualifyPath = (function() {
	
	var anchor;
	
	return function(path) {
		(anchor || (anchor = new Element('a'))).href = path;
		return anchor.href;
	};

})();

Swiff.Uploader.File = new Class({

	Implements: Events,

	initialize: function(base, data) {
		this.base = base;
		this.update(data);
	},

	update: function(data) {
		return $extend(this, data);
	},

	validate: function() {
		var options = this.base.options;
		
		if (options.fileListMax && this.base.fileList.length >= options.fileListMax) {
			this.validationError = 'fileListMax';
			return false;
		}
		
		if (options.fileListSizeMax && (this.base.size + this.size) > options.fileListSizeMax) {
			this.validationError = 'fileListSizeMax';
			return false;
		}
		
		return true;
	},

	invalidate: function() {
		this.invalid = true;
		this.base.fireEvent('fileInvalid', this, 10);
		return this.fireEvent('invalid', this, 10);
	},

	render: function() {
		return this;
	},

	setOptions: function(options) {
		if (options) {
			if (options.url) options.url = Swiff.Uploader.qualifyPath(options.url);
			this.base.remote('fileSetOptions', this.id, options);
			this.options = $merge(this.options, options);
		}
		return this;
	},

	start: function() {
		this.base.fileStart(this);
		return this;
	},

	stop: function() {
		this.base.fileStop(this);
		return this;
	},

	remove: function() {
		this.base.fileRemove(this);
		return this;
	},

	requeue: function() {
		this.base.fileRequeue(this);
	} 

});

/**
 * FancyUpload - Flash meets Ajax for powerful and elegant uploads.
 * 
 * Updated to latest 3.0 API. Hopefully 100% compat!
 *
 * @version		3.0
 *
 * @license		MIT License
 *
 * @author		Harald Kirschner <http://digitarald.de>
 * @copyright	Authors
 */

var FancyUpload2 = new Class({

	Extends: Swiff.Uploader,
	
	options: {
		queued: 1,
		// compat
		limitSize: 0,
		limitFiles: 0,
		validateFile: $lambda(true)
	},

	initialize: function(status, list, options) {
		this.status = $(status);
		this.list = $(list);

		// compat
		options.fileClass = options.fileClass || FancyUpload2.File;
		options.fileSizeMax = options.limitSize || options.fileSizeMax;
		options.fileListMax = options.limitFiles || options.fileListMax;

		this.parent(options);

		this.addEvents({
			'load': this.render,
			'select': this.onSelect,
			'cancel': this.onCancel,
			'start': this.onStart,
			'queue': this.onQueue,
			'complete': this.onComplete
		});
	},

	render: function() {
		this.overallTitle = this.status.getElement('.overall-title');
		this.currentTitle = this.status.getElement('.current-title');
		this.currentText = this.status.getElement('.current-text');

		var progress = this.status.getElement('.overall-progress');
		this.overallProgress = new Fx.ProgressBar(progress, {
			text: new Element('span', {'class': 'progress-text'}).inject(progress, 'after')
		});
		progress = this.status.getElement('.current-progress')
		this.currentProgress = new Fx.ProgressBar(progress, {
			text: new Element('span', {'class': 'progress-text'}).inject(progress, 'after')
		});
				
		this.updateOverall();
	},

	onSelect: function() {
		this.status.removeClass('status-browsing');
	},

	onCancel: function() {
		this.status.removeClass('file-browsing');
	},

	onStart: function() {
		this.status.addClass('file-uploading');
		this.overallProgress.set(0);
	},

	onQueue: function() {
		this.updateOverall();
	},

	onComplete: function() {
		this.status.removeClass('file-uploading');
		if (this.size) {
			this.overallProgress.start(100);
		} else {
			this.overallProgress.set(0);
			this.currentProgress.set(0);
		}
		
	},

	updateOverall: function() {
		this.overallTitle.set('html', MooTools.lang.get('FancyUpload', 'progressOverall').substitute({
			total: Swiff.Uploader.formatUnit(this.size, 'b')
		}));
		if (!this.size) {
			this.currentTitle.set('html', MooTools.lang.get('FancyUpload', 'currentTitle'));
			this.currentText.set('html', '');
		}
	},
	
	/**
	 * compat
	 */
	upload: function() {
		this.start();
	},
	
	removeFile: function() {
		return this.remove();
	}

});

FancyUpload2.File = new Class({
	
	Extends: Swiff.Uploader.File,

	render: function() {
		if (this.invalid) {
			if (this.validationError) {
				var msg = MooTools.lang.get('FancyUpload', 'validationErrors')[this.validationError] || this.validationError;
				this.validationErrorMessage = msg.substitute({
					name: this.name,
					size: Swiff.Uploader.formatUnit(this.size, 'b'),
					fileSizeMin: Swiff.Uploader.formatUnit(this.base.options.fileSizeMin || 0, 'b'),
					fileSizeMax: Swiff.Uploader.formatUnit(this.base.options.fileSizeMax || 0, 'b'),
					fileListMax: this.base.options.fileListMax || 0,
					fileListSizeMax: Swiff.Uploader.formatUnit(this.base.options.fileListSizeMax || 0, 'b')
				});
			}
			this.remove();
			return;
		}
		
		this.addEvents({
			'start': this.onStart,
			'progress': this.onProgress,
			'complete': this.onComplete,
			'error': this.onError,
			'remove': this.onRemove
		});
		
		this.info = new Element('span', {'class': 'file-info'});
		this.element = new Element('li', {'class': 'file'}).adopt(
			new Element('span', {'class': 'file-size', 'html': Swiff.Uploader.formatUnit(this.size, 'b')}),
			new Element('a', {
				'class': 'file-remove',
				href: '#',
				html: MooTools.lang.get('FancyUpload', 'remove'),
				title: MooTools.lang.get('FancyUpload', 'removeTitle'),
				events: {
					click: function() {
						this.remove();
						return false;
					}.bind(this)
				}
			}),
			new Element('span', {'class': 'file-name', 'html': MooTools.lang.get('FancyUpload', 'fileName').substitute(this)}),
			this.info
		).inject(this.base.list);
	},
	
	validate: function() {
		return (this.parent() && this.base.options.validateFile(this));
	},
	
	onStart: function() {
		this.element.addClass('file-uploading');
		this.base.currentProgress.cancel().set(0);
		this.base.currentTitle.set('html', MooTools.lang.get('FancyUpload', 'currentFile').substitute(this));
	},

	onProgress: function() {
		this.base.overallProgress.start(this.base.percentLoaded);
		this.base.currentText.set('html', MooTools.lang.get('FancyUpload', 'currentProgress').substitute({
			rate: (this.progress.rate) ? Swiff.Uploader.formatUnit(this.progress.rate, 'bps') : '- B',
			bytesLoaded: Swiff.Uploader.formatUnit(this.progress.bytesLoaded, 'b'),
			timeRemaining: (this.progress.timeRemaining) ? Swiff.Uploader.formatUnit(this.progress.timeRemaining, 's') : '-'
		}));
		this.base.currentProgress.start(this.progress.percentLoaded);
	},
	
	onComplete: function() {
		this.element.removeClass('file-uploading');
		
		this.base.currentText.set('html', 'Upload completed');
		this.base.currentProgress.start(100);
		
		if (this.response.error) {
			var msg = MooTools.lang.get('FancyUpload', 'errors')[this.response.error] || '{error} #{code}';
			this.errorMessage = msg.substitute($extend({
				name: this.name,
				size: Swiff.Uploader.formatUnit(this.size, 'b')
			}, this.response));
			var args = [this, this.errorMessage, this.response];
			
			this.fireEvent('error', args).base.fireEvent('fileError', args);
		} else {
			this.base.fireEvent('fileSuccess', [this, this.response.text || '']);
		}
	},

	onError: function() {
		this.element.addClass('file-failed');
		var error = MooTools.lang.get('FancyUpload', 'fileError').substitute(this);
		this.info.set('html', '<strong>' + error + ':</strong> ' + this.errorMessage);
	},

	onRemove: function() {
		this.element.getElements('a').setStyle('visibility', 'hidden');
		this.element.fade('out').retrieve('tween').chain(Element.destroy.bind(Element, this.element));
	}
	
});

// Avoiding MooTools.lang dependency
(function() {
	var phrases = {
		'progressOverall': 'Overall Progress ({total})',
		'currentTitle': 'File Progress',
		'currentFile': 'Uploading "{name}"',
		'currentProgress': 'Upload: {bytesLoaded} with {rate}, {timeRemaining} remaining.',
		'fileName': '{name}',
		'remove': 'Remove',
		'removeTitle': 'Click to remove this entry.',
		'fileError': 'Upload failed',
		'validationErrors': {
			'duplicate': 'File <em>{name}</em> is already added, duplicates are not allowed.',
			'sizeLimitMin': 'File <em>{name}</em> (<em>{size}</em>) is too small, the minimal file size is {fileSizeMin}.',
			'sizeLimitMax': 'File <em>{name}</em> (<em>{size}</em>) is too big, the maximal file size is <em>{fileSizeMax}</em>.',
			'fileListMax': 'File <em>{name}</em> could not be added, amount of <em>{fileListMax} files</em> exceeded.',
			'fileListSizeMax': 'File <em>{name}</em> (<em>{size}</em>) is too big, overall filesize of <em>{fileListSizeMax}</em> exceeded.'
		},
		'errors': {
			'httpStatus': 'Server returned HTTP-Status <code>#{code}</code>',
			'securityError': 'Security error occured ({text})',
			'ioError': 'Error caused a send or load operation to fail ({text})'
		}
	};
	
	if (MooTools.lang) {
		MooTools.lang.set('en-US', 'FancyUpload', phrases);
	} else {
		MooTools.lang = {
			get: function(from, key) {
				return phrases[key];
			}
		};
	}
})();

/**
 * @todo Clean-up, into Date.js
 */
Date.parseDuration = function(sec) {
	var units = {}, conv = Date.durations;
	for (var unit in conv) {
		var value = Math.floor(sec / conv[unit]);
		if (value) {
			units[unit] = value;
			if (!(sec -= value * conv[unit])) break;
		}
	}
	return units;
};

Date.fancyDuration = function(sec) {
	var ret = [], units = Date.parseDuration(sec);
	for (var unit in units) ret.push(units[unit] + Date.durationsAbbr[unit]);
	return ret.join(', ');
};

Date.durations = {years: 31556926, months: 2629743.83, days: 86400, hours: 3600, minutes: 60, seconds: 1, milliseconds: 0.001};
Date.durationsAbbr = {
	years: 'j',
	months: 'm',
	days: 'd',
	hours: 'h',
	minutes: 'min',
	seconds: 'sec',
	milliseconds: 'ms'
};	
	

// -- CALENDAR AND LIGHTBOX --
	var vlaCalendar = new Class({
	'slideDuration': 500,
	'fadeDuration': 500,
	'transition': Fx.Transitions.Quart.easeOut,
	'startMonday': false,
	'filePath': '/ajax/',
	'extraparam': '',
	'defaultView': 'month',
	'noSwitch':false,
	'startDate':'',
	'tsstart':'',
	'style': '',
	
	initialize: function(_container, _options) {
		//Add the provided options to this object by extending
		if(_options) $extend(this, _options);
		
		this.loading = false;
		this.container = _container = $(_container);
		var _class = this;
		
		//Insert the base into the container and initialize elements
		var  pars = 'defaultView='+ this.defaultView;
		if(this.picker) {
			if($type(this.prefillDate) == 'object' && this.getInputDate(this.prefillDate)) { 
				pars += '&pickedDate='+ this.getInputDate(this.prefillDate);
			}
			if(this.linkWithInput) pars += '&gotoPickedDate=1';
		}
		this.u('base', pars, function() { 
			_class.mainLoader = _container.getElement('div[class=loaderA]');
			_class.tempLoader = _container.getElement('div[class=loaderB]');
			_class.label 	  = _container.getElement('span[class=label]');
			_class.arrowLeft  = _container.getElement('div[class=arrowLeft]');
			_class.arrowRight = _container.getElement('div[class=arrowRight]');				
			_class.initializeCalendarFunctions();
			
			//Prefill/load picker date elements
			if(_class.picker) {
				if($type(_class.prefillDate) == 'object' && _class.getInputDate(_class.prefillDate)) _class.pick(_class.prefillDate);
				else if(_class.prefillDate == true) _class.pick(JSON.decode(_class.label.getProperty('date')));
			}
		}, _container);
	},
	
	initializeCalendarFunctions: function() {
		this.resetArrows();
		
		//Retrieve data (label, timestamp etc) which are stored as a Json string in the table attribute summary
		var vars = JSON.decode(this.mainLoader.getElement('table').getProperty('summary'));
		var _class = this; 
		
		//Change the label
		this.label.removeClass('noHover').set('html', vars.label)
			.onclick = (vars.parent && !this.noSwitch) ? function() { _class.u(vars.parent, 'ts=' + vars.ts + '&parent=' + vars.current, function() { _class.fade() }) } : null;
			
		//Hide arrows if necessary and add arrow click events
		if(vars.hide_left_arrow) this.hideLeftArrow();
		else if(vars.hide_right_arrow) this.hideRightArrow();
		
		this.arrowLeft.onclick  = function() { _class.u(vars.current, 'ts=' + vars.pr_ts, function() { _class.slideLeft() }) }
		this.arrowRight.onclick = function() { _class.u(vars.current, 'ts=' + vars.nx_ts, function() { _class.slideRight() }) }		
		
		//Add cell click events
		var clickables = this.mainLoader.getElements('td');
		switch(vars.current) {
			case 'month':
				if(this.picker) {
					clickables.each(function(_clickable) {
						_clickable.onclick = function() { 
							_class.pick(JSON.decode(_clickable.getProperty('date')));
							_class.mainLoader.getElements('td').each(function(_clickable) { _clickable.removeClass('selected') });
							this.addClass('selected'); 
						}
					});
				}
				break;
			case 'year':
				clickables.each(function(_clickable) {
					_clickable.onclick = function() { _class.u('month', 'ts=' + _clickable.getProperty('ts'), function() { _class.fade() }) }
				});
				break;
			case 'decade':
				this.label.addClass('noHover');
				clickables.each(function(_clickable) {
					_clickable.onclick = function() { _class.u('year', 'ts=' + _clickable.getProperty('ts') + '&m_ts=' + _clickable.getProperty('m_ts'), function() { _class.fade() }) }
				});
				break;
		}
	},
	
	//Ajax updater function which handles all requests
	u: function(_url, _pars, _onComplete, _id) {
		if(!this.loading && !this.transitioning) {
			var _class = this;
			this.loading = true;
			var element = $(_id ? _id : this.tempLoader);
			_pars += '&picker=' + (this.picker ? 1 : 0) + '&startMonday=' + (this.startMonday ? 1 : 0) + '&style=' +  this.style;
			if(this.picker && this.getInputDate()) _pars += '&pickedDate='+ this.getInputDate();
			new Request({ method: 'post',
						  url: this.filePath + 'ajax-calendar-picker.php?what='+_url+'&'+this.extraparam+'&tsstart='+ _class.tsstart,
						  onComplete: function(data) { element.set('html', data); _onComplete(); _class.loading = false; 
						  _class.tsstart = '';
						  
						  if ($$('.caltip')) {
							  var pageTipsCal = new Tips($$('.caltip'), { showDelay: 0, hideDelay: 0, xfixed: true, className: 'ttip-cal'}); }
								  
							  $$('.caltip').each(function(item, index){
													item.addEvent('click', function(e) {
														try { 
														document.evBrowseByDate(this.rel); 
														e.stop();
														} catch(e) {
														}
													}.bind(item));
												});
							  
							  
//							  $$('.caltip').each
						  }
						}).send(_pars);
		}
	},
	
	slideLeft: function() {
		var marg = this.tempLoader.getWidth();
		var _class = this;
		this.transitioning = true;	
		this.tempLoader.setStyle('opacity', 1).set('tween', { duration: this.slideDuration, transition: this.transition }).tween('margin-left', [-marg, 0]);
		this.mainLoader.setStyle('opacity', 1).set('tween', { duration: this.slideDuration, transition: this.transition, onComplete: function() { _class.transitioning = false } })
			.tween('margin-left', [0, marg]);
		this.switchLoaders();
	},
	
	slideRight: function() {
		var marg = this.tempLoader.getWidth();
		var _class = this;
		this.transitioning = true;
		this.mainLoader.setStyle('opacity', 1).set('tween', { duration: this.slideDuration, transition: this.transition }).tween('margin-left', [0, -marg]);
		this.tempLoader.setStyle('opacity', 1).set('tween', { duration: this.slideDuration, transition: this.transition, onComplete: function() { _class.transitioning = false } })
			.tween('margin-left', [marg, 0]);
		this.switchLoaders();
	},
	
	fade: function(overRuleTrans) {
		var _class = this;
		
		this.transitioning = overRuleTrans ? false : true;
		this.tempLoader.setStyles({'opacity': 0, 'margin-left': 0});
		this.mainLoader.set('tween', { duration: this.fadeDuration, transition: this.transition}).fade('out');
		this.tempLoader.set('tween', { duration: this.fadeDuration, transition: this.transition, 
			onComplete: function() { 
					_class.tempLoader.setStyles({'opacity': 1, 'margin-left': -999});
					_class.transitioning = false;
				} 
			}).fade('in');
		
		this.switchLoaders();
	},
	
	switchLoaders: function() {
		this.mainLoader = this.mainLoader.className == 'loaderA' ? this.container.getElement('div[class=loaderB]') : this.container.getElement('div[class=loaderA]');
		this.tempLoader = this.tempLoader.className == 'loaderA' ? this.container.getElement('div[class=loaderB]') : this.container.getElement('div[class=loaderA]');
		this.initializeCalendarFunctions();
	},
	
	resetArrows: function() {
		this.arrowLeft.setStyle('visibility', 'visible');
		this.arrowRight.setStyle('visibility', 'visible');
	},
	
	hideLeftArrow: function() {
		this.arrowLeft.setStyle('visibility', 'hidden');
	},
	
	hideRightArrow: function() {
		this.arrowRight.setStyle('visibility', 'hidden');
	} });
	var vlaDatePicker = new Class({
	Extends: vlaCalendar,
	
	'separateInput': false,
	'prefillDate': true,
	'linkWithInput': true,
	'leadingZero': true,
	'twoDigitYear': false,
	'separator': '/',
	'format': 'd/m/y',
	'openWith': null,
	'alignX': 'right',
	'alignY': 'inputTop',
	'offset': { 'x': 0, 'y': 0 },
	'style': '',
	'ieTransitionColor' : '#ffffff',
	'toggleDuration': 350,
	
	initialize: function(_element, _options) {
		//Add the provided options to this object by extending
		if(_options) $extend(this, _options);
		
		this.element = $(_element);
		if(!this.element) throw 'No (existing) element to create a datepicker for specified: new vlaDatePicker(ELEMENT, [options])';
		
		//Check if the user wants multiple input
		if(this.separateInput) {
			this.element.day   = this.element.getElement('input[name='+ this.separateInput.day +']');
			this.element.month = this.element.getElement('input[name='+ this.separateInput.month +']');
			this.element.year  = this.element.getElement('input[name='+ this.separateInput.year +']');
		}
		
		//Create the picker and calendar and inject in in the body
		this.picker = new Element('div', { 'class': 'vlaCalendarPicker' + (this.style != '' ? ' ' + this.style : '') }).injectTop($(document.body));
		this.pickerContent = new Element('div', { 'class': 'pickerBackground' }).injectTop(this.picker);
		this.parent(this.pickerContent);
		
		//Add events for showing and hiding the picker
		var _class = this;
		(this.openWith ? $(this.openWith) : this.element)
			.addEvent('focus',  function() { _class.show(); })
			.addEvent('click',  function() { _class.openWith ? _class.toggle() : _class.show() })
			.addEvent('change', function() { _class.hide(); });
		
		//If the datepicker is visible an outside click makes it hide
		document.addEvent('mousedown', function(e) { if(_class.outsideHide && _class.outsideClick(e, _class.picker)) _class.hide() });
		
		//linkWithInput
		if(this.linkWithInput) {
			if(this.separateInput) {
				this.element.day.addEvent('keyup',  function() { _class.linkedUpdate() });
				this.element.month.addEvent('keyup',  function() { _class.linkedUpdate() });
				this.element.year.addEvent('keyup',  function() { _class.linkedUpdate() });
			} else {
				this.element.addEvent('keyup',  function() { _class.linkedUpdate() });
			}
		}
		
		this.visible = false;
		this.outsideHide = false;
	},
	
	//Position the picker
	position: function() {
		var top, left;
		
		switch(this.alignX) {
			case 'left':
				left = this.element.getLeft();
				break;
			case 'center':
				var pickerMiddle = this.pickerContent.getStyle('width').toInt() / 2;
				if(pickerMiddle == 0) pickerMiddle = 83;
				left = this.element.getLeft() + (this.element.getSize().x / 2) - pickerMiddle -
						((parseInt(this.pickerContent.getStyle('padding-left')) + parseInt(this.pickerContent.getStyle('padding-right'))) / 2);
				break;
			case 'right': default:
				left = this.element.getLeft() + this.element.getSize().x;
				break;
		}
		
		switch(this.alignY) {
			case 'bottom':
				top = this.getPos(this.element).y + this.element.getSize().y;
				break;
			case 'top': 
				top = this.getPos(this.element).y - parseInt(this.pickerContent.getStyle('height')) - 
					(parseInt(this.pickerContent.getStyle('padding-top')) + parseInt(this.pickerContent.getStyle('padding-bottom')));
				break;
			case 'inputTop': default:
				top = this.getPos(this.element).y;
		}
		
		if(this.isNumber(this.offset.x)) left += this.offset.x;
		if(this.isNumber(this.offset.y)) top += this.offset.y;
		
		this.picker.setStyles({ 'top': top, 'left': left });
	},
	
	show: function() {
		this.position();
		if(!this.visible) {
			this.visible = true;
			var _class = this;
			this.picker.setStyles({ 'opacity': 0, 'display': 'inline' });
			if(Browser.Engine.trident5) this.picker.setStyle('background-color', this.ieTransitionColor); //Ugly transition fix for IE7
			this.picker.set('tween', { onComplete: function() { 
					if(Browser.Engine.trident5) _class.picker.setStyle('background-color', 'transparent');
					_class.outsideHide = true; 
				}, duration: this.toggleDuration }).fade('in');
		}
	},
	
	hide: function() {
		if(this.visible) {
			this.visible = false;
			var _class = this;
			if(Browser.Engine.trident5) this.picker.setStyle('background-color', this.ieTransitionColor); //Ugly transition fix for IE7
			this.picker.set('tween', { onComplete: function() { _class.picker.setStyle('display', 'none'); _class.outsideHide = false; }, duration: this.toggleDuration }).fade('out');
		}
	},
	
	toggle: function() {
		if(this.visible) this.hide();
		else this.show();
	},
	
	pick: function(_date) {
		if(this.leadingZero) {
			if(_date.day < 10)   _date.day = '0' + _date.day;
			if(_date.month < 10) _date.month = '0' + _date.month;
		}
		if(this.twoDigitYear) _date.year = _date.year.toString().substring(2, 4);
		
		if(this.separateInput) {
			if(this.element.day)   this.element.day.set('value', _date.day);
			if(this.element.month) this.element.month.set('value', _date.month);
			if(this.element.year)  this.element.year.set('value', _date.year);
			this.hide();
		} else {
			switch(this.format) {
				case "m/d/y": this.element.set('value', _date.month + this.separator + _date.day + this.separator + _date.year); break;
				case "y/m/d": this.element.set('value', _date.year + this.separator + _date.month + this.separator + _date.day); break;
				case "y/d/m": this.element.set('value', _date.year + this.separator +  _date.day + this.separator + _date.month); break;
				case "d/m/y": default: this.element.set('value', _date.day + this.separator + _date.month + this.separator + _date.year);
			}
			this.hide();
		}
	},
	
	getInputDate: function(_date) {
		var day, month, year;
		
		if(_date) {
			day = _date.day;
			month = _date.month;
			year = _date.year;
		} else if(this.separateInput) {
			day = this.element.day.get('value').toInt();
			month = this.element.month.get('value').toInt();
			year = this.element.year.get('value').toInt();
		} else {
			var date = this.element.get('value').split(this.separator);
			if(date.length != 3) return null;
			switch(this.format) {
				case "m/d/y": day = date[1]; month = date[0]; year = date[2]; break;
				case "y/m/d": day = date[2]; month = date[1]; year = date[0]; break;
				case "y/d/m": day = date[1]; month = date[2]; year = date[0]; break;
				case "d/m/y": default: day = date[0]; month = date[1]; year = date[2];
			}
		}
	
		if( !this.isNumber(day) || !this.isNumber(month) || !this.isNumber(year) ||	day == 0 || month == 0 || year == '0' ||
			(this.twoDigitYear && year > 99) || (!this.twoDigitYear && year < 1939) || (!this.twoDigitYear && year > 2030) || month > 12 || day > 31 ) 
		return null;
	
		if(this.twoDigitYear && this.isNumber(year) && year < 100) {
			year = year.toInt();
			if(year < 10) year = '200'+  year;
			else if(year < 70) year = '20'+  year;
			else if(year > 69) year = '19'+  year;
			else year = new Date().getFullYear();
		}
		
		return day +'/'+ month +'/'+ year;
	},
	
	getInputDateStruct: function() {
		var day, month, year;
		
		var date = this.element.get('value').split(this.separator);
		if(date.length != 3) return null;
		switch(this.format) {
			case "m/d/y": day = date[1]; month = date[0]; year = date[2]; break;
			case "y/m/d": day = date[2]; month = date[1]; year = date[0]; break;
			case "y/d/m": day = date[1]; month = date[2]; year = date[0]; break;
			case "d/m/y": default: day = date[0]; month = date[1]; year = date[2];
		}
		
		if(this.twoDigitYear && this.isNumber(year) && year < 100) {
			year = year.toInt();
			if(year < 10) year = '200'+  year;
			else if(year < 70) year = '20'+  year;
			else if(year > 69) year = '19'+  year;
			else year = new Date().getFullYear();
		}
		
		return {'day':day, 'month':month, 'year':year};
	},
	
	//This function is being called on keyup event if linkWithInput is set to true and when a date is picked
	//If the full date is inserted the picker will change itself to that specific date (month view)
	linkedUpdate: function() {
		var _class = this;
		var date = this.getInputDate();
		if(date && this.pickedDate != date) {
			this.u('month', 'gotoPickedDate=1', function() { _class.fade(true) });
			this.pickedDate = date;
		}
	},
	
	outsideClick: function(_event, _element) {
		var mousePos = this.getMousePos(_event);
		var elementData = _element.getCoordinates();
		return (mousePos.x > elementData.left && mousePos.x < (elementData.left + elementData.width)) &&
			   (mousePos.y > elementData.top  && mousePos.y < (elementData.top + elementData.height)) ? false : true;
	},
	
	getMousePos: function(_event) {
		if(document.all) {
			return { 'x': window.event.clientX + window.getScrollLeft(),
					 'y': window.event.clientY + window.getScrollTop() };
		} else {
			return { 'x': _event.page['x'],
					 'y': _event.page['y'] };
		}
	},
	
	isNumber: function(_number) {
		if(_number == '') return false;
		return (_number >= 0) || (_number < 0) ? true : false;
	},
	
	//Retrieving positition funtions (like getCoordinates, getTop etc) don't seem to return correct values in some situations in mootools 1.2; 
	//Opera returns wrong values, IE returns too small values. This function returns the correct coordinates.
	getPos: function(_element) { 
		var x, y = 0;
		if(_element.offsetParent) {
			do {
				x += _element.offsetLeft;
				y += _element.offsetTop;
			} while(_element = _element.offsetParent);
		} else if(_element.x) {
			x += _element.x;
			y += _element.y;
		}
		return { 'x': x, 'y': y };
	}});
	
	
	var Milkbox = new Class({
	
		Implements:Options,
		
		options:{//set all the options here
			overlayOpacity:0.7,
			topPosition:80,
			initialWidth:250,
			initialHeight:250,
			resizeDuration:500,
			resizeTransition:'sine:in:out',/*function (ex. Transitions.Sine.easeIn) or string (ex. 'quint:out')*/
			hoverBackgroundPosition:'0 -85px',
			autoPlay:false,
			autoPlayDelay:7,
			removeTitle:true
		},
		
		initialize: function(options){
			
			this.setOptions(options);
			this.galleries = [];
			this.currentImage = null;
			this.currentIndex = null;
			this.currentGallery = null;
			
			this.specialDescription = null;//for showThisImage
			this.activated = false;//used in showThisImage 
			
			this.mode = null;//'singleImage','imageGallery','showThisImage'
			this.closed = true;
			this.busy = true;//to control keyboard and autoplay events
			
			this.intObj = null;
			
			this.formtags = null;
			
			this.loadedImages = [];//to check the preloaded images
			
			this.prepareGalleries();
			//if no galleries, stop here and prevent extra memory usage.
			//so you can keep milkbox in every page of a site.
			if(this.galleries.length == 0){ return; };
					
			this.initMilkbox();
			
		},//end init
		
		initMilkbox:function(){
	
			this.prepareHTML();
			this.prepareEffects();
			this.prepareEvents();
			
			this.activated = true;
			this.formtags = $$('select'/*,'textarea'*/);
		},
		
		//runs only 1 time per gallery
		openMilkbox:function(gallery,index) {
			if(this.formtags.length != 0){ this.formtags.setStyle('display','none') };
	
			this.overlay.setStyles({ 'top': -$(window).getScroll().y,'height':$(window).getScrollSize().y+$(window).getScroll().y });
			
			this.center.addClass('mbLoading');
			this.center.setStyle('top',$(window).getScroll().y+this.options.topPosition);
	
			this.currentGallery = gallery;
			this.currentIndex = index;
			this.overlay.tween('opacity',this.options.overlayOpacity);//onComplete: center.tween opacity
			
			if(gallery.length == 1){
				this.mode = 'singleImage';
				this.loadImages(gallery[index].href);
			} else {
				this.mode = 'imageGallery';
				
				var images = gallery.map(function(item){ return item.href; });
	
				$$(this.prev, this.next).setStyles({'display':'block'});
				
				var border = this.center.getStyle('border-right-width').toInt();//border-right is just ok for design purposes..
				var navWidth = this.prev.getSize().x+this.next.getSize().x+this.close.getSize().x+border;
				
//				this.navigation.setStyle('width',navWidth);
//				this.description.setStyle('margin-right',navWidth);
				
				var next = (index != images.length-1) ? images[index+1] : images[0];
				var prev = (index != 0) ? images[index-1] : images[images.length-1];
				var preloads = (prev == next) ? [prev] : [prev,next]; //if gallery.length == 2, then prev == next
							
				this.fillStrip(images, preloads);
				this.loadImages(images[index], preloads);
			}
			
			this.closed = false;
		},
		
		fillStrip:function(images, preloads) {
			// href rel title
			
			html = '';
			
			for(i = 0; i<this.currentGallery.length; i++) {
				html += ( 
					'<a rel="' + i + '" class="mbstriplink"><img src= "' + 
					this.currentGallery[i].href.replace('/l/', '/p/')  +
					'" /></a>'
				);
			}
			
			this.picstrip.innerHTML = '<div id="mbStripInner" style="width:' + ((118)*this.currentGallery.length) + 'px">' + html + '</div>';
			
			$$('.mbstriplink').each(function(i) {
				i.addEvent('click', function(obj) { 
										document.Milkbox.gotoimg(this.rel);
									});
			});
			
		},
		
		//call with js
		showThisImage:function(image,description){
			
			//if init was not done because of the absence of galleries, do it now.
			if(!this.activated){ this.initMilkbox(); }
			
			this.mode = 'showThisImage';
			
			this.specialDescription = description;
			
			this.overlay.setStyles({ 'top': -$(window).getScroll().y,'height':$(window).getScrollSize().y+$(window).getScroll().y });
			
			this.center.addClass('mbLoading');
			this.center.setStyle('top',$(window).getScroll().y+this.options.topPosition);
			
			this.overlay.tween('opacity',this.options.overlayOpacity);//onComplete: center.tween opacity
			this.loadImages(image);
			
			this.closed = false;
		},
	
		//see loadImages()
		showImage:function(image){
			
			if(this.closed){ return; };//if you close the Milkbox and an onload event is still running
			
			var imageBoxSize = this.image.getSize();
			
			this.image.setStyles({'opacity':0, 'width':'', 'height':''});
			
			var imageSize = new Hash(image.getProperties('width','height')).map(function(item, index){
				return item.toInt();
			});
			
			var centerSize = new Hash(this.center.getStyles('width','height')).map(function(item, index){
				return item.toInt();
			});
			
			var targetSize = {};
			
			if(imageSize.width != centerSize.width){ 
				targetSize.width = imageSize.width;
				targetSize.marginLeft = -(imageSize.width/2).round();
			};
			
			var gap = (imageBoxSize.y > 0) ? centerSize.height - imageBoxSize.y : 0; 
	
			var targetHeight = imageSize.height + gap;
	
		   targetSize.height = targetHeight;
		   
			//so nav doesn't move when you click next/prev
			this.image.setStyles({'width':imageSize.width, 'height':imageSize.height})
	
			this.center.removeClass('mbLoading');
			this.center.morph(targetSize);//onComplete: show all items
			
		},
		
		loadImages:function(currentImage,preloads){

	
				 if(this.mode == 'imageGallery') {
					 var a = this.currentIndex;
					 $$('.mbstriplink').each(function(i) {
									i.setStyle('border-color', (i.rel == a) ? '#838383' : 'black');
								});
					 // slide
					 if( $('mbStripInner').getSize().x > $('mbStrip').getSize().x - 20) {
						// calc if we're off the screen
						
						if (a * 118 + 15 + 118 > $('mbStrip').getSize().x) {
							$('mbStripInner').setStyle('left', '-' + (a*118+30+118 - $('mbStrip').getSize().x) + 'px');
						} 
							
						if (a * 118 + 20 < -1*$('mbStripInner').getStyle('left').replace('px', '')) {
							$('mbStripInner').setStyle('left',  -1*(a*118) + 'px');
						}
					 } 
				 }
	

				var loadImage = new Asset.image(currentImage, { onload:function(img){
					this.currentImage = img;
					if(!this.loadedImages.contains(currentImage)){ this.loadedImages.push(currentImage); };//see next/prev events
					
//					$$(this.description).setStyle('visibility','hidden');
					
//					this.navigation.setStyle('height','');//reset the height setted in center.morph.onComplete
					$$(this.next,this.prev,this.close).setStyle('backgroundPosition','0 0');
					this.showImage(this.currentImage);
				}.bindWithEvent(this)});
				
				if(preloads && !this.loadedImages.contains(preloads)){
					var preloadImages = new Asset.images(preloads, { onComplete:function(img){
						preloads.each(function(item){
							if(!(this.loadedImages.contains(item))){ this.loadedImages.push(item); }
						}.bind(this));
					}.bindWithEvent(this)});
				};
				
		},
		
		//all the main events
		prepareEvents:function(){
		
			//galleries
			this.galleries.each(function(gallery){
				$$(gallery).addEvent('click',function(e){
					var button=($(e.target).match('a')) ? $(e.target) : $(e.target).getParent('a');
					e.preventDefault();
					
					if(this.options.autoPlay){
						this.autoPlay({ gallery:gallery, index:gallery.indexOf(button) });
					}
					
					else{ this.openMilkbox(gallery, gallery.indexOf(button)); }
					
				}.bindWithEvent(this));
			},this);
			
			//next, prev, see next_prev_aux()
			this.next.addEvent('click',this.next_prev_aux.bindWithEvent(this,'next'));
			this.prev.addEvent('click',this.next_prev_aux.bindWithEvent(this,'prev'));
			
			//keyboard next/prev/close
			$(window.document).addEvent('keydown',function(e){
				if(this.mode != 'imageGallery' || this.busy == true){ return; };
				if(e.key == 'right' || e.key == 'space'){ this.next_prev_aux(e,'next'); }
				else if(e.key == 'left'){ this.next_prev_aux(e,'prev'); }
				else if(e.key == 'esc'){ this.closeMilkbox(); };
			}.bindWithEvent(this));
			
			
			//css hover doesn't work in ie6, so I must do it via js...
			$$(this.next,this.prev,this.close).addEvents({
					'mouseover':function(e){ 
						var button=($(e.target).match('a')) ? $(e.target) : $(e.target).getParent('a');
						button.setStyle('backgroundPosition',this.options.hoverBackgroundPosition); 
					}.bindWithEvent(this),
					'mouseout':function(){ this.setStyle('backgroundPosition','0 0'); }
			});
	
			//overlay
			this.overlay.get('tween').addEvent('onComplete',function(){
				if(this.overlay.getStyle('opacity') == this.options.overlayOpacity){ 
					this.center.tween('opacity',1);
				} else if(this.overlay.getStyle('opacity') == 0) {
					this.overlay.setStyles({'height':'','top':''});
				};
			}.bindWithEvent(this));
			
			//center
			this.center.get('morph').addEvent('onComplete',function(){
				
				 this.image.grab(this.currentImage);
				 this.image.tween('opacity',1);
							 
				 var d = (!(this.mode == 'showThisImage')) ? this.currentGallery[this.currentIndex].retrieve('title') : this.specialDescription;
				 if($chk(d)){ this.description.innerHTML = d; };
				 
				 if(this.mode == 'imageGallery'){ 
//					this.count.appendText((this.currentIndex+1)+'/'+this.currentGallery.length); 
				 }
				 
				 var currentCenterHeight = this.center.getStyle('height').toInt();
				 
//				 this.navigation.setStyle('height',this.bottom.getStyle('height').toInt());//to have the right-border height == total bottom height
				 var bottomSize = this.bottom.getSize().y;
				 
				 //after the 1st time, currentCenterHeight is always > this.image.getSize().y
				 var targetOffset = (currentCenterHeight > this.image.getSize().y) ? (this.bottom.getSize().y+this.image.getSize().y)-currentCenterHeight : bottomSize;
					
//				 this.bottom.setStyle('display','none');//to avoid rendering problems during setFinalHeight
	
				 this.center.retrieve('setFinalHeight').start(currentCenterHeight,currentCenterHeight+targetOffset);
				 
				 if(this.mode == 'imageGallery') {
					 var a = this.currentIndex;
					 $$('.mbstriplink').each(function(i) {
									i.setStyle('border-color', (i.rel == a) ? '#838383' : 'black');
								});
					 // slide
					 if( $('mbStripInner').getSize().x > $('mbStrip').getSize().x - 20) {
						// calc if we're off the screen
						
						if (a * 118 + 15 + 118 > $('mbStrip').getSize().x) {
							$('mbStripInner').setStyle('left', '-' + (a*118+30+118 - $('mbStrip').getSize().x) + 'px');
						} 
							
						if (a * 118 + 20 < -1*$('mbStripInner').getStyle('left').replace('px', '')) {
							$('mbStripInner').setStyle('left',  -1*(a*118) + 'px');
						}
						
					} else {
							$('mbStripInner').setStyle('left', '0px');
					}
				 }
				/**/
			}.bindWithEvent(this));
			
			this.center.retrieve('setFinalHeight').addEvent('onComplete',function(){
				
				this.bottom.setStyles({'visibility':'visible','display':'block'});
				$$(this.description, this.navigation, this.picstrip).setStyle('visibility','visible');
				//reset overlay height based on position and height
				var scrollSize = $(window).getScrollSize().y;
				var scrollTop = $(window).getScroll().y;
				
				this.overlay.setStyle('height',scrollSize+scrollTop);
				this.busy = false;
				
			}.bindWithEvent(this));
			
			//reset overlay height and position onResize
			window.addEvent('resize',function(){
				if(this.overlay.getStyle('opacity') == 0){ return; };//resize only if visible
				var scrollSize = $(window).getScrollSize().y;
				var scrollTop = $(window).getScroll().y;
				this.overlay.setStyles({ 'height':scrollSize+scrollTop,'top':-scrollTop });
			}.bindWithEvent(this))
	
			//close
			$$(this.overlay,this.image,this.close).addEvent('click',function(){ this.closeMilkbox(); }.bindWithEvent(this));
			
		},
		
		next_prev_aux:function(e,direction){
			
			if(e){ 
				e.preventDefault();
				if(this.intObj){ $clear(this.intObj); this.intObj = null; };
			} //if there's no event obj, than this is called by autoPlay()
			
			else{ if(this.busy){ return; } }//stop autoplay()
			
			this.busy = true; //for keyboard and autoplay
			
			var backupIndex = this.currentIndex;
			
			if(direction == "next"){
				var i= (this.currentIndex != this.currentGallery.length-1) ? this.currentIndex += 1 : this.currentIndex = 0;
				var _i= (this.currentIndex != this.currentGallery.length-1) ? this.currentIndex + 1 : 0;
			} else {
				var i= (this.currentIndex != 0) ? this.currentIndex -= 1 : this.currentIndex = this.currentGallery.length-1;
				var _i= (this.currentIndex != 0) ? this.currentIndex - 1 : this.currentGallery.length-1;		
			};
			
			this.image.empty();
			this.description.empty();
//			this.count.empty();
			
			if(!this.loadedImages.contains(this.currentGallery[i].href)){ 
				this.center.addClass('mbLoading');
			};
			this.loadImages(this.currentGallery[i].href,[this.currentGallery[_i].href]);
		},
		
		gotoimg:function(idx){
			idx = Number(idx);
			
			if(this.busy){ return; } //stop autoplay()
			
			this.busy = true; //for keyboard and autoplay
			
			var backupIndex = this.currentIndex;
			
			var i= idx;
			var _i= idx;
			
			this.currentIndex = i;
			
			this.image.empty();
			this.description.empty();
//			this.count.empty();
			
			if(!this.loadedImages.contains(this.currentGallery[i].href)){ 
				this.center.addClass('mbLoading');
			};
			this.loadImages(this.currentGallery[i].href,[this.currentGallery[_i].href]);
			
		},
		
		autoPlay:function(obj){//obj: gallery, index, delay (in seconds)
			
			var g = (obj && obj.gallery && ($type(obj.gallery) == 'array')) ? obj.gallery : Milkbox.galleries[0];
			var i = (obj && obj.index && ($type(obj.index) == 'number')) ? obj.index : 0;
			var d = (obj && obj.delay && ($type(obj.delay) == 'number')) ? obj.delay*1000 : this.options.autoPlayDelay*1000;
			if(d < this.options.resizeDuration*2){ d = this.options.resizeDuration*2 };
			
			Milkbox.openMilkbox(g,i);
			if(this.mode != 'imageGallery'){ return; };
			this.intObj = this.next_prev_aux.periodical(d,this,[null,'next']);
			
		},
		
		closeMilkbox:function(){
			this.cancelAllEffects();
			if(this.intObj){ $clear(this.intObj); };
			
			this.currentImage = null;
			this.currentIndex = null;
			this.currentGallery = null;
			
			$$(this.prev, this.next).setStyle('display','none');
			var border = this.center.getStyle('border-right-width').toInt();
			var navWidth = this.close.getSize().x+border;
//			this.navigation.setStyles({'width':navWidth,'height':'','visibility':'hidden'});
//			this.description.setStyle('margin-right',navWidth);
			this.description.empty();
			this.bottom.setStyles({'visibility':'hidden','display':''});
			
		this.image.setStyles({'opacity':0, 'width':'', 'height':''});
			this.image.empty();
			
//			this.count.empty();
			
			this.center.setStyles({'opacity':0,'width':this.options.initialWidth,'height':this.options.initialHeight,'marginLeft':-(this.options.initialWidth/2)});
			this.overlay.tween('opacity',0);//see onComplete in prepareEvents() 
			
			if(this.formtags.length != 0){ this.formtags.setStyle('display','inline') };
			
			this.mode = null;
			this.closed = true;
		},
		
		cancelAllEffects:function(){
			this.overlay.get('tween').cancel();
			this.center.get('morph').cancel();
			this.center.get('tween').cancel();
			this.center.retrieve('setFinalHeight').cancel();
			this.image.get('tween').cancel();
		},
		
		prepareEffects:function(){
			this.overlay.set('tween',{ duration:'short',link:'cancel' });
			this.center.set('tween',{ duration:'short',link:'chain' });
			this.center.set('morph',{ duration:this.options.resizeDuration,link:'chain',transition:this.options.resizeTransition });
			this.center.store('setFinalHeight',new Fx.Tween(this.center,{property:'height',duration:'short'}));
			this.image.set('tween',{ link:'chain' });
		},
		
		prepareGalleries:function(){
			var families = [];
			var milkbox_a = [];
			
			$$('a').each(function(a){
				//test 'milkbox' and link extension, and collect all milkbox links
				if(a.rel && a.rel.test(/^milkbox/i) && a.href.split('?')[0].test(/\.(gif|jpg|png)$/i)){
					if(a.rel.length>7 && !families.contains(a.rel)){ families.push(a.rel); };
					milkbox_a.push(a);
				}
			},this);
	
//			alert(milkbox_a);
			
			//create an array of arrays with all galleries
			milkbox_a.each(function(a){
				$(a).store('href',a.href);
				$(a).store('rel',a.rel);
				$(a).store('title',a.title);
				if(this.options.removeTitle){ $(a).removeProperty('title'); }
				if(a.rel.length > 7){
					families.each(function(f,i){
						if(a.rel == f){
							if(!this.galleries[i]){ this.galleries[i] = [] };
							this.galleries[i].push($(a));
						};
					},this);
				} else { this.galleries.push([$(a)]); };
			},this);
			
			//console.log(this.galleries)
		},
			
		prepareHTML:function(){		
			
			this.overlay = new Element('div', { 'id':'mbOverlay','styles':{ 'opacity':'0','visibility':'visible' }}).inject($(document.body));
			
			this.center = new Element('div', {'id':'mbCenter', 'styles':{'width':this.options.initialWidth,'height':this.options.initialHeight,'marginLeft':-(this.options.initialWidth/2),'opacity':0}}).inject($(document.body));
			this.image = new Element('div', {'id':'mbImage'}).inject(this.center);
			
			
			this.close = new Element('a',{'id':'mbCloseLink'});
			this.next = new Element('a',{'id':'mbNextLink'});
			this.prev = new Element('a',{'id':'mbPrevLink'});
			
			
			this.bottom = new Element('div',{'id':'mbBottom'}).inject(this.center).setStyle('visibility','hidden');
			this.navigation = new Element('div',{'id':'mbNavigation'}).setStyle('visibility','hidden');
			this.description = new Element('div',{'id':'mbDescription'}).setStyle('visibility','hidden');
			this.picstrip = new Element('div',{'id':'mbStrip'}).setStyle('visibility','hidden');
	
			this.bottom.adopt(this.next, this.prev);
			this.bottom.adopt(this.navigation, this.picstrip, this.description);
			
			$$(this.next, this.prev).setStyle('display','none');
			
			this.bottom.adopt(this.close);
	
		}
		});
	
// -- FANCY FORM --
var FancyForm = {
	start: function(elements, options){
		FancyForm.initing = 1;
		if($type(elements)!='array') elements = $$('input');
		if(!options) options = [];
		FancyForm.onclasses = ($type(options['onClasses']) == 'object') ? options['onClasses'] : {
			checkbox: 'checked',
			radio: 'selected'
		}
		FancyForm.offclasses = ($type(options['offClasses']) == 'object') ? options['offClasses'] : {
			checkbox: 'unchecked',
			radio: 'unselected'
		}
		if($type(options['extraClasses']) == 'object'){
			FancyForm.extra = options['extraClasses'];
		} else if(options['extraClasses']){
			FancyForm.extra = {
				checkbox: 'f_checkbox',
				radio: 'f_radio',
				on: 'f_on',
				off: 'f_off',
				all: 'fancy'
			}
		} else {
			FancyForm.extra = {};
		}
		FancyForm.onSelect = $pick(options['onSelect'], function(el){});
		FancyForm.onDeselect = $pick(options['onDeselect'], function(el){});
		var keeps = [];
		FancyForm.chks = elements.filter(function(chk){
			if( $type(chk) != 'element' ) return false;
			if( chk.get('tag') == 'input' && (FancyForm.onclasses[chk.getProperty('type')]) ){
				var el = chk.getParent();
				if(el.getElement('input')==chk){
					el.type = chk.getProperty('type');
					el.inputElement = chk;
					this.push(el);
				} else {
					chk.addEvent('click',function(f){
						if(f.event.stopPropagation) f.event.stopPropagation();
					});
				}
			} else if( (chk.inputElement = chk.getElement('input')) && (FancyForm.onclasses[(chk.type = chk.inputElement.getProperty('type'))]) ){
				return true;
			}
			return false;
		}.bind(keeps));
		FancyForm.chks = FancyForm.chks.combine(keeps);
		keeps = null;
		FancyForm.chks.each(function(chk){
			var c = chk.inputElement;
			c.setStyle('position', 'absolute');
			c.setStyle('left', '-9999px');
			chk.addEvent('selectStart', function(f){f.stop()});
			chk.name = c.getProperty('name');
			FancyForm.update(chk);
		});
		FancyForm.chks.each(function(chk){
			var c = chk.inputElement;
			chk.addEvent('click', function(f){
				f.stop(); f.type = 'prop';
				c.fireEvent('click', f, 1);
			});
			chk.addEvent('mousedown', function(f){
				if($type(c.onmousedown) == 'function')
					c.onmousedown();
				f.preventDefault();
			});
			chk.addEvent('mouseup', function(f){
				if($type(c.onmouseup) == 'function')
					c.onmouseup();
			});
			c.addEvent('focus', function(f){
				if(FancyForm.focus)
					chk.setStyle('outline', '1px dotted');
			});
			c.addEvent('blur', function(f){
				chk.setStyle('outline', 0);
			});
			c.addEvent('click', function(f){
				if(f.event.stopPropagation) f.event.stopPropagation();
				if(c.getProperty('disabled')) // c.getStyle('position') != 'absolute'
					return;
				if (!chk.hasClass(FancyForm.onclasses[chk.type]))
					c.setProperty('checked', 'checked');
				else if(chk.type != 'radio')
					c.setProperty('checked', false);
				if(f.type == 'prop')
					FancyForm.focus = 0;
				FancyForm.update(chk);
				FancyForm.focus = 1;
				if(f.type == 'prop' && !FancyForm.initing && $type(c.onclick) == 'function')
					 c.onclick();
			});
			c.addEvent('mouseup', function(f){
				if(f.event.stopPropagation) f.event.stopPropagation();
			});
			c.addEvent('mousedown', function(f){
				if(f.event.stopPropagation) f.event.stopPropagation();
			});
			if(extraclass = FancyForm.extra[chk.type])
				chk.addClass(extraclass);
			if(extraclass = FancyForm.extra['all'])
				chk.addClass(extraclass);
		});
		FancyForm.initing = 0;
		$each($$('form'), function(x) {
			x.addEvent('reset', function(a) {
				window.setTimeout(function(){FancyForm.chks.each(function(x){FancyForm.update(x);x.inputElement.blur()})}, 200);
			});
		});
	},
	update: function(chk){
		if(chk.inputElement.getProperty('checked')) {
			chk.removeClass(FancyForm.offclasses[chk.type]);
			chk.addClass(FancyForm.onclasses[chk.type]);
			if (chk.type == 'radio'){
				FancyForm.chks.each(function(other){
					if (other.name == chk.name && other != chk) {
						other.inputElement.setProperty('checked', false);
						FancyForm.update(other);
					}
				});
			}
			if(extraclass = FancyForm.extra['on'])
				chk.addClass(extraclass);
			if(extraclass = FancyForm.extra['off'])
				chk.removeClass(extraclass);
			if(!FancyForm.initing)
				FancyForm.onSelect(chk);
		} else {
			chk.removeClass(FancyForm.onclasses[chk.type]);
			chk.addClass(FancyForm.offclasses[chk.type]);
			if(extraclass = FancyForm.extra['off'])
				chk.addClass(extraclass);
			if(extraclass = FancyForm.extra['on'])
				chk.removeClass(extraclass);
			if(!FancyForm.initing)
				FancyForm.onDeselect(chk);
		}
//		if(!FancyForm.initing)
//			chk.inputElement.focus();
	},
	all: function(){
		FancyForm.chks.each(function(chk){
			chk.inputElement.setProperty('checked', 'checked');
			FancyForm.update(chk);
		});
	},
	none: function(){
		FancyForm.chks.each(function(chk){
			chk.inputElement.setProperty('checked', false);
			FancyForm.update(chk);
		});
	} };

// -- DD MENU -- 
var UvumiDropdown=new Class({Implements:Options,options:{duration:250,transition:Fx.Transitions.linear},initialize:function(a,b){this.menu=a;this.setOptions(b);window.addEvent('domready',this.domReady.bind(this))},domReady:function(){this.menu=$(this.menu);if(!$defined(this.menu)){return false}if(this.menu.get('tag')!='ul'){this.menu=this.menu.getFirst('ul');if(!$defined(this.menu)){return false}}this.menu.setStyles({overflow:'hidden',height:0,marginLeft:(Browser.Engine.trident?1:-1)});this.createSubmenu(this.menu);this.menu.getChildren('li').setStyles({'float':'left',display:'block',top:0});var a=new Element('li',{html:"&nbsp;",styles:{clear:'both',display:(Browser.Engine.trident?'inline':'block'),position:'relative',top:0,height:0,width:0,fontSize:0,lineHeight:0,margin:0,padding:0}}).inject(this.menu);this.menu.setStyles({height:'auto',overflow:'visible',visibility:'visible'});this.menu.getElements('a').setStyle('display',(Browser.Engine.trident?'inline-block':'block'))},createSubmenu:function(c){var d=c.getChildren('li');var e=0;d.each(function(a){a.setStyles({position:'relative',display:'block',top:-e,zIndex:1});e+=a.getSize().y;var b=a.getFirst('ul');if($defined(b)){b.setStyle('display','none');if(c==this.menu){var x=0;var y=a.getSize().y;this.options.link='cancel';a.store('animation',new Fx.Elements($$(b,b.getChildren('li')).setStyle('opacity',0),this.options))}else{var x=a.getSize().x-a.getStyle('border-left-width').toInt();var y=-a.getStyle('border-bottom-width').toInt();this.options.link='chain';a.store('animation',new Fx.Elements($$(b,b.getChildren('li')).setStyle('opacity',0),this.options));e=a.getSize().y+a.getPosition(this.menu).y}b.setStyles({position:'absolute',display:'block',top:y,left:x,marginLeft:-x,opacity:0});this.createSubmenu(b);a.addEvents({mouseenter:this.showChildList.bind(this,a),mouseleave:this.hideChildList.bind(this,a)}).addClass('submenu')}},this)},showChildList:function(b){var c=b.getFirst('ul');var d=$$(c.getChildren('li'));var e=b.retrieve('animation');if(b.getParent('ul')!=this.menu){e.cancel();e.start({0:{opacity:1,marginLeft:0},1:{opacity:1}});var f={}}else{var f={0:{opacity:1}}}d.each(function(a,i){f[i+1]={top:0,opacity:1}});b.setStyle('z-index',99);e.start(f)},hideChildList:function(b){var c=b.retrieve('animation');var d=b.getFirst('ul');var e=$$(d.getChildren('li'));var f=0;var g={};e.each(function(a,i){g[i+1]={top:-f,opacity:0};f+=a.getSize().y});b.setStyle('z-index',1);if(b.getParent('ul')!=this.menu){g[1]=null;c.cancel();c.start(g);c.start({0:{opacity:0,marginLeft:-d.getSize().x},1:{opacity:0}})}else{g[0]={opacity:0};c.start(g)}}});

// -- SQEEZE BOX --
var SqueezeBox = {

	presets: {
		size: {x: 600, y: 450},
		sizeLoading: {x: 200, y: 150},
		marginInner: {x: 20, y: 20},
		marginImage: {x: 50, y: 75},
		handler: false,
		target: null,
		closable: true,
		closeBtn: true,
		zIndex: 65555,
		overlayOpacity: 0.7,
		classWindow: '',
		classOverlay: '',
		overlayFx: {},
		resizeFx: {},
		contentFx: {},
		parse: false, // 'rel'
		parseSecure: false,
		ajaxOptions: {},
		onOpen: $empty,
		onClose: $empty,
		onUpdate: $empty,
		onResize: $empty,
		onMove: $empty,
		onShow: $empty,
		onHide: $empty
	},

	initialize: function(presets) {
		if (this.options) return this;
		this.presets = $merge(this.presets, presets);
		this.options = {};
		this.setOptions(this.presets).build();
		this.bound = {
			window: this.reposition.bind(this, [null]),
			scroll: this.checkTarget.bind(this),
			close: this.close.bind(this),
			key: this.onKey.bind(this)
		};
		this.isOpen = this.isLoading = false;
		return this;
	},

	build: function() {
		this.overlay = new Element('div', {
			id: 'sbox-overlay',
			styles: {display: 'none', zIndex: this.options.zIndex}
		});
		this.content = new Element('div', {id: 'sbox-content'});
		this.closeBtn = new Element('a', {id: 'sbox-btn-close', href: '#'});
		this.win = new Element('div', {
			id: 'sbox-window',
			styles: {display: 'none', zIndex: this.options.zIndex + 2}
		}).adopt(this.closeBtn, this.content);
		this.fx = {
			overlay: new Fx.Tween(this.overlay, $merge({
				property: 'opacity',
				onStart: Events.prototype.clearChain,
				duration: 250,
				link: 'cancel'
			}, this.options.overlayFx)).set(0),
			win: new Fx.Morph(this.win, $merge({
				onStart: Events.prototype.clearChain,
				unit: 'px',
				duration: 750,
				transition: Fx.Transitions.Quint.easeOut,
				link: 'cancel',
				unit: 'px'
			}, this.options.resizeFx)),
			content: new Fx.Tween(this.content, $merge({
				property: 'zoom', //'opacity',
				duration: 250,
				link: 'cancel'
			}, this.options.contentFx)).set(0)
		};
		$(document.body).adopt(this.overlay, this.win);
	},

	assign: function(to, options) {
		return to.addEvent('click', function() {
			return !SqueezeBox.fromElement(this, options);
		});
	},

	fromElement: function(from, options) {
		this.initialize();
		if (this.element) this.trash();
		this.element = $(from);
		this.setOptions($merge(this.presets, options || {}));
		if (this.element && this.options.parse) {
			var obj = this.element.getProperty(this.options.parse);
			if (obj && (obj = JSON.decode(obj, this.options.parseSecure))) this.setOptions(obj);
		}
		this.assignOptions();
		this.url = ((this.element) ? (this.options.url || this.element.get('href')) : from) || '';
		var handler = this.options.handler;
		if (handler) return this.setContent(handler, this.parsers[handler].call(this, true));
		var ret = false;
		this.parsers.some(function(parser, key) {
			var content = parser.call(this);
			if (content) {
				ret = this.setContent(key, content);
				return true;
			}
			return false;
		}, this);
		return ret;
	},

	assignOptions: function() {
		this.overlay.set('class', this.options.classOverlay);
		this.win.set('class', this.options.classWindow);
		if (Browser.Engine.trident4) this.win.addClass('sbox-window-ie6');
	},

	close: function(e) {
		var stoppable = ($type(e) == 'event');
		if (stoppable) e.stop();
		if (!this.isOpen || (stoppable && !$lambda(this.options.closable).call(this, e))) return this;
		this.fx.overlay.start(0).chain(this.toggleOverlay.bind(this));
		this.win.setStyle('display', 'none');
		this.toggleListeners();
		this.isOpen = false;
		this.trash();
		this.fireEvent('onClose', [this.content]);
		return this;
	},

	trash: function() {
		this.element = this.asset = null;
		this.options = {};
		this.removeEvents().setOptions(this.presets).callChain();
	},

	onError: function() {
		this.asset = null;
		this.setContent('string', 'Error during loading');
	},

	setContent: function(handler, content) {
		if (!this.handlers[handler]) return false;
		this.content.className = 'sbox-content-' + handler;
		this.applyTimer = this.applyContent.delay(this.fx.overlay.options.duration, this, this.handlers[handler].call(this, content));
		if (this.overlay.retrieve('opacity')) return this;
		this.toggleOverlay(true);
		this.fx.overlay.start(this.options.overlayOpacity);
		return this.reposition();
	},

	applyContent: function(content, size) {
		this.applyTimer = $clear(this.applyTimer);
		this.hideContent();
		if (!content) {
			this.toggleLoading(true);
		} else {
			if (this.isLoading) this.toggleLoading(false);
			this.fireEvent('onUpdate', [this.content], 20);
		}
		this.content.empty();
		if (['string', 'array', false].contains($type(content))) this.content.set('html', content || '');
		else this.content.adopt(content);
		this.callChain();
		if (!this.isOpen) {
			this.toggleListeners(true);
			this.resize(size, true);
			this.isOpen = true;
			this.fireEvent('onOpen', [this.content]);
		} else {
			this.resize(size);
		}
	},

	resize: function(size, instantly) {
		var box = document.getSize(), scroll = document.getScroll();
		this.size = $merge((this.isLoading) ? this.options.sizeLoading : this.options.size, size);
		var to = {
			width: this.size.x,
			height: this.size.y,
			left: (scroll.x + (box.x - this.size.x - this.options.marginInner.x) / 2).toInt(),
			top: (scroll.y + (box.y - this.size.y - this.options.marginInner.y) / 2).toInt()
		};
		$clear(this.showTimer || null);
		this.hideContent();
		if (!instantly) {
			this.fx.win.start(to).chain(this.showContent.bind(this));
		} else {
			this.win.setStyles(to).setStyle('display', '');
			this.showTimer = this.showContent.delay(50, this);
		}
		return this.reposition();
	},

	toggleListeners: function(state) {
		var fn = (state) ? 'addEvent' : 'removeEvent';
		this.closeBtn[fn]('click', this.bound.close);
//		this.overlay[fn]('click', this.bound.close);
		document[fn]('keydown', this.bound.key)[fn]('mousewheel', this.bound.scroll);
		window[fn]('resize', this.bound.window)[fn]('scroll', this.bound.window);
	},

	toggleLoading: function(state) {
		this.isLoading = state;
		this.win[(state) ? 'addClass' : 'removeClass']('sbox-loading');
		if (state) this.fireEvent('onLoading', [this.win]);
	},

	toggleOverlay: function(state) {
		this.overlay.setStyle('display', (state) ? '' : 'none');
		$(document.body)[(state) ? 'addClass' : 'removeClass']('body-overlayed');
	},

	showContent: function() {
		if (this.content.get('opacity')) this.fireEvent('onShow', [this.win]);
		this.fx.content.start(1);
	},

	hideContent: function() {
		if (!this.content.get('opacity')) this.fireEvent('onHide', [this.win]);
		this.fx.content.set(0);
	},

	onKey: function(e) {
		switch (e.key) {
			case 'esc': this.close(e);
			case 'up': case 'down': return false;
		}
	},

	checkTarget: function(e) {
		return this.content.hasChild(e.target);
	},

	reposition: function() {
		var size = document.getSize(), scroll = document.getScroll();
		this.overlay.setStyles({
			left: scroll.x + 'px',
			top: scroll.y + 'px',
			width: size.x + 'px',
			height: size.y + 'px'
		});
		this.win.setStyles({
			left: (scroll.x + (size.x - this.win.offsetWidth) / 2).toInt() + 'px',
			top: (scroll.y + (size.y - this.win.offsetHeight) / 2).toInt() + 'px'
		});
		return this.fireEvent('onMove', [this.overlay, this.win]);
	},

	removeEvents: function(type){
		if (!this.$events) return this;
		if (!type) this.$events = null;
		else if (this.$events[type]) this.$events[type] = null;
		return this;
	},

	extend: function(properties) {
		return $extend(this, properties);
	},

	handlers: new Hash(),

	parsers: new Hash()
 };
SqueezeBox.extend(new Events($empty)).extend(new Options($empty)).extend(new Chain($empty));
SqueezeBox.parsers.extend({

	image: function(preset) {
		return (preset || (/\.(?:jpg|png|gif)$/i).test(this.url)) ? this.url : false;
	},

	clone: function(preset) {
		if ($(this.options.target)) return $(this.options.target);
		if (this.element && !this.element.parentNode) return this.element;
		var bits = this.url.match(/#([\w-]+)$/);
		return (bits) ? $(bits[1]) : (preset ? this.element : false);
	},

	ajax: function(preset) {
		return (preset || (this.url && !(/^(?:javascript|#)/i).test(this.url))) ? this.url : false;
	},

	iframe: function(preset) {
		return (preset || this.url) ? this.url : false;
	},

	string: function(preset) {
		return true;
	} });
SqueezeBox.handlers.extend({

	image: function(url) {
		var size, tmp = new Image();
		this.asset = null;
		tmp.onload = tmp.onabort = tmp.onerror = (function() {
			tmp.onload = tmp.onabort = tmp.onerror = null;
			if (!tmp.width) {
				this.onError.delay(10, this);
				return;
			}
			var box = document.getSize();
			box.x -= this.options.marginImage.x;
			box.y -= this.options.marginImage.y;
			size = {x: tmp.width, y: tmp.height};
			for (var i = 2; i--;) {
				if (size.x > box.x) {
					size.y *= box.x / size.x;
					size.x = box.x;
				} else if (size.y > box.y) {
					size.x *= box.y / size.y;
					size.y = box.y;
				}
			}
			size.x = size.x.toInt();
			size.y = size.y.toInt();
			this.asset = $(tmp);
			tmp = null;
			this.asset.setProperties({width: size.x, height: size.y});
			if (this.isOpen) this.applyContent(this.asset, size);
		}).bind(this);
		tmp.src = url;
		if (tmp && tmp.onload && tmp.complete) tmp.onload();
		return (this.asset) ? [this.asset, size] : null;
	},

	clone: function(el) {
		return el.clone();
	},

	adopt: $arguments(0),

	ajax: function(url) {
		this.asset = new Request.HTML($merge({
			method: 'get'
		}, this.options.ajaxOptions)).addEvents({
			onSuccess: function(resp) {
				this.applyContent(resp);
				this.asset = null;
			}.bind(this),
			onFailure: this.onError.bind(this)
		});
		this.asset.send.delay(10, this.asset, [{url: url}]);
	},

	iframe: function(url) {
		return new Element('iframe', $merge({
			src: url,			
			frameBorder: 0,
			width: this.options.size.x,
			height: this.options.size.y
		}, this.options.iframeOptions));
	},

	string: function(str) {
		return str;
	}
});
SqueezeBox.handlers.url = SqueezeBox.handlers.ajax;
SqueezeBox.parsers.url = SqueezeBox.parsers.ajax;
SqueezeBox.parsers.adopt = SqueezeBox.parsers.clone;

// -- MAIN() --
window.addEvent('domready', function(){
	if (document.getElementById("noframe_1")) {
		if (document.getElementById("noframe_1").className == "topnav") {
			document.getElementById("noframe_1").innerHTML= document.getElementById("css_menu").innerHTML;
		} else {
			var arrElements = document.getElementById("noframe_1").getElementsByTagName("div");
			for(var i=0; i<arrElements.length; i++){
				if ("topnav"== arrElements[i].className){
					arrElements[i].innerHTML= document.getElementById("css_menu").innerHTML;
				}
			}
		}
	} else {
		if (document.getElementById("topnav_2007")) {
			if (document.getElementById("css_menu")) {
				document.getElementById("css_menu").style.display='block';
			}
		} else {
			var arrElements = document.getElementsByTagName("div");
			for(var i=0; i<arrElements.length; i++){
				if ("topnav"== arrElements[i].className){
					arrElements[i].innerHTML= document.getElementById("css_menu").innerHTML;
				}
			}
		}
	}


	if($('flashcontent')) {		
		var flashvars = {};
		var params = {"wmode":"transparent", "quality":"high", "AllowScriptAccess":"always", "menu":"false"};
		var attributes = {};
		attributes.id = "myMovie";
		//swfobject.embedSWF("/swf/fisher720x300.swf", "flashcontent", "720", "300", "8.0.0", false, flashvars, params, attributes);
		swfobject.embedSWF("/swf/yamaha720x300.swf", "flashcontent", "720", "300", "8.0.0", false, flashvars, params, attributes);
	}
	
	if($('ychelp')) {
		var qaAccordion = new Accordion($('ychelp'), 'h3', 'p', {
			opacity: false,
			onActive: function(toggler, element){
				toggler.setStyle('color', '#CB0101');
			},
			onBackground: function(toggler, element){
				toggler.setStyle('color', '#333');
			}
		});
	}
	
	if($('yccalendar')) {
		new vlaCalendar('yccalendar', 
						{ startMonday: true,
						extraparam:'for=posts'/*,
						defaultView: (($('pfday').value == '--') ? 'decade' : 'month'),
						separator: '.', leadingZero: true, twoDigitYear: false, 
						openWith: 'togglePicker', 
						gotoPickedDate:true,
						startMonday:true,
						alignX: 'right', alignY: 'bottom', 
						prefillDate: { day: $('pfday').value, month: $('pfmonth').value, year: $('pfyear').value }, 
						offset: { x:-3, y:-25 }, toggleDuration:0, ieTransitionColor:'transparent' */ } );
	}

	if($('ycbrowsebydate')) {
		$$('.ycbydatemonth').each(function(item, index){ item.setStyle('background', 'white'); });
		
		var bbdAccordion = new Accordion($('ycbrowsebydate'), 'h4', '.ycbydatemonth', {
			opacity: false,
			onActive: function(toggler, element){
				toggler.setStyle('color', '#CB0101');
			},
			onBackground: function(toggler, element){
				toggler.setStyle('color', '#333');
			}
		});
		
		try { bbdAccordion.display($('opentab').value); } catch(e) {}
	}
	
	function makeScrollbar(content,scrollbar,handle,horizontal,ignoreMouse,slider,resetPos,from){
		
		if ( content.getScrollSize().y > content.getSize().y){
			if(slider) { 
				slider.resize();
				content.scrollTo(0,0);
				slider.set(0);

			} else {			
				var slider = new Slider(scrollbar, handle, {
					steps: 100,
					mode: (horizontal?'horizontal':'vertical'),
					onChange: function(step){
					// Scrolls the content element in x or y direction.
					try { pageTips.hide(); } catch(e) {}					
					var x = (horizontal?(((content.getScrollSize().x-content.getSize().x)/100)*step):0);
					var y = (horizontal?0:(((content.getScrollSize().y-content.getSize().y)/100)*step));
					content.scrollTo(x,y);
					}
				}).set(0);
				if( !(ignoreMouse) ){
					$$(content, scrollbar).removeEvent('mousewheel');
					$$(content, scrollbar).addEvent('mousewheel', function(e){
						e = new Event(e).stop();
						var step = slider.step - e.wheel * 2;
						slider.set(step);
						try { pageTips.hide(); } catch(e) {}
				});
				}
			}
			$(document.body).addEvent('mouseleave',function(){slider.drag.stop()});	
//			scrollbar.set('opacity', '1');
			scrollbar.fade(1);
			return slider;
		} 
		else {
			if(slider && resetPos) { 
				content.scrollTo(0,0);
				slider.set(0);
			}
			try {
			scrollbar.fade(0);
//			scrollbar.set('opacity', '0'); //fade(0);
			} catch(e) {}
		}
		
		return false;
	}

// BROWSE BY DATE/REGION
	if($('bbdate') && $('bbregion')) {
		makeScrollbar($('ycregionscroll'), $('ycregionscrollbar'), $('ycregionscrollhandle'), false, false);
		
		$('bbdate').addEvent('click', function(e) { $('bbdate').addClass('active'); $('bbregion').removeClass('active'); $('ycbrowsebydate').setStyles({'display':'block'}); $('ycbrowsebyregion').setStyles({'display':'none'}); });
		$('bbregion').addEvent('click', function(e) { $('bbdate').removeClass('active'); $('bbregion').addClass('active'); $('ycbrowsebydate').setStyles({'display':'none'}); $('ycbrowsebyregion').setStyles({'display':'block'}); });
		
		if($('openregions')) {
			$('bbregion').addClass('active'); 
			$('bbdate').removeClass('active');
			$('ycbrowsebydate').setStyles({'display':'none'});
			$('ycbrowsebyregion').setStyles({'display':'block'});
		} else {
			$('bbregion').removeClass('active'); 
			$('bbdate').addClass('active'); 
			$('ycbrowsebydate').setStyles({'display':'block'});
			$('ycbrowsebyregion').setStyles({'display':'none'});
		}
	}

// GOOGLE 
	if($('googlemaps')) {
/* --- USERS LOADER --- */
		// photos list request
		var userslist = new Request({url:'/cmd/users-list/',
			onRequest: function(r) {
				$('ycuserlistloader').setStyles({'display':'block'});
				if($('ycuserlistblock')) $('ycuserlistloader').setStyles({'height':$('ycuserlistblock').getSize().y+13});
				$('ycuserlist').setStyles({'display':'none'});
			},
			onSuccess: function(r) {
				r=r.split('###');
				if(r[0] == 'ok') {
					$('ycuserlistloader').setStyles({'display':'none'});
					$('ycuserlist').setStyles({'display':'block'});
					$('ycuserlist').set('html', r[1]);
					$('ycuserlistloader').setStyles({'height':$('ycuserlist').getHeight()});
				} else {
				}
			},
			onFailure: function(r) {
			}
		});

		$('ycuserlist').setStyles({'display':'none'});
//		userslist.send('city=');
		
		
		$$('.gotocity').addEvent('click', function(e) { 
			e.stop(); 
			userslist.send('city='+this.title);
		});

		var map;
		var geocoder = null;
		var addressMarker;
		var addresses = ["Москва"];
		try {
			addresses = $('citiesforgoogle').value.split('#'); 
		} catch(e) { alert(e.message); }
		
/* -- GEOCODE -- */
		var numGeocoded = 0;
	
		function geocodeAll() {
		  if (numGeocoded < addresses.length) {
			geocoder.getLocations(addresses[numGeocoded], addressResolved);
		  }
		}
	
	   function addressResolved(response) {
		 var delay = 0;
		 if (response.Status.code == 620) {
			delay = 500;
		 } else {
		   if (response.Status.code == 200) {
				place = response.Placemark[0];
				point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
				marker = new GMarker(point, markerOptions);
				marker.mycity = response.name;
				marker.point = point;
				
				GEvent.addListener(marker, 'click',
					function(){ 
						map.closeInfoWindow();
						userslist.send('city='+ this.mycity);
						map.openInfoWindow(this.point, this.mycity);
					}
				);
/*				GEvent.addListener(marker, 'mouseout',
					function(){ 
						map.closeInfoWindow();
					}
				);*/
			
			 map.addOverlay(marker);
		   }
		   numGeocoded += 1;
		 }
		 window.setTimeout(geocodeAll, delay);
	   }		

/* -- NEAT OUTPUT --*/
		// Create our "tiny" marker 
		var tinyIcon = new GIcon();
//		tinyIcon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
//		tinyIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";

		tinyIcon.image = "/img/dmode-small-" + $('zedmode').get('value') + ".png";
		tinyIcon.shadow = "/img/dmode-small-shadow.png";

		tinyIcon.iconSize = new GSize(12, 12);
		tinyIcon.shadowSize = new GSize(19, 12);
		tinyIcon.iconAnchor = new GPoint(0, 12);
		tinyIcon.infoWindowAnchor = new GPoint(5, 1);// Set up our GMarkerOptions object literal
		markerOptions = { icon:tinyIcon };

		if (GBrowserIsCompatible()) {
			map = new GMap2(document.getElementById("googlemap"));
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
			map.setCenter(new GLatLng(59, 89), 3);
			map.setMapType(G_NORMAL_MAP);
			
			geocoder = new GClientGeocoder();
			geocoder.setCache(null);
			window.setTimeout(geocodeAll, 50);
		}
	}

// MILKBOX
	document.Milkbox = new Milkbox( {initialWidth:300, initialHeight:200, resizeDuration:400, autoPlay:false, overlayOpacity:0.3, autoPlayDelay:6, removeTitle:false} );

// FEEDBACK
	if($('ycfeedbackform')) {
		// --
		$('ycfeedbackok').setStyles({'height':$('ycfeedbackform').getHeight()});
		$('ycfeedbackloader').setStyles({'height':$('ycfeedbackform').getHeight()});
		$('ycfeedbackform').addEvent('submit', function(e) {
			e.stop();
			var masker = $('ycfeedbackloader').setStyles({'visibility':'visible'});
			$('ycfeedbackloader').set('opacity','.80');
			this.set('send', {onComplete: function(response) { 
				try {
					masker.setStyles({'visibility':'hidden'});
					var r=response.split('|');
					if(r[1] != '0') $('name').addClass('ycerror'); else $('name').removeClass('ycerror');
					if(r[2] != '0') $('email').addClass('ycerror'); else $('email').removeClass('ycerror');
					if(r[3] != '0') $('subject').addClass('ycerror'); else $('subject').removeClass('ycerror');
						if(r[3] == '99') $('badwordtitle').setStyles({'display':'block'}); else $('badwordtitle').setStyles({'display':'none'});
					if(r[4] != '0') $('message').addClass('ycerror'); else $('message').removeClass('ycerror');
						if(r[4] == '99') $('badword').setStyles({'display':'block'}); else $('badword').setStyles({'display':'none'});
					if(r[0]=='ok') {
						$('ycfeedbackok').setStyles({'visibility':'visible'});
					} else {
					}
				} catch(e) {}
			}});
			this.send();
		});
	}
	
// LOGIN	
	if($('ycloginform')) {
		// --
		$('ycloginok').setStyles({'height':$('ycloginform').getHeight()}+30);
		$('ycloader').setStyles({'height':$('ycloginform').getHeight()+30});
		$('ycloginform').addEvent('submit', function(e) {
			e.stop();
			$('ycloader').setStyles({'visibility':'visible'});
			$('ycloader').set('opacity','.80');
			this.set('send', {onComplete: function(response) { 
				var r=response.split('|');
				if(r[1] != '0') $('login').addClass('ycerror'); else $('login').removeClass('ycerror');
				if(r[2] != '0') $('password').addClass('ycerror'); else $('password').removeClass('ycerror');
				if(r[0]=='ok') {
					window.location = 'http://www.'+r[3]+'/personal/profile/';
				} else {
					$('ycloader').setStyles({'visibility':'hidden'});
				}
			}});
			this.send();
		});
	}

// REGISTER	[!]
	if($('region') && $('city')) {
		$('region').addEvent('change', function() {
							$('city').load('/ajax/ajax-getcitiesbyregion.php?region='+escape(this.value))
		});
	}
	
	if($('addcarrowlink')) {
		$$('.carrow').each(function(item, index){ item.setStyles(((index<$('carcount').value) ? ({'display':'block'}) : ({'display':'none'}))); });
		$('addcarrowlink').setStyles((($('carcount').value<5) ? ({'display':'block'}) : ({'display':'none'})));
		
		$$('.ycdelcar').each(function(item, index){
									item.addEvent('click', function(e) {
											e.stop();
											carrows = $$('.carrow');
											for(dd = parseInt(this.rel); dd<5; dd++) {
												$('car'+dd).value = (dd<4) ? $('car'+(dd+1)).value : '';
												$('caryear'+dd).value = (dd<4) ? $('caryear'+(dd+1)).value : '';
											}
											carcount = $('carcount').value = parseInt($('carcount').value)-1;
											carrows[carcount].setStyles({'display':'none'});
											$('addcarrowlink').setStyles({'display':'block'});
									}.bind(item));
								});
		
		$('addcarrow').addEvent('click', function(e) {
									e.stop();
									carcount = $('carcount').value = parseInt($('carcount').value)+1;
									carrows = $$('.carrow');
									carrows.each(function(item, index){ item.setStyles(((index<carcount) ? ({'display':'block'}) : ({'display':'none'}))); });
									$('addcarrowlink').setStyles(((carcount<5) ? ({'display':'block'}) : ({'display':'none'})));
								});

		// CYC
		$$('.carcycrow').each(function(item, index){ item.setStyles(((index<$('carcyccount').value) ? ({'display':'block'}) : ({'display':'none'}))); });
		$('addcarcycrowlink').setStyles((($('carcyccount').value<5) ? ({'display':'block'}) : ({'display':'none'})));
		
		$$('.ycdelcarcyc').each(function(item, index){
									item.addEvent('click', function(e) {
											e.stop();
											carcycrows = $$('.carcycrow');
											for(dd = parseInt(this.rel); dd<5; dd++) {
												$('carcyc'+dd).value = (dd<4) ? $('carcyc'+(dd+1)).value : '';
												$('carcycyear'+dd).value = (dd<4) ? $('carcycyear'+(dd+1)).value : '';
											}
											carcyccount = $('carcyccount').value = parseInt($('carcyccount').value)-1;
											carcycrows[carcyccount].setStyles({'display':'none'});
											$('addcarcycrowlink').setStyles({'display':'block'});
									}.bind(item));
								});
		
		$('addcarcycrow').addEvent('click', function(e) {
									e.stop();
									carcyccount = $('carcyccount').value = parseInt($('carcyccount').value)+1;
									carcycrows = $$('.carcycrow');
									carcycrows.each(function(item, index){ item.setStyles(((index<carcyccount) ? ({'display':'block'}) : ({'display':'none'}))); });
									$('addcarcycrowlink').setStyles(((carcyccount<5) ? ({'display':'block'}) : ({'display':'none'})));
								});
		
		// QUAD
		$$('.carquadrow').each(function(item, index){ item.setStyles(((index<$('carquadcount').value) ? ({'display':'block'}) : ({'display':'none'}))); });
		$('addcarquadrowlink').setStyles((($('carquadcount').value<5) ? ({'display':'block'}) : ({'display':'none'})));
		
		$$('.ycdelcarquad').each(function(item, index){
									item.addEvent('click', function(e) {
											e.stop();
											carquadrows = $$('.carquadrow');
											for(dd = parseInt(this.rel); dd<5; dd++) {
												$('carquad'+dd).value = (dd<4) ? $('carquad'+(dd+1)).value : '';
												$('carquadyear'+dd).value = (dd<4) ? $('carquadyear'+(dd+1)).value : '';
											}
											carquadcount = $('carquadcount').value = parseInt($('carquadcount').value)-1;
											carquadrows[carquadcount].setStyles({'display':'none'});
											$('addcarquadrowlink').setStyles({'display':'block'});
									}.bind(item));
								});
		
		$('addcarquadrow').addEvent('click', function(e) {
									e.stop();
									carquadcount = $('carquadcount').value = parseInt($('carquadcount').value)+1;
									carquadrows = $$('.carquadrow');
									carquadrows.each(function(item, index){ item.setStyles(((index<carquadcount) ? ({'display':'block'}) : ({'display':'none'}))); });
									$('addcarquadrowlink').setStyles(((carquadcount<5) ? ({'display':'block'}) : ({'display':'none'})));

								});
		// HYDRO
		$$('.carhydrorow').each(function(item, index){ item.setStyles(((index<$('carhydrocount').value) ? ({'display':'block'}) : ({'display':'none'}))); });
		$('addcarhydrorowlink').setStyles((($('carhydrocount').value<5) ? ({'display':'block'}) : ({'display':'none'})));
		
		$$('.ycdelcarhydro').each(function(item, index){
									item.addEvent('click', function(e) {
											e.stop();
											carhydrorows = $$('.carhydrorow');
											for(dd = parseInt(this.rel); dd<5; dd++) {
												$('carhydro'+dd).value = (dd<4) ? $('carhydro'+(dd+1)).value : '';
												$('carhydroyear'+dd).value = (dd<4) ? $('carhydroyear'+(dd+1)).value : '';
											}
											carhydrocount = $('carhydrocount').value = parseInt($('carhydrocount').value)-1;
											carhydrorows[carhydrocount].setStyles({'display':'none'});
											$('addcarhydrorowlink').setStyles({'display':'block'});
									}.bind(item));
								});
		
		$('addcarhydrorow').addEvent('click', function(e) {
									e.stop();
									carhydrocount = $('carhydrocount').value = parseInt($('carhydrocount').value)+1;
									carhydrorows = $$('.carhydrorow');
									carhydrorows.each(function(item, index){ item.setStyles(((index<carhydrocount) ? ({'display':'block'}) : ({'display':'none'}))); });
									$('addcarhydrorowlink').setStyles(((carhydrocount<5) ? ({'display':'block'}) : ({'display':'none'})));
								});
		// BOAT
		$$('.carboatrow').each(function(item, index){ item.setStyles(((index<$('carboatcount').value) ? ({'display':'block'}) : ({'display':'none'}))); });
		$('addcarboatrowlink').setStyles((($('carboatcount').value<5) ? ({'display':'block'}) : ({'display':'none'})));
		
		$$('.ycdelcarboat').each(function(item, index){
									item.addEvent('click', function(e) {
											e.stop();
											carboatrows = $$('.carboatrow');
											for(dd = parseInt(this.rel); dd<5; dd++) {
												$('carboat'+dd).value = (dd<4) ? $('carboat'+(dd+1)).value : '';
												$('carboatyear'+dd).value = (dd<4) ? $('carboatyear'+(dd+1)).value : '';
											}
											carboatcount = $('carboatcount').value = parseInt($('carboatcount').value)-1;
											carboatrows[carboatcount].setStyles({'display':'none'});
											$('addcarboatrowlink').setStyles({'display':'block'});
									}.bind(item));
								});
		
		$('addcarboatrow').addEvent('click', function(e) {
									e.stop();
									carboatcount = $('carboatcount').value = parseInt($('carboatcount').value)+1;
									carboatrows = $$('.carboatrow');
									carboatrows.each(function(item, index){ item.setStyles(((index<carboatcount) ? ({'display':'block'}) : ({'display':'none'}))); });
									$('addcarboatrowlink').setStyles(((carboatcount<5) ? ({'display':'block'}) : ({'display':'none'})));
								});
		

	}
	
	if($('ycregisterform')) {
		
		// Optional card number
		if ($('cartcontest'))
		{
			$('cartcontest').setStyles({'display':'block'});
			
			var rb1 = $('nocard_1'),
				rb2 = $('nocard_0'),
				lb1 = $('nocard_1_l'),
				lb2 = $('nocard_0_l'),
				ccf = $('cardno');
			
			function cartcontestChange()
			{
				if (rb1.value == 1)
				{
					lb2.setStyles({'display':'block'});
					lb1.setStyles({'display':'none'});
					ccf.setStyles({'visibility':'hidden'});
					rb1.value = 0;
				}
				else
				{
					lb1.setStyles({'display':'block'});
					lb2.setStyles({'display':'none'});
					ccf.setStyles({'visibility':'visible'});
					rb1.value = 1;
				}
			}
			
			cartcontestChange();
			
			lb1.addEvent('click', function(e) {cartcontestChange()});
			lb2.addEvent('click', function(e) {cartcontestChange()});
		}
		
		$('terms').addEvent('click', function(e) {
			e.stop();
			$('ycregisterform').setStyles({'display':'none'});
			$('ycreadterms').setStyles({'display':'none'});
			$('ycterms').setStyles({'display':'block'});
		});
		$('ycaccept').addEvent('click', function(e) {
			$('ycregisterform').setStyles({'display':'block'});
			$('ycterms').setStyles({'display':'none'});
			$('ychider').setStyles({'visibility':'hidden'});
			$$('select').setStyles({'visibility':'visible'});
		});
		$('ycreject').addEvent('click', function(e) {
			window.location = '/';
		});
		// --
		$('ychider').setStyles({'height':$('ycregisterform').getHeight()});
		$$('select').setStyles({'visibility':'hidden'});
		$('login').setStyles({'color':'#999'}); var loginInit = $('login').value;
		$('login').addEvent('focus', function(e) { if(this.value == loginInit) {this.setStyles({'color':'#333'}); this.value=''; } });
		$('login').addEvent('change', function(e) { if(this.value == '') { this.setStyles({'color':'#999'}); this.value=loginInit; } });
		
		
		
		$('ycregisterform').addEvent('submit', function(e) {
			e.stop();
			var masker = $('ycloader').empty().setStyles({'visibility':'visible'});
			$('ycloader').set('opacity','.80');
			$$('select').setStyles({'visibility':'hidden'});
			$('ycloader').setStyles({'height':$('ycregisterform').getHeight()});
			this.set('send', {onComplete: function(response) { 
				try {
					masker.setStyles({'visibility':'hidden'});
					var r=response.split('|');
					if(r[1] != '0') $('cardno').addClass('ycerror'); else $('cardno').removeClass('ycerror'); if(r[1] == '2') $('carderr').setStyles({'display':'block'}); else $('carderr').setStyles({'display':'none'}); 
					if(r[2] != '0') $('dealer').addClass('ycerror'); else $('dealer').removeClass('ycerror');
					if(r[3] != '0') $('login').addClass('ycerror'); else $('login').removeClass('ycerror'); 
						if(r[3] == '2') $('loginerr').setStyles({'display':'block'}); else $('loginerr').setStyles({'display':'none'}); 
						if(r[3] == '3') $('loginshorterr').setStyles({'display':'block'}); else $('loginshorterr').setStyles({'display':'none'}); 
						if(r[3] == '4') $('loginbaderr').setStyles({'display':'block'}); else $('loginbaderr').setStyles({'display':'none'}); 
					if(r[4] != '0') $('hisname').addClass('ycerror'); else $('hisname').removeClass('ycerror');
					if(r[5] != '0') $('region').addClass('ycerror'); else $('region').removeClass('ycerror');
					if(r[6] != '0') $('city').addClass('ycerror'); else $('city').removeClass('ycerror');
					if(r[7] != '0') $('phonecode').addClass('ycerror'); else $('phonecode').removeClass('ycerror');
					if(r[8] != '0') $('phoneno').addClass('ycerror'); else $('phoneno').removeClass('ycerror');
					if(r[9] != '0') $('email').addClass('ycerror'); else $('email').removeClass('ycerror'); if(r[9] == '2') $('emailerr').setStyles({'display':'block'}); else $('emailerr').setStyles({'display':'none'}); 
					
					if(r[10] != '0') $('car0').addClass('ycerror'); else $('car0').removeClass('ycerror');
					if(r[11] != '0') $('caryear0').addClass('ycerror'); else $('caryear0').removeClass('ycerror');
					if(r[12] != '0') $('carcyc0').addClass('ycerror'); else $('carcyc0').removeClass('ycerror');
					if(r[13] != '0') $('carcycyear0').addClass('ycerror'); else $('carcycyear0').removeClass('ycerror');
					if(r[14] != '0') $('carquad0').addClass('ycerror'); else $('carquad0').removeClass('ycerror');
					if(r[15] != '0') $('carquadyear0').addClass('ycerror'); else $('carquadyear0').removeClass('ycerror');
					if(r[16] != '0') $('carhydro0').addClass('ycerror'); else $('carhydro0').removeClass('ycerror');
					if(r[17] != '0') $('carhydroyear0').addClass('ycerror'); else $('carhydroyear0').removeClass('ycerror');
					if(r[18] != '0') $('carboat0').addClass('ycerror'); else $('carboat0').removeClass('ycerror');
					if(r[19] != '0') $('carboatyear0').addClass('ycerror'); else $('carboatyear0').removeClass('ycerror');
					
					if(r[0]=='ok') {
						$('ycregisterok').setStyles({'visibility':'visible'});
						$('ycregisterok').setStyles({'height':$('ycregisterform').getHeight()});
						$$('select').setStyles({'visibility':'hidden'});
					} else {
						$$('select').setStyles({'visibility':'visible'});
					}
				} catch(e) {
						$$('select').setStyles({'visibility':'visible'});
				}
			}});
			this.send();
		});
	}
	
// PROFILE
	if($('ycpersonalprofileform')) {
		$$('select').setStyles({'visibility':'visible'});
		
		var datePick = new vlaDatePicker('birth', { 
				extraparam:'for=birth',
				defaultView: (($('pfday').value == '--') ? 'decade' : 'month'),
				separator: '.', leadingZero: true, twoDigitYear: false, 
				openWith: 'togglePicker', 
				gotoPickedDate:true,
				startMonday:true,
				alignX: 'right', alignY: 'bottom', 
				prefillDate: { day: $('pfday').value, month: $('pfmonth').value, year: $('pfyear').value }, 
				offset: { x:-3, y:-25 }, toggleDuration:0, ieTransitionColor:'transparent' } );
		

		$('ycpersonalprofileform').addEvent('submit', function(e) {
			e.stop();
			$('pfday').value = datePick.getInputDateStruct().day;
			$('pfmonth').value = datePick.getInputDateStruct().month;
			$('pfyear').value = datePick.getInputDateStruct().year;
			var masker = $('ycloader').empty().setStyles({'visibility':'visible'});
			$('ycloader').set('opacity','.80');
			$$('select').setStyles({'visibility':'hidden'});
			
			this.set('send', {onComplete: function(response) { 
				try {
					masker.setStyles({'visibility':'hidden'});
					$('region').setStyles({'visibility':'hidden'});
					$('city').setStyles({'visibility':'hidden'});
					var r=response.split('|');
					if(r[2] != '0') $('hisname').addClass('ycerror'); else $('hisname').removeClass('ycerror');
					if(r[3] != '0') $('region').addClass('ycerror'); else $('region').removeClass('ycerror');
					if(r[4] != '0') $('city').addClass('ycerror'); else $('city').removeClass('ycerror');
					if(r[8] != '0') $('car0').addClass('ycerror'); else $('car0').removeClass('ycerror');
					if(r[9] != '0') $('caryear0').addClass('ycerror'); else $('caryear0').removeClass('ycerror');
					if(r[0]=='ok') {
						$('ycupdateok').setStyles({'visibility':'visible'});
						$('ycupdateok').setStyles({'height':$('ycpersonalprofileform').getHeight()});
						$$('select').setStyles({'visibility':'visible'});
						$('avatar-form').setStyles({'visibility':'hidden'});
						$('persstats').setStyles({'visibility':'hidden'});
					} else {
						$('avatar-form').setStyles({'visibility':'hidden'});
						$$('select').setStyles({'visibility':'visible'});
					}
				} catch(e) { }
			}});
			this.send();
		});
	}

// LOST PASS
	if($('yclostpassrequest')) {
		$('ycretrieveok').setStyles({'height':$('yclostpassrequestform').getHeight()});
		$('ycloader').setStyles({'height':$('yclostpassrequestform').getHeight()});
		$('yclostpassrequestform').addEvent('submit', function(e) {
			e.stop();
			var masker = $('ycloader').empty().setStyles({'visibility':'visible'});
			$('ycloader').set('opacity','.80');

			this.set('send', {onComplete: function(response) {
				try {
					masker.setStyles({'visibility':'hidden'});
					var r=response.split('|');
					if(r[1] != '0') $('login').addClass('ycerror'); else $('login').removeClass('ycerror'); 
						if(r[1] == '2') $('loginerr').setStyles({'display':'block'}); else $('loginerr').setStyles({'display':'none'}); 
					if(r[0]=='ok') {
						$('ychint').setStyles({'display':'none'});
						$('ycretrieveok').setStyles({'visibility':'visible'});
					} else {
					}
				} catch(e) {}
			}});
			this.send();
		});
	}

// LOST PASS REQUEST
	if($('yclostpassrequest')) {
		$('ycretrieveok').setStyles({'height':$('yclostpassrequestform').getHeight()});
		$('ycloader').setStyles({'height':$('yclostpassrequestform').getHeight()});

		$('yclostpassrequestform').addEvent('submit', function(e) {
			e.stop();
			var masker = $('ycloader').empty().setStyles({'visibility':'visible'});
			$('ycloader').set('opacity','.80');
			this.set('send', {onComplete: function(response) { 
				try {
					masker.setStyles({'visibility':'hidden'});
					var r=response.split('|');
					if(r[1] != '0') $('login').addClass('ycerror'); else $('login').removeClass('ycerror'); 
						if(r[1] == '2') $('loginerr').setStyles({'display':'block'}); else $('loginerr').setStyles({'display':'none'}); 
					if(r[0]=='ok') {
						$('ychint').setStyles({'display':'none'});
						$('ycretrieveok').setStyles({'visibility':'visible'});
					} else {
					}
				} catch(e) {}
			}});
			this.send();
		});
	}
	

// LOST PASS RESET
	if($('yclostpassreset')) {
		// --
		$('ycretrieveok').setStyles({'height':$('yclostpassresetform').getHeight()});
		$('ycloader').setStyles({'height':$('yclostpassresetform').getHeight()});

		$('yclostpassresetform').addEvent('submit', function(e) {
			e.stop();
			var masker = $('ycloader').empty().setStyles({'visibility':'visible'});
			$('ycloader').set('opacity','.80');
			this.set('send', {onComplete: function(response) { 
				try {
					masker.setStyles({'visibility':'hidden'});
					var r=response.split('|');
					if(r[1] != '0') $('password').addClass('ycerror'); else $('password').removeClass('ycerror'); 
						if(r[1] == '2') $('passworderr').setStyles({'display':'block'}); else $('passworderr').setStyles({'display':'none'}); 
					if(r[2] != '0') $('passwordrep').addClass('ycerror'); else $('passwordrep').removeClass('ycerror'); 
						if(r[2] == '2') $('passwordreperr').setStyles({'display':'block'}); else $('passwordreperr').setStyles({'display':'none'}); 
					if(r[0]=='ok') {
						$('ychint').setStyles({'display':'none'});
						$('ycretrieveok').setStyles({'visibility':'visible'});
					} else {
					}
				} catch(e) {}
			}});
			this.send();
		});
	}
	
// COMMENT
	if($('ycpostcommentform')) {
		// --
		$('ycpostcommentok').setStyles({'height':$('ycpostcommentform').getHeight()});
		$('ycloader').setStyles({'height':$('ycpostcommentform').getHeight()});
		$('ycpostcommentform').addEvent('submit', function(e) {
			e.stop();
			var masker = $('ycloader').empty().setStyles({'visibility':'visible'});
			$('ycloader').set('opacity','.80');

			this.set('send', {onComplete: function(response) { 
				try {
					masker.setStyles({'visibility':'hidden'});
					var r=response.split('|');
					if(r[1] != '0') $('comment').addClass('ycerror'); else $('comment').removeClass('ycerror');
						if(r[1] == '99') $('badword').setStyles({'display':'block'}); else $('badword').setStyles({'display':'none'});
					if(r[0]=='ok') {
						$('ycpostcommentok').setStyles({'visibility':'visible'});
						$('injectcomment').set('html', (r[4]));
						$('allcomments').setStyles({'display':'block'});
						$('injectcomment').setStyles({'display':'block'});
						var myFx = new Fx.Tween($('injectcomment'));
						myFx.start('background-color', '#fff');
						
						$('ycpostcommentrow').setStyles({'display':'none'});
					} else {
					}
				} catch(e) {}
			}});
			this.send();
		});
	}

// RATE FORM
	if($('ycrateform') && $$('.ycmarker')) {
		// --
		$('ycratetok').setStyles({'height':$('ycrateform').getHeight()});
		$('ycrateloader').setStyles({'height':$('ycrateform').getHeight(), 'visibility':'hidden'});
		$$('.ycmarker').addEvent('click', function(e) { 
				e.stop(); 
				$('ycrateloader').setStyles({'visibility':'visible'});
				$('ycrateloader').set('opacity','.80');
				ratereq.send('rate='+this.title+'&post='+$('post').value+'&tologin='+$('tologin').value);
		});

		var ratereq = new Request({url:'/cmd/post-rate/',
			onSuccess: function(r) {
				r=r.split('|');
				if(r[0] == 'ok') {
					$('ycrateloader').setStyles({'visibility':'hidden'});
					$('ycratetok').setStyles({'visibility':'visible'});
				} else {
					$('ycrateloader').setStyles({'visibility':'hidden'});
				}
			},
			onFailure: function(r) {
				$('ycrateloader').setStyles({'visibility':'hidden'});
			}
		});
	}

// DELETE POST
	if($('ycpostdeleteform')) {
		// --
		$('ycpostdeleteok').setStyles({'height':$('ycpostdeleteform').getHeight()});
		$('ycloader').setStyles({'height':$('ycpostdeleteform').getHeight() });
		$('ycpostdeleteform').addEvent('submit', function(e) {
			e.stop();
			var masker = $('ycloader').empty().setStyles({'visibility':'visible'});
			$('ycloader').set('opacity','.80');
			
			this.set('send', {onComplete: function(response) { 
				masker.setStyles({'visibility':'hidden'});
				var r=response.split('|');
				if(r[1] != '0') $('password').addClass('ycerror'); else $('password').removeClass('ycerror');
					if(r[1] == '2') $('passworderr').setStyles({'display':'block'}); else $('passworderr').setStyles({'display':'none'}); 
				if(r[0]=='ok') {
					$('ycpostdeleteok').setStyles({'visibility':'visible'});
				} else {
				}
			}});
			this.send();
		});
	}

// HIDE POST
	if($('ycposthideform')) {
		// --
		$('ycposthideok').setStyles({'height':$('ycposthideform').getHeight()});
		$('ycloader').setStyles({'height':$('ycposthideform').getHeight() });
		$('ycposthideform').addEvent('submit', function(e) {
			e.stop();
			var masker = $('ycloader').empty().setStyles({'visibility':'visible'});
			$('ycloader').set('opacity','.80');

			this.set('send', {onComplete: function(response) { 
				masker.setStyles({'visibility':'hidden'});
				var r=response.split('|');
				if(r[1] != '0') $('password').addClass('ycerror'); else $('password').removeClass('ycerror');
					if(r[1] == '2') $('passworderr').setStyles({'display':'block'}); else $('passworderr').setStyles({'display':'none'}); 
				if(r[0]=='ok') {
					$('ycposthideok').setStyles({'visibility':'visible'});
				} else {
				}
			}});
			this.send();
		});
	}

// UNHIDE POST
	if($('ycpostunhideform')) {
		// --
		$('ycpostunhideok').setStyles({'height':$('ycpostunhideform').getHeight()});
		$('ycloader').setStyles({'height':$('ycpostunhideform').getHeight() });
		$('ycpostunhideform').addEvent('submit', function(e) {
			e.stop();
			var masker = $('ycloader').empty().setStyles({'visibility':'visible'});
			$('ycloader').set('opacity','.80');
			
			this.set('send', {onComplete: function(response) { 
				masker.setStyles({'visibility':'hidden'});
				var r=response.split('|');
				if(r[1] != '0') $('password').addClass('ycerror'); else $('password').removeClass('ycerror');
					if(r[1] == '2') $('passworderr').setStyles({'display':'block'}); else $('passworderr').setStyles({'display':'none'}); 
				if(r[0]=='ok') {
					$('ycpostunhideok').setStyles({'visibility':'visible'});
				} else {
				}
			}});
			this.send();
		});
	}

// PERSONAL PROFILE
	if($('ycpersonalprofileform')) {
		var swiffy = new FancyUpload2($('avatar-status'), $('avatar-list'), {
			'url': $('avatar-form').action,
			'fieldName': 'photoupload',
			'instantStart' : true,
			'target': 'avatar-browse-images',			
			'path': '/swf/Swiff.Uploader.swf',
			typeFilter: { 'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png' },
			'onLoad': function() {
				$('avatar-status').removeClass('hide');
				$('avatar-fallback').destroy();
			},
			'onStart' : function() {
				$('avatarpic').addClass('picuploading');
				$('avatar-form').setStyles({'display':'block'});
			},
			'onFileSuccess' : function(file, response) {
				r = JSON.decode(response);
				if(r.result == 'success') {
					$('avatarpic').removeClass('picuploading');
					$('avatarpic').setStyles({'background-image':'url('+r.href+'?'+Math.floor(Math.random()*1000000)+')'});
					$('avatar-delete').setStyles({'display':'inline'});
					$('avatar-form').setStyles({'display':'none'});
				}
				$('pic').value = r.href;
			}
		});
		
		$('avatar-form').setStyles({'display':'none'});
		$('avatar-upload').setStyles({'display':'none'});

		$('avatar-browse-images').addEvent('click', function(e) {
			e.stop();
			swiffy.browse({'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png'});
			return false;
		});

		$('avatar-upload').addEvent('click', function() {
			e.stop();
			swiffy.upload();
			return false;
		});
		
		var req = new Request.HTML({url:'/ajax/ajax-del-avatar.php', 
			onSuccess: function(r) {
				$('avatar-delete').setStyles({'display':'none'});
			},
			onFailure: function() {
			}
		});
		
		$('avatar-delete').addEvent('click', function(e) {
			$('avatarpic').setStyles({'background-image':'url(/img/bg-avatar.gif)'});
			e.stop();
			req.send();
		});
		
	}
	
// EDIT POST
	if($('ycpersonaleditpost')) {
		var datePick = new vlaDatePicker('eventdate', { separator: '.', leadingZero: true, twoDigitYear: false, openWith: 'togglePicker', alignX: 'right', alignY: 'bottom', prefillDate: { day: $('pfday').value, month: $('pfmonth').value, year: $('pfyear').value }, offset: { x:-3, y:-19 }, toggleDuration:0, ieTransitionColor:'transparent' } );
		
		$('ycpersonaleditpostform').addEvent('submit', function(e) {
			e.stop();
			createPhotosData();			
			$('region').setStyles({'visibility':'hidden'});
			$('ycloader').setStyles({'height':$('ycpersonaleditpost').getHeight()});
			$('ycloader').set('opacity','.80');
			
			$('ycupdateok').setStyles({'height':$('ycpersonaleditpost').getHeight()});
			$('pfday').value = datePick.getInputDateStruct().day;
			$('pfmonth').value = datePick.getInputDateStruct().month;
			$('pfyear').value = datePick.getInputDateStruct().year;
			this.set('send', {onComplete: function(response) { 
				try {
					$('ycloader').setStyles({'visibility':'hidden'});
					var r=response.split('|');
					if(r[2] != '0') $('title').addClass('ycerror'); else $('title').removeClass('ycerror'); 
					if(r[3] != '0') $('eventdate').addClass('ycerror'); else $('eventdate').removeClass('ycerror'); 
					if(r[4] != '0') $('region').addClass('ycerror'); else $('region').removeClass('ycerror'); 
					if(r[5] != '0') $('city').addClass('ycerror'); else $('city').removeClass('ycerror'); 
					if(r[6] != '0') $('route').addClass('ycerror'); else $('route').removeClass('ycerror'); 
					if(r[7] != '0') $('km').addClass('ycerror'); else $('km').removeClass('ycerror'); 
					if(r[8] != '0') $('content').addClass('ycerror'); else $('content').removeClass('ycerror'); 
						if(r[8] == '99') $('badword').setStyles({'display':'block'}); else $('badword').setStyles({'display':'none'});
					if(r[0]=='ok') {
						
						$('ycpersonaleditpostform').setStyles({'visibility':'hidden'});
						$('uploadmasker').setStyles({'display':'none'});
						$('ycupdateok').setStyles({'visibility':'visible'});
						$('ycupdateok').setStyles({'height':$('ycpersonaleditpostform').getHeight()});
						$('region').setStyles({'visibility':'hidden'});
					} else {
						$('region').setStyles({'visibility':'visible'});
					}
				} catch(e) { $('region').setStyles({'visibility':'visible'}); alert(e.message); }
			}});
			this.send();
		});

		function createPhotosData() {
			var descs = '';
			var photos = '';
			if($$('.ycphotodescription')) {
				$$('.ycphotodescription').each(function(item, index){ descs += (item.value+'|'); photos += (item.alt+'|'); });
			}
			
			if($('xphotos')) $('xphotos').set('value', photos);
			if($('xphotodesc')) $('xphotodesc').set('value', descs);
		}
		
		function setDelHandlers(objs) {
			if($$(objs)) 
			$$('.ycdelphoto').addEvent('click', function(e) { 
					e.stop(); 
					createPhotosData();
					photolist.send('delete='+this.photoid+'&postid='+$('postid').value+'&descs='+$('xphotodesc').value+'&files='+$('xphotos').value);
			});
		}
		
		// photos list request
		var photolist = new Request({url:'/cmd/photo-list/',
			onRequest: function(r) {
				$('uploaderrormsg').setStyles({'display':'none'});
				$('ycphotolistloader').setStyles({'display':'block'});
				$('ycphotolist').setStyles({'display':'none'});
			},
			onSuccess: function(r) {
				try {
					r=r.split('###');
					if(r[0] == 'ok') {
						$('ycphotolistloader').setStyles({'display':'none'});
						$('ycphotolist').setStyles({'display':'block'});
						$('ycphotolist').set('html', r[1]);
						$('xphotocount').set('value', r[2]);
						$('xphotos').set('value', r[3]);
						$('xphotodesc').set('value', r[4]);
						setDelHandlers('.ycdelphoto');
						$('ycphotolistloader').setStyles({'height':$('ycphotolist').getHeight()});
						$('photoupoader-browse-images').setStyles({'display': ((r[2] >= 45)?'none':'block')});
					} else {
						$('ycphotolistloader').setStyles({'display':'none'});
						$('ycphotolist').setStyles({'display':'block'});
					}
				} catch (e) {
					$('ycphotolistloader').setStyles({'display':'none'});
					$('ycphotolist').setStyles({'display':'block'});
				}
			},
			onFailure: function(r) {
			}
		});

		$('ycphotolist').setStyles({'display':'none'});
		photolist.send('postid='+$('postid').value);

// EDIT POST - UPLOADER
		var swiffyzzz = new FancyUpload2($('photoupoader-status'), $('photoupoader-list'), {
			'url': $('photoupoader-form').action,
			'fieldName': 'photoupload',
			'instantStart' : true,
			'target': 'photoupoader-browse-images',			
			'path': '/swf/Swiff.Uploader.swf',
			typeFilter: { 'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png' },
			'onLoad': function() {
				$('photoupoader-status').removeClass('hide');
				$('photoupoader-fallback').destroy();
			},
			'onStart' : function() {
				$('uploaderrormsg').setStyles({'display':'none'});
				$('ycphotolistloader').setStyles({'display':'block'});
				$('ycphotolist').setStyles({'display':'none'});
				$('photoupoader-form').setStyles({'display':'block'});
				$('photoupoader-browse-images').setStyles({'display': 'none'});
			},
			'onFileSuccess' : function(file, response) {
				$('photoupoader-form').setStyles({'display':'none'});
				r = JSON.decode(response);
				if(r.result == 'success') {
					createPhotosData();
					photolist.send('addpic='+r.picfile+'&postid='+$('postid').value+'&descs='+$('xphotodesc').value+'&files='+$('xphotos').value);
				} else {
					$('uploaderrormsg').setStyles({'display':'block'});
					$('uploaderrormsg').set('text', r.error);
					$('ycphotolistloader').setStyles({'display':'none'});
					$('ycphotolist').setStyles({'display':'block'});
					$('photoupoader-browse-images').setStyles({'display': 'block'});
				}
			},
			'onError' : function () {
				$('ycphotolistloader').setStyles({'display':'block'});
				$('ycphotolist').setStyles({'display':'none'});
				$('photoupoader-form').setStyles({'display':'none'});
			}
		});
		
		$('photoupoader-browse-images').setStyles({'visibility':'visible'});
		$('photoupoader-browse-images').addEvent('click', function(e) {
			e.stop();
			$('uploaderrormsg').setStyles({'display':'none'});
			swiffyzzz.browse({'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png'});
			return false;
		});
		
	}
	
// ADD POST
	if($('ycpersonaladdpost')) {
		var datePick = new vlaDatePicker('eventdate', { separator: '.', leadingZero: true, twoDigitYear: false, openWith: 'togglePicker', alignX: 'right', alignY: 'bottom', prefillDate: { day: $('pfday').value, month: $('pfmonth').value, year: $('pfyear').value }, offset: { x:-3, y:-19 }, toggleDuration:0, ieTransitionColor:'transparent' } );
		
		$('ycpersonaladdpostform').addEvent('submit', function(e) {
			e.stop();
			$('region').setStyles({'visibility':'hidden'});
			$('ycloader').setStyles({'height':$('ycpersonaladdpostform').getHeight()});
			$('ycloader').set('opacity','.80');

			$('ycaddok').setStyles({'height':$('ycpersonaladdpostform').getHeight()});
			
			$('pfday').value = datePick.getInputDateStruct().day;
			$('pfmonth').value = datePick.getInputDateStruct().month;
			$('pfyear').value = datePick.getInputDateStruct().year;

			this.set('send', {onComplete: function(response) { 
				try {
					$('ycloader').setStyles({'visibility':'hidden'});
					var r=response.split('|');
					if(r[2] != '0') $('title').addClass('ycerror'); else $('title').removeClass('ycerror'); 
					if(r[3] != '0') $('eventdate').addClass('ycerror'); else $('eventdate').removeClass('ycerror'); 
					if(r[4] != '0') $('region').addClass('ycerror'); else $('region').removeClass('ycerror'); 
					if(r[5] != '0') $('city').addClass('ycerror'); else $('city').removeClass('ycerror'); 
					if(r[6] != '0') $('route').addClass('ycerror'); else $('route').removeClass('ycerror'); 
					if(r[7] != '0') $('km').addClass('ycerror'); else $('km').removeClass('ycerror'); 
					if(r[8] != '0') $('content').addClass('ycerror'); else $('content').removeClass('ycerror'); 
						if(r[8] == '99') $('badword').setStyles({'display':'block'}); else $('badword').setStyles({'display':'none'});
					if(r[0]=='ok') {
						$('ycaddok').setStyles({'visibility':'visible'});
						$('ycaddok').setStyles({'height':$('ycpersonaladdpostform').getHeight()});
						$('ycpersonaladdpostform').setStyles({'visibility':'hidden'});
						$('uploadmasker').setStyles({'display':'none'});
						$('region').setStyles({'visibility':'hidden'});
					} else {
						$('region').setStyles({'visibility':'visible'});
					}
				} catch(e) { $('region').setStyles({'visibility':'visible'}); alert(e.message); }
			}});
			this.send();
		});
		
		function createAddPhotosData() {
			var descs = '';
			var photos = '';
			if($$('.ycphotodescription')) {
				$$('.ycphotodescription').each(function(item, index){ descs += (item.value+'|'); photos += (item.alt+'|'); });
			}
			if($('xphotos')) $('xphotos').set('value', photos);
			if($('xphotodesc')) $('xphotodesc').set('value', descs);
//			return descs;
		}
		
		function setAddDelHandlers(objs) {
			if($$(objs)) 
			$$('.ycdelphoto').addEvent('click', function(e) { 
					e.stop(); 
					createAddPhotosData();
					photoaddlist.send('delete='+this.photoid+'&postid='+$('postid').value+'&descs='+$('xphotodesc').value+'&files='+$('xphotos').value);
			});
		}
		
		// photos list request
		var photoaddlist = new Request({url:'/cmd/photo-list/',
			onRequest: function(r) {
				$('uploaderrormsg').setStyles({'display':'none'});
				$('ycphotolistloader').setStyles({'display':'block'});
				$('ycphotolist').setStyles({'display':'none'});
			},
			onSuccess: function(r) {
				try {
					r=r.split('###');
					if(r[0] == 'ok') {
						$('ycphotolistloader').setStyles({'display':'none'});
						$('ycphotolist').setStyles({'display':'block'});
						$('ycphotolist').set('html', r[1]);
						$('xphotocount').set('value', r[2]);
						$('xphotos').set('value', r[3]);
						$('xphotodesc').set('value', r[4]);
						setAddDelHandlers('.ycdelphoto');
						$('ycphotolistloader').setStyles({'height':$('ycphotolist').getHeight()});
						$('photoupoader-browse-images').setStyles({'display': ((r[2] >= 15)?'none':'block')});
					} else {
						$('ycphotolistloader').setStyles({'display':'none'});
						$('ycphotolist').setStyles({'display':'block'});
					}
				} catch(e) {
					$('ycphotolistloader').setStyles({'display':'none'});
					$('ycphotolist').setStyles({'display':'block'});
				}
			},
			onFailure: function(r) {
			}
		});

		$('ycphotolist').setStyles({'display':'none'});
		photoaddlist.send('postid='+$('postid').value);


// ADD POST - UPLOADER
		var swiffyadd = new FancyUpload2($('photoupoader-status'), $('photoupoader-list'), {

			'url': $('photoupoader-form').action,
			'fieldName': 'photoupload',
			'instantStart' : true,
			'path': '/swf/Swiff.Uploader.swf',
			'target': 'photoupoader-browse-images',
			typeFilter: { 'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png' },

			'onLoad': function() {
				$('photoupoader-status').removeClass('hide');
				$('photoupoader-fallback').destroy();
			},
			'onStart' : function() {
				$('uploaderrormsg').setStyles({'display':'none'});
				$('ycphotolistloader').setStyles({'display':'block'});
				$('ycphotolist').setStyles({'display':'none'});
				$('photoupoader-form').setStyles({'display':'block'});
				$('photoupoader-browse-images').setStyles({'display': 'none'});
			},
			'onFileSuccess' : function(file, response) {
				$('photoupoader-form').setStyles({'display':'none'});
				r = JSON.decode(response);
				if(r.result == 'success') {
					createAddPhotosData();
					photoaddlist.send('addpic='+r.picfile+'&postid='+$('postid').value+'&descs='+$('xphotodesc').value+'&files='+$('xphotos').value);
				} else {
					$('uploaderrormsg').setStyles({'display':'block'});
					$('uploaderrormsg').set('text', r.result);
					$('ycphotolistloader').setStyles({'display':'none'});
					$('ycphotolist').setStyles({'display':'block'});
					$('photoupoader-browse-images').setStyles({'display': 'block'});
				}
			},
			'onError' : function () {
				$('uploaderrormsg').setStyles({'display':'block'});
				$('uploaderrormsg').set('text', r.error);
				$('ycphotolistloader').setStyles({'display':'block'});
				$('ycphotolist').setStyles({'display':'none'});
				$('photoupoader-form').setStyles({'display':'none'});
			}
		});
		
		$('photoupoader-browse-images').setStyles({'visibility':'visible'});
		$('photoupoader-browse-images').addEvent('click', function(e) {
			e.stop();
			$('uploaderrormsg').setStyles({'display':'none'});
			swiffyadd.browse({'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png'});
			return false;
		});
	}
	
// SUBSCRIBE TO DIARY
	if($('subshandler')) {
		$('subshandler').addEvent('click', function() {
				$('ycdetsubscribe').load('/cmd/subscribe/' + escape($('ycsubscribeid').value) + '/');
		});
	}

// UNSUBSCRIBE OFF DIARY
	if($('unsubshandler')) {
		$('unsubshandler').addEvent('click', function() {
				$('ycdetunsubscribe').load('/cmd/unsubscribe/' + escape($('ycunsubscribeid').value) + '/');
		});
	}
	
// SEARCH BOX	
	if($('searchbox')) {
		$('searchbox').addEvent('submit', function() {
												   window.location = '/search/' + encodeURI($('srchquery').get('value')) + '/' + encodeURI($('srcharea').get('value')) + '/';
												   return false;
										  }
								);
		
		chkSrch($('srcharea').get('value'));
	}

	
// EVENTS 
	if($('yceventscontent')) {
//		alert(evscroller);
		
		FancyForm.start();
		$$('.cbcity').each( function(item, index) { item.addEvent('click', function(e) { evHandler('city', this); } ) } );
		$$('.cbtype').each( function(item, index) { item.addEvent('click', function(e) { evHandler('type', this); } ) } );

		var gear = $('evgear').get('value');
		var showdate = $('evshowdate').get('value');

		if($('yceventcalendar')) {
		new vlaCalendar('yceventcalendarph', 
						{ startMonday: true,
						noSwitch:true,
						extraparam:'for=events&gear='+gear,
						tsstart:showdate
						/*,
						defaultView: (($('pfday').value == '--') ? 'decade' : 'month'),
						separator: '.', leadingZero: true, twoDigitYear: false, 
						openWith: 'togglePicker', 
						gotoPickedDate:true,
						startMonday:true,
						alignX: 'right', alignY: 'bottom', 
						, 
						offset: { x:-3, y:-25 }, toggleDuration:0, ieTransitionColor:'transparent' */ } );
		}
	
		var cityScr = makeScrollbar($('yccityscroll'), $('yccityscrollbar'), $('yccityscrollhandle'), false, false);
		var eventsScr = makeScrollbar($('yceventsscroll'), $('yceventsscrollbar'), $('yceventsscrollhandle'), false, false);
		
		function resizeScrollBars() {
			ycH = Window.getHeight() - 255;
			ycH = Math.max(402, ycH);
			$('ycevents').setStyle('height', ycH);	
		//	$('yceventsscroll').setStyle('height', ycH);	
			$('yceventsscrollbar').setStyle('height', ycH);	
			eventsScr = makeScrollbar($('yceventsscroll'), $('yceventsscrollbar'), $('yceventsscrollhandle'), false, false, eventsScr,true);
//			alert(ycH);

			ycH = Window.getHeight() - 255 - $('yceventcalendar').getSize().y - $('yctypeselector').getSize().y;
			ycHMax = $('ycevents').getSize().y - $('yceventcalendar').getSize().y - $('yctypeselector').getSize().y;
			
			ycH = Math.max(ycHMax, ycH);
			$('yccityarea').setStyle('height', ycH-8);
			$('yccityscrollbar').setStyle('height', ycH-8);	
			cityScr = makeScrollbar($('yccityscroll'), $('yccityscrollbar'), $('yccityscrollhandle'), false, false, cityScr,true);

			try { pageTips.hide(); } catch(e) {}

//			$('ycloader').setStyles({'height': $('ycevents').getSize().y});
	
		}
		resizeScrollBars();		
		window.addEvent('resize', function() { resizeScrollBars(); });

		function evHandler(from, cb) {

			var checkedcities = ''
			$$('.cbcity').each( function(item, index) { checkedcities += ((item.get('checked')) ? (item.get('value') + '###') : ''); } );

			var checkedtypes = ''
			$$('.cbtype').each( function(item, index) { checkedtypes += ((item.get('checked')) ? (item.get('value') + '###') : ''); } );
			
			var request = 'start=0&gear=' + gear + '&city=' + checkedcities + '&type=' + checkedtypes;
//			alert(request);

			eventslist.send(request);
		}
		
		function evBrowseByDate(date) {
			var request = 'date=' + date + '&gear=' + gear;

			eventslist.send(request);
		}
		document.evBrowseByDate = evBrowseByDate;
		var pageTips;

		var eventslist = new Request({url:'/evcmd/events-list/',
			onRequest: function(r) {
				$('ycloader').setStyles({'visibility':'visible'});
				$('ycloader').setStyles({'height': $('ycevents').getSize().y});
				$('ycloader').set('opacity','.80');
				try { pageTips.hide(); } catch(e) {}
			},
			onSuccess: function(r) {
				try {
					r=r.split('###');
					if(r[0] == 'ok') {
						$('ycloader').setStyles({'visibility':'hidden'});
						$('yceventscontent').set('html', r[1]);
						$('yceventtitle').set('html', r[3] /*+ ' (' + r[2] + ')'*/);
						$('yceventsscrollbar').opacity = 1;
						eventsScr = makeScrollbar($('yceventsscroll'), $('yceventsscrollbar'), $('yceventsscrollhandle'), false, false, eventsScr, true);


						pageTips = new Tips($$('.tip'), { showDelay: 0, hideDelay: 2000, fixed: true, className: 'ttip'
						});

					} else {
					}
				} catch(e) {}
			},
			onFailure: function(r) {
			}
		});
		


//		$('eventslist').setStyles({'display':'none'});
		if(showdate != '')
				eventslist.send('gear='+ gear +'&date=' + showdate);
		else 
			eventslist.send('gear='+ gear +'&city=&type=&start=1');

	}
	
// -- HOME CALENDAR --	
	if($('ychomecal')) {
		var gear='';
		
		new vlaCalendar('yceventcalendarph', 
						{ 	startMonday: true,
							noSwitch:true,
							extraparam:'for=events&gear='+gear+'&place=startpage'
						} 
		);
		
	}
	
	
// CTRL <- -> NAVIAGATION	
	$(document).addEvent('keydown', function(event) {
		switch (event.code ? event.code : event.which ? event.which : event.keyCode ? event.keyCode : null) {
			case 0x25:
				if($('prevLink') && $('prevLink').href) document.location = $('prevLink').href;
				break;
			case 0x27:
				if($('nextLink') && $('nextLink').href) document.location = $('nextLink').href;
				break;
				
			default:
			break;
		}
	});


	if($('admin')) {
		new UvumiDropdown('ddadmin', {duration:150});

		var sb = SqueezeBox.initialize({ size: {x: 350, y: 400}, onOpen:function() { $$('html').setStyles({'overflow':'hidden'}); }, onClose:function() { $$('html').setStyles({'overflow':''}); } });
		document.sb = sb;
		sb.assign($$('a.boxed'), { 	parse: 'rel' });
		
	}
	
	sfHover();

// SHOW BODY AFTER ALL CHANGES TO HTML ARE DONE
	$$('body').setStyles({'visibility':'visible'});

});

}

function chkSrch(qarea) {
	if(qarea == '') qarea = 'all';
	$('srcharea').set('value', qarea);
	$('mn').setStyle('left', '-999em');
	$('saall').setStyle('font-weight', 'normal');
	$('saplaces').setStyle('font-weight', 'normal');
	$('samembers').setStyle('font-weight', 'normal');
	$('satechy').setStyle('font-weight', 'normal');
	$('sadealers').setStyle('font-weight', 'normal');
	$('sa'+qarea).setStyle('font-weight', 'bold');
}