var Site = {

	start: function(parent){
		if ($('nav')) Site.sfHover(parent);
		Site.rollOver(parent);
		if (window.gecko) Site.formLayoutFix(parent);
		Site.ajax(parent);
		Site.fetch(parent);
		Site.update(parent);
		Site.inputStyle(parent);
		Site.pageControls(parent);
                Site.sortControls(parent);
		Site.dragControls(parent);
		Site.slider(parent);
		Site.popup(parent);
		Site.editor(parent);
		if ($('tags')) Site.tags(parent);
	},
	
	tags: function(parent) {
		new TextboxList('tags', {  });
	},
	
	popup: function(parent) {
	$(parent).getElements("a.popup").each(function(el) {
		el.addEvent('click',function(e){
			if (e) e.stop();
				ajaxFace = new LightFace.IFrame({
					url: el.get('href'),
					draggable:true,
					width: el.get('width'),
					height: el.get('height'),
					buttons: [
						{ title: 'Close', event: function() { this.close(); }, color: 'green' }
					],
					title: 'Events'
				}).open();
		});
	});
    },
    

	tracker: function(code) {
		new Asset.javascript('https://ssl.google-analytics.com/ga.js', {
			id: 'gaTracker',
			onload: function() {
				var pageTracker = _gat._getTracker(code);
				pageTracker._initData();
				pageTracker._trackPageview();
			}
		});
	},

	inputStyle:function(parent) {
	$(parent).getElements(".input").addEvents({
			'focus' : function() { this.addClass("focus"); },
			'blur' : function() { this.removeClass("focus"); }
		});
	},

	rollOver : function(parent) {
		$(parent).getElements("img").each( function(el) {
			if (el.hasClass("rollover")) {
			el.setAttribute("xsrc",el.getAttribute("src"));
			el.addEvents({
				'mouseover' : function() { this.setAttribute('src',this.className.match(/rollover (\S+)/)[1]); },
				'mouseout' : function() { this.setAttribute('src',this.getAttribute("xsrc")); }
			});
			}
		});
	},

	formLayoutFix : function(parent) {
	$(parent).getElements('.form label').each( function(el) {
		var content = el.getText();
		el.empty();
		el.adopt(new Element('span', {
			'styles' : {
				'display' : 'block',
				'width' : el.getStyle('width')
			}
		}).setText(content));
		el.setStyle('display','-moz-inline-box');
		});
	},

	sfHover: function(parent){
		$(parent).getElements("#nav li").addEvents({
			'mouseover' : function() { this.addClass("sfhover"); },
			'mouseout' : function() { this.removeClass("sfhover"); }
		});
	},

	ajax:function(parent) {

		$(parent).getElements('.ajax').each(function(el) {
			var id = el.id;
			var container = el.getParent('div.container');
			if (container) {
				var options = el.className.match(/ajax \[(.*)\] (\S+)/);
				el.addEvent(options[1], function(e) {
				e = new Event(e).stop();
				if (el.getProperty('type') == 'button') el.setProperty('disabled','disabled');
				if ($('log')) var log = $('log').empty().addClass('ajax-loading');
				Site.saveEditor();
				var request = new Request.HTML({
					url:options[2],
					update: container,
					onSuccess :  function() {
						Site.start(container);
					},
					onComplete : function() {
						if ($('log')) log.removeClass('ajax-loading');
					}
					}).post(container);
				});
			}
		});
	},


	fetch:function(parent) {
		$(parent).getElements('.fetch').each(function(el) {
				var options = el.className.match(/fetch \[(.*)\] (\S+)/);
				el.addEvent('click', function(e) {
				e = new Event(e).stop();
				if ($('log')) var log = $('log').empty().addClass('ajax-loading');
				var request = new Request.HTML({
					url:options[2],
					evalScripts:true,
					update: options[1],
					onSuccess :  function() {
						Site.start(options[1]);
					},
					onComplete : function() {
						if ($('log')) log.removeClass('ajax-loading');
					}
					}).get();
				});
		});
	},


	update:function(parent) {
		$(parent).getElements('.update').each(function(el) {
			var id = el.id;
			var container = el.getParent('div.container');
			if (container) {
				var options = el.className.match(/update \[(.*)\] (\S+)/);
				el.addEvent('change', function(e) {
				e = new Event(e).stop();
				if ($('log')) var log = $('log').empty().addClass('ajax-loading');
				var request = new Request.HTML({
					url:options[2],
					evalScripts:true,
					update: options[1],
					onSuccess :  function() {
						Site.start(options[1]);
					},
					onComplete : function() {
						if ($('log')) log.removeClass('ajax-loading');
					}
					}).post(container);
				});
			}
		});
	},


	pageControls:function(parent) {
		$(parent).getElements(".smart li").each(function(el) {
			page = el.getElement(".page");
			if (page) page .addEvents({
			'mouseover' : function() { this.getElements(".controls").removeClass('hidden'); },
			'mouseout' : function() { this.getElements(".controls").addClass('hidden'); }
			});

                       var parent = $(el.getParent());
                        var child = el.getElement("ul");
                        var toggle = el.getElement(".toggle");
                        if (child && toggle) toggle.addEvent('click', function(e) {
                            e = new Event(e);
                            child.toggle();
                            e.stop();
                        });
		});
	},

        sortControls:function(parent) {

        
	    
            var sorted = $(parent).getElements('.information'). each(function(element) {
            var children = element.getElements('ul');
            var list = $$([element, children]);
            new Sortables(list, {
		revert: true,
                constrain: true,
			onStart: function(el) {
                        },
			onComplete: function(el) {
                                var options = el.getParent('.information').className.match(/information (\S+)/);
				var sort_order = '';
				$$('.information li').each(function(li) { sort_order = sort_order +  li.id  + '|'; });
					var req = new Request({
						url:options[1],
						method:'post',
						autoCancel:true,
						data:'sequence=' + sort_order,
						onRequest: function() {
						},
						onSuccess: function() {
						}
					}).send();
			}
            });
            });
        },

	dragControls:function(parent) {



               $(parent).getElements(".drag li").addEvent('mousedown',function(ev){
					var clone = this.clone();
					var origin = this.getPosition();
                                        clone.id = this.id;
					clone.setStyles({
                                                    opacity:0.7,
                                                    position:'absolute',
                                                    width:200,
                                                    left:origin.x,
                                                    top:origin.y,
                                                    border:'3px solid #87bcd8'
                                                }).inject(document.body).makeDraggable({
						droppables: '.drop',
						onEnter:function(el,drop){
                                                        drop.addClass('highlight');
						},
						onLeave:function(el, drop){
                                                    drop.removeClass('highlight');

						},
						onDrop:function(el,drop){
							if(drop){
                                                            drop.removeClass('highlight');
                                                            clone.destroy();
                                                            if ($('dropTarget')) $('dropTarget').set('value',el.id);
                                                            var container = drop.getParent('div.container');
                                                            if (container) {
                                                        	var options = drop.className.match(/drop (\S+)/);
                                                        	if ($('log')) var log = $('log').empty().addClass('ajax-loading');
                                                            	if (typeof window.tinyMCE != "undefined") window.tinyMCE.triggerSave();
                                                        	var request = new Request.HTML({
                                                        		url:options[1],
                                                        		update: container,
                                                                        onSuccess :  function() {
                                                                        	Site.start(container);
                                                                        	if (window.tinyMCE) Site.editor();
                                                                        },
                                                                        onComplete : function() {
                                                                        	if ($('log')) log.removeClass('ajax-loading');
                                                                        }
                                                                }).post(container);
                                                            }
							}else{
                                                                el.get('morph').start({
									opacity:0,
									left:origin.x,
									top:origin.y
								}).chain(el.destroy.bind(el));
                                                         }

							}


					}).start(ev);

				});
	},


	saveEditor:function() {
	
	if (window.oUtil) 
	for(var i=0;i<window.oUtil.arrEditor.length;i++)
	{
		var oEdit=eval(window.oUtil.arrEditor[i]);    
		var oEditor=eval("idContent"+oEdit.oName);

		if(oEdit.mode=="HTMLBody")sContent=oEdit.getHTMLBody();
		if(oEdit.mode=="HTML")sContent=oEdit.getHTML();
		if(oEdit.mode=="XHTMLBody")sContent=oEdit.getXHTMLBody();
		if(oEdit.mode=="XHTML")sContent=oEdit.getXHTML();
		$(oEdit.idTextArea).value=sContent;
	}
    	},
	
	
	editor:function(parent) {
	
	if (window.oUtil)  {
	window.oUtil.initializeEditor("richtext",
	{
		width:"100%",
		height:"600px",
		mode : "XHTMLBody",
		useBR: true,
		btnSpellCheck: true,
		cmdAssetManager:"modalDialogShow('/extensions/admin/assets/editor/assetmanager/assetmanager.php',640,465)"
	}
	);
	window.oUtil.initializeEditor("fulltext",
	{
		width:"100%",
		height:"600px",
		mode : "XHTML",
		useBR: true,
		btnSpellCheck: true,
		cmdAssetManager:"modalDialogShow('/extensions/admin/assets/editor/assetmanager/assetmanager.php',640,465)"
	}
	);
	}
	
	},

        slider: function(parent) {           

        },
	
	
	menu:function(parent) {
		$(parent).getElements('.toggle').each(function(el) {
			var myVerticalSlide = new Fx.Slide(el.id + 'Container');
			$(el.id).addEvent('click', function(e){
				e.stop();
				myVerticalSlide.toggle();
			});
		});
	},

	thumbs: function(){
		$$(".thumb").addEvents({
			'mouseover' : function() {
					this.getFirst('div').setStyle("display","block");
				},
			'mouseout' : function() {
				this.getFirst('div').setStyle("display","none");
			}
		});
	},

	fader : function() {
		$$('.fader').each(function(el, i) {
			var ExampleFx = new Fx.Style(el, 'opacity', {
			wait: false,
			duration: 400,
			transition: Fx.Transitions.Quart.easeInOut});
				el.addEvent('mouseenter', function() { ExampleFx.start(1, 0.01); });
				el.addEvent('mouseleave', function() { ExampleFx.start(0.01, 1); });
		});
	},


	menu: function(){

		//create our Accordion instance
	var myAccordion = new Accordion($('accordion'), 'span.cat', 'div.element', {
		opacity: false,
		start: 'all-closed',
		onActive: function(toggler, element){

		},
		onBackground: function(toggler, element){

		}
	});

	}


}



//if (typeof window.tinyMCE != "undefined")

window.addEvent('domready', function() {
	document.ondragstart = function() { return false; }
	
	Site.start(document.body);
});
