C4.PinController=function($){var _globalContextPath="/static/global/html/accesscontrol/",_consoleSuffix=".html",_playConfirmationRequired=false,_flashPlayer,assetDetails={},_HTML={Errors:{uncheckedAgeConfirmation16:"Please confirm that you have read and understood the Terms and Conditions and are 16 years of age or older.",uncheckedAgeConfirmation18:"Please confirm that you have read and understood the Terms and Conditions and are 18 years of age or older.",invalidPin:"To enable PIN Access, please enter a 4-digit PIN.",disableIncorrectPin:"To disable PIN access, please enter your PIN correctly",incorrectPin:"To watch this show, please enter your PIN correctly"}},Console={renderConsoleDialogues:function(){Page.fetchAssetDetails();
consoleType=Console.determineInitialConsoleType();
if((consoleType==="confirmationSetupEmbedded"||consoleType==="pinExistsWarningEmbedded")&&$.browser.msie){if($.browser.version>6&&$.browser.version<8){$("body").addClass("ie7")
}else{if($.browser.version<7){$("body").addClass("ie6")
}}}Console.Events.openConsole(Console.fetchConsoleHtml(consoleType));
Console.setEventHandlers(consoleType)
},determineInitialConsoleType:function(){var consoleType,rating=assetDetails.rating,pinCookie=Cookies.getPinCookie();
if(pinCookie==="unset"){if(rating==="parentalControlPage"){consoleType="ratedContentDialogue"
}else{if($("body#embeddedPlayer").length>0){consoleType="confirmationSetupEmbedded"
}else{consoleType="confirmationSetup"
}}}else{if(rating==="parentalControlPage"){consoleType="pinExistsWarningNonModal"
}else{if(Cookies.checkPinAgainstRating(pinCookie.pinAgeLevel)){if($("body#embeddedPlayer").length>0){consoleType="pinExistsWarningEmbedded"
}else{consoleType="pinExistsWarning"
}}else{if($("body#embeddedPlayer").length>0){consoleType="confirmationSetupEmbedded"
}else{consoleType="confirmationSetup"
}}}}return consoleType
},fetchConsoleHtml:function(consoleType){var htmlTemplate=false;
$.ajax({type:"GET",url:_globalContextPath+consoleType+_consoleSuffix,async:false,success:function(result){htmlTemplate=result;
return 
},error:function(errorThrown){htmlTemplate='<div class="section"><h2 id="restrictedContentTitle">Restricted Content</h2><div class="subSectionLast"><h3 class="contentTitle accessibility">PIN Setup</h3><div class="column"><h4>RESTRICTED CONTENT: ERROR</h4><p>There\'s been an error with the access protection. </p><p>Firstly, please try reloading this page, or, if this does not work, <a href="http://help.channel4.com/SRVS/CGI-BIN/WEBCGI.EXE/,/?St=332,E=0000000000181922040,K=4874,Sxi=0,USETEMPLATE=contact_vod.tem">contact us</a>.</p></div><p class="columnRight">For more information about PIN Access, please read our <a href="http://help.channel4.com" target="_blank">Help Section</a>.</p></div></div>'
}});
htmlTemplate=Console.formatConsoleHtml(htmlTemplate);
return htmlTemplate
},formatConsoleHtml:function(htmlTemplate){var detailsToChange={};
detailsToChange.rating=assetDetails.rating;
detailsToChange.pinAgeLevel=Cookies.getPinCookie().pinAgeLevel;
if(detailsToChange.pinAgeLevel==16){detailsToChange.pinAgeLevel="all"
}if(assetDetails.clipTitle){detailsToChange.contentTitle=assetDetails.brandTitle+" - "+assetDetails.clipTitle
}else{if(assetDetails.episodeTxInfo){detailsToChange.contentTitle=assetDetails.brandTitle+" "+assetDetails.episodeTxInfo
}else{detailsToChange.contentTitle=""
}}htmlTemplate=Console.swapPlaceholdersWithParameters(htmlTemplate,detailsToChange);
return htmlTemplate
},swapPlaceholdersWithParameters:function(htmlTemplate,parameterObject){$.each(parameterObject,function(parameter,value){parameter="{"+parameter+"}";
htmlTemplate=htmlTemplate.replace(new RegExp(parameter,"g"),value)
});
return htmlTemplate
},setEventHandlers:function(consoleType){if($("#ageConfirmThisSession").length){$("#playContent").click(Console.Events.Buttons.ageConfirm)
}if($("#enablePinAccess").length){$("#enablePinAccess").click(Console.Events.Buttons.setPin)
}if($("#ageConfirmPin").length){$("#playContent").click(Console.Events.Buttons.confirmPin)
}if(consoleType==="pinExistsWarningNonModal"){$("#disablePin").click(Console.Events.Buttons.disablePin)
}$("#closeModal").click(Console.Events.Buttons.unloadConsole)
},setError:function(error,selector){$(selector).html(error).css("opacity","0").css("visibility","visible").fadeTo("slow",1)
},setUpThankYouPanel:function(consoleType){var thankYouPanel=Console.fetchConsoleHtml(consoleType);
$(".pinEntryContainer:first").fadeOut("fast",function(){$("#pinModal").append(thankYouPanel).fadeIn();
$(".confirmation a#playEpisode").click(C4.PinController.doHistory)
})
},showError:function showError(){if(assetDetails.rating===16){Console.setError(_HTML.Errors.uncheckedAgeConfirmation16,"#pinModal div.playError")
}else{if(assetDetails.rating===18){Console.setError(_HTML.Errors.uncheckedAgeConfirmation18,"#pinModal div.playError")
}}},scrollTopConsole:function scrollTopConsole(){document.getElementById("pinModal").scrollTop=0
},Events:{openConsole:function(modalConsole){if(assetDetails.rating==="parentalControlPage"){$("#pinModal").html(modalConsole)
}else{$.modal(modalConsole,{containerId:"pinModal",opacity:90,close:false,position:["10%","20px"],onOpen:Console.Animations.modalOverlayOpen})
}},doPostConsoleAgeVerification:function(){var confirmationRequired=C4.PinController.getConfirmationRequired();
if(confirmationRequired){C4.PinController.initialiseAccessControl(assetDetails)
}else{$("#"+_flashPlayer)[0].cancelPin()
}},Buttons:{ageConfirm:function(){if($("#ageConfirmThisSession")[0].checked){Cookies.setSessionCookie(assetDetails.rating);
C4.PinController.setConfirmationRequired();
Console.Animations.modalOverlayClose()
}else{Console.showError()
}return false
},setPin:function(){var pinEntered=$("#ageConfirmPin")[0].value,ageConfirmChecked=$("#pinAgeConfirm")[0].checked,pinAgeAllowed=$("input[@name='pinAge']:checked").val(),thisSessionAgeAllowed=$("#pinAgeConfirm").val();
if(pinEntered.length===4&&ageConfirmChecked){Cookies.setSessionCookie(thisSessionAgeAllowed);
Cookies.setPinCookie(pinEntered,pinAgeAllowed);
Console.setUpThankYouPanel("pinCreated")
}else{if(!ageConfirmChecked){Console.showError()
}else{Console.setError(_HTML.Errors.invalidPin,"#pinModal div.pinError")
}}return false
},confirmPin:function(){var pinEntered=$("#ageConfirmPin")[0].value,pinCookie=Cookies.getPinCookie();
if(pinCookie.pin===$.md5(pinEntered)){Cookies.setSessionCookie(18);
C4.PinController.setConfirmationRequired();
Console.Animations.modalOverlayClose()
}else{if(pinEntered.length!==4){Console.setError(_HTML.Errors.invalidPin,"#pinModal div.pinError")
}else{Console.setError(_HTML.Errors.incorrectPin,"#pinModal div.pinError")
}}return false
},disablePin:function(){var pinEntered=$("#pin")[0].value,pinCookie=Cookies.getPinCookie();
if(pinCookie.pin===$.md5(pinEntered)){Cookies.deleteSessionCookie();
Cookies.deletePinCookie();
Console.setUpThankYouPanel("pinDisabled")
}else{Console.setError(_HTML.Errors.disableIncorrectPin,"#pinModal div.pinError")
}return false
},unloadConsole:function(e){e.preventDefault();
Console.Animations.modalOverlayClose();
return false
}}},Animations:{modalOverlayClose:function(dialog){dialog=dialog||$.modal.impl.dialog;
dialog.container.fadeOut("fast",function(){dialog.data.fadeOut("fast",function(){dialog.overlay.fadeOut("fast",function(){Console.Animations.unobscureFlashObjects();
Console.Events.doPostConsoleAgeVerification();
$.modal.close()
})
})
});
if($("body#embeddedPlayer").length>0){C4.Controller.expandFlash()
}},modalOverlayOpen:function(dialog){Console.Animations.obscureFlashObjects();
dialog.overlay.fadeIn("fast",function(){dialog.data.fadeIn("fast",function(){dialog.container.fadeIn("fast");
$("#pinModal input:first").focus();
if($("body#embeddedPlayer").length>0){Console.scrollTopConsole();
C4.Controller.collapseFlash()
}})
})
},obscureFlashObjects:function(){if($.browser.msie&&$.browser.version>7){$("#"+_flashPlayer+" param[name*='wmode'][value*='window']").parent("object").addClass("accessibility")
}else{$("#"+_flashPlayer+" param[name*='wmode'][value*='window']").parent("object").addClass("obscure")
}$("div[id^='c4ad-']").css("display","none");
$("object:not('#"+_flashPlayer+"')").css("display","none");
$("embed").css("display","none")
},unobscureFlashObjects:function(){if($.browser.msie&&$.browser.version>7){$("#"+_flashPlayer+" param[name*='wmode'][value*='window']").parent("object").removeClass("accessibility")
}else{$("#"+_flashPlayer+" param[name*='wmode'][value*='window']").parent("object").removeClass("obscure")
}$("div[id^='c4ad-']").css("display","block");
$("object:not('#"+_flashPlayer+"')").css("display","block");
$("embed").css("display","block")
}}},Internal={validateFlashPlayer:function(flashPlayer){return true
}},Cookies={checkConsoleToRender:function(){var consoleToRender=false,pinCookie;
Cookies.transferLegacyCookies();
pinCookie=Cookies.getPinCookie();
if(pinCookie!=="unset"){consoleToRender=Cookies.checkPinAgainstRating(pinCookie.pinAgeLevel)
}if(Cookies.checkAgeConfirmationIsAppropriate()===false){consoleToRender=true
}else{consoleToRender=false
}if(assetDetails.rating==="parentalControlPage"){consoleToRender=true
}return consoleToRender
},checkAgeConfirmationIsAppropriate:function(){var isAppropriate=false,rating=assetDetails.rating;
if(Cookies.getSessionCookie().allowedToWatch>=rating||rating===0){isAppropriate=true
}return isAppropriate
},checkPinAgainstRating:function(pinAgeLevel){var requiresPrompt=true;
if(pinAgeLevel>assetDetails.rating){requiresPrompt=false
}return requiresPrompt
},getPinCookie:function getPinCookie(){var cookieName="C4PinCookie";
var cookieValue=$.cookie(cookieName);
if(cookieValue===null){cookieValue="unset"
}else{cookieValue="cookieValue = "+cookieValue;
eval(cookieValue)
}return cookieValue
},setPinCookie:function setPinCookie(pin,pinAgeLevel,isMd5Set){var md5pin;
isMd5Set?md5pin=pin:md5pin=$.md5(pin);
$.cookie("C4PinCookie","{'pin':'"+md5pin+"', 'pinAgeLevel':"+pinAgeLevel+"}",{expires:9999,path:"/"})
},deletePinCookie:function deletePinCookie(){$.cookie("C4PinCookie",null,{path:"/"})
},getSessionCookie:function getSessionCookie(){var cookieName="C4AccessControlCookie";
var cookieValue=$.cookie(cookieName);
if(cookieValue===null){cookieValue={allowedToWatch:0}
}else{cookieValue="cookieValue = "+cookieValue;
eval(cookieValue)
}return cookieValue
},setSessionCookie:function setSessionCookie(ratingPermitted){$.cookie("C4AccessControlCookie","{'allowedToWatch':"+ratingPermitted+"}",{path:"/"})
},deleteSessionCookie:function deleteSessionCookie(){$.cookie("C4AccessControlCookie",null,{path:"/"})
},transferLegacyCookies:function transferLegacyCookies(){var Md5HasAlreadyBeenSet=true,pinAgeLevel=16,pin=$.cookie("cutvageconfirmpin");
if(pin){Cookies.setPinCookie(pin,pinAgeLevel,Md5HasAlreadyBeenSet);
$.cookie("cutvageconfirmpin",null,{path:"/"})
}}},Page={fetchAssetDetails:function(){if(assetDetails.assetId){if(assetDetails.brandTitle===undefined){assetDetails.brandTitle=$("h1").find("span").text()
}if(assetDetails.episodeTxInfo===undefined){var $broadcastDetails=$("#asset"+assetDetails.assetId).find(".broadcastDetails"),broadcastDetails=$broadcastDetails.find(".txDay").text()+" "+$broadcastDetails.find(".txDate").text()+" "+$broadcastDetails.find(".txTime").text().toLowerCase()+" "+$broadcastDetails.find(".channel").text();
assetDetails.episodeTxInfo=broadcastDetails
}}},getRatingFromPage:function(){var $ratingPageContext,id,popUpPage="#catchUpPopup";
if(assetDetails.assetId){id=assetDetails.assetId
}else{id=location.hash.replace("#","")
}if($(popUpPage).length){$ratingPageContext=$(popUpPage);
assetDetails.guidanceText=$ratingPageContext.metadata().preSelectAssetGuidance
}else{if($("body#embeddedPlayer").length>0){$ratingPageContext=$("body");
assetDetails.guidanceText=$ratingPageContext.metadata().preSelectAssetGuidance
}else{if(id){$ratingPageContext=$("#asset"+id);
assetDetails.guidanceText=$ratingPageContext.find(".guidance").text()
}else{$ratingPageContext=$(".episodesList li:first");
assetDetails.guidanceText=$ratingPageContext.find(".guidance").text()
}}}if($ratingPageContext.length){return $($ratingPageContext).metadata().rating
}else{return 16
}},playMovie:function(){var playButton=$("a.playLink[href='#"+assetDetails.assetId+"']")[0],isLongformPlayer=assetDetails.assetId&&($("#catchUpPopup").length===0||$("#embeddedPlayer").length===0);
if(Internal.validateFlashPlayer($("#"+_flashPlayer))){assetDetails.guidanceText=assetDetails.guidanceText||"";
assetDetails.assetId=assetDetails.assetId||"";
if(assetDetails.popUpOptions){C4.Controller.externalSetPopup(assetDetails.popUpOptions)
}else{if(isLongformPlayer){C4.Controller.externalPlayMovie(playButton)
}else{$("#"+_flashPlayer)[0].loadEpisode(assetDetails.assetId,assetDetails.guidanceText)
}}}}};
return{doPinChecks:function(thisAssetsDetails){C4.PinController.initialiseAccessControl(thisAssetsDetails);
return true
},initialiseAccessControl:function(thisAssetsDetails){var canPlay=false;
assetDetails=thisAssetsDetails||{};
$flashPlayer=$("#"+_flashPlayer);
if(!(assetDetails.rating||assetDetails.rating===0)){assetDetails.rating=Page.getRatingFromPage()
}if(Cookies.checkConsoleToRender()){Console.renderConsoleDialogues()
}else{canPlay=true
}if(canPlay&&$flashPlayer.length>0){Page.playMovie()
}return canPlay
},setFlashPlayer:function(flashPlayer){_flashPlayer=flashPlayer;
return true
},getConfirmationRequired:function(){return _playConfirmationRequired
},setConfirmationRequired:function(){_playConfirmationRequired=assetDetails.rating
},doHistory:function(){window.history.back();
return false
}}
}(jQuery);