function MagneticVideo(swfID) {
	
	this.swfID = swfID;
	this.htmlReady = false;
    this.swfReady = false;

	/* PUBLIC called by JavaScript/HTML */
    //call this method when web page is loaded and ready
    this.htmlIsReady = function() {
        this.htmlReady = true;
    }
    
	/*
	* setPlaylist
	* param path = URL of playlist XML
	* returns true if SWF is ready and therefore loading playlist XML
	*/
	this.magInit = function(path) {
        if (this.isReady()) {
			if (mag_autoPlaySwitch == "false") {
				mag_setautoPlay("true");
				this.setInitPlaylist(path, 'false', 'false');
			} else {
				this.setInitPlaylist(path, 'true', 'false');
			}
			return true;
		}
		return false;
    }
	
	this.setPlaylist = function(path) {
        if (this.isReady()) {
			var swf = this.getSWF();
			//swf.setAutoPlay(mag_autoPlaySwitch);
			swf.setPlaylist(path);
			return true;
		}
		return false;
    }
	this.setInitPlaylist = function(path, initState, endState) {
        if (this.isReady()) {
			var swf = this.getSWF();
			swf.setInitPlaylist(path, initState, endState);
			return true;
		}
		return false;
    }

	/*
	* getPlaylist
	* If SWF has loaded the playlist XML, returns playlist as a JS object
	* else returns null
	*/
	this.getPlaylist = function() {
        if (this.isReady()) {
			return this.getSWF().getPlaylist();
		}
		return null;
	}
	
	
	/*
	* Returns object with properties of current video.
	*/
	this.getCurrentVideo = function() {
		if (this.isReady()) {
			return this.getSWF().getCurrentVideo();
		}
		return null;
	}
	
	
	
	this.openWildfire = function() {
		if (this.isReady()) {
			this.getSWF().openWildfire();
		}
	}
	   
	
	
	/*
	* SWF calls - methods below are called by SWF only
	*/
	/*
	this.BeaconCall = function() {
		alert('BeaconCall');
	}
	*/
	
    //SWF calls this method to check that web page is ready
    this.isHTMLReady = function() {
        return this.htmlReady;
    }
    
    //SWF calls this method to confirm that SWF is ready
    this.swfIsReady = function() {
        this.swfReady = true;
    }

	//SWF when playlist XML has loaded.
	this.playlistLoaded = function() {
		//alert("playlist loaded");
	}
	
	this.getVideoId = function(video_ID) {
		//alert(video_ID);
	}
	
	this.playPauseSwitch = function(switchData) {
		//alert(switchData);
		//var magCurrentHubPopularPlay = $("#hubFeedCaro #popular-videos .playingMovieLi a").attr("id");
		//var magCurrentHubLatestPlay = $("#hubFeedCaro #latest-videos .playingMovieLi a").attr("id");
		//var magCurrentChannelPlay = $("#channelDiv .playingNow a").attr("id");
		//var magCurrentFeedPlay = $("#myFeedDiv .playingNow a").attr("id");
		
		//if (magCurrentHubPopularPlay) {
			
		//} else if (magCurrentHubLatestPlay) {
			
		//} else if (magCurrentChannelPlay) {
			
		//} else if (magCurrentFeedPlay) {
			
		//}
	}
	//Called by SWF when current video is finished.
	this.videoFinished = function() {
		//alert("video finished");
		// HUB
		var magCurrentHubPopularPlay = $("#hubFeedCaro #popular-videos .playingMovieLi a").attr("id");
		var magCurrentHubLatestPlay = $("#hubFeedCaro #latest-videos .playingMovieLi a").attr("id");
		// CHANNEL / MY CHANNEL
		//var magCurrentChannelPlay = $("#channelDiv .playingNow a").attr("id");
		// MY FEED
		var magCurrentFeedPlay = $("#myFeedDiv .playingNow a").attr("id");
		
		// CHECK CONT PLAY
		if (mag_continuousPlayState == "on") {
		
		// HUB
		if (magCurrentHubPopularPlay) {
		var magCurrentHubNum = eval(magCurrentHubPopularPlay);
		magCurrentHubNum++;
		var magNextHubPlay = "#hubFeedCaro #popular-videos li .videoInfoDiv #"+(magCurrentHubNum);
			if (magCurrentHubNum == 5 && $("#hubFeedCaro").hasClass("viewingPage_1") || magCurrentHubNum == 10 && $("#hubFeedCaro").hasClass("viewingPage_2")) {
				$(".nextDiv").click();
				$(magNextHubPlay).click();
			} else {
				if (magCurrentHubPopularPlay == "14") {
					//alert("we are on last");
					mag_setautoPlay('false');
					$("#hubFeedCaro ul .focusedLi").removeClass("focusedLi");
					$("#hubFeedCaro ul li:eq(4)").addClass('focusedLi');
					$("#hubFeedCaro").animate({"left": "0px"}, 1000);
					$("#hubFeedCaro").removeClass().addClass("viewingPage_1");
					$("#hubFeedCaro #popular-videos li .videoInfoDiv").find("#0").click();
				} else {
					$(magNextHubPlay).click();
				}
			}
		
		} else if (magCurrentHubLatestPlay) {
		var magCurrentHubLatestNum = eval(magCurrentHubLatestPlay);
		magCurrentHubLatestNum++;
			if (magCurrentHubLatestNum == 5 && $("#hubFeedCaro").hasClass("viewingPage_1") || magCurrentHubLatestNum == 10 && $("#hubFeedCaro").hasClass("viewingPage_2")) {
				$(".nextDiv").click();
				$("#hubFeedCaro #latest-videos li .videoInfoDiv").find("#"+magCurrentHubLatestNum).click();
			} else {
				if (magCurrentHubLatestPlay == "14") {
					//alert("we are on last");
					mag_setautoPlay('false');
					$("#hubFeedCaro ul .focusedLi").removeClass("focusedLi");
					$("#hubFeedCaro ul li:eq(4)").addClass('focusedLi');
					$("#hubFeedCaro").animate({"left": "0px"}, 1000);
					$("#hubFeedCaro").removeClass().addClass("viewingPage_1");
					$("#hubFeedCaro #latest-videos li .videoInfoDiv").find("#0").click();
				} else {
					$("#hubFeedCaro #latest-videos li .videoInfoDiv").find("#"+magCurrentHubLatestNum).click();	
				}
				
			}
		
		} else if (mag_currentChannelPage) {
		var mag_setTotalChannelPages = $('#channelTotalSpan').html();
		//alert('total pages '+mag_setTotalChannelPages);
		var mag_setChangeVal = "";
		var mag_setPageDistance = 0;
		var mag_setPaginateFrom = 0;
		var mag_setLookingPage = $('#channelCurrentSpan').html();
		//alert('We are on a channel playlist, cont. play is turned on, looking at page '+mag_setLookingPage);
		var magCurrentNum = eval(mag_currentChannelVideo);
		//alert('currently playing video is '+magCurrentNum+' which is located on page '+mag_currentChannelPage);
		magCurrentNum++;
		mag_setTriggerState(magCurrentNum);
		//alert('next video would be '+magCurrentNum);
			if (mag_currentChannelPage == mag_setLookingPage && magCurrentNum <= 3) {
				//alert('we are on correct page and NOT ON last video');
				if (mag_setLookingPage == mag_setTotalChannelPages && magCurrentNum == mag_currentChannelLast) {
				mag_setautoPlay('false');
				mag_setChangeVal = "-1";
				mag_setTriggerState("0");
				ajax('VideoUtil::videosFromPlaylistPageIt', 'cur_pg=2&change='+mag_setChangeVal+'&channel_guid='+$(".myChannelBrowse .browseFwdDiv").attr("channel_guid")+'&playlist_guid='+$(".myChannelBrowse .browseFwdDiv").attr("playlist_guid")+'', '', '', '');
				} else {
					var magNextPlay = "#channelDiv #"+(magCurrentNum);
					$(magNextPlay).click();
					mag_setTriggerState("-1");
				}
			} else if (mag_currentChannelPage == mag_setLookingPage && magCurrentNum == 4) {
				//alert('we are on correct page and ON last video');
				if (mag_setLookingPage == mag_setTotalChannelPages && magCurrentNum == mag_currentChannelLast) {
				mag_setautoPlay('false');
				mag_setChangeVal = "-1";
				mag_setTriggerState("0");
				ajax('VideoUtil::videosFromPlaylistPageIt', 'cur_pg=2&change='+mag_setChangeVal+'&channel_guid='+$(".myChannelBrowse .browseFwdDiv").attr("channel_guid")+'&playlist_guid='+$(".myChannelBrowse .browseFwdDiv").attr("playlist_guid")+'', '', '', '');
				} else {
					mag_setChangeVal = "1";
					mag_setPaginateFrom = eval(mag_currentChannelPage);
					mag_setTriggerState("0");
					ajax('VideoUtil::videosFromPlaylistPageIt', 'cur_pg='+mag_setPaginateFrom+'&change='+mag_setChangeVal+'&channel_guid='+$(".myChannelBrowse .browseFwdDiv").attr("channel_guid")+'&playlist_guid='+$(".myChannelBrowse .browseFwdDiv").attr("playlist_guid")+'', '', '', '');
				}
				
			} else if (mag_currentChannelPage != mag_setLookingPage) {
				if (mag_currentChannelPage == mag_setTotalChannelPages && magCurrentNum == mag_currentChannelLast) {
				mag_setautoPlay('false');
				mag_setChangeVal = "-1";
				mag_setTriggerState("0");
				mag_setPaginateFrom = "2";
					if (mag_setLookingPage != "1") {
						ajax('VideoUtil::videosFromPlaylistPageIt', 'cur_pg='+mag_setPaginateFrom+'&change='+mag_setChangeVal+'&channel_guid='+$(".myChannelBrowse .browseFwdDiv").attr("channel_guid")+'&playlist_guid='+$(".myChannelBrowse .browseFwdDiv").attr("playlist_guid")+'', '', '', '');	
					} else {
						$('.videoDiv #0').click();
					}
				} else {
					//alert('We are not on correct page and need to paginate to correct page');
					mag_setPageDistance = mag_setLookingPage-mag_currentChannelPage;
					//alert('we are '+mag_setPageDistance+' page(s) away');
					if (mag_setPageDistance<0) {
					//alert('we need to move ahead in paging');
					mag_setChangeVal = "1";
					mag_setPaginateFrom = eval(mag_currentChannelPage)-1;
					
					} else if (mag_setPageDistance>0) {
					//alert('we need to move back in paging');
					mag_setChangeVal = "-1";
					mag_setPaginateFrom = eval(mag_currentChannelPage)+1;
					}
					mag_setTriggerState(magCurrentNum);
					ajax('VideoUtil::videosFromPlaylistPageIt', 'cur_pg='+mag_setPaginateFrom+'&change='+mag_setChangeVal+'&channel_guid='+$(".myChannelBrowse .browseFwdDiv").attr("channel_guid")+'&playlist_guid='+$(".myChannelBrowse .browseFwdDiv").attr("playlist_guid")+'', '', '', '');
				}
			}
		
		} else if (magCurrentFeedPlay) {
		var magCurrentFeedNum = eval(magCurrentFeedPlay);
		magCurrentFeedNum++;
		var magNextFeedPlay = "#myFeedDiv #"+(magCurrentFeedNum);
		//alert(magNextFeedPlay);
			if (magCurrentFeedNum == 4 && $("#feedCurrentSpan").text() == "1" || magCurrentFeedNum == 8 && $("#feedCurrentSpan").text() == "2") {
				$("#myFeedDiv").find("#"+magCurrentFeedNum).click();
				$(".myFeedBrowse .browseFwdDiv").click();
			} else {
				if (magCurrentFeedPlay == "11") {
					//alert("we are on last");
					mag_setautoPlay('false');
					$("#myFeedDiv").find("#0").click();
					$("#myFeedDiv .caroDiv").animate({"left": "0px"}, 1000);
					$("#myFeedDiv .caroDiv .focusedFeedDiv").removeClass("focusedFeedDiv").prev("div").prev("div").addClass("focusedFeedDiv");
					$("#feedCurrentSpan").text(1);
				} else {
					$("#myFeedDiv").find("#"+magCurrentFeedNum).click();
				}
				//alert(magNextFeedPlay);
			}
		}
		// END CHECK CONT PLAY
		}

		
		
	}

	//Called by SWF when all videos in playlist have finished playing.
	this.playlistFinished = function() {
		//alert("playlist finished")
	}
	
	//Used by SWF for debugging
	this.trace = function(str) {
		//alert(str);
	}
	/**
	* utility/internal methods used by MagneticVideo
	*/
	this.isReady = function() {
		return this.htmlReady && this.swfReady;
	}	

    this.getSWF = function() {
        return (navigator.appName.indexOf("Microsoft") != -1) ? window[this.swfID] : document[this.swfID];
    }
}

var mag_continuousPlayState;
var mag_continuousPlayTriggerVideo;
var mag_autoPlaySwitch;

var mag_setPlayState = function(stateData) {
	mag_continuousPlayState = stateData;
}
var mag_setTriggerState = function(trigData) {
	//alert('we will be triggering video '+trigData+' next');
	mag_continuousPlayTriggerVideo = trigData;
}
var mag_setautoPlay = function(autoPlayData) {
	mag_autoPlaySwitch = autoPlayData;
}

// CURRENT CHANNEL PAGE AND VIDEO STORAGE
var mag_currentChannelPage;
var mag_currentChannelVideo;
var mag_currentChannelLast;
var mag_checkContestFeedVideo;
var mag_checkContestChannelVideo;

var mag_feedVideoLightsOut;

var mag_holdChannelPageAndVideo = function(pageData, videoData, totalData) {
	//alert("change is set: page "+pageData+" video "+videoData+" total "+totalData);
	mag_currentChannelPage = pageData;
	mag_currentChannelVideo = videoData;
	mag_currentChannelLast = totalData;
	
	$('.lightsOutVideoArtist').text($('.videoDiv #'+videoData+'').parent('div').parent('div').find('.titleAuthDiv').attr('vidartist'));
	$('.lightsOutVideoTitle').text($('.videoDiv #'+videoData+'').parent('div').parent('div').find('.titleAuthDiv').attr('vidtitle'));
	
	mag_checkContestChannelVideo = $('.videoDiv #'+videoData+'').parent('div').parent('div').find('.titleAuthDiv').attr('genreguid');
	if (mag_checkContestChannelVideo == 'd1819954-44ef-465c-af83-1ce29ab482e3') {
	$('.lightsOut_contestStamp').fadeIn(1000);
	} else {
	$('.lightsOut_contestStamp').hide();
	}
	
}

var mag_holdFeedVideoForLightsOut = function(videoData) {
	//alert("change is set: page "+pageData+" video "+videoData+" total "+totalData);
	mag_feedVideoLightsOut = videoData;
	//alert(videoData);
	$('.lightsOutVideoArtist').text($('#titleAuthDiv_'+videoData+'').attr('vidartist'));
	$('.lightsOutVideoTitle').text($('#titleAuthDiv_'+videoData+'').attr('vidtitle'));
	
	mag_checkContestFeedVideo = $('#titleAuthDiv_'+videoData+'').attr('vidtitle');
	if (mag_checkContestFeedVideo == 'd1819954-44ef-465c-af83-1ce29ab482e3') {
	$('.lightsOut_contestStamp').fadeIn(1000);
	} else {
	$('.lightsOut_contestStamp').hide();
	}
}

var lightsOut_video_nav = function (direction) {
	if (mag_continuousPlayState == "on") { mag_setautoPlay('true'); } else { mag_setautoPlay('false'); }
	
	var magCurrentFeedPlay = $("#myFeedDiv .playingNow a").attr("id");
	//alert($("#myFeedDiv .playingNow").parent('div').parent('div').find('.titleAuthDiv').attr('vidartist')+" test");
	
	// MY FEED
	if (magCurrentFeedPlay) {
		var magCurrentFeedNum = eval(magCurrentFeedPlay);
		if (direction == 'fwd') {
			magCurrentFeedNum++;
			var magNextFeedPlay = "#myFeedDiv #"+(magCurrentFeedNum);
			if (magCurrentFeedNum == 4 && $("#feedCurrentSpan").text() == "1" || magCurrentFeedNum == 8 && $("#feedCurrentSpan").text() == "2") {
				$("#myFeedDiv").find("#"+magCurrentFeedNum).click();
				$(".myFeedBrowse .browseFwdDiv").click();
			} else {
				if (magCurrentFeedPlay == "11") {
					//alert("we are on last");
					mag_setautoPlay('false');
					$("#myFeedDiv").find("#0").click();
					$("#myFeedDiv .caroDiv").animate({"left": "0px"}, 500);
					$("#myFeedDiv .caroDiv .focusedFeedDiv").removeClass("focusedFeedDiv").prev("div").prev("div").addClass("focusedFeedDiv");
					$("#feedCurrentSpan").text(1);
				} else {
					$("#myFeedDiv").find("#"+magCurrentFeedNum).click();
				}
			}
		} else if (direction == 'back') {
			//alert('back');
			magCurrentFeedNum--;
			//alert(''+magCurrentFeedNum);
			var magNextFeedPlay = "#myFeedDiv #"+(magCurrentFeedNum);
			if (magCurrentFeedNum == 3 && $("#feedCurrentSpan").text() == "2" || magCurrentFeedNum == 7 && $("#feedCurrentSpan").text() == "3") {
				$("#myFeedDiv").find("#"+magCurrentFeedNum).click();
				$(".myFeedBrowse .browseBackDiv").click();
			} else {
				if (magCurrentFeedPlay == "1") {
					mag_setautoPlay('false');
					$("#myFeedDiv").find("#0").click();
					$("#myFeedDiv .caroDiv").animate({"left": "0px"}, 500);
					$("#myFeedDiv .caroDiv .focusedFeedDiv").removeClass("focusedFeedDiv").prev("div").prev("div").addClass("focusedFeedDiv");
					$("#feedCurrentSpan").text(1);
				} else {
					//alert('ok go play');
					$("#myFeedDiv").find("#"+magCurrentFeedNum).click();
				}
			}
		}
	// END MY FEED
	
	// MY CHANNEL
	} else if (mag_currentChannelPage) {
		var mag_setTotalChannelPages = $('#channelTotalSpan').html();
		//alert('total pages '+mag_setTotalChannelPages);
		var mag_setChangeVal = "";
		var mag_setPageDistance = 0;
		var mag_setPaginateFrom = 0;
		var mag_setLookingPage = $('#channelCurrentSpan').html();
		var magCurrentNum = eval(mag_currentChannelVideo);
		if (direction == 'fwd') {
			magCurrentNum++;
			mag_setTriggerState(magCurrentNum);
			if (mag_currentChannelPage == mag_setLookingPage && magCurrentNum <= 3) {
				//alert('we are on correct page and NOT ON last video');
				if (mag_setLookingPage == mag_setTotalChannelPages && magCurrentNum == mag_currentChannelLast) {
				mag_setautoPlay('false');
				mag_setChangeVal = "-1";
				mag_setTriggerState("0");
				ajax('VideoUtil::videosFromPlaylistPageIt', 'cur_pg=2&change='+mag_setChangeVal+'&channel_guid='+$(".myChannelBrowse .browseFwdDiv").attr("channel_guid")+'&playlist_guid='+$(".myChannelBrowse .browseFwdDiv").attr("playlist_guid")+'', '', '', '');
				} else {
					var magNextPlay = "#channelDiv #"+(magCurrentNum);
					$(magNextPlay).click();
					mag_setTriggerState("-1");
				}
			} else if (mag_currentChannelPage == mag_setLookingPage && magCurrentNum == 4) {
				//alert('we are on correct page and ON last video');
				if (mag_setLookingPage == mag_setTotalChannelPages && magCurrentNum == mag_currentChannelLast) {
				mag_setautoPlay('false');
				mag_setChangeVal = "-1";
				mag_setTriggerState("0");
				ajax('VideoUtil::videosFromPlaylistPageIt', 'cur_pg=2&change='+mag_setChangeVal+'&channel_guid='+$(".myChannelBrowse .browseFwdDiv").attr("channel_guid")+'&playlist_guid='+$(".myChannelBrowse .browseFwdDiv").attr("playlist_guid")+'', '', '', '');
				} else {
					mag_setChangeVal = "1";
					mag_setPaginateFrom = eval(mag_currentChannelPage);
					mag_setTriggerState("0");
					ajax('VideoUtil::videosFromPlaylistPageIt', 'cur_pg='+mag_setPaginateFrom+'&change='+mag_setChangeVal+'&channel_guid='+$(".myChannelBrowse .browseFwdDiv").attr("channel_guid")+'&playlist_guid='+$(".myChannelBrowse .browseFwdDiv").attr("playlist_guid")+'', '', '', '');
				}
				
			} else if (mag_currentChannelPage != mag_setLookingPage) {
				if (mag_currentChannelPage == mag_setTotalChannelPages && magCurrentNum == mag_currentChannelLast) {
				mag_setautoPlay('false');
				mag_setChangeVal = "-1";
				mag_setTriggerState("0");
				mag_setPaginateFrom = "2";
					if (mag_setLookingPage != "1") {
						ajax('VideoUtil::videosFromPlaylistPageIt', 'cur_pg='+mag_setPaginateFrom+'&change='+mag_setChangeVal+'&channel_guid='+$(".myChannelBrowse .browseFwdDiv").attr("channel_guid")+'&playlist_guid='+$(".myChannelBrowse .browseFwdDiv").attr("playlist_guid")+'', '', '', '');	
					} else {
						$('.videoDiv #0').click();
					}
				} else {
					//alert('We are not on correct page and need to paginate to correct page');
					mag_setPageDistance = mag_setLookingPage-mag_currentChannelPage;
					//alert('we are '+mag_setPageDistance+' page(s) away');
					if (mag_setPageDistance<0) {
					//alert('we need to move ahead in paging');
					mag_setChangeVal = "1";
					mag_setPaginateFrom = eval(mag_currentChannelPage)-1;
					
					} else if (mag_setPageDistance>0) {
					//alert('we need to move back in paging');
					mag_setChangeVal = "-1";
					mag_setPaginateFrom = eval(mag_currentChannelPage)+1;
					}
					mag_setTriggerState(magCurrentNum);
					ajax('VideoUtil::videosFromPlaylistPageIt', 'cur_pg='+mag_setPaginateFrom+'&change='+mag_setChangeVal+'&channel_guid='+$(".myChannelBrowse .browseFwdDiv").attr("channel_guid")+'&playlist_guid='+$(".myChannelBrowse .browseFwdDiv").attr("playlist_guid")+'', '', '', '');
				}
			}
		} else if (direction == 'back') {
			magCurrentNum--;
			//alert(magCurrentNum);
			mag_setTriggerState(magCurrentNum);
			if (mag_currentChannelPage == mag_setLookingPage && magCurrentNum < 0) {
				if (mag_currentChannelPage > 1) { 
					mag_setChangeVal = "-1";
					mag_setTriggerState("3");
					ajax('VideoUtil::videosFromPlaylistPageIt', 'cur_pg='+mag_currentChannelPage+'&change='+mag_setChangeVal+'&channel_guid='+$(".myChannelBrowse .browseFwdDiv").attr("channel_guid")+'&playlist_guid='+$(".myChannelBrowse .browseFwdDiv").attr("playlist_guid")+'', '', '', '');
				} else {
					mag_setautoPlay('false');
					$('.videoDiv #0').click();
				}
			} else if (mag_currentChannelPage == mag_setLookingPage && magCurrentNum >= 0) {
				var magNextPlay = "#channelDiv #"+(magCurrentNum);
				$(magNextPlay).click();
				mag_setTriggerState("-1");
			
			} else if (mag_currentChannelPage != mag_setLookingPage) {
				mag_setPageDistance = mag_setLookingPage-mag_currentChannelPage;
					//alert('we are '+mag_setPageDistance+' page(s) away');
					if (mag_setPageDistance<0) {
					//alert('we need to move ahead in paging');
					mag_setChangeVal = "1";
					mag_setPaginateFrom = eval(mag_currentChannelPage)-1;
					
					} else if (mag_setPageDistance>0) {
					//alert('we need to move back in paging');
					mag_setChangeVal = "-1";
					mag_setPaginateFrom = eval(mag_currentChannelPage)+1;
					}
					mag_setTriggerState(magCurrentNum);
					ajax('VideoUtil::videosFromPlaylistPageIt', 'cur_pg='+mag_setPaginateFrom+'&change='+mag_setChangeVal+'&channel_guid='+$(".myChannelBrowse .browseFwdDiv").attr("channel_guid")+'&playlist_guid='+$(".myChannelBrowse .browseFwdDiv").attr("playlist_guid")+'', '', '', '');
			}
		
		// END BACK
		}
	}
	
	

// END VIDEO NAV
}


