var exampleFx = null;
var fxTarget = null;
dbug.enable();
var scroller = null;


window.onDomReady(function() {
	try {
		if(window.ie6) window.disableImageCache();
	}catch(e){}
	try {
		if($('fxTarget')) {
			fxTargetClone = $('fxTarget').clone();
			fxTargetClone.setProperty('id', 'fxTargetClone');
		}
	} catch(e) {dbug.log(e)}

	//dbug.time("links");
	$$('a').each(function(lnk) {
		if(lnk.href.indexOf("c18") >= 0 || lnk.href.indexOf("cnet.cnwk") >= 0){
			var href = lnk.href;
			lnk.addEvent('click', function() {
				if(confirm('this link will only work for employees of cnet.com that are within the cnet firewall, click "OK" to continue'))
					window.location.href = href;
			});
			lnk.href = "javascript: void(0);";
		}
	});
	//dbug.timeEnd("links");
	var searchInput = $('searchInput') || $('qsearch__in');
	if(searchInput) {
		if(searchInput.value==''){
			if(searchInput.id == 'searchInput') searchInput.value="search";
			else searchInput.value="search the wiki";
		}
		searchInput.addEvent('focus', function() {
			if(this.value=='search' || this.value=='search the wiki')this.value='';
			this.setStyle('color', '#000');
		}).addEvent('blur', function(){
			this.setStyle('color', '#999');
		});
	}
	if($('emailSubscribe')){
		$('emailSubscribe').addEvent('focus', function() {
			if($('emailSubscribe').value=='your email') this.value='';
			this.setStyle('color', '#000');
		}).addEvent('blur', function(){
			this.setStyle('color', '#999');
		});	
	}
	
	//dbug.time("accordions");
		scroller = new Fx.Scrollwindow({
			transition: Fx.Transitions.backOut
		});
		makeAccordions();
	//dbug.timeEnd("accordions");

	//dbug.time("tabs");
		try {
			if($('tabSet')) {
				var myTabs = new tabSwapper({
					selectedClass: 'on',
					deselectedClass: 'off',
					tabSelector: '#tabSet li',
					clickSelector: '#tabSet li a',
					sectionSelector: '#panelSet div.panel',
					cookieName: 'testingTabs',
					smooth: true
				});
			}
		} catch(e){
			dbug.log(e);
		}
	//dbug.timeEnd("tabs");

	//dbug.time("code");
	$$('div.code').each(function(el, idx){
		el.setStyle('max-height', '300px');
		el.addEvent('mouseover', function() {
			this.makeResizable({
				handle: this.getElement('img.resizeMe')
			});
		});
		
		try {
			if(el.hasClass("exec")){
				el.getElement('img.executeCodeImg').addEvent('click',function(){
					try {
						var source = el.getElement('.rawScript').innerHTML.replaceAll('<br/>','').replaceAll('<br>','').replaceAll('<p>','').replaceAll('</p>','').replaceAll('&lt;', '<').replaceAll('&gt;', '>');
						dbug.log(source);
						var delayVal = 0;
						if(source.test('fxTarget')) {
							delayVal = grabFXTarget(this); 
						}
						(function(){
							msg = eval(source);
							if(msg) dbug.log(msg);
							else dbug.log('nothing returned');
						}).delay(delayVal);
					} catch(e){
						dbug.log('error executing: %s', e);
					}
				});
			}
		} catch(e){dbug.log('error setting up executor: %s', e);}
	});
	//dbug.timeEnd("code");


		try {	
			$('fxTarget').makeDraggable();
			$('fxTarget').makeDraggable();
		} catch(e){
		}
});

Fx.Scrollwindow = Fx.Base.extend({

			initialize: function(options){
				this.setOptions(options);
				this.now = [];
				var b = document.body;
				var stop = this.clearTimer.bind(this);
				if (!this.options.continuer){
					if (b.addEventListener) b.addEventListener('DOMMouseScroll', stop, false);
					else b.onmousewheel = stop;
				}
			},

			setNow: function(){
				[0,1].each(function(i){
					this.now[i] = this.compute(this.from[i], this.to[i]);
				}, this);
			},

			scrollTo: function(x, y){
				if (this.timer && this.options.wait) return;
				var left = window.getScrollLeft();
				var top =  window.getScrollTop();
				var width = window.getWidth();
				var height = window.getHeight();
				var fullWidth = window.getScrollWidth();
				var fullHeight = window.getScrollHeight();
				var maxScrollWidth = fullWidth - width;
				var maxScrollHeight = fullHeight - height;
				if (x > maxScrollWidth) x = maxScrollWidth;
				if (y > maxScrollHeight) y = maxScrollHeight;
				return this.custom([left, top], [x, y]);
			},

			toElement: function(el){
				return this.scrollTo($(el).getLeft(), $(el).getTop());
			},

			increase: function(){
				window.scrollTo(this.now[0], this.now[1]);
			}

		});
		
		
function grabFXTarget(positionToElement){
	try {
	var thisChain = new Chain();
	var thisTarget = fxTargetClone.clone();
			thisTarget.setStyles({
				'top':($('fxTarget').getTop()>0)?$('fxTarget').getTop():200+'px',
				'visibility':'visible'
			});
	var returnval = 70;
	try {
		if($('fxTarget').getStyle('display')=='none' || ($('fxTarget').getTop() < window.getScrollTop() 
				 || ($('fxTarget').getTop()+$('fxTarget').getStyle('height').toInt()) > (window.getScrollTop()+window.getHeight()))) {
				returnval = 1500;
		}
	} catch(e){returnval = 1500}
	
	if(returnval > 70) {
		(function(){
			thisTarget.setStyles({
				'top':$('fxTarget').getTop()+'px',
				'left': $('fxTarget').offsetLeft+'px'
			});
			if ($('fxTarget').getStyle('visibility') != 'hidden') {
				$('fxTarget').replaceWith(thisTarget)
				thisTarget.setProperty('id','fxTarget');
				thisTarget.makeDraggable();
			}
		 }).delay(100);
		(function(){$('fxTarget').setStyle('visibility','visible')}).delay(210);
		(function(){
			var winBottom = window.getScrollTop()+window.getHeight();
			var fxBottom = $('fxTarget').getTop()+($('fxTarget').getStyle('height').toInt());
			var scrollFrom = window.getScrollTop()-200;
			if (fxBottom > winBottom) scrollFrom = winBottom + 200;
			var targetEffects = $('fxTarget').effects({duration: 600, transition: Fx.Transitions.backOut})
			var scrollTo = positionToElement.getTop()-15;
			if (scrollTo < window.getScrollTop()) scrollTo = window.getScrollTop() +30;
			targetEffects.custom({'top':[scrollFrom,scrollTo]});
		}).delay(270);
	} else {
			thisTarget.setStyles({
				'display':'block',
				'visiblity':'visible',
				'top':$('fxTarget').getTop()+'px',
				'left': $('fxTarget').offsetLeft+'px'
			});
		$('fxTarget').replaceWith(thisTarget.setProperty('id','fxTarget'));
	}
	}catch(e){dbug.log(e)}
	return returnval;
};

function makeAccordions(debug){
	if(document.body.innerHTML.test('class="Accordion') || document.body.innerHTML.test('class=Accordion')) {
		$$('dl.Accordion').each(function(panel){
			var minHeight = 0;
			//dbug.time('stretcher measure');
			panel.getElements('dd.stretcher').each(function(stretcher){
				if (minHeight < stretcher.scrollHeight) minHeight = stretcher.scrollHeight;
			});
			panel.setStyle('height', minHeight+200+'px');
			//dbug.timeEnd('stretcher measure');

			new Accordion(panel.getElements('dt.stretchtoggle'), panel.getElements('dd.stretcher'), {
				onActive: function(){
					(function(){
						if(this.previousClick > 0) {
							var top = $(this.elements[this.previousClick]).getTop()-50;
							scroller.scrollTo(0, top);
						}
					}).bind(this).delay(500);
				}
			});	
		});
	}
}