 var CountryChooser=new Class({
 	options:{
		type:null,
		startTop: -600,
		_ele:null,
		_qlTitle:'Choose your country',
		_qlDescription:'',
		_qlSrc:'',
		_bgOpacity: 0.8,
		_bgColor: '#000',
		_qlbgColor: '#fff',
		_qltmpl:'<div class="popup-top-sx"><div class="popup-top-dx"></div></div><div class="popup-content-sx"><div class="popup-content-dx"><div class="popup-img"></div></div></div><div class="popup-bottom-sx"><div class="popup-bottom-dx"></div></div>',
		_noElement:'@QuickLook Class:\n No object passed to costructor\n\nAvaillable type are:\n\n{HTMLObject} a DOMobject\n{Array} an array of HTMLobjects or Strings of id\n{String}',
		_notImplemented:'@QuickLook Class:\n This constructor is not implemented yet',
		pGeometry:null,
		eGeometry:null,
		qlGeometry:null,
		chooser:null,
		qlEffect:null,
		bgEffect:null,
		selectedIndex:null,
		imgEffect:null,
		container:null,
		loader:null
	},
	status:'',
	chooser:{},
	countries:[],
	initialize:function(id,cl,selectedIndex){
		this.options.container=$(id);
		this.addListeners();
		this.countries=cl;
		this.shortCountries();
		this.addChooser();
		if (selectedIndex){
			this.selectedIndex = selectedIndex;
			cnt = this.countries[selectedIndex];
			var ce=new Element('li',{'class':'coutry-name'}).store('country_data',cnt);
			var f=new Element('img',{'class':'country-flag',src: "images/flags/"+cnt.code.toLowerCase()+".png"});
			var c=new Element('span',{'class':'country-name'}).set('html',cnt.name);
			ce.adopt([f,c]);
			$$('body')[0].fireEvent('NewCountry',cnt,selectedIndex);
		}
		document.body.offsetHeight;	
			
	}
})
CountryChooser.prototype.shortCountries=function()
{
	
	this.countries.sort(
		function(a,b){
			var r=0;
			if(a.name>b.name){
				r=1;
			}else if(a.name<b.name)
			{
				r=-1;
			}
			return r}
		
	);

}
CountryChooser.prototype.addListeners=function(){
	$$('body')[0].addEvent('NewCountry',this.listener.bind(this));
	window.addEvent('scroll',this.updateBG.bind(this));
	window.addEvent('resize',this.updateBG.bind(this));
	window.addEvent('data-updated',this.closeBG.bind(this));
}
CountryChooser.prototype.updateBG=function()
{	

	if (this.status == 'opened') {
		this.resizeBG();
		this.options.qlEffect.cancel();
			var end=Math.abs((window.innerHeight-(this.options.chooser.getElement('.country-box').getDimensions().y))/2)-50;
			//console.log(end,window.innerHeight,this.options.chooser.getElement('.country-box').getDimensions().y);
			if (end >= 0) {
				/*this.options.qlEffect.start({
					'top': [this.options.chooser.getElement('.country-box').getPosition().y, (window.getScroll().y + 20)]
				});*/
			}else{
				this.options.chooser.getElement('.country-box').setStyle('top',(window.getScroll().y+10)+'px');
			}
		
		
	}
}
CountryChooser.prototype.resizeBG=function()
{
	
	var newH=$('footer').getPosition().y+$('footer').getDimensions().y;
	$$('.countries-ovarlay').setStyle('height', newH + 'px');
}
CountryChooser.prototype.listener=function(e){
	var cl=$$('.countries')[0].getElements('li');
	$each(cl,function(item,arr,index){
		item.removeClass('active');
	}.bind(this))
	if(this.selectedIndex==undefined){
		$(e.html).addClass('active');
	}
	this.close();
}
 CountryChooser.prototype.addChooser=function()
 {
 	this.options.chooser=new Element('div',{'id':'quicklook-container','class':'quicklook-container'}).adopt([this.addBackground(),this.addCountries()]).setStyle('display','none');
	this.options.chooser.setStyle('width','100%');
	this.options.chooser.setStyle('position','fixed');	
	this.options.container.adopt(this.options.chooser);
	
	this.addSWFLoader();
 }
 CountryChooser.prototype.addSWFLoader=function()
 {
 	var swf="swf/Loader/MacLoader.swf";
	var il = new SWFObject(swf, "loader", "30", "30", "6", "#cccccc");
	il.addParam("wmode","transparent");
	il.addVariable("loader_color","0xcccccc");
	il.write("contry-loader");
 }
 CountryChooser.prototype.addEffects=function(ele){
		this.options.qlEffect=new Fx.Morph(ele,
			{
				duration: 200,
				transition: Fx.Transitions.Sine.easeOut,
				onComplete:function(){
					
					//this.debug('Opening complete');
				}.bind(this)
			}
		);
	};
CountryChooser.prototype.show = function(){
	$('contry-loader').hide();
	this.status='opened';
	this.resizeBG();
	this.options.container.show();
 	this.options.chooser.show();
 	this.options.bgEffect.cancel();
	this.options.bgEffect.start({
		'opacity':[0.8,this.options._bgOpacity]
	});
	//this.showCountryList.delay();
 }
 CountryChooser.prototype.close = function(){
	window.removeEvent('scroll',this.onScroll);
	this.status='closed';

 	this.options.bgEffect.cancel();
	$('contry-loader').show();
	/*this.options.bgEffect.start({
		'opacity':[1,0]
	});*/
	this.options.qlEffect.cancel();
	this.options.qlEffect.start({
			'height':[this.options.qlEffect.endHeight,0]
		});
	
 }
CountryChooser.prototype.closeBG = function(){
	$('contry-loader').hide();
	this.options.container.hide();
	this.options.bgEffect.start({
		'opacity':[1,0]
	});
}
 CountryChooser.prototype.showCountryList=function(){
		this.options.qlEffect.cancel();
		this.options.qlEffect.start({
			'height':[0,this.options.qlEffect.endHeight]
		});
		
	}
 CountryChooser.prototype.addBackground=function(){
	var o=new Element('div',
		{
			'class':'countries-ovarlay'
		}).setStyles({
				'position':'absolute',
				'top':'0px',
				'left':'0px',
				'margin':'0px',
				'padding':'0px',
				'width':'100%',
				'height':document.body.getSize().y+'px',
				'opacity': 0.8,
				'z-index':1000,
				'display':'block',
				'background-color':this.options._bgColor
				}
		);
		this.options.bgEffect=new Fx.Morph(o,
			{
				duration: 1,
				transition: Fx.Transitions.Sine.easeOut,
				onComplete:function(){
					if (this.status == 'opened') {
						this.showCountryList.delay(200,this);
					}
					
				}.bind(this)
			}
		);
	return o;	
 };
 CountryChooser.prototype.addCountries = function(){
 	var ch=0;
	var cbox=new Element('div',{'class':'country-box'}).setStyles({
				'position':'relative',
				'display':'block',
				'margin':'50px auto',
				'width' : '264px',
				'height': '0px',
				'padding': '0px',
				/*'top':this.options.startTop+'px',*/
				'top':'50px',
				 'z-index': 1002
			});
	var cch=new Element('div', {'class': 'cc-header'}).set('html',this.options._qlTitle);
	cch.adopt(this.addLoader());
	var ccf=new Element('div', {'class': 'cc-footer'});
 	var cl=new Element('ul',{'class':'countries'}).setStyles({
				'list-style':'none',
				'padding': '0px',
				'margin':'0px',
				'height': '0px',
				'overflow':'hidden',
				'line-height':'40px',
				'text-align':'left'
	});
	for(var i=0;i<this.countries.length;i++){
		ch+=40;
		var ce=new Element('li',{'class':'coutry-name'}).store('country_data',this.countries[i]).store('country_index',i).addEvent('click',function(){
			var ele=$(this);
			var cnt=ele.retrieve('country_data');
			var index = ele.retrieve('country_index');
			cnt.html=ele;
			var myReq = new Request({
				url : 'ajax_set_language.php',
				method : 'post',
				data : {
					langCode : cnt.lang_code,
					flag : cnt.code,
					selLang : index
				},
				onSuccess : function(response){
					$$('body')[0].fireEvent('NewCountry',cnt);
					if ($('selLang'))
						$('selLang').value = index;
					if ($('langCode'))
						$('langCode').value = cnt.lang_code;
					window.location.href = unescape(window.location.pathname);
				},
				onFailure : function(response){
				}
			}).send();
		})
		var f=new Element('img',{'class':'country-flag',src: "images/flags/"+this.countries[i].code.toLowerCase()+".png"});
		var c=new Element('span',{'class':'country-name'}).set('html',this.countries[i].name);
		ce.adopt([f,c]);
		cl.adopt(ce);
	}

	cbox.adopt([cch,cl,ccf]);
	//Add effects
	this.options.qlEffect=new Fx.Morph(cl,
			{
				duration: 500,
				transition: Fx.Transitions.Sine.easeOut,
				onComplete:function(){
					if(this.status=='closed'){
						//this.options.container.hide();
						//this.options.chooser.hide();
					} 
				}.bind(this)
			}
		);
	this.options.qlEffect.endHeight=ch;
	return cbox;
	
 }
 CountryChooser.prototype.addLoader=function()
 {
	this.options.loader=new Element('div',{'id':'contry-loader','class':'contry-loader'}).set('html','');
	return this.options.loader;

 }
 CountryChooser.prototype.dispatchEvent=function()
 {
 	
 }

