var stories = new Array();
var categories = ['City Breaks', 'Coastal Getaways', 'Cultural Discovery', 'Bush Retreat', 'Mountain Escapes', 'Country Meanders', 'Sports &amp; Adventure', 'Nightlife'];

function _story(id) {
	this.id = Math.abs(id);
	this.title = '';
	this.story = '';
	
	var c;
	// ids to category matching is hard-wired for now
	switch ( this.id ) {
		case 994: // cape town
			c = 0;
			break;
		case 1342: // durban beach vibe
			c = 2;
			break;
		case 1343: // durbs by nite
			c = 7;
			break;
		case 1344: // graskop and sabie
			c = 5;
			break;
		case 1345: // harties
			c = 4;
			break;
		case 1346: // kurger park
			c = 3;
			break;
		case 1347: // port elizabeth
			c = 1;
			break;
		case 1348: // the long jump
			c = 6;
			break;
	}
	this.category = c;
}

function prefetch(idx) {
	var story;
	for ( var i = 0; i < stories.length; i++ ) {
		if ( stories[i].category == idx) {
			story = stories[i];
			break;
		}
	}
	fetchstory(story.id);
}

function fetchstory() {
	var a = arguments;
	el('storyInner').innerHTML = '';
	el('navBar').innerHTML = '';
	var id;
	if ( !isNaN(a[0]) ) {
		id = a[0];
	} else {
		id = hashGet('story');
	}
	
	var story = getstory(id);
	
	el('category').innerHTML = categories[story.category];
	
	if ( story && story.story != '' ) { // story is populated in our local array
		fetchstory_r(story.id + '|||' + story.title + '|||' + story.story );
	} else { // story is not populated so fetch it
		storyDetail('&nbsp;', '&nbsp;');
		xhr('iStory.ashx?id=' + id, fetchstory_r, 'storyLoader');
	}
}

function getstory(id) {
	id = Math.abs(id);
	var story;
	for ( var i = 0; i < stories.length; i++ ) {
		if ( stories[i].id == id ) {
			story = stories[i];
			break;
		}
	}
	return story;
}

function storyDetail(h4, text) {
	el('storyInner').innerHTML = unescape(text);
	el('storyContent').getElementsByTagName('H4')[0].innerHTML = unescape(h4);
}

function fetchstory_r(r) {
	r = r.split('|||');
	storyDetail(r[1], r[2]);
	detailPaginate();
	var story = getstory(r[0]);
	if ( story ) {
		story.title = r[1];
		story.story = r[2];
	}
}

function fetchstories() {
	xhr('iStory.ashx?contentArea=' + wom.stories.listID, fetchstories_r, 'storyLoader');
}

function fetchstories_r(r) {
	r = r.split(',');
	var story;
	for ( var i = 0; i < r.length; i++ ) {
		story = new _story(r[i]);
		stories.push(story);
	}
	fetchstory(r[0]);
}

var navbardetail = '<a href="javascript:;" onclick="detailnav(-1)" class="btnPrevious" title="Previous page" onfocus="blur()"></a>{pages}<a href="javascript:;" onclick="detailnav(1)" class="btnNext" title="Next page" onfocus="blur()"></a>';
var detail = {page:1, total:0 };
function detailPaginate() {
	var outer = el('storyOuter');
	var inner = el('storyInner');
	if ( !inner ) return;
	detail.total = Math.floor(inner.offsetHeight / outer.offsetHeight);
	if ( inner.offsetHeight % outer.offsetHeight > 0 ) detail.total++;
	if ( detail.total == 1 ) return;
	var pages='';
	for ( var i = 1; i <= detail.total; i++ ) {
		pages += '<a href="javascript:;" onclick="detailjump('+i+')" title="Go to page '+i+'" onfocus="blur()"'+(i==1?' class="hot"':'')+' id="pdetail'+i+'">'+i+'</a>';
	}
	el('navBar').innerHTML = navbardetail.replace('\{pages\}', pages);
}
	
function detailjump(page) {
	el('pdetail' + detail.page).className = '';
	detail.page = page;
	el('pdetail' + detail.page).className = 'hot';
	var outer = el('storyOuter');
	var inner = el('storyInner');
	inner.style.marginTop = ( 0 - (page-1) * outer.offsetHeight ) + 'px';
}

function detailnav(dir){
	var page = detail.page + dir;
	if ( page < 1 ) return;
	if ( page > detail.total ) return;
	detailjump(page);
}