/*
* Cache van bc.script.js
* Created: 2011-12-06 16:33:38
*/

window.addEvent('domready',function() {
	if ($('shoppingcart')) {
		new shoppingCart($('shoppingcart'));
	}

	if (Browser.Engine.trident4) {
		new Element('div', {
			'styles': {
				'position': 'absolute',
				'top': '0px',
				'left': '0px',
				'background-color': 'black',
				'opacity': '0.80',
				'width': '100%',
				'height': window.getScrollSize().y,
				'z-index': 5000
			}
		}).inject(document.body);
		new Element('div', {
			'styles': {
				'background-color': 'white',
				'top': '50%',
				'left': '50%',
				'margin-left': -210,
				'margin-top': -100,
				'width': 410,
				'padding-right': 10,
				'height': 200,
				'position': 'absolute',
				'z-index': 5001
			}
		})
			.set('html',
					'<img src="/images/cms/no-ie6.png" width="213" height="200" alt="" style="float: left;"/>'+
					'<p><br /><strong>U maakt gebruik van Internet Explorer 6</strong><br /><br />Deze browser is door Microsoft inmiddels vervangen door <a href="http://www.microsoft.com/windows/products/winfamily/ie/default.mspx" target="_blank">versie 8</a>. U wordt aangeraden uw browser te upgraden naar deze nieuwe versie. Voor een optimale werking van het CMS wordt u aangeraden <a href="http://www.getfirefox.com" target="_blank">Firefox</a> te gebruiken.</p>')
			.inject(document.body);
	}
});

window.addEvent('load',function() {
	$$('ul.fileselector').each(function(fileselector) {
		new fileSelector(fileselector);
	});

	$$('ul.filebrowser a.delete').each(function(deletefile) {
		deletefile.addEvent('click', function(e) {
			e.stop();
			new Request({
				url: deletefile.get('href'),
				onSuccess: function(responseText, responseXML) {
					if (responseText == 'ERROR') {
						deletefile.getParent('li').reveal();
					}
				},
				onRequest: function() {
					deletefile.getParent('li').dissolve();
				}
			}).get();
		});
	});

	$$('.hidedeletes-dparent a.delete').each(function(el) {
		el.getParent().getParent('li').addEvent('mouseenter', function(e) {el.setStyle('visibility', 'visible');});
		el.getParent().getParent('li').addEvent('mouseleave', function(e) {el.setStyle('visibility', 'hidden');});
		el.setStyle('visibility', 'hidden');
	});

	$$('.mediamanager .deletefile').each(function(deletefile) {
		deletefile.addEvent('click', function(e) {
			e.stop();
			new Request({
				url: deletefile.get('href'),
				onSuccess: function(responseText, responseXML) {
					if (responseText == 'ERROR') {
						deletefile.getParent('li').reveal();
					}
				},
				onRequest: function() {
					deletefile.getParent('li').dissolve();
				}
			}).get();
		});
	});

	$$('.datepicker').each(function(el, i) {
		if (el.get('id') == '') {
			el.set('id', 'datepicker_'+i)
		}
		Calendar.setup({
			inputField: el.get('id'),
			ifFormat: "%Y-%m-%d"
		});
	});

	$$('.clickrow').each(function(el) {
		el.getParent()
			.setStyle('cursor', 'pointer')
			.addEvent('click', function(e) {
				if (e.target.get('tag') != 'a') {
					e.stop();
					document.location.href = el.get('href');
				}
			});
	});

	$$('.selectonfocus').addEvent('focus', function(e) {
		this.select();
	});
});

var shoppingCart = new Class({

	Implements: [Options],

	options: {
		updateId: 'shoppingcart_update',
		cartContentsId: 'shoppingcart_content',
		totalAmountId: 'shoppingcart_total',
		deleteSelector: '#shoppingcart .delete',
		qtySelector: '#shoppingcart .qty',
		actionOpacity: 0.5
	},

	initialize: function(element, options) {
		this.setOptions(options);
		this.card = element;
		this.cardContents = $(this.options.cartContentsId);
		this.cardContentsFx = new Fx.Tween(this.cardContents, {
			'property': 'opacity',
			'link': 'chain'
		});
		$(this.options.updateId).setStyle('display', 'none');

		this.bindEvents();

		var me = this;
		this.updateReq = new Request.HTML({
			'url': this.card.get('action'),
			'update': this.cardContents,
			'link': 'chain',
			'onRequest': function() {
				me.cardContentsFx.start(me.options.actionOpacity);
			},
			'onComplete': function() {
				me.cardContentsFx.start(1);
				me.bindEvents();
				$('shoppingcart-amount').set('text', $(me.options.totalAmountId).get('text'));				
			}
		});
	},

	bindEvents: function() {
		$$(this.options.qtySelector).addEvent('change', this.update.bindWithEvent(this));
		$$(this.options.deleteSelector).addEvent('click', this.deleteOne.bindWithEvent(this));
	},

	update: function() {
		var data = 'ajax=1&order=1';
		$$(this.options.qtySelector).each(function(el) {
			data += '&' + el.get('name') + '=' + el.get('value');
		});
		this.updateReq.send(data);
	},

	deleteOne: function(e) {
		e.stop();
		this.cardContentsFx.start(this.options.actionOpacity);
		var target = $(e.target);
		target = target.get('tag') == 'a' ? target : target.getParent('a');
		target.getParent('tr').fade('out');
		var url = new URI(target.get('href'));
		var data = 'ajax=1&' + url.get('query');
		this.updateReq.send(data);
	}
	
});

var fileSelector = new Class({

	Implements: [Options],

	options: {
	},

	initialize: function(list, options) {
		this.setOptions(options);
		this.list = list;
		this.iframecounter = 0;

		var ids = this.list.get('id').match(/fileselector_([0-9]+)_([0-9]+)_([0-9]+)/);
		this.profileid = ids[3];
		this.defcategory = ids[2];

  	var me = this;
		list.getElements('a.choosefile').each(function(openfs) {
			openfs.addEvent('click', function(e) {
				new Event(e).stop();
				me.position = openfs;
    		me.openfileselector();
			});
		}, this);

		list.getElements('a.detachfile').each(function(el) {
			el.addEvent('click', me.detachFile.bindWithEvent(me, el));
		});

		this.sortable = new Sortables(list, {handle: 'img', constrain: true});
	},

	openfileselector: function() {
		$('bodywaitdiv').setStyles({
			'height':  $(document.body).clientHeight + 'px',
			'width':   $(document.body).clientWidth + 'px',
			'display': 'block'
		});
		var me = this;

		this.fs = new Element('div', {
			'class': 'fileselector loading',
			'styles': {
				'top': window.getScroll().y + 50
			}
		}).injectInside($(document.body));

		var fileid = me.position.getParent('li').getElement('input[type=hidden]').get('value');
		if (fileid > 0) {
			new Request.JSON({
				'url': '/filedetails/'+fileid,
				'method': 'get',
    		'link': 'cancel',
				'onSuccess': function(responseJSON, responseText) {
					me.showCategory(responseJSON.categoryid.toInt());
				}
			}).send();
		} else {
			this.showCategory(me.defcategory);
		}
	},

	showCategory: function(categoryid) {
		var me = this;
		new Request({
			'url': '/selectmedia/'+categoryid+'/'+me.profileid,
			'method': 'get',
   		'link': 'cancel',
			'onRequest': function() {me.fs.set('html', '').addClass('loading');},
			'onFailure': function() {
				me.fs.removeClass('loading');
				me.addDefaultElements();
			},
			'onSuccess': me.showCategoryProcess.bind(me)
		}).send();
	},

	showCategoryProcess: function(responseText) {
		var me = this;

		me.fs.removeClass('loading');
		me.fs.set('html', responseText);
		me.addDefaultElements();

		$('filebrowser').addEvent('click', function(e) {
			new Event(e).stop();
			var target = $(e.target);
			target = target.get('tag') != 'a' ? target.getParent('a') : target;
			if (target.hasClass('folder')) {
				me.showCategory(target.get('href').substr(target.get('href').indexOf('#')+1));
			} else if (target.hasClass('file')) {
				if (!target.hasClass('noselect')) {
					var fileid = target.get('href').substr(target.get('href').indexOf('#')+1);
					me.selectFile(fileid);
				}
			}
		});

		if ($('searchmedia')) {
			var input = $('searchmedia').getElement('input[type=text]');
			var thereq = new Request.HTML({
				url: $('searchmedia').get('action'),
				'link': 'cancel',
				update: $('filebrowser'),
				onRequest: function() {
					$('fs_categoryname').set('text', 'Zoekresultaten');
					if ($('uploadmedia')) {
						$('uploadmedia').setStyle('display', 'none');
					}
				},
				onSuccess: function() {
					$('filebrowser').set('html',
						'<li><a href="#'+categoryid+'" class="folder"><img src="/images/cms/mediabrowser_back.png" width="100" height="100" alt="Terug" title="" /></a></li>',
						$('filebrowser').get('html')
					);
					$$('ul#filebrowser li').each(function(li, i) {
						if (i%7==0) {
							new Element('li', {
								'class': 'clearer'
							}).inject(li, 'before');
						}
					});
				}
			});
			input.addEvent('keyup', function(e) {
				thereq.get({
					'search': this.get('value'),
					'categoryid': $('fs_curcat').get('checked')?categoryid:0
				});
			});
			input.addEvent('focus', function(e) {
				if (input.hasClass('label')) {
					input.removeClass('label');
					input.set('value', '');
				}
			});
		}

		$$('ul#filebrowser li').each(function(li, i) {
			if (i%7==0) {
				new Element('li', {
					'class': 'clearer'
				}).inject(li, 'before');
			}
		});

		if ($('uploadmedia')) {
			$('uploadmedia').setStyle('display', 'block');
			$('uploadmedia').addEvent('submit', function(e) {
				var newel = new Element('div', {
					'class': 'loading',
					'styles': {
						'height': '150px',
						'width': '300px',
						'border': '1px solid #333399',
						'position': 'absolute',
						'top': '91px',
						'left': '263px',
						'background-color': '#ffffff'
					}
				}).inject(me.fs.getElement('ul'), 'after');

				var iframecnt = '';
				var iframe = $('uploadiframe');
				if (!Browser.Engine.trident) {
					iframecnt = me.iframecounter;
					me.iframecounter++;
					iframe = new IFrame({
						'id': 'uploadiframe'+iframecnt,
						'name': 'uploadiframe'+iframecnt,
						'styles': {
							'border': 'none',
							'overflow': 'hidden',
							'height': '100px',
							'width': '100px',
							'display': 'none'
						}
					}).injectInside($('uploadmedia'));
					$('uploadmedia').set('target', 'uploadiframe'+iframecnt);
				}

				iframe.addEvent('load', function() {
					newel.removeClass('loading');
					var body = window.frames['uploadiframe'+iframecnt].document.getElementsByTagName('body');
					newel.set('html', body[0].innerHTML);
					newel.getElements('a.file').each(function(file) {
						var fileid = file.get('href').substr(file.get('href').indexOf('#')+1);
						me.selectFile(fileid);
					});
				});
			});
		}
	},

	selectFile: function(fileid) {
		var me = this;
		var li = this.position.getParent('li');
		li.removeClass('lock');
		this.sortable.removeItems(li);

		var basename = li.getElement('input[type=hidden]').name.substr(0, li.getElement('input[type=hidden]').name.indexOf('['));

		li.getElements('*').each(function(el) {
			if (!el.hasClass('choosefile')) {
				el.dispose();
			}
		});

		var me = this;
		new Request.JSON({
			'url': '/filedetails/'+fileid,
			'method': 'get',
			'link': 'cancel',
			'onSuccess': function(responseJSON, responseText) {
				new Element('br').injectTop(li);
				new Element('input', {
					'type': 'hidden',
					'name': basename+'[fileid][]',
					'value': fileid
				}).injectTop(li);
				new Element('input', {
					'type': 'text',
					'class': 'text_3quartsize',
					'name': basename+'[altfilename][]',
					'value': responseJSON.altfilename
				}).injectTop(li);
				new Element('div', {
					'html': 'Bestandsnaam:'
				}).injectTop(li);
				new Element('input', {
					'type': 'text',
					'class': 'text_3quartsize',
					'name': basename+'[name][]',
					'value': responseJSON.name
				}).injectTop(li);
				new Element('div', {
					'html': 'Naam:'
				}).injectTop(li);
				new Element('img', {
					'src': ''+responseJSON.preview,
					'width': 100,
					'height': 100,
					'class': 'border',
					'styles': {
						'float': 'left',
						'margin-right': '10px'
					}
				}).injectTop(li);
				var detacher = new Element('a', {
					'href': '#',
					'html': 'Bestand ontkoppelen',
					'class': 'detachfile'
				}).injectBottom(li);
				detacher.addEvent('click', me.detachFile.bindWithEvent(me, detacher));
				new Element('br', {'class': 'clear'}).injectBottom(li);

				me.sortable.addItems(li);

				$('bodywaitdiv').setStyle('display', 'none');
				me.fs.dispose();
			}
		}).send();
	},

	detachFile: function(e, detacher) {
		new Event(e).stop();
		var li = detacher.getParent('li');
		var basename = li.getElement('input[type=hidden]').name.substr(0, li.getElement('input[type=hidden]').name.indexOf('['));

		li.getElements('*').each(function(el) {
			if (!el.hasClass('choosefile')) {
				el.dispose();
			}
		});
		new Element('input', {
			'type': 'hidden',
			'name': basename+'[fileid][]',
			'value': 0
		}).injectTop(li);
	},

	addDefaultElements: function() {
		var me = this;
		new Element('a', {
			'class': 'close',
			'events': {
				'click': function(e) {
					new Event(e).stop();
					$('bodywaitdiv').setStyle('display', 'none');
					me.fs.dispose();
				}
			}
		}).set('html', '<img src="/images/cms/cancel.png" width="16" height="16" class="icons" alt="[X]" title="Sluit venster" />').inject(this.fs);
	}
});
