/*  jAdvert - jQuery based banner system
		Stack type - vertical slider
		VOD injection
*/ 

if (!window.jAdvert)
	var jAdvert = new Object();

jAdvert.Stack = {

	bannerList: [
	{	href: 'http://www.sensualadviser.com/-/all_adult_toys_collections_detailed/collectionid=NVC2436.html',
		img: 'http://images.adultemart.com/promo/Fleshlight_girls_vertical_banner_200x350_2_g.jpg', 
		alt: 'Fleshlight and the Number One Pornstar in the world, the exotic love goddess Tera Patrick!', 
		title: 'Tera Patrick&rsquo;s Pussy', 
		width: '200', height: '350'},

	{	href: 'http://www.sensualadviser.com/-/all_adult_toys_collections_detailed/collectionid=NVC2124.html',
		img: 'http://images.adultemart.com/promo/Fleshlight_girls_vertical_banner_200x350.jpg', 
		alt: 'Number 1 Bestselling Male Toy in the world. The most realistic Vaginal Intercourse Sensation!', 
		title: 'Fleshlight Girls', 
		width: '200', height: '350'},

	{	href: 'http://www.adultdvdemart.com/-/adult_blu_ray_discs_main.html',
		img: 'http://images.adultemart.com/promo/Adult_Blu_ray_vertical_banner_200x350.jpg', 
		alt: 'Adult Movies on Blu-ray Discs &ndash; the next generation of the Adult Entertainment!', 
		title: 'Adult Blu-ray Movies', 
		width: '200', height: '350'},

	{	href: 'http://www.sensualadviser.com/-/all_adult_toys_collections_detailed/collectionid=NVC2124.html',
		img: 'http://images.adultemart.com/promo/Fleshlight_girls_vertical_banner_200x350_3_g.jpg', 
		alt: 'The Number 1 Selling Male Sex Toy. Each Fleshlight Masturbation Sleeve is molded from girls&rsquo; actual vaginas', 
		title: '#1 Male Toy in the World', 
		width: '200', height: '350'},

	{	href: 'http://www.sensualadviser.com/-/sex_toy_category/categoryid=1319.html',
		img: 'http://images.adultemart.com/promo/Sexy_Masquerade_Costumes_200x350.jpg', 
		alt: 'Great Masquerade, Valentines Day and Halloween Sexy Costumes', 
		title: 'Sexy Costumes',
		width: '200', height: '350'},

	{	href: 'http://www.sensualadviser.com/-/all_sex_toys_catalog/makerid=535.html',
		img: 'http://images.adultemart.com/promo/BeAMonstar_Couples_200x350_2.jpg', 
		alt: 'Designed to intensify the sexual experience. Made with the highest concentration of natural herbs', 
		title: 'Be a Sex Monster', 
		width: '200', height: '350'}

	],

	init: function(id) {

		$('#leftColumn div.leftNavCustomerService').after('<div class="component advContainer stack-type" id="adv01"><ul class="anim"></ul></div>');

		var advContainer = $('#adv01 ul');

		jQuery.each(this.bannerList, function(el){
			advContainer.append('<li title="' + this.alt + '"><span class="img-cont"><a href="' + this.href + '"><img src="' + this.img + '" alt="' + this.alt + '" height="' + this.height + '" width="' + this.width + '" /></a></span><a href="' + this.href + '"><span class="caption">' + this.title + '</span></a></li>');
		});

			advContainer.find('li:first').addClass('current');

			this.start(advContainer);
	},


	start: function(ul) {

		rollovers = new animated(ul);

		ul.children('li').mouseover( function() {
			highLht(this);
		});

		ul.mouseout( function(event) {
//			stopAnim(event,s);
		} );

	}
}



var uniquepageid=window.location.href.replace("http://"+window.location.hostname, "").replace(window.location.search, "").replace(/^\//, ""); //get current page path and name, used to uniquely identify this page for persistence feature

function animatedcollapse(divId, animatetime, persistexpand, initstate, twinId){
	this.divId=divId;
	this.divObj=$('#' + divId);
	this.divObj.css({overflow:"hidden"});
	this.timelength=animatetime;
	this.initstate=(typeof initstate!="undefined" && initstate=="block")? "block" : "contract";
	this.isExpanded=animatedcollapse.getCookie(uniquepageid+"-"+divId); //"yes" or "no", based on cookie value
	if (this.isExpanded=="no") this.divObj.addClass('notexpanded');
	this.contentheight=this.divObj.height();
	var thisobj=this;
	if (isNaN(this.contentheight)){ //if no CSS "height" attribute explicitly defined, get DIV's height on window.load
		animatedcollapse.dotask(window, function(){thisobj._getheight(persistexpand)}, "load");
		if (!persistexpand && this.initstate=="contract" || persistexpand && this.isExpanded!="yes" && this.isExpanded!="") //Hide DIV (unless div should be expanded by default, OR persistence is enabled and this DIV should be expanded)
			this.divObj.hide(); //hide content (versus collapse) until we can get its height
	}
	else if (!persistexpand && this.initstate=="contract" || persistexpand && this.isExpanded!="yes" && this.isExpanded!="") //Hide DIV (unless div should be expanded by default, OR persistence is enabled and this DIV should be expanded)
		this.divObj.css({height:jQuery.boxModel?"0":"1px"}); //just collapse content if CSS "height" attribute available (IE quirks mode fix added)
	if (persistexpand) {
		animatedcollapse.dotask(window, function(){animatedcollapse.setCookie(uniquepageid+"-"+thisobj.divId, thisobj.isExpanded)}, "unload");
		this.persistexpand = persistexpand;
	}
	if (twinId) {
		this.twin = new animatedcollapse(twinId, animatetime, false, 'block');
	}
}

animatedcollapse.prototype._getheight=function(persistexpand){
	this.contentheight= this.divObj.height();
	if (!persistexpand && this.initstate=="contract" || persistexpand && this.isExpanded!="yes"){ //Hide DIV (unless div should be expanded by default, OR persistence is enabled and this DIV should be expanded)
		this.divObj.css({height:jQuery.boxModel?"0":"1px"}); //collapse content (IE quirks mode fix added)
		this.divObj.show();
	}
	else //else if persistence is enabled AND this content should be expanded, define its CSS height value so slideup() has something to work with
		this.divObj.css({height:this.contentheight+"px"});
}
animatedcollapse.prototype.adjust=function(what){
	this.divObjcss({height:'auto'});
	this.contentheight = (what) ? parseInt(what) : this.divObj.height();
}
animatedcollapse.prototype.update=function(what){
	this.contentheight = parseInt(what);
}


animatedcollapse.prototype._slideengine=function(direction){
	var dx = jQuery.boxModel?"0":"1"; // IE quirks mode fix
	var elapsed=new Date().getTime()-this.startTime; //get time animation has run
	var thisobj=this;
	if (elapsed<this.timelength){ //if time run is less than specified length
		var distancepercent=(direction=="down")? animatedcollapse.curveincrement(elapsed/this.timelength) : 1-animatedcollapse.curveincrement(elapsed/this.timelength);
		this.divObj.css({height:parseInt(Math.round(distancepercent * this.contentheight)+parseInt(dx)) +"px"});
		if (this.twin) {
			this.twin.divObj.css({height: parseInt(Math.round((1 - distancepercent) * this.contentheight)+parseInt(dx)) + 'px'});
		}
		this.runtimer=setTimeout(function(){thisobj._slideengine(direction)}, 10);
	}
	else{ //if animation finished
		this.divObj.css({height:(direction=="down")? this.contentheight+"px" : dx +"px"});
		this.isExpanded=(direction=="down")? "yes" : "no"; //remember whether content is expanded or not
		if (direction=="up") this.divObj.addClass('notexpanded');
		this.runtimer=null;
		if (this.persistexpand) animatedcollapse.setCookie(uniquepageid+"-"+this.divId, this.isExpanded);
		if (direction=="down") this.divObj.css({height: "auto"});//if height will change
		if (this.twin) {
			this.twin.divObj.css({height:(direction=="up")? this.twin.contentheight + "px" : dx +"px"});
		}
	}
}


animatedcollapse.prototype.slidedown=function(){
	if (typeof this.runtimer=="undefined" || this.runtimer==null){ //if animation isn't already running or has stopped running
		if (isNaN(this.contentheight)) //if content height not available yet (until window.onload)
			alert("Please wait until document has fully loaded then click again");
		else if (this.isExpanded == "no"){ //if content is collapsed
			this.startTime=new Date().getTime(); //Set animation start time
			this.divObj.removeClass('notexpanded');
			this._slideengine("down");
		}
	}
}

animatedcollapse.prototype.slideup=function(){
	if (typeof this.runtimer=="undefined" || this.runtimer==null){
		if (isNaN(this.contentheight))
			alert("Please wait until document has fully loaded then click again");
		else if (!this.isExpanded || this.isExpanded == "yes"){ //if content is expanded
			this.startTime=new Date().getTime();
			this._slideengine("up");
		}
	}
}

animatedcollapse.prototype.slideit=function(){
	this.isExpanded=animatedcollapse.getCookie(uniquepageid+"-"+this.divId)
	if (isNaN(this.contentheight))
		alert("Please wait until document has fully loaded then click again");
	else if ( this.isExpanded == "no") {
		this.slidedown();
		}
	else if ( !this.isExpanded || this.isExpanded == "yes") { //parseInt(this.divObj.style.height || this.divObj.height())==this.contentheight
		this.slideup();
		}
}

// -------------------------------------------------------------------
// A few utility functions below:
// -------------------------------------------------------------------

animatedcollapse.curveincrement=function(percent){
	return (1-Math.cos(percent*Math.PI)) / 2; //return cos curve based value from a percentage input
}


animatedcollapse.dotask=function(target, functionref, tasktype){ //assign a function to execute to an event handler (ie: onunload)
	var tasktype=(window.addEventListener)? tasktype : "on"+tasktype;
	if (target.addEventListener)
		target.addEventListener(tasktype, functionref, false);
	else if (target.attachEvent)
		target.attachEvent(tasktype, functionref);
}

animatedcollapse.getCookie=function(Name){ 
	var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
	if (document.cookie.match(re)) //if cookie found
		return document.cookie.match(re)[0].split("=")[1]; //return its value
	return "";
}

animatedcollapse.setCookie=function(name, value){
	var expiredays = 14;
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie= name+ "=" +escape(value)+
	((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}


function animated(el_id) {
	var prev_im = null;
	var im1 = null;
	var im2 = null;
	this._init_anim(el_id);
	var last_anim = null;
	var clr = 0;
}
animated.prototype._load_animation = function(im){
	var time = 500;
	var ul = im.parents('ul').children();
	if ($('#expanding')) $('#expanding').removeAttr('id');
	if (this.prev_im == im) {
		if (im.parents('li') == ul[0] && !im.hasClass('current')) {
			im.attr('id','expanding');
			this.im2 = new animatedcollapse('expanding',time,false,'contract');
			this.im2.isExpanded = 'no'; 
			this.im2.update(ul[ul.length-1].find('img').height());
			this.im2.slidedown();
//			im.parents('ul').children().removeClass('current');
			im.parents('li').addClass('current');
		}
		return;
	}
	this.prev_im.attr('id','collapsing');
	im.attr('id','expanding');
	ul.removeClass('current');
	$('#expanding').parents('ul').children().removeClass('current');
	$('#expanding').parents('li').addClass('current');

	this.im1 = new animatedcollapse('expanding', time, false, 'contract', 'collapsing');
	this.im1.isExpanded = 'no';
	this.im1.update(im.find('img').height());
	this.im1.slidedown();
	this.prev_im.removeAttr('id');
}

animated.prototype._init_anim = function(el){
	var li_all = $(el).children();
	this.prev_im = $(li_all[0]).find('.img-cont');
}
animated.prototype.animate = function (el){
	if (this.clr) clearTimeout(this.clr);
	var thisobj = this;
	this.last_anim = function () {
		thisobj._load_animation(el);
		thisobj.prev_im = el;
	};
	this.clr = setTimeout (this.last_anim,450);
}
animated.prototype.reset = function(){
	if (this.clr) clearTimeout(this.clr);
	this.last_anim = null;
}

var rollovers;

make_active = function (el){
	el.parents('ul').find('li').removeClass('current');
	el.addClass('current');
}

highLht = function(el) {
	el = $(el);
	if (!el || el.hasClass('current')) return false;
	if (el.parents().hasClass('stack-type') && el.find('.img-cont')) {
		rollovers.animate(el.find('.img-cont'));
	} else {
		make_active(el);
	}
}




$(document).ready( function(){
	jAdvert.Stack.init();
});


