var FORETAG = function(){
	var _R = {
		init : function( params ) {
			_R.params = params;
			_R.loadXml();
		},
		params : null,
		data : null,
		loadXml : function() {
			$.ajax({
				type : "GET",
                url: _R.params.url,
				url : _R.params.xmlPath,
				dataType : "xml",
				success : function( data ) {
					_R.data = data;
					_R.max = _R.params.perView;
					_R.count = $( "SpotEntry", data ).length;
					_R.preloadBooks();
					_R.browseBooks();
				}
			});
		},
		first : 0,
		max : 0,
		count : 0,
		preloadBooks : function() {
			$( "ul", "#foretag" ).empty();
			jobs=$(_R.data).find("SpotEntry")
			href=new Array
			desc=new Array
			random=new Array
			link=new Array
			$(jobs).each(function(){
				link.push($("Field5", this).text())
				href.push($("Field7", this).text())
				ratt=jobs.length
				desc.push($.trim( $( "Text1", this ).text() ));
			})
				f=""
				uniqueNumber=""
					if(!f){
						f = arguments.callee;
						f.usedNumbers = [];
					}
					while(!uniqueNumber){
					for(i=0;i<href.length;i++){
						var candidate = Math.floor((Math.random() * ratt))
							if(f.usedNumbers.indexOf(candidate) == -1){
								 uniqueNumber = candidate;
								 f.usedNumbers.push(uniqueNumber);
							}     
						}
					}
					
				
			
			for(i=0;i<f.usedNumbers.length;i++){
				var title = $.trim( $( "Field1", this ).text() );
				var image = $.trim( $( "image", this ).text() );
				var link = $.trim( $( "Field5", this ).text() );
				$( "ul", "#foretag" ).append([
					"<li><img src='http://img.icbdr.com/images/"+domain+"/Spot/"+domain+"FeatEmp/",
					href[f.usedNumbers[i]],
					"' /><a href='",
					image[f.usedNumbers[i]],
					"' class='info'><img src='",
					"ads/images/books_info.gif' width='15' height='16' alt='More Info' /></a></li>" ].join( "" ));
				$( "body" ).append([
					"<div class='books_tool_tip1' id='books_tool_tip1_",
					i,
					"'><div class='books_Rointer_left'><!-- books pointer --></div><div class='inner'><p>",
					"<p><strong>"+desc[f.usedNumbers[i]]+
					"</strong></p><p>","</li></p></div></div>" ].join( "" ));
			};
			$( ".info", "#foretag" ).hover(function( e ) {
				_R.tooltip.show( e, $( "#books_tool_tip1_" + $( "a.info", "#foretag" ).index( this ) ) );
			return false;
			}, function( e ) {
				_R.tooltip.hide( e, $( "#books_tool_tip1_" + $( "a.info", "#foretag" ).index( this ) ) );
			});
		},
		browseBooks : function( browse ) {
			if ( browse == "prev" ) {
				if ( _R.first == _R.count && ( _R.count % _R.max > 0 ) ) {
					_R.first = _R.first - ( ( _R.count % _R.max ) + _R.max );
				} else {
					_R.first = _R.first - ( _R.max * 2 );
				}
			}
			var range = 4;
			var start = 1;
			if ( range > _R.max ) {
				start = ( ( range - _R.max ) + 1 );
			}
			if ( _R.first == 0 ) {
				$( "#foretag .prev" ).css( "visibility", "hidden" );
			} else {
				$( "#foretag .prev" ).css( "visibility", "visible" );
			}
			if ( range < _R.count ) {
				$( "#foretag .next" ).css( "visibility", "visible" );
			} else if ( range >= _R.count ) {
				range = _R.count;
				$( "#foretag .next" ).css( "visibility", "hidden" );
			}
			$( "SpotEntry", _R.data ).each(function( i ) {
				if ( i >= _R.first && i < range ) {
					$( "#foretag li:eq(" + i + ")" ).fadeIn( "slow" );
				} else {
					$( "#foretag .inner .overclear li:eq(" + i + ")" ).css( "display", "none" );
				}
			});
		},
		tooltip : {
			show : function( e, $o ) {
				var v = _R.tooltip.getViewport();
				var pageX = _R.tooltip.getMouseCoord( v, e )[0] + 15;
				var pageY = _R.tooltip.getMouseCoord( v, e )[1];
				$o.find( ".books_Pointer_right" ).addClass( "books_pointer_left" ).removeClass( "books_pointer_right" );
				if ( pageX + $o.width() > v.innerWidth + v.pageXOffset ) {
					pageX = pageX - $o.width() - 30;
					$o.find( ".inner" ).addClass( "inner_right" );
					$o.find( ".books_pointer_left" ).addClass( "books_pointer_right" ).removeClass( "books_pointer_left" );
				}
				$o.css( "left", pageX ).css( "top", pageY ).css( "display", "block" );
			},
			hide : function( e, $o ) {
				$o.css( "display", "none" );
			},
			getMouseCoord : function( v, e ) {
				( !e ) ? e = window.event : e = e;
				( e.pageX ) ? v.pageX = e.pageX : v.pageX = e.clientX + v.scrollLeft;
				( e.pageY ) ? v.pageY = e.pageY : v.pageY = e.clientY + v.scrollTop;
				return [ e.pageX, e.pageY ];
			},
			getViewport : function() {
				var viewport = {}
				if ( self.innerHeight ) {
					viewport.pageYOffset = self.pageYOffset;
					viewport.pageXOffset = self.pageXOffset;
					viewport.innerHeight = self.innerHeight;
					viewport.innerWidth = self.innerWidth;
				} else if ( document.documentElement && document.documentElement.clientHeight ) {
					viewport.pageYOffset = document.documentElement.scrollTop;
					viewport.pageXOffset = document.documentElement.scrollLeft;
					viewport.innerHeight = document.documentElement.clientHeight;
					viewport.innerWidth = document.documentElement.clientWidth;
				}
				return viewport;
			}
		}
	};
	return {
		init : function( params ) {
			_R.init( params );
		}
	};
}();
