// JavaScript Document

var horizontalcontentglider={
	csszindex: 50,
	ajaxloadingmsg: '<b>Fetching Content. Please wait...</b>',
	totallength: 0,
	position:0,
	maxposition: 0,
	boxwidth: 0,
	fitsoncontainer: 3,
	glide:function(showpage){
		
		new Effect.Move('glideme', {
		  x: -(horizontalcontentglider.boxwidth)*showpage, y: 0, duration:0.5, mode: 'absolute',
		  afterFinish: horizontalcontentglider.debugGlide,
		  transition: Effect.Transitions.linear
		});
		/*
		var selected=parseInt(showpage)
		if (selected>=config.$contentdivs.length){ //if no content exists at this index position
			alert("No content exists at page "+(selected+1)+"! Loading 1st page instead.")
			selected=0
		}
		*/
	},

	getremotecontent:function(config){
		config.$glider.update(this.ajaxloadingmsg);
		var myAjax = new Ajax.Request(config.remotecontenturl, {
			method: 'get',
			postBody: poststr,
			evalScripts: true,
			onLoading: function () {
				//alert('loading...');
			},
			onSuccess: function(transport) {
				config.$glider.update(transport.responseText);
				horizontalcontentglider.setuptoggler(config);
			},
			onFailure: function(transport) {
				alert('Ajax connection error!');		  
			}
		});
	},

	setuptoggler:function(config){
		var $glideboxs = $('glideme').select('.glidebox');
		this.boxwidth = $glideboxs[0].getWidth() + 7;
		this.totallength = $glideboxs.length * this.boxwidth + this.boxwidth;
		var containerWidth = $(config.gliderid).getWidth();
		this.fitsoncontainer = Math.floor(containerWidth/$glideboxs[0].getWidth());
		this.maxposition = $glideboxs.length - this.fitsoncontainer;
		//alert(horizontalcontentglider.totallength + ' ' + $glideboxs[0].getWidth() + ' fits container' + fitsContainer);
		$glideboxs.each(function(item, index) {
			item.observe('click', function(event){
				event.stop();
				horizontalcontentglider.loadcontent('blogContentContainer', index);
			});
			
		});
		$('glideme').setStyle({width:this.totallength + 'px'});
		this.debugGlide();
	},
	loadcontent:function(target, id) {
		
		if ($('HTMLEditor'))
			$('HTMLEditor').hide();
		var $glideboxs = $('glideme').select('.glidebox');
		$glideboxs.each(function(item, index) {
			item.removeClassName('active');
		});
		$glideboxs[id].addClassName('active');
		var contentid = $glideboxs[id].readAttribute('contentid')
		var $content = $(target).childElements();
		var url = '/_ajax/blog_read.php';
		var myAjax = new Ajax.Updater($content[0], url, {
			method: 'get',
			evalScripts: true,
			parameters: {blog_id: contentid},
			onComplete: function(transport) {
				if ($('HTMLEditor'))
				{
					new Ajax.InPlaceEditor('blog-title-' + contentid, '/_ajax/blog.php', {formClassName: 'inplaceeditor-form-blog', okText: 'save'});
					new Ajax.InPlaceEditor('blog-ingress-' + contentid, '/_ajax/blog.php', {rows:5, formClassName: 'inplaceeditor-form-blog', okText: 'save'});
					$('blog-content').observe('click', horizontalcontentglider.viewEditor);
				}
			}
		});
		//$content[0].update('showing content for #' + contentid);
		Effect.SlideDown(target);
		
	},
	viewEditor: function() {
		$('HTMLEditor').show();
		$('blog-content').hide();
		oEdit1.loadHTML($('blog-content').innerHTML);
		$('saveBlogBtn').observe('click', saveBlog);
	},
	autorotate:function(config){
		var rotatespeed=config.speed+config.autorotateconfig[0]
		window[config.togglerid+"timer"]=setInterval(function(){
			if (config.totalsteps>0 && config.stepcount>=config.totalsteps){
				clearInterval(window[config.togglerid+"timer"])
			}
			else{
				config.$next.click()
				config.stepcount++
			}
		}, rotatespeed)
	},

	cancelautorotate:function(togglerid){
		if (window[togglerid+"timer"])
			clearInterval(window[togglerid+"timer"])
	},
	createCookie: function (name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	},
	readCookie: function (name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	},
	eraseCookie: function (name) {
		this.createCookie(name,"",-1);
	},
	isScrollable: function(dir) {
		var pos = $('glideme').positionedOffset();
		var gliderWidth = $('glideme').getWidth();
		var gliderPos = gliderWidth + pos.left;
		switch(dir)
		{
		case 'next':
			
			if (horizontalcontentglider.position > horizontalcontentglider.maxposition) {
				horizontalcontentglider.position = horizontalcontentglider.maxposition;
				return false;
			}else{
				return true;
			}
		break;
		case 'prev':
			
			if (horizontalcontentglider.position < 0) {
				horizontalcontentglider.position = 0;
				return false;
			}else{
				return true;
			}
		
		break;
		}
		$('glideDebug').update(horizontalcontentglider.position);
	},
	init:function(config){
		document.observe("dom:loaded", function() {
			
			horizontalcontentglider.setuptoggler(config);
			
			$('hglidenext').observe('click', function(event){
				horizontalcontentglider.position = horizontalcontentglider.position + 1;
				if (horizontalcontentglider.isScrollable('next')) { 
					horizontalcontentglider.glide(horizontalcontentglider.position);
				}
			});
			$('hglideprev').observe('click', function(event){
				horizontalcontentglider.position = horizontalcontentglider.position - 1;
				if (horizontalcontentglider.isScrollable('prev')) { 
					horizontalcontentglider.glide(horizontalcontentglider.position);
				}
			});
			
			if (config.persiststate) {
				var prevselected = (horizontalcontentglider.readCookie(config.gliderid)) ? horizontalcontentglider.readCookie(config.gliderid) : 0;
				horizontalcontentglider.position = prevselected;
				horizontalcontentglider.glide(prevselected);
				horizontalcontentglider.loadcontent('blogContentContainer', parseInt(prevselected));
			
			}
			else
			{
				horizontalcontentglider.position = ((config.selected > horizontalcontentglider.maxposition) ? horizontalcontentglider.maxposition : config.selected);
				
				if (horizontalcontentglider.position < horizontalcontentglider.maxposition)
				{
					horizontalcontentglider.glide(horizontalcontentglider.position);
					horizontalcontentglider.loadcontent('blogContentContainer', parseInt(config.selected));
				}
				else
				{
					horizontalcontentglider.glide(horizontalcontentglider.position);
					horizontalcontentglider.loadcontent('blogContentContainer', parseInt(config.selected));
				}
			}

		});
		
		Event.observe(window, 'unload', function() { //clean up and persist
			if (config.persiststate)
				horizontalcontentglider.createCookie(config.gliderid, horizontalcontentglider.position)
			else
				horizontalcontentglider.eraseCookie(config.gliderid)
			config=null
		});
	},
	
	debugGlide:function() {
		
		if (horizontalcontentglider.position <= 0) {
			$('hglideprev').addClassName('deactive');
			$('hglideprev').stopObserving('click');

		}else{
			$('hglideprev').observe('click', function(event){
				horizontalcontentglider.position = horizontalcontentglider.position - 1;
				if (horizontalcontentglider.isScrollable('prev')) { 
					horizontalcontentglider.glide(horizontalcontentglider.position);
				}
			});
			$('hglideprev').removeClassName('deactive');
		}
		
		if (horizontalcontentglider.position >= horizontalcontentglider.maxposition || horizontalcontentglider.maxposition <= 0) {
			$('hglidenext').addClassName('deactive');
			$('hglidenext').stopObserving('click');
		}else{
			$('hglidenext').observe('click', function(event){
				horizontalcontentglider.position = horizontalcontentglider.position + 1;
				if (horizontalcontentglider.isScrollable('next')) { 
					horizontalcontentglider.glide(horizontalcontentglider.position);
				}
			});
			$('hglidenext').removeClassName('deactive');
		}
		var pos = $('glideme').positionedOffset();
		var gliderWidth = $('glideme').getWidth();
		var gliderPos = gliderWidth + pos.left;
		$('glideDebug').update( ' element 1 offset left = ' + (pos.left) + ', element last offset left = ' + (gliderPos) + ' ' + gliderWidth + ' position = ' + horizontalcontentglider.position + ' max position = ' + horizontalcontentglider.maxposition + ' boxwidth = ' + horizontalcontentglider.boxwidth);
		
	}
}

hide_blog = function() {
	Effect.SlideUp('blogContentContainer');
	var $glideboxs = $('glideme').select('.glidebox');
	$glideboxs.each(function(item, index) {
		item.removeClassName('active');
	});
}
