//-- custom product browser --//
// © Copyright 2008 - Bryan Taggart/Axxess Africa


// declare global variables

var productsVisible = 6;
//--------------
var scrollIndex = 0;
var trackInt;
var trackArr;
var tempPos = 0;

function iniAxBrowser() {
	if (document.getElementById("axbrowser")) {

	var axBrowser = document.getElementById("axbrowser");
	var slideControlsObj = document.getElementById('slidecontrols');
	var productObj = document.getElementById('productslider');

	//axBrowser.style.width = (productsVisible * 128) + "px"; // product width 125
	axBrowser.style.width = "770px"; // 

	// check onload for length of products, if less than productsVisible , disable
	var productLength = productObj.getElementsByTagName('li').length;

	if (productLength > productsVisible) {
		slideControlsObj.style.display = "";
	}

	}
}






// need utility library

//---



function getPixelScroll(productObj, slideContainerObj, slideObj) {

	var productLength = productObj.getElementsByTagName('li').length;

	// productLength needs to be greater than productsVisible to scroll
	var productScrollTotal = (productLength-productsVisible)*productObj.getElementsByTagName('li')[0].offsetWidth;

	var slideContainerWidth = getWidth(slideContainerObj);

	var sliderWidth = getWidth(slideObj);
	var sliderTrackDistance = (slideContainerWidth-sliderWidth);

	var pixelIncrement = (productScrollTotal/sliderTrackDistance);
	return pixelIncrement;
}


//-----------------------------------------------------


function findRelPos(obj, which) {
var axBrowser = document.getElementById('axbrowser');
return (findPos(obj, which) - findPos(axBrowser, 'X'));
}


function moveSliderTrack(e) {

	clearInterval(trackInt);

	var axBrowser = document.getElementById('axbrowser');
	var slideContainerObj = document.getElementById('slidecontainer');
	var slideObj = document.getElementById('slidertrack');
	var productObj = document.getElementById('productslider');
	
	var leftTrap = findRelPos(slideContainerObj, 'X') ;
	var rightTrap = findRelPos(slideContainerObj, 'X') +getWidth(slideContainerObj);
	

	slideObj.style.left = (  (mousePos('X', e)-findPos(axBrowser, 'X')) - (getWidth(slideObj)/2)) +"px";
	
	// catch slider
	if (findRelPos(slideObj, 'X')<leftTrap) {
		slideObj.style.left = leftTrap+"px";
	} else if ( (findRelPos(slideObj, 'X')+getWidth(slideObj))>rightTrap) {
		slideObj.style.left = (rightTrap-getWidth(slideObj))+"px";
	}
	
	// move products
	var offsetPos = findRelPos(slideContainerObj, 'X')-findRelPos(slideObj, 'X');
	productObj.style.left = (offsetPos*getPixelScroll(productObj, slideContainerObj, slideObj))+"px";
}


function disableSelection() {
	return false;
}

function activateScroll(e) {

	// disable text selection

	if (document.body.attachEvent) { //IE
		document.body.attachEvent("onselectstart", disableSelection);
	} else if (document.body.addEventListener) { // FF
		document.body.addEventListener("onselectstart", disableSelection, false);
	}


	//--

	clearInterval(trackInt);

	// prevent bubbling
	if (!e) {var e = window.event;}
	e.cancelBubble = true;
	if (e.stopPropagation) {e.stopPropagation();}
	
	//-
	
	var axBrowser = document.getElementById('axbrowser');
	var slideContainerObj = document.getElementById('slidecontainer');
	var slideObj = document.getElementById('slidertrack');
	var productObj = document.getElementById('productslider');
	
	var leftTrap = findRelPos(slideContainerObj, 'X') ;
	var rightTrap = findRelPos(slideContainerObj, 'X') +getWidth(slideContainerObj);
	
	var startX = (  (mousePos('X', e)-findPos(axBrowser, 'X')) - findRelPos(slideObj, 'X'));
	
	document.onmousemove = function(e) {

		if (findRelPos(slideObj, 'X')>=leftTrap && (findRelPos(slideObj, 'X')+getWidth(slideObj))<=rightTrap) {
			slideObj.style.left = (  (mousePos('X', e)-findPos(axBrowser, 'X')) - startX)+"px";
			
			// catch slider
			if (findRelPos(slideObj, 'X')<leftTrap) {
				slideObj.style.left = leftTrap+"px";
			} else if ( (findRelPos(slideObj, 'X')+getWidth(slideObj))>rightTrap) {
				slideObj.style.left = (rightTrap-getWidth(slideObj))+"px";
			}
			
			// move products
			var offsetPos = findRelPos(slideContainerObj, 'X')-findRelPos(slideObj, 'X');
			productObj.style.left = (offsetPos*getPixelScroll(productObj, slideContainerObj, slideObj))+"px";
		}
		
	};
	
	
}





function minValueIndex(array) {
	var mn = array[0];

	var index = 0;
	for (i=0; i<array.length; i++) {
		if (array[i]<mn) {
			mn = array[i];
			index = i;
		}
	}
	return index;
}


function getClosestValue(arr, val) {
	var tempArr = new Array();

	for (var i = 0; i<arr.length; i++) {
		tempArr.push(Math.abs(arr[i]-val));
	}

	return minValueIndex(tempArr);
}




function doProductScroll(dir) {

	// calculate positions
	var slideContainerObj = document.getElementById('slidecontainer');
	var slideObj = document.getElementById('slidertrack');

	var slideContainerWidth = getWidth(slideContainerObj);
	var sliderWidth = getWidth(slideObj);
	var sliderTrackDistance = (slideContainerWidth-sliderWidth);
	var scrollIncrement = sliderTrackDistance / 4;
	
	var slidePos = findRelPos(slideObj, 'X') - findRelPos(slideContainerObj, 'X');
	trackArr = new Array(0,Math.round(scrollIncrement*1.33),Math.round(scrollIncrement*2.66),scrollIncrement*4);

	// reset scroll index
	scrollIndex = 0;

	scrollIndex += getClosestValue(trackArr,slidePos) + dir;

	if (scrollIndex == -1) {
		scrollIndex = 0;
	} else if (scrollIndex == 4) {
		scrollIndex = 3;
	}


	// set temporary position to current track position
	tempPos = slidePos;

	// easing
	clearInterval(trackInt);
	trackInt = setInterval(doTrackSlide, '100');
}




function doTrackSlide() {
	var slideContainerObj = document.getElementById('slidecontainer');
	var slideObj = document.getElementById('slidertrack');
	var productObj = document.getElementById('productslider');

	var leftTrap = findRelPos(slideContainerObj, 'X') ;
	var rightTrap = findRelPos(slideContainerObj, 'X') +getWidth(slideContainerObj);

	var slidePos = findRelPos(slideObj, 'X');

	var newPos = findRelPos(slideContainerObj, 'X')+trackArr[scrollIndex];


	if (slidePos<newPos || slidePos>newPos) {

		// move slider
		tempPos += ((newPos-slidePos)/1.5);
		slideObj.style.left = findRelPos(slideContainerObj, 'X')+tempPos+"px";


		// catch slider
		if (findRelPos(slideObj, 'X')<leftTrap) {
			slideObj.style.left = leftTrap+"px";
		} else if ( (findRelPos(slideObj, 'X')+getWidth(slideObj))>rightTrap) {
			slideObj.style.left = (rightTrap-getWidth(slideObj))+"px";
		}


		// move products
		var offsetPos = findRelPos(slideContainerObj, 'X')-findRelPos(slideObj, 'X');
		productObj.style.left = (offsetPos*getPixelScroll(productObj, slideContainerObj, slideObj))+"px";

	} else {
		clearInterval(trackInt);
		trackInt = "";
	}

}






document.onmouseup = function() {

	// enable text selection

	if (document.body.detachEvent) { //IE
		document.body.detachEvent("onselectstart", disableSelection);
	} else if (document.body.removeEventListener) { // FF
		document.body.removeEventListener("onselectstart", disableSelection, false);
	}

	//--



	if (typeof jQuery != undefined) {


if (this.$events != null) {


		document.onmousemove = function(event) {
		
// dock menu onmousemove

if(typeof jQuery=="undefined"||jQuery.event.triggered)return;event=jQuery.event.fix(event||window.event||{});var returnValue;var c=this.$events[event.type];var args=[].slice.call(arguments,1);args.unshift(event);for(var j in c){args[0].handler=c[j];args[0].data=c[j].data;if(c[j].apply(this,args)===false){event.preventDefault();event.stopPropagation();returnValue=false}}if(jQuery.browser.msie)event.target=event.preventDefault=event.stopPropagation=event.handler=event.data=null;return returnValue


		}

}



	} else {
		document.onmousemove = null;
	}
};



//-----------------------------





