var searchIds = ""; var curId = null; var curIdIndex = null; var totalThumbs = $(".mrp_galThumbWrap").length; var prevId = null; var nextId = null; var mediaSize = null; var hasThumbsUp = false; var hasComments = false; var hasTags = false; var hasDate = false; var hasSubByPic = false; var hasSubByLink = false; var hasPicViews = false; var hasBreadCrumbs = false; var linkUserBios = false; var linkAssocBios = false; var linkTrackBios = false; var linkDriverBios = false; var isContest = false; var nextLinkEl = $(".mrp_nextLink"); var prevLinkEl = $(".mrp_prevLink"); var thumbsUpEl = $(".mrp_galleryWrap .upValue"); var commentsEl = $(".mrp_galleryWrap .mrp_commentsVal"); var tagsEl = $(".mrp_newsNetwork .mrp_newsTags .subSection"); var dateEl = $(".mrp_galleryWrap .mrp_mediaDate"); var subByPicEl = $(".mrp_galleryWrap .mrp_contentMetaPic"); var subByLinkEl = $(".mrp_galleryWrap .mrp_userLink"); var picViewsEl = $(".mrp_galleryWrap .mrp_newsViews .mrp_viewsVal"); var breadCrumbEl = $(".mrp_galleryWrap .mrp_photoCrumbs"); var picCountEl = $(".mrp_singleGalNav span"); var captionEl = $(".mrp_galleryWrap .mrp_captionText"); var type="image"; var contestEl = $(".mrp_contestVoteWrap"); var voteMsgText = "Reminder: Only one vote per photo per day will be counted!"; $(document).ready(function() { //To Do: hash change with browser history (back button)...possibly using JS History plugin //To Do: what happens when a user clicks on first pic and goes backwards? initGallery(); curId = getHash(); if (curId) { setActiveThumb(curId); updateGallery(curId); } }); function initGallery() { getGalSettings(); initArrowKeys(); initHashCheck(); } function initHashCheck() { var current_hash = getHash(); function check_hash() { if (window.location.hash != current_hash) { current_hash = window.location.hash; if (location.hash.replace("#", "") != '') updateGallery(location.hash); else showThumbs(); } } setInterval(function() { check_hash(); }, 5); } function getGalSettings() { if (thumbsUpEl) { hasThumbsUp = true; }; if (commentsEl) { hasComments = true; }; if (tagsEl) { hasTags = true; }; if (dateEl) { hasDate = true; }; if (subByPicEl) { hasSubByPic = true; }; if (subByLinkEl) { hasSubByLink = true; }; if (picViewsEl) { hasPicViews = true; }; if (breadCrumbEl) { hasBreadCrumbs = true; }; if (contestEl) { isContest = true; }; if ($(".mrp_galleryWrap.lnkUserBios").length > 0) { linkUserBios = true; } if ($(".mrp_galleryWrap.lnkDriverBios").length > 0) { linkDriverBios = true; } if ($(".mrp_galleryWrap.lnkAssocBios").length > 0) { linkAssocBios = true; } if ($(".mrp_galleryWrap.lnkTrackBios").length > 0) { linkTrackBios = true; } if ($(".mrp_galleryWrap.video").length > 0) { type="video"; } } function updateGallery(newId) { curId = newId.replace("#", ""); if (mediaSize == null) { if(type=="video") mediaSize = $(".mrp_singleMediaItem").attr("vSize"); else mediaSize = $(".mrp_singleMediaItem img").attr("rel"); } if ($(".mrp_galleryMain").is(":hidden")) { if(type=="video") { $(".mrp_singleMediaItem").html(""); }else { $(".mrp_singleMediaItem img").attr("src", ""); } showMainPic(); } loadMeta(curId); if (hasTags) loadTags(curId); if (isContest) { $(contestEl).find(".quickAlert").text(voteMsgText) .fadeTo("slow", 1).animate({ opacity: 1.0 }, 1000) } $(".mrp_commentRefs").val("r=" + curId + ",rt=media"); //used to load comments if (searchIds == "") getStringIds(); curIdIndex = getStringIds(curId); if (curIdIndex + 2 != searchIds.length) nextId = searchIds[curIdIndex + 1]; else nextId = searchIds[0]; if (curIdIndex != 0) prevId = searchIds[curIdIndex - 1]; else prevId = searchIds[searchIds.length - 2]; picCountEl.text((curIdIndex + 1) + " of " + (searchIds.length - 1)); $(".numThumbsUp a").attr("href", "/ui/rate.aspx?like=true&rt=media&r=" + curId); setActiveThumb(curId); setPicLinks(nextId, prevId); return false; } function getStringIds(i) { //IE<9 stuff... if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(obj, fromIndex) { if (fromIndex == null) { fromIndex = 0; } else if (fromIndex < 0) { fromIndex = Math.max(0, this.length + fromIndex); } for (var i = fromIndex, j = this.length; i < j; i++) { if (this[i] === obj) return i; } return -1; }; } //End IE<9 stuff... //passing in "i" will return the index in the array searchIds = $("#mrp_mediaValues").val().split(","); if (i) { //alert(searchIds.indexOf(i.toString())); return searchIds.indexOf(i); } } function loadMeta(curId) { var query = "?i=" + curId + "&t="+type+"&s=" + mediaSize; if (hasPicViews) query += "&views=true"; if (hasComments) query += "&coms=true"; if (hasThumbsUp) query += "&thumbs=true"; if (hasSubByLink || hasSubByPic) query += "&subBy=true"; if (hasBreadCrumbs) query += "&crumbs=true"; if (linkUserBios) query += "&lub=true"; var ref= querySt("r"); var refType = querySt("rt"); if(ref !='' && refType !='') { query +="&r=" + ref + "&rt=" + refType; } //get Json data from '/ui/mediaLoader.aspx' + query $.ajax({ type: "GET", url: "/ui/mediaLoader.aspx" + query, dataType: 'json', success: function(data) { updateMedia(data.media[0]); if (data.meta) updateMeta(data.meta[0]); if (data.user) updateSubBy(data.user[0]); if (hasBreadCrumbs && data.crumbs) updateCrumbs(data.crumbs); if (hasComments) initMrpComments(); }, error: function(XMLHttpRequest, textStatus, errorThrown) { //alert(errorThrown); $(".mrp_singleMediaWrap").html("

Gallery temporarily unavailable

"); } }); } function loadTags(curId) { var query = "?r=" + curId + "&rt=media"; if (linkAssocBios) query += "&lab=true"; if (linkDriverBios) query += "&ldb=true"; if (linkTrackBios) query += "<b=true"; //get Json data from '/ui/tagLoader.aspx' + query $.ajax({ type: "GET", url: "/ui/tagLoader.aspx" + query, dataType: 'json', success: function(data) { if (data) tagsEl.html(buildTags(data.tags)); }, error: function(XMLHttpRequest, textStatus, errorThrown) { tagsEl.html("

Tags temporarily unavailable

"); } }); } function updateMedia(obj) { if(type=="video") { $(".mrp_singleMediaItem").html(obj.video); }else { $(".mrp_singleMediaItem img").attr("src", obj.src); } $(".mrp_mediaDate").text(obj.date); var name=obj.name; var caption=obj.caption; if(name !="" && caption !="") { captionEl.text(name+": "+caption); }else if(name !="") { captionEl.text(name); }else { captionEl.text(caption); } } function updateMeta(obj) { if (obj.comments && hasComments) { if (obj.comments > 0) commentsEl.text(obj.comments); else commentsEl.text(0); } if (obj.views && hasPicViews) { if (obj.views > 0) picViewsEl.text(obj.views); else picViewsEl.text(0); } if (obj.thumbsUp && hasThumbsUp) { if (obj.thumbsUp > 0) thumbsUpEl.text(obj.thumbsUp); else thumbsUpEl.text(0); } } function updateSubBy(obj) { if (hasSubByLink) { subByLinkEl.attr("href", obj.profileLink) .text(obj.name); } if (hasSubByPic) { subByPicEl.attr("alt", obj.name) .attr("src", obj.profileLink); } } function updateCrumbs(obj) { // $.each(obj, function(i, v) { // $('', { // href: obj[i].link, // title: obj[i].text, // text: obj[i].text // }).appendTo(breadCrumbEl); //}); var crumbString = ""; for (var i = 0; i < obj.length; i++) { var item = obj[i]; crumbString = crumbString + "" + item.text + ""; if (i < obj.length - 1) { crumbString = crumbString + " > "; } } breadCrumbEl.html(crumbString); } function buildTags(obj) { var tagString = ""; var tagLink = "" for (var i = 0; i < obj.length; i++) { var item = obj[i]; tagString += "
"; tagString += "
"; if (item.link != '') tagString += ""; tagString += " "; if (item.link != '') tagString += ""; tagString += "
"; tagString += "
"; tagString += "

"; if (item.link != '') tagString += "" + item.name + ""; else tagString += item.name; tagString += "

"; tagString += "" + item.desc + ""; tagString += "
"; tagString += "
"; } return tagString; } function showMainPic() { $(".mrp_galleryThumbs").fadeOut("slow", function() { $(".mrp_galleryMain").fadeIn("slow"); $(".mrp_singleGalNav").fadeIn("fast"); }); } function showThumbs() { setHash(''); $(".mrp_singleGalNav").hide(); $(".mrp_galleryMain").fadeOut("slow", function() { $(".mrp_galleryThumbs").fadeIn("slow", function() { if (($(".activeThumb").length > 0) && (!isOnScreen($(".activeThumb")))) winScroll(null, "activeThumb"); }); }); $(".mrp_singleMediaItem").html(""); } function setActiveThumb(curId) { $(".activeThumb").removeClass("activeThumb"); if ($("#mrp_thumb" + curId).length > 0) $("#mrp_thumb" + curId).addClass("activeThumb"); //THIS WILL LOAD IN MORE THUMBNAILS // if ($(".mrp_loadMoreWrap").length > 0) { // if ((curIdIndex + 5) > totalThumbs) { // $(".mrp_loadMoreWrap a").click(); // } // } } function setPicLinks(nextId, prevId) { //var curPic = $(".mrp_singleMediaItem"); //alert("nextPic: " + nextPic + ", prevPic: " + prevPic + ", nextLink: " + nextLink + ", prevLink: " + prevLink); //alert('hi'); prevLinkEl.attr("href", "#" + prevId); nextLinkEl.attr("href", "#" + nextId); //curPic.attr("onclick", "updateGallery('" + nextId + "')"); } function initArrowKeys() { $(document).keyup(function(e) { switch (e.keyCode) { case 37: // Left //prevLinkEl.click(); setHash(prevLinkEl.attr("href")); break; case 39: // Right //nextLinkEl.click(); setHash(nextLinkEl.attr("href")); break; } }); } function mrp_loadMore(urlToLoad) { $(".mrp_loadMoreWrap").html("LOADING...").load(urlToLoad, function(data) { $(this).replaceWith(data); }); return false; } function placeVote() { if (location.hash.replace("#", "") != '') { var photo = location.hash.replace("#", ""); var cont = querySt("c"); var gallery = querySt("g"); //alert("vote placed: " + cont+", "+ photo+", "+ gallery); //will return a 1 if vote params are valid $.post("/ui/vote.aspx", { c: cont, m: photo, g: gallery }, function(data) { // $(".mrp_voteLink span:eq(0)").fadeOut(100, function() { // $(".mrp_voteLink span:eq(1)").fadeIn(800, function() { // $(this).fadeOut(500, function() { // $(".mrp_voteLink span:eq(2)").fadeIn(2000, function() { // $(this).fadeOut(500, function() { // $(".mrp_voteLink span:eq(0)").fadeIn(800); // }); // }); // }); // }); // }); quickAlert(".mrp_voteLink", "Thanks for voting!", null, true); }); } }