﻿var daScroller = new Class({
	
	Implements: Options,
	
	options: {
		container : 'dascroller',
		title : 'datitle',
		list : 'list',
		wrapper : 'wrap',
		firma : 0,
		catid : 0
	},
	
	initialize: function(options){
		this.setOptions(options);
		this.getTypes();
	},
	
	getTypes: function() {
		var title = $(this.options.title);
		title.addClass('wait');
		new Request.JSON({
			url: 'requestHandler.php',
			method: 'get',
			//data: 'action=getTypes',
			data: 'type=0&id=' + this.options.catid,
			onSuccess: this.complete.bind(this)
		}).send();
	},
	
	complete: function(response) {
		$(this.options.list).id = this.options.list + '_old';
		var ul = new Element('ul');
		ul.id = this.options.list;
		ul.inject(this.options.list+'_old','after');
		$(this.options.list).setStyle('margin-left','220px');
		
		response.categories.each(function(category) {
			var li = new Element('li');
			var a = new Element('a');
			a.href = category.id;
			a.id = "link" + category.id;
			a.set('html',category.name);
			a.addClass(category.clas);
			li.inject(ul);
			a.inject(li);
		});
		var title = $(this.options.title);
		title.removeClass('wait');
		this.animateOld();
		this.animateNew();
		this.animateWrapper();
	},
	
	animateOld: function() {
		var oldObj = this.options.list + '_old';
		var ffx = new Fx.Tween(oldObj,{
			property: 'margin-left',
			onComplete: function() {
				$(oldObj).destroy();
			}
		});
		ffx.start('-220px');
	},
	
	animateNew: function() {
		var newObj = this.options.list;
		var title = this.options.title;
		var ffx = new Fx.Tween(newObj,{
			property: 'margin-left',
			onComplete: this.addLinks.bind(this)
		});
		ffx.start('0px');
	},
	
	addLinks: function() {
		var obje = this;
		$(this.options.list).getElements('a[class!=list]').each(function(el) {
			el.addEvent('click',function() {
				var title = $(obje.options.title);
				title.addClass('wait');
				new Request.JSON({
					url: 'requestHandler.php',
					data: 'type=0&id=' + el.getAttribute('href'),
					method: 'get',
					onSuccess: obje.complete.bind(obje)
				}).send();
				return false;
			});
		});
		$(this.options.list).getElements('a[class=list]').each(function(el) {
			el.addEvent('click',function() {
				var title = $(obje.options.title);
				title.addClass('wait');
				var dt;
				if(obje.options.firma!=0) {
					dt = 'action=getProducts&firma=' + obje.options.firma + '&id=' + el.getAttribute('href')
				} else {
					dt = 'action=getProducts&id=' + el.getAttribute('href')
				}
				new Request.JSON({
					url: 'requestHandler.php',
					data: dt,
					method: 'get',
					onSuccess: function(obj) {
						title.removeClass('wait');
						$('accordion').empty();
						if(myAccordion) {
							myAccordion = null;
						}
						if(obj) {
							var header = new Element('div');
							header.addClass('uruncattitle');
							header.set('html',obj.list.catname);
							header.inject('accordion');
							var dId = 0;
							var found = false;
							obj.list.products.each(function(el) {
								var toggler = new Element('div');
								toggler.addClass('toggler');
								toggler.inject('accordion');
								
								var urunisim = new Element('div');
								urunisim.addClass('urunisim');
								urunisim.set('text',el.name);
								urunisim.inject(toggler);
								
								if(el.id!=0) {
									var link = new Element('div');
									link.addClass('details');
									link.set('text','ürün detayı için tıklayın');
									link.inject(toggler);
								}
								
								var clear = new Element('div');
								clear.addClass('clear');
								clear.inject(toggler);
								
								var element = new Element('div');
								element.addClass('element');
								element.inject('accordion');
								var teknik = new Element('div');
								teknik.addClass('teknik');
								teknik.set('html',el.teknik);
								teknik.inject(element);
								var desc = new Element('div');
								desc.set('text',el.desc);
								desc.inject(element);
								
								if(el.id!=0) {
									var detaillink = new Element('a');
									detaillink.setStyles({
										color: '#E0B704',
										float: 'right'
									});
									detaillink.set('href','urundetay.php?id='+el.id);
									detaillink.set('text','detaylı bilgi için tıklayın');
									detaillink.set('rel',"{handler:'iframe'}");
									detaillink.addClass('boxed');
									detaillink.inject(element);
								}
								if(obje.options.openId!=0) {
									if(el.id==obje.options.openId) {
										found = true;
									}
									if(found==false) {
										dId++;
									}
								}
								
								var clear = new Element('div');
								clear.addClass('clear');
								clear.inject(element);
							});
							SqueezeBox.assign($$('a.boxed'),{
								parse: 'rel'
							});
							
							var myAccordion = new Accordion($$('.toggler'), $$('.element'),{
								onActive: function(toggler,element) {
									if(toggler.getElements('.details')[0]) {
										toggler.getElements('.details')[0].fade('out');
									}
								},
								onBackground: function(toggler,element) {
									if(toggler.getElements('.details')[0]) {
										toggler.getElements('.details')[0].fade('in');
									}
								},
								display: dId
							});
						}
					}
				}).send();
				return false;
			});
		});
	},
	
	animateWrapper: function() {
		var height = $(this.options.list).getCoordinates().height;
		var fx = new Fx.Tween(this.options.wrapper,{
			property : 'height',
			duration : 200
		});
		fx.start(height);
	}
	
});

