loadXML = function(fileRoute){
	xmlDoc=null;
	 if (window.ActiveXObject){
		xmlDoc = new ActiveXObject('Msxml2.DOMDocument');
		xmlDoc.async=false;
		xmlDoc.load(fileRoute);
	}
	else if (document.implementation && document.implementation.createDocument){
		var xmlhttp = new window.XMLHttpRequest();
		xmlhttp.open("GET",fileRoute,false);
		xmlhttp.send(null);
		var xmlDoc = xmlhttp.responseXML.documentElement;
	}
	else {xmlDoc=null;}
	return xmlDoc;
}
var xmlDoc = loadXML("template/hetty_seablue_20110303/plugin/product/site_lang.php");
var product_plugin_1 = xmlDoc.getElementsByTagName("product_plugin_1")[0].childNodes[0].nodeValue;
var product_plugin_2 = xmlDoc.getElementsByTagName("product_plugin_2")[0].childNodes[0].nodeValue;
var product_plugin_3 = xmlDoc.getElementsByTagName("product_plugin_3")[0].childNodes[0].nodeValue;

var PRODUCTS = function(){
	var _P = {
		init : function( params ) {
			_P.params = params;
			_P.loadXml();
		},
		params : null,
		data : null,
		loadXml : function() {
			$.ajax({
				type : "GET",
				url : _P.params.xmlPath,
				dataType : "xml",
				success : function( data ) {
					_P.data = data;
					_P.max = _P.params.perView;
					_P.count = $( "product", data ).length;
					_P.preloadProducts();
					_P.browseProducts();
				}
			});
		},
		first : 0,
		max : 0,
		count : 0,
		preloadProducts : function() {
			$( "ul", "#products" ).empty();
			$( "product", _P.data ).each(function( i ) {
				var title = $.trim( $( "title", this ).text() );
				var href = $.trim( $( "href", this ).text() );
				$( "ul", "#products" ).append([
					"<li><a href='",
					href,
					"' class='thumb' target='_blank'><img src='",
					$.trim( $( "image > src", this ).text() ),
					"' width='",
					$( "image", this ).attr( "width" ),
					"' height='",
					$( "image", this ).attr( "height" ),
					title,
					"' /></a></li>" ].join( "" ));
				$( "body" ).append([
					"<div class='products_tool_tip' id='products_tool_tip_",
					i,
					"'><div class='products_pointer_left'><!-- products pointer --></div><div class='inner'><p>",
					"",
					$.trim( $( "sort", this ).text() ),
					" ",title,
					"</p>",
					$.trim( $( "price > total", this ).text() ),
					"",
					"</p></div></div>" ].join( "" ));
			});
			$( ".thumb", "#products" ).hover(function( e ) {
				var c_X = $(this).offset().left;
				var c_Y = $(this).offset().top;
				var c_W = $(this).width();
				var c_H = $(this).height();
				_P.tooltip.show( e, $( "#products_tool_tip_" + $( "a.thumb", "#products" ).index( this ) ), c_X, c_Y, c_W, c_H );
			}, function( e ) {
				_P.tooltip.hide( e, $( "#products_tool_tip_" + $( "a.thumb", "#products" ).index( this ) ) );
			});
			$( "#products .prev" ).click(function() {
				_P.browseProducts( "prev" );
				return false;
			});
			$( "#products .next" ).click(function() {
				_P.browseProducts( "next" );
				return false;
			});
		},
		browseProducts : function( browse ) {
			if ( browse == "prev" ) {
				if ( _P.first == _P.count && ( _P.count % _P.max > 0 ) ) {
					_P.first = _P.first - ( ( _P.count % _P.max ) + _P.max );
				} else {
					_P.first = _P.first - ( _P.max * 2 );
				}
			}
			var range = _P.first + _P.max;
			var start = 1;
			if ( range > _P.max ) {
				start = ( ( range - _P.max ) + 1 );
			}
			if ( _P.first == 0 ) {
				$( "#products .prev" ).css( "visibility", "hidden" );
			} else {
				$( "#products .prev" ).css( "visibility", "visible" );
			}
			if ( range < _P.count ) {
				$( "#products .next" ).css( "visibility", "visible" );
			} else if ( range >= _P.count ) {
				range = _P.count;
				$( "#products .next" ).css( "visibility", "hidden" );
			}
			$( "product", _P.data ).each(function( i ) {
				if ( i >= _P.first && i < range ) {
					$( "#products li:eq(" + i + ")" ).fadeIn( "slow" );
				} else {
					$( "#products li:eq(" + i + ")" ).css( "display", "none" );
				}
			});
			_P.first = range;
			$( "#products .showing" ).html([
				product_plugin_1,
				"<span class=\"start_range\">",
				start,
				"-",
				range,
				"</span>",
				product_plugin_2,
				"<span class=\"count\">",
				_P.count,
				"</span>",
				product_plugin_3 ].join( "" ));
		},
		tooltip : {
			show : function( e, $o, c_X, c_Y, c_W, c_H ) {
				var v = _P.tooltip.getViewport();
				var pageX = c_X+c_W+3;
				var pageY = c_Y+(c_H/2-6);
				$o.find( ".products_pointer_right" ).addClass( "products_pointer_left" ).removeClass( "products_pointer_right" );
				if ( pageX + $o.width() > v.innerWidth + v.pageXOffset - 10 ) {
					pageX = pageX - $o.width() - (c_W+4);
					$o.find( ".inner" ).addClass( "inner_right" );
					$o.find( ".products_pointer_left" ).addClass( "products_pointer_right" ).removeClass( "products_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 ) {
			_P.init( params );
		}
	};
}();
