BASIK_VSHomePage = function(autopushes)


{


}





var proto = BASIK_VSHomePage.prototype;





// Handle the animated sub features.


//


//original


proto.wrapFeatures			= true;		// If true the features are endless.


proto.slideOnHoldButtons	= false;	// If true the features slide while the buttons are held down.


proto.autoPlay				= false;	// If true the features slide by themselves when the mouse is not over them.


proto.autoPush				= true;		// If true and autoPlay is false then the left arrow will auto-click after 4 seconds of inactivity.





proto.autoPlayLeft 			= true;


proto.buttonIsDown 			= false;


proto.isMouseOverFeatures 	= false;


proto.autoPushIntervalId 	= null;


proto.overLeftArrow 		= false;


proto.overRightArrow 		= false;


proto.maxAutoPushes			= 999;


proto.pushDelay				= 3000;


proto.moveInterval			= 1;


proto.abTestMode			= "";





proto.subFeaturesWidth 			= 190;		// Corrected in initialize ( ) to be the actual width of ALL the sub-features content.


proto.subFeatureRightMargin		= 3;


proto.subFeatureWidth			= 187;


proto.subFeatureContainerWidth	= 190;





// Called after the page is loaded. Initializes some callbacks


// and determines the rendered with of the features.


//





proto.initialize = function (abtestmode)
{
	if (abtestmode != undefined) {
		this.abTestMode = abtestmode;
		if (abtestmode == "B") {
//			this.maxAutoPushes = 4;
null;
		}
		if (abtestmode == "C") {
			this.wrapFeatures			= true;		// If true the features are endless.
			this.slideOnHoldButtons		= true;		// If true the features slide while the buttons are held down.
			this.autoPlay				= true;		// If true the features slide by themselves when the mouse is not over them.
			this.autoPush				= false;	// If true and autoPlay is false then the left arrow will auto-click after 4 seconds of inactivity.
			this.moveInterval			= 6;
			this.overLeftArrow 			= true;
			this.overRightArrow 		= true;
		}
	}
	var element = document.getElementById ( 'entries' );
	this.subFeaturesWidth = 0;
	
	for ( var index = 0; index < element.childNodes.length; index++ )
	{
		var featureWidth = element.childNodes [ index ].offsetWidth;

		if ( ! isNaN ( featureWidth ) && featureWidth > 0 )
		{
			// Add in the right margin.
			//
			this.subFeaturesWidth += featureWidth + this.subFeatureRightMargin;
		}
	}

	// IE 6 needs a fudge factor I believe because the HTML comment tags get
	// out of order during the wrap process and then rendering gets thrown off.
	//

	element.style.width = ( this.subFeaturesWidth + 6 ) + 'px';

	// Subtract for the last right margin.
	//
	this.subFeaturesWidth -= this.subFeatureRightMargin;

	// Opera 7 has troubles with the feature wrapping function
	// so do a test and turn it off is we get an error.
	//
	
	if ( this.wrapFeatures )
	{
		try
		{
			var child = element.removeChild ( element.lastChild );
			element.appendChild ( child );
		}
		catch ( e )
		{
			this.wrapFeatures = false;
		}
	}

	if ( this.autoPlay || this.autoPush )
	{
		if ( document.captureEvents )
		{
			document.captureEvents ( Event.MOUSEMOVE );
		}
		
		document.onmousemove = this.checkForSubFeatureRollOver;
	}

	if ( this.autoPlay )
	{
		this.autoPlaySubFeatures ( null );
	}
	else if ( this.autoPush )
	{
		this.autoPushSubFeatures ( true );
	}

	// On every mouse down event see if the email sign 
	// up form should be reset.
	//
	
	if ( document.captureEvents )
	{
		document.captureEvents ( Event.MOUSEDOWN );
	}

	document.onmousedown = this.resetSignUpForEmailInput;
}

// Starts sliding the sub-features.
//


proto.autoPlaySubFeatures = function ( event )
{


	// The sub-features move has completed. If autoplay is on


	// and the mouse is not over the area then restart.


	//





	var delta = bsk.subFeatureWidth + bsk.subFeatureRightMargin;


	bsk.moveSubFeatures ( bsk.autoPlayLeft ? - delta : delta, bsk.buttonIsDown ? .75 : 6, '', false );


	document.getElementById ( 'entries' ).basikMoveTween.onMotionFinished = bsk.autoPlaySubFeatures;


}


	


// Auto-push the left button every 4 seconds.


//





proto.autoPushSubFeatures = function ( startInterval, delay )


{


	if ( this.autoPushIntervalId != null )


	{


		window.clearInterval ( this.autoPushIntervalId );


		this.autoPushIntervalId = null;


	}


	


	if ( startInterval && ( this.maxAutoPushes == null || this.maxAutoPushes > 0 ) )


	{


		if (this.abTestMode == "C") {


			this.autoPushIntervalId = window.setInterval ( "bsk.handleSubFeatureButtonPress ( true )", 4000 );


		} else {


			this.autoPushIntervalId = window.setInterval ( "bsk.handleSubFeatureButtonPress ( false, true )", ! delay ? this.pushDelay : delay );


		}


	}


}





// Called whenever the mouse moves to see if the is over the


// sub-features. If so, the sub-features are stopped if they are


// currently auto-playing.


//





proto.checkForSubFeatureRollOver = function ( event )


{


	event = bsk.normalizeEvent ( event );


	


	var subFeatures = document.getElementById ( 'subFeatures' );


	var featuresPosition = bsk.findPos ( subFeatures );


	


	var subFeaturesContainer = document.getElementById ( 'subFeaturesContainer' );


	var featuresContainerPosition = bsk.findPos ( subFeaturesContainer );


	


	// Light up the arrows when we're over the sub-


	// features.


	//


	


	var rightArrow = document.getElementById ( 'right' );


	var leftArrow = document.getElementById ( 'left' );


	

/*
	if ( event.x >= featuresContainerPosition [ 0 ] && event.x <= featuresContainerPosition [ 0 ] + subFeaturesContainer.offsetWidth && event.y >= featuresContainerPosition [ 1 ] && event.y < featuresContainerPosition [ 1 ] + subFeaturesContainer.offsetHeight )


	{


		if ( ! bsk.overRightArrow )


		{


			rightArrow.src = '/images/scrollBanner/feature_arrow_right_over.gif';


		}


		


		if ( ! bsk.overLeftArrow )


		{


			leftArrow.src = '/images/scrollBanner/feature_arrow_left_over.gif';


		}


	}


	else


	{


		if ( ! bsk.overRightArrow )


		{


			rightArrow.src = '/images/scrollBanner/feature_arrow_right.gif';


		}


		


		if ( ! bsk.overLeftArrow )


		{


			leftArrow.src = '/images/scrollBanner/feature_arrow_left.gif';


		}


	}

*/
	


	if ( event.x >= featuresPosition [ 0 ] && event.x <= featuresPosition [ 0 ] + subFeatures.offsetWidth && event.y >= featuresPosition [ 1 ] && event.y < featuresPosition [ 1 ] + subFeatures.offsetHeight )


	{


		if ( bsk.autoPlay )


		{


			if ( ! bsk.buttonIsDown && ! bsk.isMouseOverFeatures )


			{


				bsk.isMouseOverFeatures = true;


				bsk.moveSubFeatures ( -10, 1, null, false );


			}


		}


		else if ( bsk.autoPush )


		{


			bsk.autoPushSubFeatures ( false );


		}


	}


	else


	{


		if ( bsk.autoPlay )


		{


			if ( bsk.buttonIsDown )


			{


				bsk.handleSubFeatureButtonHold ( bsk.autoPlayLeft, false );


			}


			


			if ( bsk.isMouseOverFeatures )


			{


				bsk.isMouseOverFeatures = false;


				bsk.autoPlaySubFeatures ( null );


			}


		}


		else if ( bsk.autoPush )


		{


			if ( bsk.autoPushIntervalId == null )


			{


				bsk.autoPushSubFeatures ( true );


			}


		}


	}


	


	return true;


}





// The left or right nav button was clicked. This only does


// something if slideOnHoldButtons is false.


//





proto.handleSubFeatureButtonPress = function ( isLeft, isAutoPush )
{
	var delta = this.subFeatureContainerWidth + bsk.subFeatureRightMargin;

	if (this.abTestMode == "C") {
		if ( ! this.slideOnHoldButtons )
		{
			this.moveSubFeatures ( isLeft ? delta : - delta, null, null, true );
		}

		if ( this.autoPush )
		{
			this.autoPushSubFeatures ( true );
		}

	} else {
	//old
		if ( isAutoPush )
		{
            if (this.maxAutoPushes != null)
			    this.maxAutoPushes--;
		}

		else

		{
			// The person clicked the button so disable the auto-push feature.
			//

			this.autoPush = false
			this.autoPushSubFeatures ( false );
		}


		if ( ! this.slideOnHoldButtons )
		{
			this.moveSubFeatures ( isLeft ? delta : - delta, null, null, true );
		}

		if ( this.autoPush )
		{
			this.autoPushSubFeatures ( true );
		}
	}
}





// The left or right nav arrow was pressed or released. This


// only does anything if slideOnHoldButtons is true in which


// case it slides the sub-features quickly while the button is


// pressed.


//





proto.handleSubFeatureButtonHold = function ( isLeft, isHold )


{


	if ( this.slideOnHoldButtons )


	{


		if ( isHold )


		{


			this.autoPlayLeft = ! isLeft;


			this.buttonIsDown = true;


			this.autoPlaySubFeatures ( null );


		}


		else


		{


			this.autoPlayLeft = true;


			this.buttonIsDown = false;


			this.moveSubFeatures ( isLeft ? 90 : -90, 1, null, false );


		}


	}


}





// This actually moves the sub-features.


//





proto.moveSubFeatures = function ( delta, time, easingFunction, synch )


{


	time = time == null ? 1 : time;


	//time = this.moveInterval;


	


	var minMove = -1 * ( this.subFeaturesWidth - this.subFeatureContainerWidth );


	var maxMove = 0;


	


	var element = document.getElementById ( 'entries' );


	var currentPosition = this.styleToNumber ( element.style.left, 0 );


	var targetPosition = currentPosition + delta;


	if ( synch )
	{
		// Make sure we're moving to the edge of a sub-feature.
		//
		var synchPoint = this.subFeatureWidth + this.subFeatureRightMargin;
		var nearPosition = Math.floor ( targetPosition / synchPoint ) * synchPoint;
		var farPosition = Math.ceil ( targetPosition / synchPoint ) * synchPoint;

		if ( Math.abs ( nearPosition - currentPosition ) < Math.abs ( farPosition - currentPosition ) )
		{
			delta = nearPosition - currentPosition;
		}
		else
		{
			delta = farPosition - currentPosition;
		}
	}

	if ( this.wrapFeatures )
	{
		// If we are about to go beyond the end of the content
		// re-order the sub features.
		//
if (minMove == 0 && maxMove == 0) return;
var loopControl = 0;
		while ( targetPosition < minMove || targetPosition > maxMove )
		{
// Gökhan Çevik tarafından loop a girmemesi ve ekranı kitlememsi için eklendi. (Program HTML editöründe kitlenebiliyordu.
loopControl++;
if(loopControl > 10) return;
//////////////
			// Move the first child to the end of the list or
			// the last child to the beginning.
			//
			element.style.visibility = "hidden";
			var child;

			while ( true )
			{
				if ( targetPosition < minMove )
				{
					child = element.removeChild ( element.firstChild );
					element.appendChild ( child );
				}
				else
				{
					child = element.removeChild ( element.lastChild );
					element.insertBefore ( child, element.firstChild );
				}

				if ( child.nodeName.toLowerCase ( ) == "div" )
				{
					break;
				}
			}

			
			if ( targetPosition < minMove )
			{
				currentPosition += child.offsetWidth + this.subFeatureRightMargin;
				targetPosition += child.offsetWidth + this.subFeatureRightMargin;
			}
			else
			{
				currentPosition -= child.offsetWidth + this.subFeatureRightMargin;
				targetPosition -= child.offsetWidth + this.subFeatureRightMargin;
			}


			element.style.left = currentPosition + 'px';
			element.style.visibility = "visible";
		}
	}

	this.moveElement ( 'entries', 'left', delta, minMove, maxMove, time, easingFunction, true );


}


				


proto.resetSignUpForEmailInput = function ( event )


{


//	event = event == null ? window.event : event;


//	


//	var isOutsideInput = true;


//	var signUpForEmailInput = document.getElementById ( 'signUpForEmailInput' );


//	


//	var scan = event.target;


//	


//	if ( ! scan && event.srcElement )


//	{


//		scan = event.srcElement;


//	}


//	


//	if ( scan.nodeType == 3 ) // defeat Safari bug (http://www.quirksmode.org/js/events_properties.html#target)


//	{


//		scan = scan.parentNode;


//	}


//	


//	while ( scan != null )


//	{


//		if ( scan == signUpForEmailInput )


//		{


//			isOutsideInput = false;


//			break;


//		}


//		


//		scan = scan.parentNode;


//	}





//	if ( isOutsideInput )


//	{


//		document.getElementById ( 'signUpForEmailText' ).value = 'Sign up for Email';


//	}


}





// Workaround for IE issue of embedding ActiveX controls in a disabled state.


//





proto.documentWrite = document.write;


proto.documentWriteLn = document.writeln;


proto.embedSrc;





proto.captureWrites = function ( )


{


	this.embedSrc = '';


	document.write = function ( string ) { bsk.embedSrc += string; };


	document.writeln = function ( string ) { bsk.embedSrc += string + "\n"; };


}





proto.releaseWrites = function ( )


{


	document.write = this.documentWrite;


	document.writeln = this.documentWriteLn;


	document.write ( this.embedSrc );


	this.embedSrc = '';


}





//


// End of IE workaround code.





// Macromedia stuff to do image swapping on rollover.


//





proto.swapImgRestore = function () {


	var i,x,a=document.sr; 


	for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) {


		x.src=x.oSrc;


	}


}





proto.findObj = function (n, d) {


	var p,i,x;  


	if(!d) d=document;


	if((p=n.indexOf("?"))>0&&parent.frames.length) {


	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}


	if(!(x=d[n])&&d.all) x=d.all[n];


	for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];


	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=this.findObj(n,d.layers[i].document);


	if(!x && d.getElementById) x=d.getElementById(n); return x;


}





proto.swapImage = function () {


	var i,j=0,x,a=arguments; // swapImage.arguments


	document.sr=new Array;


	for(i=0;i<(a.length-2);i+=3)


	if ((x=this.findObj(a[i]))!=null){


	document.sr[j++]=x;


	if(!x.oSrc) {


		x.oSrc=x.src;


	}


	x.src=a[i+2];}


}





//


// End of Macromedia rollover code.





// Helper to preload a list of images.


//





proto.preloadImageList = function ( )
{
	if ( this.iL )
	{
		var d = document; 
		
		if ( d.images )
		{ 
			if ( ! d.p )
				d.p = new Array ( );

			var i, j = d.p.length;

			for ( i = 0; i < this.iL.length; i++ )
			{
				if ( this.iL [ i ].indexOf ( "#" ) != 0 )
				{ 
					d.p [ j ] = new Image; 
					d.p [ j++ ].src = this.iL [ i ];
				}
			}
		}
	}
}





// Find the position of an element in the browser.


//


// http://www.quirksmode.org/js/findpos.html


//





proto.findPos = function (obj) {


	var curleft = curtop = 0;


	if (obj.offsetParent) {


//		do {


			curleft += obj.offsetLeft;


			curtop += obj.offsetTop;


//		} while (obj = obj.offsetParent);


	}


	return [curleft,curtop];


}





// Find the position of the mouse in the browser.


//





proto.normalizeEvent = function ( event )


{


	var myEvent = new Object ( );


	


	myEvent.x = 0;


	myEvent.y = 0;





	event = event == null ? window.event : event;


	


	if ( event.pageX || event.pageY )


	{


		myEvent.x = event.pageX;


		myEvent.y = event.pageY;


	}


	else if ( event.clientX || event.clientY )


	{


		myEvent.x = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;


		myEvent.y =event.clientY + document.body.scrollTop + document.documentElement.scrollTop;


	}


	


	return myEvent;


}





// The remaining code does the DHTML sliding. fading and revealing animations.


//


// Requires Tween.js


//





proto.styleToNumber = function ( style, defaultValue )


{


	var value = defaultValue;


	


	if ( style != null && style.length )


	{


		var found = style.match ( /^(-?\d+)/ );


		value = found != null && found.length > 0 ? Number ( found [ 0 ] ) : defaultValue;


	}





	return value;	


}





proto.moveElement = function ( elementId, style, delta, moveMin, moveMax, time, easingFunction, resetTarget )


{


	var atLimit = false;


	


	if ( delta == null || delta == 0 )


	{


		return atLimit;


	}


	


	var element = document.getElementById ( elementId );


	


	if ( element.basikMoveTween != null )


	{


		element.basikMoveTween.stop ( );


	}


	


	var currentPosition = this.styleToNumber ( element.style [ style ], 0 );


	


	if ( resetTarget )


	{


		element.basikTarget = currentPosition + delta;


	}


	else


	{


		if ( element.basikTarget == null )


		{


			element.basikTarget = currentPosition;


		}


		


		element.basikTarget += delta;


	}


	


	if ( element.basikTarget <= moveMin )


	{


		element.basikTarget = moveMin;


		atLimit = true;


	}


	


	if ( element.basikTarget >= moveMax )


	{


		element.basikTarget = moveMax;


		atLimit = true;


	}


	


	element.basikMoveTween = new Tween ( element.style, style, easingFunction == null ? Tween.strongEaseOut : easingFunction, currentPosition, element.basikTarget, time == null ? .5 : time, 'px' );


	


	element.basikMoveTween.start ( );


	


	return atLimit;


}





bsk = new BASIK_VSHomePage ( );






