
var Toolbox = new Object();

Toolbox.movieFormID			=	'movieform';
Toolbox.movielistFormID		=	'movielistform';
Toolbox.movielistDivID		=	'movielist';		/* The movie div's only - not the container */
Toolbox.votebarID			=	'movievotebar';
Toolbox.moviecontainerID	=	'movieblock';

/*** Debug ***/

Toolbox.debugCount=0;
Toolbox.debug = function( str ) {
	var div = $('jsdebug');
	if (div) {
		div.innerHTML = '['+(Toolbox.debugCount++)+'] '+str+"<br>"+div.innerHTML;
	}
}


/*** Collapse ***/

Toolbox.collapse = function(divObj) {
	var d = Element.extend(divObj).up('div');
	if (d.className.indexOf('collapsed')!=-1) {
		d.className = d.className.replace('collapsed','expanded');
	} else if (d.className.indexOf('expanded')!=-1) {
		d.className = d.className.replace('expanded','collapsed');
	} else {
		d.className = d.className + ' collapsed';
	}
}

/*** Update Form ***/

Toolbox.formUpdate = function(formID,changes,submit) {
	/* Defaults */
	if (typeof(submit)=='undefined') { submit=0; }
	/* Load form */
	var formObj = $(formID);
	/* Update form */
	if (changes) {
		Object.keys(changes).each(function(elem){ formObj.select('[name='+elem+']').first().value = changes[elem]; })
	}
	/* Submit? */
	if (submit) {
		formObj.submit();
	}
}


/*** Votes ***/

Toolbox.showVote = function( element,imgurl,vote ) {
	Element.extend(element);
	var elements = element.up('div').select('input');
	for (i=0; i<elements.length; i++) {
		var newsrc = imgurl.replace('@',(i<=vote-1?1:0));
		if (newsrc!=elements[i].src) {
			elements[i].src=newsrc;
		}
	}
}

Toolbox.movieClickVote = function( vote ) {
	/* nuke any movie browser cache */
	/* Load movie form */
	var formObj = $(Toolbox.movieFormID);
	/* Update votebar */
	new Ajax.Updater(Toolbox.votebarID,'/members/rawmovievotebar/',{
		method:			'post',
		parameters:		{'movie_id':formObj.movie_id.value,'vote':vote},
		onComplete:		function() { Toolbox.movielistFromForm(); }
	});	
}


/*** Checkboxes ***/

Toolbox.toggleCheckboxes = function( form,name ) {
	for (var i=0; i<form.length; i++) {
		var e = form.elements[i];
		if ((e.type=='checkbox') && (e.name==name)) {
			e.checked = !e.checked;
		}
	}
}


/*** Movie ***/

Toolbox.movieClickViewmode = function(viewmode_id) {
	Toolbox.movieFromForm({'viewmode_id':viewmode_id});
}

Toolbox.movieClickQuality = function(quality_id) {
	Toolbox.movieFromForm({'quality_id':quality_id});
}

Toolbox.movieClickScene = function(scene_id) {
	Toolbox.movieFromForm({'scene_id':scene_id});
}

Toolbox.movieClickDownload = function() {
	var formObj = $(Toolbox.movieFormID);
	formObj.action = '/members/rawmoviedownload/';
	formObj.submit();
}

Toolbox.movieFromForm = function(changes) {
	/* Update form */
	Toolbox.formUpdate(Toolbox.movieFormID,changes);
	/* Load form */
	var formObj = $(Toolbox.movieFormID);
	/* Load movie */
	Toolbox.loadMovie({
		'movie_id':		formObj.movie_id.value,
		'scene_id':		formObj.scene_id.value,
		'quality_id':	formObj.quality_id.value,
		'viewmode_id':	formObj.viewmode_id.value
	});	
}

Toolbox.loadMovie = function(parm) {
	new Ajax.Updater($(Toolbox.moviecontainerID),'/members/rawmovie/',{
		method:			'post',
		parameters:		parm,
		onComplete:		function() { Toolbox.mPlayerMembers('embeddedmovie',{
			'file':			$(Toolbox.movieFormID).movie_url.value,
			'image':		$(Toolbox.movieFormID).movie_imgurl.value,
			'autostart':	($(Toolbox.movieFormID).autostart.value=='1')
		}); }
	});
}



/*** Partner Sites ***/

Toolbox.clickPartnerSite = function(site_id,movie_id) {
	var form = $('partnersitesform');
	form.movie_id.value	=	movie_id;
	form.action			=	Toolbox.partnersitesArr[site_id];
	form.submit();
}

Toolbox.setPartnerSites = function(partnersitesArr) {
	Toolbox.partnersitesArr = partnersitesArr;
}


/*** Movielist ***/

Toolbox.movielistHilite = function(movie_id) {
	var elements = $(Toolbox.movielistDivID).childElements();
	for (i=0; i<elements.length; i++) {
		if (elements[i].id.substring(0,5)=='movie') {
			var active = elements[i].id == 'movie'+movie_id;
			var index = elements[i].className.indexOf('active');
			if (active && (index==-1)) {
				elements[i].className = elements[i].className + ' active';
			} else if (!active && (index!=-1)) {
				elements[i].className = elements[i].className.replace(' active','');
			}
		}
	}
}

Toolbox.movielistClickMovie = function(movie_id,site_id) {
	if ((typeof(Toolbox.partnersitesArr)!='undefined') && (typeof(Toolbox.partnersitesArr[site_id])!='undefined')) {
		Toolbox.clickPartnerSite(site_id,movie_id);
	} else {
		Toolbox.movielistHilite(movie_id);
		Toolbox.loadMovie({'movie_id':movie_id,'site_id':site_id});
	}
}

Toolbox.movielistClickFilter = function(filter) {
	Toolbox.movielistFromForm({'filter':filter,'page':1});
}

Toolbox.movielistClickSortkey = function(sortkey) {
	Toolbox.movielistFromForm({'sortkey':sortkey,'page':1});
}

Toolbox.movielistClickPager = function(page) {
	Toolbox.movielistFromForm({'page':page});
}

Toolbox.movielistFromForm = function(changes) {
	/* Update form */
	Toolbox.formUpdate(Toolbox.movielistFormID,changes);
	/* Load form */
	var formObj = $(Toolbox.movielistFormID);
	/* Load content with updater */
	new Ajax.Updater(formObj.sendto.value,formObj.source.value,{
		method:			'post',
		parameters:		{
			'page':		formObj.page.value,
			'sortkey':	formObj.sortkey.value,
			'filter':	formObj.filter.value
		}
	});
}



/*** MediaPlayer ***/

Toolbox.mPlayerApplication = function(divID,vars) {
	if (typeof(vars)=='undefined') { vars = {}; };
	var defaults = {
		'width':				320,
		'height':				240+16,
		'showdigits':			false
	};	
	Object.keys(defaults).each(function(k){ if (typeof(vars[k])=='undefined') { vars[k]=defaults[k]; } });
	Toolbox.mPlayerGeneric(divID,vars);
}

Toolbox.mPlayerTour = function(divID,vars) {
	if (typeof(vars)=='undefined') { vars = {}; };
	var defaults = {
		'width':				352,
		'height':				243,
		'displayclick':			'link',
		'linkfromdisplay':		true,
		'linktarget':			'_self',
		'showdigits':			false
	};	
	Object.keys(defaults).each(function(k){ if (typeof(vars[k])=='undefined') { vars[k]=defaults[k]; } });
	Toolbox.mPlayerGeneric(divID,vars);
}

Toolbox.mPlayerMembers = function(divID,vars) {
	if (typeof(vars)=='undefined') { vars = {}; };
	var defaults = {
		'width':				576,
		'height':				432+16,
		'displayclick':			'link',
		'linkfromdisplay':		true,
		'linktarget':			'_self',
		'showdigits':			false,
		'usefullscreen':		true,
		'streamscript':			'lighttpd',
		'type':					'mp4'
	};	
	Object.keys(defaults).each(function(k){ if (typeof(vars[k])=='undefined') { vars[k]=defaults[k]; } });
	Toolbox.mPlayerGeneric(divID,vars);
}

Toolbox.mPlayerGeneric = function(divID,vars) {
	// Sanity check
	if (typeof($(divID))=='undefined') { return false; }
	if (typeof(vars['file'])=='undefined') { return false; }
	
	// Parameters
	var params = {
		'allowfullscreen':		true,
		'allowscriptaccess':	"never"
	};
	// Defaults
	var defaults = {
		'usefullscreen':		false,
		'autostart':			true,
		'quality':				true,
		'smoothing':			true,
		'overstretch':			true,
		'shownavigation':		true
	};
	Object.keys(defaults).each(function(k){ if (typeof(vars[k])=='undefined') { vars[k]=defaults[k]; } });

	// Site-specific defaults
	var sitedefaults = {
		'screwmywife.com':		{ 'backcolor':'0x730000','frontcolor':'0xffffff','lightcolor':'0xffffff','screencolor':'0xffffff' },
		'screwmyhusband.com':	{ 'backcolor':'0x000073','frontcolor':'0xffffff','lightcolor':'0xffffff','screencolor':'0xffffff' }
	};
	var hostname = document.location.hostname;
	if (typeof(sitedefaults[hostname])!='undefined') {
		Object.keys(sitedefaults[hostname]).each(function(k){ if (typeof(vars[k])=='undefined') { vars[k]=sitedefaults[hostname][k]; } });
	}

	swfobject.embedSWF(
		"/files/flash/mediaplayer/player.swf",
		divID,vars['width'],vars['height'],
		"9.0.98","swfobject/expressInstall.swf",
		vars,params
	);	
}


/*** ImageCycler ***/

function imageCycler(e,divObj) {
	// Extend element
	this.divObj = Element.extend(divObj);

	this.set = function(offset) {
		for (i=0; i<this.elements.length; i++) {
			this.elements[i].style.zIndex = 50-((i+offset) % this.elements.length);
			this.elements[i].style.display = 'inline';
		}
	}

	this.cycle = function() {
		if (!this.keepgoing) { return }
		this.set(this.offset++);
		var t=this;
		setTimeout(function(){ t.cycle(); },500);
	}

	this.stop = function() {
		this.keepgoing=0;
		this.set(0);
	}

	this.mouseOut = function(e) {
		// Check that we're really leaving
		e = e || window.event;
		var relatedTarget = $(e.relatedTarget || e.toElement);
		if (typeof(relatedTarget)=='undefined') return false;
		if (relatedTarget!=this.divObj && relatedTarget.childOf(this.divObj)==false) {
			this.stop();
		}
	}

	this.mouseOver = function(e) {
		// Check that we're really entering
		var relatedTarget = $(e.relatedTarget || e.fromElement);
		if (typeof(relatedTarget)=='undefined') return false;
		if (relatedTarget!=this.divObj && relatedTarget.childOf(this.divObj)==false) {
			this.init();
		}
	}

	this.init = function(e) {
		//this.elements = this.divObj.up('div').down('div.movieimage').select('img');
		this.elements = this.divObj.down('div.movieimage').select('[class="cyclingimage"]');
		this.offset = 1;
		this.keepgoing = 1;

		var t=this;
		this.divObj.onmouseout = function(e){ t.mouseOut(e); };
		this.cycle();
	}

	this.mouseOver(e);
}


/*** Info ***/

Toolbox.loadInfoFields = function(divID) {
	$(divID).innerHTML =
		'<input type="hidden" name="info_resolution" value="'+Toolbox.getResolution()+'" />'+
		'<input type="hidden" name="info_flashversion" value="'+Toolbox.getFlashVersion()+'" />';
}

Toolbox.getResolution = function() {
	var result = '';
	if ((typeof(screen.width)!='undefined') && (typeof(screen.height)!='undefined')) {
		result = result+screen.width+'x'+screen.height;
		if (typeof(screen.colorDepth)!='undefined') {
			result = result+'@'+screen.colorDepth+'bit';
		}
		return result;
	}
	return 'Unable to detect';
}


Toolbox.getFlashVersion = function() {
	var version;
	var axo;
	var e;

	var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
	var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
	var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

	// Check plugins array if available (Firefox/Netscape/Opera)
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			version = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}

	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) version = 4;

	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) version = 3;

	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) version = 2;

	// Windows Internet Explorer?	
	else if ( isIE && isWin && !isOpera ) {
		try {
			// version will be set for 7.X or greater players
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
			version = axo.GetVariable("$version");
		} catch (e) {}
		if (!version) {
			try {
				// version will be set for 6.X players only
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");

				// installed player is some revision of 6.0
				// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
				// so we have to be careful. 

				// default to the first public version
				version = "WIN 6,0,21,0";

				// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
				axo.AllowScriptAccess = "always";

				// safe to call for 6.0r47 or greater
				version = axo.GetVariable("$version");
			} catch (e) {}
		}
		if (!version) {
			try {
				// version will be set for 4.X or 5.X player
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
				version = axo.GetVariable("$version");
			} catch (e) {}
		}
		if (!version) {
			try {
				// version will be set for 3.X player
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
				version = "WIN 3,0,18,0";
			} catch (e) {}
		}
		if (!version) {
			try {
				// version will be set for 2.X player
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
				version = "WIN 2,0,0,11";
			} catch (e) {}
		}
	}

	if (!version) {
		version = 'Unable to detect';
	}

	return version;
}



