var bp_style_slide = 0;
var bp_style_multimg = 1;
var bp_style_multilink = 2;
var bp_position = {
			'INLINE_ONE':bp_style_slide,
			'INLINE_MULTIPLE':bp_style_multilink,
			'ABOVE_INDEX':bp_style_slide,
			'RIGHT_GUTTER':bp_style_multimg
};
function loadBookPromo(articleId) {
	if($j("#bookPromoUrl").size()>0&& $j('#promoFormat').size()>0){		
		$j.ajax({
			type: "get",
			url: $j("#bookPromoUrl").val(),
			dataType: 'json',
			success: function(data) {
				if(data && data.section && data.section.url){
					var format = $j('#promoFormat').val();
					var bookpomo = {
						bookdata : JsontoArr(data),
						sectiondata : data.section,
						leaddata: data.leadProduct,
						type: bp_position[format],
						wrapid: format				
					}
					buildBookPromo(bookpomo);			
					if(format == "INLINE_ONE" || format == "INLINE_MULTIPLE" ){	
						$j('#articleintro').after($j('#'+format));
					}
				}
			}	
		});
	}
}

function JsontoArr(jsonBooks){	
	var arrBooksCache = [];
	var arrBooks = [];
	var leadNo;
	for (var key in jsonBooks.productGroup) {		
			arrBooksCache.push(jsonBooks.productGroup[key]);
	}
	leadNo = Math.floor(Math.random()*arrBooksCache.length);
	$j.each(arrBooksCache,function(i){		
		if(jsonBooks.leadProduct && arrBooksCache[i].uid == jsonBooks.leadProduct.uid){
			leadNo = i;	
		}		
	});	
	arrBooks.push(arrBooksCache[leadNo]);
	
	$j.each(arrBooksCache,function(i){
		if(i>leadNo){
			arrBooks.push(arrBooksCache[i]);
		}	
	});	
	$j.each(arrBooksCache,function(i){
		if(i<leadNo){
			arrBooks.push(arrBooksCache[i]);
		}	
	});	
	return arrBooks;	
}

var currentbookNo;
$j(document).ready(function(){
	loadBookPromo();
});

function buildBookPromo(bookpomo){		
	$j('.bookpromo').remove();
	var section = $j('<div class="section"><a href="'+bookpomo.sectiondata.url+'">'+bookpomo.sectiondata.linkText+'</a></div>');	
	var cover = $j('<div class="cover"></div>');
	var title = $j('<div class="title"><a href="#"></a></div>');
	var author = $j('<div class="author">By <span></span></div>');	
	var book = $j('<div class="book" />');	
	var img = $j('<a href="#" title="" class="bookpix"><img src="" alt="" /></a>');
	$j('#'+bookpomo.wrapid).append('<div class="bookpromo" />');
	var bp = $j('.bookpromo');	
	bp.append('<h3>Books You Might Like</h3>');		
	bp.append(section);
	section.find('a').click(function(e){
		e.preventDefault();
		var hbxtitle = bookpomo.sectiondata.name.split(" ").join("+");
		//,;/?:@&=+$,#-;_.!~*() can work in HBX, however '" can not work in HBX. Replace all of them.
		hbxtitle = hbxtitle.replace(/'/g,"").replace(/"/g,"");
		var encodedPN = encodeURIComponent(hbxtitle);
		setCookie("hbx_pn", encodedPN);
		var encodedMLC = encodeURIComponent("/bookstore/section");
		setCookie("hbx_mlc", encodedMLC);
		window.location = $j(this).attr('href');
	});
	
	switch (bookpomo.type){
		case bp_style_slide:				
			var table = '<table cellspacing="0" cellpadding="0" border="0"><colgroup><col class="btncol" /><col /><col class="btncol" /></colgroup>';
				table += '<tr><td></td><td></td><td></td></tr></table>';			
			var pre = $j('<a href="#" id="prebtn"><img title="View Previous Product" src="/page/images/revenue/pre.gif" alt="View Previous Product" /></a>');
			var next = $j('<a href="#" id="nextbtn" ><img title="View Next Product" src="/page/images/revenue/next.gif" alt="View Previous Product" /></a>');
			$j('.section').before(book);
			currentbookNo = 0;
			book.append(cover);	
			book.append(title);	
			book.append(author);		
			$j('.cover').append(table);						
			$j('.cover tr td::nth-child(1)').append(pre);
			$j('.cover tr td::nth-child(3)').append(next);
			$j('.cover tr td::nth-child(2)').append(img);			
			refreshBook(bookpomo.bookdata[0],book);	
			$j.each([pre,next], function(key, value) { 
			  	value.bind('click',function(e){				
					seeNextPre(e,currentbookNo,bookpomo.bookdata)
				});	
			});
			break;
			
		case bp_style_multimg:	
			bp.addClass('b_pix');
			book.append(cover);
			cover.append(img);	
			book.append(title);	
			book.append(author);
			
			if(bookpomo.leaddata){
				var newbook = book.clone();
				$j('.section').before(newbook);				
				refreshBook(bookpomo.bookdata[0],newbook);
				bookpomo.bookdata.splice(0, 1);	
				var randompick2books = [randomSelect(bookpomo.bookdata),randomSelect(bookpomo.bookdata)];
				$j.each(randompick2books, function(key,value){				
					var newbook = book.clone();
					$j('.section').before(newbook);	
					refreshBook(value,newbook);	
				});				
			}
			else{			
				var randompick3books = [randomSelect(bookpomo.bookdata),randomSelect(bookpomo.bookdata),randomSelect(bookpomo.bookdata)];	
				$j.each(randompick3books, function(key,value){				
					var newbook = book.clone();
					$j('.section').before(newbook);	
					refreshBook(value,newbook);	
				});					
			}		
			break;
			
		case bp_style_multilink:				
			bp.addClass('b_link');	
			book.append(cover);
			cover.append(img);		
			book.append(title);				
			book.append(author);
			$j.each(bookpomo.bookdata, function(i) {	
				var newbook = book.clone();					
				if(i != 0){
					newbook.find('.cover').remove();
					newbook.addClass('bookl');					
				}
				$j('.section').before(newbook);
				refreshBook(bookpomo.bookdata[i],newbook);								
			});	
			break;
	}	
	$j('#'+bookpomo.wrapid).css('display','block');
	
	var links = $j('.bookpromo .title a, .bookpromo .bookpix');
	links.each(function(){
		$j(this).click(function(e){	
			e.preventDefault();			
			hbxtitle = $j(this).closest('.book').find('.title a').text().split(" ").join("+");
			//,;/?:@&=+$,#-;_.!~*() can work in HBX, however '" can not work in HBX. Replace all of them.
			hbxtitle = hbxtitle.replace(/'/g,"").replace(/"/g,"");
			var encodedPN = encodeURIComponent(hbxtitle);
			setCookie("hbx_pn", encodedPN);
			var encodedMLC = encodeURIComponent("/bookstore/product");
			setCookie("hbx_mlc", encodedMLC);
			window.location = $j(this).attr('href');
		});
	});
	
}
function randomSelect(booksleft){
	var randomnumber = Math.floor(Math.random()*booksleft.length);	
	var randombook = booksleft[randomnumber];
	booksleft.splice(randomnumber, 1);
	return randombook;
}
function seeNextPre(e,No,books){	
	e.preventDefault();	
	var btnid = $j(e.target).parent().attr('id');	
	var newbookid = ( btnid == "prebtn" )?((No<=books.length-1&&No>0)?No-1:books.length-1):((No<books.length-1&&No>=0)?No+1:0);
	refreshBook(books[newbookid],$j('.book'));	
	currentbookNo = newbookid;
}
function refreshBook(currentbook,inwhichbook){	
	var img = inwhichbook.find('a.bookpix img');
	var title = inwhichbook.find('div.title a');
	var author = inwhichbook.find('div.author span');	
	img.attr('src', currentbook.previewUrl);	
	title.text(currentbook.title);
	title.attr('href',currentbook.url);
	img.parent().attr('href',currentbook.url);
	author.text(currentbook.author);		
	img.attr('title',currentbook.title);
}	
