if(!this.JSON){this.JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==="string"){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}}());(function(){function _hash(data,n){var norm=Math.pow(2,-32);var a=2095533;var s=0,c=1;var t,t0=0;data=data.toString();for(var i=0,max=data.length;i<max;i+=1){s-=data.charCodeAt(i)*65537*norm;if(s<0){s+=1}t=a*s+c*norm;t0=s=t-(c=t|0);t=a*s+c*norm;s=t-(c=t|0)}if(n){return Math.floor(n*(s+t0*norm))}else{return s+t0*norm}}function _toQueryString(arg){var arr=[];if(typeof(arg)==="object"){for(key in arg){if(arg.hasOwnProperty(key)){arr.push(encodeURIComponent(key)+"="+encodeURIComponent(arg[key]))}}}if(arr.length!==0){return arr.join("&")}return null}if(typeof(UPC)==="undefined"){UPC={util:{}}}else{if(typeof(UPC.util)==="undefined"){UPC.util={}}}UPC.util.Fetch=(function(){var _objName="UPC.util.Fetch";var _objErrMsg="Error in "+_objName;var counter=-1,head,timeOut=10000;var requests={},window=this;var XhrObject=window.ActiveXObject||XMLHttpRequest;function getJsonp(url,args){var requestId,params="",urlHash;if(typeof(url)==="string"&&args&&typeof(args.onSuccess)==="function"){if(args.params){params=_toQueryString(args.params);url+=(url.indexOf("?")?"?":"&")+params}if(args.cache&&args.cache===false){requestId="jsonp_"+_hash(url,10000000)+(++counter);window[requestId]=function(data){args.onSuccess.call(this,data);window[requestId]=null;try{delete window[requestId]}catch(err){}}}else{requestId="jsonp_"+_hash(url,10000000);if(requests[requestId]){requests[requestId]=[args.onSuccess].concat(requests[requestId])}else{requests[requestId]=[args.onSuccess]}window[requestId]=function(data){if(requests[requestId]){requests[requestId].pop().call(this,data);window.setTimeout(function(){if(requests[requestId]&&requests[requestId].length===0&&window[requestId]){requests[requestId]=null;window[requestId]=null;try{delete requests[requestId];delete window[requestId]}catch(err){}}},0)}}}url+=(url.indexOf("?")?"&":"?")+"callback="+requestId;if(typeof(args.onFailure)==="function"){getScript(url,{onFailure:args.onFailure})}else{getScript(url)}}else{throw new Error(_objErrMsg+".getJsonp() -> invalid params given")}}function getScript(url,args){var done=false,script=document.createElement("script"),head;var timeOut=5000,timer;if(!url){throw Error(_objErrMsg+".getScript() -> url is undefined")}if(!args){args={}}if(args.timeOut){timeOut=args.timeOut}timer=window.setTimeout(function(){if(typeof(args.onFailure)==="function"){args.onFailure.call(this)}},timeOut);script.src=url;script.async=true;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){done=true;clearTimeout(timer);if(typeof(args.onSuccess)==="function"){args.onSuccess()}script.onload=script.onreadystatechange=null;if(script&&script.parentNode){script.parentNode.removeChild(script)}}};if(!head){head=document.getElementsByTagName("head")[0]}head.appendChild(script)}function getXhr(url,args){var method="GET",params={},xhr=new (XhrObject)("Microsoft.XMLHTTP");if(typeof(url)==="string"&&args&&typeof(args.onSuccess||args.on200)==="function"){if(typeof(args.method)==="string"){method=args.method.toUpperCase()}if(method==="POST"||method==="PUT"||method==="DELETE"){xhr.open("POST",url,1);xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");if(typeof(args.params)==="object"){params=args.params||{}}if(method==="PUT"){params._method="put"}else{if(method==="DELETE"){params._method="delete"}}params=_toQueryString(args.params)}else{if(args.params){params=_toQueryString(args.params);url+=(url.indexOf("?")?"?":"&")+params}else{params=null}xhr.open("GET",url,1)}xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.onreadystatechange=function(){var data;if(xhr.readyState===4){try{if(xhr.status>199&&xhr.status<300){if(JSON&&typeof(JSON.parse)!=="function"){data=JSON.parse(xhr.responseText)}else{data=(new Function("return "+xhr.responseText))()}if(typeof(args["on"+xhr.status])==="function"){args["on"+xhr.status](data,xhr)}else{if(typeof(args.onSuccess)==="function"){args.onSuccess(data,xhr)}}}else{if(typeof(args["on"+xhr.status])==="function"){args["on"+xhr.status](xhr)}else{if(typeof(args.onFailure)==="function"){args.onFailure(xhr)}}}}catch(err){try{if(typeof(args.onFailure)==="function"){args.onFailure(xhr)}}catch(err){throw new Error(_objErrMsg+".getXhr() -> Error occurred in onFailure()")}}}};if(params){xhr.send(params)}else{xhr.send()}}else{throw new Error(_objErrMsg+".getXhr() -> invalid params given")}}return{getJsonp:getJsonp,getScript:getScript,getXhr:getXhr}})()})();(function(){if(typeof namespace!=="function"){function namespace(ns,separator){var nsParts,tmp=null;var parent=window;if(typeof separator==="undefined"){separator="."}nsParts=ns.split(separator);for(var idx=0,max=nsParts.length;idx<max;idx+=1){parent[nsParts[idx]]=parent[nsParts[idx]]||{};parent=parent[nsParts[idx]]}}}namespace("UPC.util");UPC.util.Validate={isAlphaNumeric:function(arg){var re=/^[a-zA-Z0-9]/i;if(typeof arg!="undefined"){return re.test(arg)}return false},isArray:function(arg){if(arg&&arg.constructor===Array){return true}return false},isBetween:function(arg,min,max){if(this.isInt(arg)&&this.isInt(min)&&this.isInt(max)){return(parseInt(arg,10)>=parseInt(min,10)&&parseInt(arg,10)<=parseInt(max,10))}return false},isBetweenStr:function(arg,min,max){if(this.isString(arg)&&this.isInt(min)&&this.isInt(max)){return(arg.length>=min&&arg.length<=max)}return false},isBoolean:function(arg){if(typeof arg!=="undefined"&&(arg===true||arg===false||arg===1||arg===0)){return true}return false},isDate:function(arg){if(arg){return arg.constructor==Date}return false},isDigit:function(arg){var re=new RegExp("^[0-9]+$","g");return re.test(arg)},isEmail:function(arg){var re=new RegExp("^[a-z0-9_.-]+@([a-z0-9]+([-]+[a-z0-9]+)*.)+[a-z]{2,7}","ig");return re.test(arg)},isEmpty:function(arg){if(arg){if(typeof arg==="object"){for(var obj in arg){if(arg.hasOwnProperty(obj)){return false}}}if(arg.constructor===Array&&arg.length!==0){return false}else{if(typeof arg==="string"&&arg.length!==0){return false}else{if(typeof arg==="number"||typeof arg==="boolean"){return false}}}}return true},isFloat:function(arg){var re=new RegExp("^([+-]?((([0-9]+(.)?)|([0-9]*.[0-9]+))([eE][+-]?[0-9]+)?))$");if(typeof arg!=="undefined"){return re.test(arg)}return false},isFunction:function(arg){return(typeof arg==="function")},isInt:function(arg){return(typeof arg==="number")},isJSON:function(arg){var re=new RegExp("^[,:{}[]0-9.-+Eaeflnr-u \n\r\t]*$","g");if(typeof arg==="string"&&arg.length!==0){arg=arg.replace(/\\./g,"@").replace(/"[^"\\\n\r]*"/g,"");return re.test(arg)}return false},isObject:function(arg){if(typeof arg==="object"){return true}return false},isMember:function(arg,arr){if(this.isArray(arr)){for(var i=arr.length;i--;){if(arr[i]===arg){return true}}}return false},isString:function(arg){if(typeof arg==="string"){return true}return false},isIso8601TimeStamp:function(arg){if(typeof arg==="string"&&arg.length!==0){return/^20\d{2}-\d{2}-\d{2}T\d{2}:\d{2}Z$/.test(arg)}return false},isSession:function(arg){if(arg&&arg.hasOwnProperty("type")&&arg.type==="Session"&&arg.hasOwnProperty("bookings")&&arg.hasOwnProperty("customer")&&arg.hasOwnProperty("favorites")&&this.isArray(arg.bookings)&&this.isArray(arg.favorites)){return true}return false},isUser:function(arg){if(arg&&arg.hasOwnProperty("_type")&&arg.hasOwnProperty("customerId")&&arg.hasOwnProperty("isAccountEnabled")&&arg.hasOwnProperty("givenName")&&arg.hasOwnProperty("familyName")&&arg.hasOwnProperty("boxes")&&arg._type==="User"){return true}return false},isURL:function(arg){var re=new RegExp("^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&?/.=]+$");if(typeof arg==="string"&&arg.length!==0){return re.test(arg)}return false}};UPC.util.Parse={epochToIso8601:function(arg){var date,tmp=null;if(arg<1000000000000){arg*=1000}date=new Date(arg);tmp=[date.getFullYear(),date.getMonth()+1,date.getUTCDate(),date.getUTCHours(),date.getMinutes()];if(arg&&date){return[tmp[0],"-",tmp[1]<10?"0"+tmp[1]:tmp[1],"-",tmp[2]<10?"0"+tmp[2]:tmp[2],"T",tmp[3]<10?"0"+tmp[3]:tmp[3],":",tmp[4]<10?"0"+tmp[4]:tmp[4],"Z"].join("")}else{return null}},hash:function(data,n){var norm=Math.pow(2,-32);var a=2095533;var s=0,c=1;var t,t0=0;data=data.toString();for(var i=0,max=data.length;i<max;i+=1){s-=data.charCodeAt(i)*65537*norm;if(s<0){s+=1}t=a*s+c*norm;t0=s=t-(c=t|0);t=a*s+c*norm;s=t-(c=t|0)}if(n){return Math.floor(n*(s+t0*norm))}else{return s+t0*norm}},iso8601ToEpoch:function(arg){var date=null;var tmp=(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})Z$/).exec(arg);if(tmp&&tmp.length==6){date=new Date(Date.UTC(tmp[1],parseInt(tmp[2],10)-1,tmp[3],tmp[4],tmp[5],0));return date.getTime()}else{return null}},ltrim:function(arg){if(!UPC.util.Validate.isString(arg)||arg.length===0){return null}return arg.replace(/\s*((\S+\s*)*)/,"$1")},rtrim:function(arg){if(!UPC.util.Validate.isString(arg)||arg.length===0){return null}return arg.replace(/((\s*\S+)*)\s*/,"$1")},toQueryString:function(arg){var arr=[],key;if(typeof arg==="object"){for(key in arg){if(arg.hasOwnProperty(key)){arr.push(encodeURIComponent(key)+"="+encodeURIComponent(arg[key]))}}}if(arr.length!==0){return arr.join("&")}return null},trim:function(arg){if(!UPC.util.Validate.isString(arg)||arg.length===0){return null}return this.ltrim(this.rtrim(arg))}}})();(function(){var _objName="EpgObjects",_objErrMsg="Error in "+_objName+"-> ";var P=null,V=null;try{P=UPC.util.Parse;V=UPC.util.Validate}catch(err){throw new Error(_objErrMsg+" dependancy libraries Parse of Validate are not defined")}function _errMsgInvalidArgs(){return"setting of "+(this._type?this._type:"EpgObject")+" failed one or more of the required arguments is invalid"}function _errMsgInvalidOptionalArgs(args){if(V.isArray(args)){return"setting of optional attribute(s) "+args.join(",")+" of "+(this._type?this._type:"EpgObject")+" failed: invalid arguments given"}return"setting of optional attributes of"+(this._type?this._type:"EpgObject")+" failed: one or more of given arguments is invalid"}function _errMsgMissingArgs(){return"setting of "+(this._type?this._type:"EpgObject")+" failed one or more of the required arguments missing"}function _inheritsFrom(parent,child){if(parent.constructor==Function){child.prototype=new parent();child.prototype.constructor=child;child.prototype.parent=parent.prototype}else{child.prototype=parent;child.prototype.constructor=this;child.prototype.parent=parent}}function _makeClass(){return function(args){if(this instanceof arguments.callee){if(args&&typeof this.init==="function"){this.init.apply(this,args.callee?args:arguments)}}else{return new arguments.callee(arguments)}return null}}function _setBooleanProperty(property,bool){if(property&&V.isBoolean(bool)){this._attr[property]=bool;return true}return false}function _setDateProperty(property,date){var epoch=null;if(V.isDate(date)){this._attr[property]=date;return true}else{if(V.isIso8601TimeStamp(date)){epoch=P.iso8601ToEpoch(date);if(epoch){this._attr[property]=new Date(epoch);return true}}}return false}function _setDigitProperty(property,digit){if(property&&V.isDigit(digit)){this._attr[property]=digit*1;return true}return false}function _setIntegerProperty(property,integer){if(property&&V.isDigit(integer)){this._attr[property]=parseInt(integer,10);return true}return false}function _setStringProperty(property,str){if(property&&V.isString(str)){this._attr[property]=str;return true}return false}var EmptyFunction=function(){};var EpgCore=EmptyFunction;EpgCore.prototype=new (function(){this.constructor=EpgCore;this._attr={};this._type="Core";this.getId=function(){return this._attr.id||null};this.getObjectType=function(){return this._type||null};this.isset=function(arg){if(!(typeof this._attr[arg]==="undefined"||typeof this._attr[arg]===null)){return true}return false}});var EpgObjectsContainer=_makeClass();EpgObjectsContainer.prototype._type="ObjectsContainer";function _delObjectsContainer(arg){if((V.isString(arg)||V.isDigit(arg))&&this._attr.objects[arg]&&this.length>0){if(this.callbacks&&V.isFunction(this.callbacks.onDelete)){this.callbacks.onDelete.call(this,arg)}delete this._attr.objects[arg];this.length--;return true}return false}function _eachObjectsContainerItem(arg){var index=0,object=null,objects=this._attr.objects;if(V.isFunction(arg)&&objects){for(object in objects){if(objects.hasOwnProperty(object)){arg(objects[object],object,index);index+=1}}}}function _getObjectsContainer(arg){if(this._attr.objects){if(!arg){return this._attr.objects||null}else{if((V.isString(arg)||V.isDigit(arg))&&this._attr.objects[arg]){return this._attr.objects[arg]}}}return null}function _getObjectsContainerArray(arg){var arr=[],keys=null,object,objects;if(this._attr.objects){objects=this._attr.objects;if(V.isArray(arg)){for(var i=0,max=arg.length;i<max;i+=1){if(this.hasMember(arg[i])){arr[arr.length]=objects[arg[i]]}}}else{for(object in objects){if(objects.hasOwnProperty(object)){arr[arr.length]=objects[object]}}}}return arr}function _hasMember(id){if(id&&typeof this._attr.objects[id]!=="undefined"){return true}return false}function _setObjectsContainer(arg,strict,objectType){var isWithoutErrors=true,object=null,tmp={};if(V.isArray(arg)&&arg.length!==0){for(var i=0,max=arg.length;i<max;i++){if(!_setObjectsContainer.call(this,arg[i],strict,objectType)&&strict){throw new Error(_errMsgInvalidArgs.call(this))}else{isWithoutErrors=false}}if(isWithoutErrors){return true}}else{try{if(arg instanceof (objectType)){object=arg}else{if(!V.isEmpty(arg)){object=new objectType(arg,true)}}if(object&&!V.isObject(this._attr.objects[object.getId()])){this.length++;this._attr.objects[object.getId()]=object;if(this.callbacks&&V.isFunction(this.callbacks.onInsert)){this.callbacks.onInsert.call(this,object)}if(!this.objectType&&V.isFunction(object.getObjectType)){this.objectType=object.getObjectType()}}}catch(err){if(strict){throw new Error(_errMsgInvalidArgs.call(this))}return false}return true}return false}EpgObjectsContainer.prototype.del=function(arg){return _delObjectsContainer.call(this,arg)};EpgObjectsContainer.prototype.each=function(arg){return _eachObjectsContainerItem.call(this,arg)};EpgObjectsContainer.prototype.get=function(arg){return _getObjectsContainer.call(this,arg)};EpgObjectsContainer.prototype.getArray=function(arg){return _getObjectsContainerArray.call(this,arg)};EpgObjectsContainer.prototype.getLength=function(){return this.length||null};EpgObjectsContainer.prototype.getObjectType=function(){return this.objectType||null};EpgObjectsContainer.prototype.hasMember=function(id){return _hasMember.call(this,id)};EpgObjectsContainer.prototype.init=function(objectType,arg,strict,callbacks){this._attr={objects:{}};this.length=0;if(callbacks){this.callbacks=callbacks}this.set=function(arg,strict){return _setObjectsContainer.call(this,arg,strict,objectType)};if(arg){this.set(arg,strict)}this.init=EmptyFunction};EpgChannel=_makeClass();_inheritsFrom(EpgCore,EpgChannel);EpgChannel.prototype._type="Channel";function _setBroadcastFormat(broadcastFormat){if(V.isString(broadcastFormat)){broadcastFormat=broadcastFormat.toUpperCase();if(broadcastFormat==="SD"){this._attr.broadcastFormat="SD";return true}else{if(broadcastFormat==="HD"){this._attr.broadcastFormat="HD";return true}}}return false}function _setChannel(args,strict){var notSet=[];if(args){if(args.hasOwnProperty("broadcastFormat")&&!this.setBroadcastFormat(args.broadcastFormat)){notSet[notSet.length]="broadcastFormat"}if(args.hasOwnProperty("description")&&!this.setDescription(args.description)){notSet[notSet.length]="description"}if(args.hasOwnProperty("liveTvUrl")&&!this.setLiveTvUrl(args.liveTvUrl)){notSet[notSet.length]="liveTvUrl"}if(args.hasOwnProperty("logoIMG")){args.logoImg=args.logoIMG}if(args.hasOwnProperty("logoImg")&&!this.setLogoImg(args.logoImg)){notSet[notSet.length]="logoImg"}if(args.hasOwnProperty("position")&&!this.setPosition(args.position)){notSet[notSet.length]="position"}if(args.hasOwnProperty("url")&&!this.setUrl(args.url)){notSet[notSet.length]="url"}if(notSet.length===0){return true}else{if(strict){throw new Error(_errMsgInvalidOptionalArgs.call(this,notSet))}}}return false}EpgChannel.prototype.getName=function(){return this._attr.name};EpgChannel.prototype.getBroadcastFormat=function(){return this._attr.broadcastFormat||null};EpgChannel.prototype.getDescription=function(){return this._attr.description||null};EpgChannel.prototype.getLiveTvUrl=function(){return this._attr.getLiveTvUrl||null};EpgChannel.prototype.getLogoImg=function(){return this._attr.getLogoImg||null};EpgChannel.prototype.getPosition=function(){return this._attr.position||null};EpgChannel.prototype.getUrl=function(){return this._attr.url||null};EpgChannel.prototype.isHd=function(){var type=this.getBroadcastFormat();if(type==="HD"){return true}return false};EpgChannel.prototype.set=function(args,strict){return _setChannel.call(this,args,strict)};EpgChannel.prototype.setBroadcastFormat=function(broadcastFormat){return _setBroadcastFormat.call(this,broadcastFormat)};EpgChannel.prototype.setDescription=function(description){return _setStringProperty.call(this,"description",description)};EpgChannel.prototype.setLiveTvUrl=function(liveTvUrl){return _setStringProperty.call(this,"liveTvUrl",liveTvUrl)};EpgChannel.prototype.setLogoImg=function(logoImg){return _setStringProperty.call(this,"logoImg",logoImg)};EpgChannel.prototype.setPosition=function(position){return _setDigitProperty.call(this,"position",position)};EpgChannel.prototype.setUrl=function(url){return _setStringProperty.call(this,"url",url)};EpgChannel.prototype.init=function(args,strict){this._attr={};if(!(args.hasOwnProperty("id")&&args.hasOwnProperty("name"))){throw new Error(_errMsgMissingArgs.call(this))}if(!(_setStringProperty.call(this,"id",args.id)&&_setStringProperty.call(this,"name",args.name))){throw new Error(_errMsgInvalidArgs.call(this))}_setChannel.call(this,args,strict);this.init=EmptyFunction};EpgChannels=_makeClass();_inheritsFrom(EpgObjectsContainer,EpgChannels);EpgChannels.prototype._type="Channels";function _getHdChannels(){var channelId,channels;if(!V.isArray(this.filter.hd)){channels=this.get();if(channels){this.filter.hd=[];for(channelId in channels){if(channels.hasOwnProperty(channelId)){if(channels[channelId].isHd()){this.filter.hd.push(channels[channelId].getId())}}}}}if(!V.isEmpty(this.filter.hd)){return this.filter.hd}return null}EpgChannels.prototype.getHdChannels=function(){return _getHdChannels.call(this)};EpgChannels.prototype.init=function(args,strict){this._attr={};this.filter={};this.parent.init.call(this,EpgChannel,args,strict,{onDel:function(object){try{delete objects[object.getName()];return true}catch(err){return false}},onInsert:function(object){if(V.isFunction(object.getName)){this._attr.objects[object.getName()]=object}}});this.init=EmptyFunction};EpgProgramme=_makeClass();_inheritsFrom(EpgCore,EpgProgramme);EpgProgramme.prototype._type="Programme";function _setProgramme(args,strict){var notSet=[];if(args){if(args.hasOwnProperty("ageRating")&&!this.setAgeRating(args.ageRating)){notSet[notSet.length]="ageRating"}if(args.hasOwnProperty("countryOfOrigin")&&!this.setCountryOfOrigin(args.countryOfOrigin)){notSet[notSet.length]="countryOfOrigin"}if(args.hasOwnProperty("displayRating")&&!this.setDisplayRating(args.displayRating)){notSet[notSet.length]="displayRating"}if(args.hasOwnProperty("episodeTitle")&&!this.setEpisodeTitle(args.episodeTitle)){notSet[notSet.length]="episodeTitle"}if(args.hasOwnProperty("seriesId")&&!this.setSeriesId(args.seriesId)){notSet[notSet.length]="seriesId"}if(args.hasOwnProperty("shortDescription")&&!this.setShortDescription(args.shortDescription)){notSet[notSet.length]="shortDescription"}if(args.hasOwnProperty("subcategory")&&!this.setSubcategory(args.subcategory)){notSet[notSet.length]="subcategory"}if(args.hasOwnProperty("yearOfRelease")&&!this.setYearOfRelease(args.yearOfRelease)){notSet[notSet.length]="yearOfRelease"}if(notSet.length===0){return true}else{if(strict){throw new Error(_errMsgInvalidOptionalArgs.call(this,notSet))}}}return false}function _setProgrammeSubcategory(subcategory,strict){if(subcategory instanceof EpgSubcategory){this._attr.subcategory=subcategory;return true}else{if(subcategory&&V.isString(subcategory.id)&&V.isString(subcategory.name)){this._attr.subcategory=new EpgSubcategory(subcategory,strict);return true}}return false}EpgProgramme.prototype.getAgeRating=function(){return this._attr.ageRating||null};EpgProgramme.prototype.getCountryOfOrigin=function(){return this._attr.countryOfOrigin||null};EpgProgramme.prototype.getDisplayRating=function(){return this._attr.displayRating||null};EpgProgramme.prototype.getEpisodeTitle=function(){return this._attr.episodeTitle||null};EpgProgramme.prototype.getSeriesId=function(){return this._attr.seriesId||null};EpgProgramme.prototype.getShortDescription=function(){return this._attr.shortDescription||null};EpgProgramme.prototype.getSubcategory=function(){return this._attr.subcategory||null};EpgProgramme.prototype.getTitle=function(){return this._attr.title||null};EpgProgramme.prototype.getYearOfRelease=function(){return this._attr.yearOfRelease||null};EpgProgramme.prototype.set=function(args,strict){return _setProgramme.call(this,args,strict)};EpgProgramme.prototype.setAgeRating=function(ageRating){return _setIntegerProperty.call(this,"ageRating",ageRating)};EpgProgramme.prototype.setCountryOfOrigin=function(countryOfOrigin){return _setStringProperty.call(this,"countryOfOrigin",countryOfOrigin)};EpgProgramme.prototype.setDisplayRating=function(displayRating){return _setStringProperty.call(this,"displayRating",displayRating)};EpgProgramme.prototype.setEpisodeTitle=function(episodeTitle){return _setStringProperty.call(this,"episodeTitle",episodeTitle)};EpgProgramme.prototype.setSeriesId=function(seriesId){return _setDigitProperty.call(this,"seriesId",seriesId)};EpgProgramme.prototype.setShortDescription=function(shortDescription){return _setStringProperty.call(this,"shortDescription",shortDescription)};EpgProgramme.prototype.setSubcategory=function(subcategory,strict){return _setProgrammeSubcategory.call(this,subcategory,strict)};EpgProgramme.prototype.setYearOfRelease=function(yearOfRelease){return _setIntegerProperty.call(this,"yearOfRelease",yearOfRelease)};EpgProgramme.prototype.init=function(args,strict){this._attr={};if(!(args.hasOwnProperty("id")&&args.hasOwnProperty("title"))){throw new Error(_errMsgMissingArgs.call(this))}if(!(_setDigitProperty.call(this,"id",args.id)&&_setStringProperty.call(this,"title",args.title))){throw new Error(_errMsgInvalidArgs.call(this))}_setProgramme.call(this,args,strict);this.init=EmptyFunction};EpgProgrammes=_makeClass();_inheritsFrom(EpgObjectsContainer,EpgProgrammes);EpgProgrammes.prototype._type="Programmes";EpgProgrammes.prototype.init=function(args,strict){this._attr={};this.filter={};this.parent.init.call(this,EpgProgramme,args,strict);this.init=EmptyFunction};EpgEvent=_makeClass();_inheritsFrom(EpgCore,EpgEvent);EpgEvent.prototype._type="Event";function _getIso8601EndDateTime(){return P.epochToIso8601(this._attr.endDateTime.getTime())||null}function _getIso8601StartDateTime(){return P.epochToIso8601(this._attr.startDateTime.getTime())||null}function _setEvent(args,strict){var notSet=[];if(args){if(args.hasOwnProperty("channel")&&!this.setChannel(args.channel)){notSet[notSet.length]="channel"}if(args.hasOwnProperty("endDateTime")&&!this.setEndDateTime(args.endDateTime)){notSet[notSet.length]="endDateTime"}if(args.hasOwnProperty("programme")&&!this.setProgramme(args.programme)){notSet[notSet.length]="programme"}if(args.hasOwnProperty("url")&&!this.setUrl(args.url)){notSet[notSet.length]="url"}if(notSet.length===0){return true}else{if(strict){throw new Error(_errMsgInvalidOptionalArgs.call(this,notSet))}}}return false}function _setEventChannel(channel,strict){if(channel instanceof EpgChannel){this._attr.channel=channel;return true}else{if(channel&&V.isString(channel.id)&&V.isString(channel.name)){this._attr.channel=new EpgChannel(channel,strict);return true}}return false}function _setEventProgramme(programme){if(programme instanceof EpgProgramme){this._attr.programme=programme;return true}else{if(programme&&V.isDigit(programme.id)&&V.isString(programme.title)){this._attr.programme=new EpgProgramme(programme);return true}}return false}EpgEvent.prototype.getChannel=function(){return this._attr.channel||null};EpgEvent.prototype.getEndDateTime=function(){return this._attr.endDateTime||null};EpgEvent.prototype.getIso8601EndDateTime=function(){return _getIso8601EndDateTime.call(this)};EpgEvent.prototype.getIso8601StartDateTime=function(){return _getIso8601StartDateTime.call(this)};EpgEvent.prototype.getProgramme=function(){return this._attr.programme||null};EpgEvent.prototype.getStartDateTime=function(){return this._attr.startDateTime||null};EpgEvent.prototype.getUrl=function(){return this._attr.url||null};EpgEvent.prototype.getGridUrl=function(){return"/TV/?eId="+["eid",this.getId(),this.getChannel().getId(),this.getIso8601StartDateTime()].join("_")};EpgEvent.prototype.set=function(args,strict){return _setEvent.call(this,args,strict)};EpgEvent.prototype.setChannel=function(channel,strict){return _setEventChannel.call(this,channel,strict)};EpgEvent.prototype.setEndDateTime=function(endDateTime){return _setDateProperty.call(this,"endDateTime",endDateTime)};EpgEvent.prototype.setProgramme=function(programme,strict){return _setEventProgramme.call(this,programme,strict)};EpgEvent.prototype.setUrl=function(url){return _setStringProperty.call(this,"url",url)};EpgEvent.prototype.init=function(args,strict){this._attr={};if(!(args.hasOwnProperty("id")&&args.hasOwnProperty("startDateTime"))){throw new Error(_errMsgMissingArgs.call(this))}if(!(_setDigitProperty.call(this,"id",args.id)&&_setDateProperty.call(this,"startDateTime",args.startDateTime))){throw new Error(_errMsgInvalidArgs.call(this))}_setEvent.call(this,args,strict);this.init=EmptyFunction};EpgEvents=_makeClass();_inheritsFrom(EpgObjectsContainer,EpgEvents);EpgEvents.prototype._type="Events";EpgEvents.prototype.init=function(args,strict){this._attr={};this.filter={};this.parent.init.call(this,EpgEvent,args,strict);this.init=EmptyFunction};EpgBooking=_makeClass();_inheritsFrom(EpgEvent,EpgBooking);EpgBooking.prototype._type="Booking";function _hasSeriesId(){if(this._attr.hasOwnProperty("seriesId")){return true}return false}function _setBooking(args,strict){var notSet=[];if(args){if(args.hasOwnProperty("channelId")&&!this.setChannelId(args.channelId)){notSet[notSet.length]="channelId"}if(args.hasOwnProperty("programmeId")&&!this.setProgrammeId(args.programmeId)){notSet[notSet.length]="programmeId"}if(args.hasOwnProperty("status")&&!this.setStatus(args.status)){notSet[notSet.length]="status"}if(args.hasOwnProperty("statusCode")&&!this.setStatusCode(args.statusCode)){notSet[notSet.length]="statusCode"}if(args.hasOwnProperty("seriesId")&&!this.setSeriesId(args.seriesId)){notSet[notSet.length]="seriesId"}if(args.hasOwnProperty("tx_id")){args.txId=args.tx_id}if(args.hasOwnProperty("txId")&&!this.setTxId(args.txId)){notSet[notSet.length]="txId"}if(notSet.length===0){return true}else{if(strict){throw new Error(_errMsgInvalidOptionalArgs.call(this,notSet))}}}return false}function _setStatus(status){var statuses=["success","failure","pending","waiting"];if(V.isMember(status,statuses)){this._attr.status=status;return true}return false}EpgBooking.prototype.getTxId=function(){return this._attr.txId||null};EpgBooking.prototype.getChannelId=function(){return this._attr.channelId||null};EpgBooking.prototype.getEventId=function(){return this._attr.id||null};EpgBooking.prototype.getProgrammeId=function(){return this._attr.programmeId||null};EpgBooking.prototype.getStatus=function(){return this._attr.status||null};EpgBooking.prototype.getStatusCode=function(){return this._attr.statusCode||null};EpgBooking.prototype.getSeriesId=function(){return this._attr.seriesId||null};EpgBooking.prototype.hasSeriesId=function(){return _hasSeriesId.call(this)};EpgBooking.prototype.set=function(args,strict){return _setBooking.call(this,args,strict)};EpgBooking.prototype.setChannelId=function(channelId){return _setStringProperty.call(this,"channelId",channelId)};EpgBooking.prototype.setEventId=function(id){return _setId.call(this,id)};EpgBooking.prototype.setProgrammeId=function(programmeId){return _setDigitProperty.call(this,"programmeId",programmeId)};EpgBooking.prototype.setStatus=function(status){return _setStatus.call(this,status)};EpgBooking.prototype.setStatusCode=function(statusCode){return _setDigitProperty.call(this,"statusCode",statusCode)};EpgBooking.prototype.setSeriesId=function(seriesId){return _setDigitProperty.call(this,"seriesId",seriesId)};EpgBooking.prototype.setTxId=function(txId){return _setStringProperty.call(this,"txId",txId)};EpgBooking.prototype.init=function(args,strict){this._attr={status:"pending"};if(args.eventId){args.id=args.eventId}if(!(_setDigitProperty.call(this,"id",args.id)&&_setDateProperty.call(this,"startDateTime",args.startDateTime))){throw new Error(_errMsgInvalidArgs.call(this))}_setBooking.call(this,args,strict);this.init=EmptyFunction};EpgBookings=_makeClass();_inheritsFrom(EpgObjectsContainer,EpgBookings);EpgBookings.prototype._type="Bookings";EpgBookings.prototype.init=function(args,strict){this._attr={};this.filter={};this.parent.init.call(this,EpgBooking,args,strict);this.init=EmptyFunction};EpgReminder=_makeClass();_inheritsFrom(EpgBooking,EpgReminder);EpgReminder.prototype._type="Reminder";EpgReminders=_makeClass();_inheritsFrom(EpgObjectsContainer,EpgReminders);EpgReminders.prototype._type="Reminders";EpgReminders.prototype.init=function(args,strict){this._attr={};this.filter={};this.parent.init.call(this,EpgReminder,args,strict);this.init=EmptyFunction};EpgDomain=_makeClass();_inheritsFrom(EpgCore,EpgDomain);EpgDomain.prototype._type="Domain";function _setDomain(args){var notSet=[];if(args){if(args.hasOwnProperty("channelId")&&!this.setChannelId(args.channelId)){notSet[notSet.length]="channelId"}if(notSet.length===0){return true}else{if(strict){throw new Error(_errMsgInvalidOptionalArgs.call(this,notSet))}}}return false}EpgDomain.prototype.getName=function(){return this._attr.name||null};EpgDomain.prototype.set=function(args,strict){return _set.call(this,args,strict)};EpgDomain.prototype.init=function(args,strict){this._attr={};if(!(args.hasOwnProperty("id")&&args.hasOwnProperty("name"))){throw new Error(_errMsgMissingArgs.call(this))}if(!(_setDigitProperty.call(this,"id",args.id)&&_setStringProperty.call(this,"name",args.name))){throw new Error(_errMsgInvalidArgs.call(this))}_setDomain.call(this,args,strict);this.init=EmptyFunction};EpgDomains=_makeClass();_inheritsFrom(EpgObjectsContainer,EpgDomains);EpgDomains.prototype._type="Domains";EpgDomains.prototype.init=function(args,strict){this._attr={};this.filter={};this.parent.init.call(this,EpgDomain,args,strict);this.init=EmptyFunction};EpgGroup=_makeClass();_inheritsFrom(EpgCore,EpgGroup);EpgGroup.prototype._type="Group";function _setGroup(args){var notSet=[];if(args){if(args.hasOwnProperty("channelId")&&!this.setChannelId(args.channelId)){notSet[notSet.length]="channelId"}if(notSet.length===0){return true}else{if(strict){throw new Error(_errMsgInvalidOptionalArgs.call(this,notSet))}}}return false}EpgGroup.prototype.getName=function(){return this._attr.name||null};EpgGroup.prototype.set=function(args,strict){return _set.call(this,args,strict)};EpgGroup.prototype.setName=function(name){return _setStringProperty.call(this,"name",name)};EpgGroup.prototype.init=function(args,strict){this._attr={};if(!args.hasOwnProperty("id")){throw new Error(_errMsgMissingArgs.call(this))}if(!_setDigitProperty.call(this,"id",args.id)){throw new Error(_errMsgInvalidArgs.call(this))}_setGroup.call(this,args,strict);this.init=EmptyFunction};EpgGroups=_makeClass();_inheritsFrom(EpgObjectsContainer,EpgGroups);EpgGroups.prototype._type="Groups";EpgGroups.prototype.init=function(args,strict){this._attr={};this.filter={};this.parent.init.call(this,EpgGroup,args,strict);this.init=EmptyFunction};EpgCategory=_makeClass();_inheritsFrom(EpgCore,EpgCategory);EpgCategory.prototype._type="Category";EpgCategory.prototype.getName=function(){return this._attr.name||null};EpgCategory.prototype.set=function(args,strict){return _set.call(this,args,strict)};EpgCategory.prototype.init=function(args,strict){this._attr={};if(!(args.hasOwnProperty("id")&&args.hasOwnProperty("name"))){throw new Error(_errMsgMissingArgs.call(this))}if(!(_setStringProperty.call(this,"id",args.id)&&_setStringProperty.call(this,"name",args.name))){throw new Error(_errMsgInvalidArgs.call(this))}this.init=EmptyFunction};EpgCategories=_makeClass();_inheritsFrom(EpgObjectsContainer,EpgCategories);EpgCategories.prototype._type="Categories";EpgCategories.prototype.init=function(args,strict){this._attr={};this.filter={};this.parent.init.call(this,EpgCategory,args,strict);this.init=EmptyFunction};EpgSubcategory=_makeClass();_inheritsFrom(EpgCore,EpgSubcategory);EpgSubcategory.prototype._type="Subcategory";function _setSubcategory(args,strict){var notSet=[];if(args){if(args.hasOwnProperty("category")&&!this.setCategory(args.category)){notSet[notSet.length]="category"}if(notSet.length===0){return true}else{if(strict){throw new Error(_errMsgInvalidOptionalArgs.call(this,notSet))}}}return false}function _setSubcategoryCategory(category,strict){if(category instanceof EpgCategory){this._attr.category=category;return true}else{if(category&&V.isString(category.id)&&V.isString(category.name)){this._attr.category=new EpgCategory(category,strict);return true}}return false}EpgSubcategory.prototype.getCategory=function(){return this._attr.category||null};EpgSubcategory.prototype.getName=function(){return this._attr.name||null};EpgSubcategory.prototype.set=function(args,strict){return _set.call(this,args,strict)};EpgSubcategory.prototype.setCategory=function(category,strict){return _setSubcategoryCategory.call(this,category,strict)};EpgSubcategory.prototype.init=function(args,strict){this._attr={};if(!(args.hasOwnProperty("id")&&args.hasOwnProperty("name"))){throw new Error(_errMsgMissingArgs.call(this))}if(!(_setStringProperty.call(this,"id",args.id)&&_setStringProperty.call(this,"name",args.name))){throw new Error(_errMsgInvalidArgs.call(this))}_setSubcategory.call(this,args,strict);this.init=EmptyFunction};EpgSubcategories=_makeClass();_inheritsFrom(EpgObjectsContainer,EpgSubcategories);EpgSubcategories.prototype._type="Subcategories";EpgSubcategories.prototype.init=function(args,strict){this._attr={};this.filter={};this.parent.init.call(this,EpgSubcategory,args,strict);this.init=EmptyFunction};EpgSetTopBox=_makeClass();_inheritsFrom(EpgCore,EpgSetTopBox);EpgSetTopBox.prototype._type="SetTopBox";function _setType(type){var types=["STB","DVR"];if(V.isMember(type,types)){this._attr.type=type;return true}return false}function _setBoxStatus(status){var statuses=["offline","standby","online","unknown"];if(V.isMember(status,statuses)){this._attr.status=status;return true}return false}function _setReadyForServiceValue(value){if(V.isBoolean(value)){this._attr.isReadyForService=value;return true}return false}function _setSetTopBox(args,strict){var notSet=[];if(args){if(args.hasOwnProperty("description")&&!this.setDescription(args.description)){notSet[notSet.length]="description"}if(args.hasOwnProperty("hasIncompatibleSubscription")&&!this.setHasIncompatibleSubscription(args.hasIncompatibleSubscription)){notSet[notSet.length]="hasIncompatibleSubscription"}if(args.hasOwnProperty("isBookingsCapable")&&!this.setIsBookingsCapable(args.isBookingsCapable)){notSet[notSet.length]="isBookingsCapable"}if(args.hasOwnProperty("isHdCapable")&&!this.setIsHdCapable(args.isHdCapable)){notSet[notSet.length]="isHdCapable"}if(args.hasOwnProperty("status")&&!this.setStatus(args.status)){notSet[notSet.length]="status"}if(args.hasOwnProperty("isReadyForService")){this.setReadyForServiceValue(args.isReadyForService)}if(notSet.length===0){return true}else{if(strict){throw new Error(_errMsgInvalidOptionalArgs.call(this,notSet))}}}return false}EpgSetTopBox.prototype.getDescription=function(){return this._attr.description||null};EpgSetTopBox.prototype.getHasIncompatibleSubscription=function(){return this._attr.hasIncompatibleSubscription||false};EpgSetTopBox.prototype.isBookingsCapable=function(){return this._attr.isBookingsCapable||false};EpgSetTopBox.prototype.getIsHdCapable=function(){return this._attr.isHdCapable||false};EpgSetTopBox.prototype.getSmartCardId=function(){return this._attr.id||null};EpgSetTopBox.prototype.getStatus=function(){return this._attr.status||null};EpgSetTopBox.prototype.getType=function(){return this._attr.type||null};EpgSetTopBox.prototype.isReadyForService=function(){return this._attr.isReadyForService||false};EpgSetTopBox.prototype.set=function(args,strict){return _setSetTopBox.call(this,args,strict)};EpgSetTopBox.prototype.setDescription=function(description){return _setStringProperty.call(this,"description",description)};EpgSetTopBox.prototype.setHasIncompatibleSubscription=function(hasIncompatibleSubscription){return _setBooleanProperty.call(this,"hasIncompatibleSubscription",hasIncompatibleSubscription)};EpgSetTopBox.prototype.setIsHdCapable=function(isHdCapable){return _setBooleanProperty.call(this,"isHdCapable",isHdCapable)};EpgSetTopBox.prototype.setIsBookingsCapable=function(isBookingsCapable){return _setBooleanProperty.call(this,"isBookingsCapable",isBookingsCapable)};EpgSetTopBox.prototype.setStatus=function(status){return _setBoxStatus.call(this,status)};EpgSetTopBox.prototype.setReadyForServiceValue=function(value){return _setBooleanProperty.call(this,"isReadyForService",value)};EpgSetTopBox.prototype.init=function(args,strict){this._attr={};if(args.smartCardId){args.id=args.smartCardId}if(!(_setStringProperty.call(this,"id",args.id)&&_setType.call(this,args.type))){throw new Error(_errMsgInvalidArgs.call(this))}_setSetTopBox.call(this,args,strict);this.init=EmptyFunction};EpgSetTopBoxes=_makeClass();_inheritsFrom(EpgObjectsContainer,EpgSetTopBoxes);EpgSetTopBoxes.prototype._type="SetTopBoxes";EpgSetTopBoxes.prototype.init=function(args,strict){this._attr={};this.filter={};this.parent.init.call(this,EpgSetTopBox,args,strict);this.init=EmptyFunction};EpgUser=_makeClass();_inheritsFrom(EpgCore,EpgUser);function _addFavouriteChannelId(channelId){if(V.isString(channelId)){if(!V.isMember(channelId,this._attr.favouriteChannels)){this._attr.favouriteChannels[this._attr.favouriteChannels.length]=channelId}return true}return false}function _deleteFavouriteChannelId(channelId){var i=0;if(V.isString(channelId)&&V.isMember(channelId,this._attr.favouriteChannels)){while(i<this._attr.favouriteChannels.length){if(this._attr.favouriteChannels[i]==channelId){this._attr.favouriteChannels.splice(i,1)}else{i++}}return true}return false}function _getBox(){if(V.isDigit(this._attr.defaultSmartCardId)&&this._attr.boxes.get(this._attr.defaultSmartCardId)){return this._attr.boxes.get(this._attr.defaultSmartCardId)}return null}function _getBoxById(id){if(V.isDigit(id)&&this._attr.boxes.hasMember(id)){return this._attr.boxes.get(id)}return null}function _hasDvr(){var box=_getBox.call(this);if(box&&box.getType()==="DVR"){return true}return false}function _hasHdCapableBox(){var box=_getBox.call(this),boxType;if(box){boxType=box.getType();if(box.getIsHdCapable()){return true}}return false}function _hasCompatibleBox(){var box=_getBox.call(this),boxType;if(box){boxType=box.getType();if((boxType==="DVR"||boxType==="STB")&&box.isBookingsCapable()){return true}}return false}function _hasIncompatibleSubscription(){var box=_getBox.call(this);if(box&&box.getHasIncompatibleSubscription()){return true}return false}function _hasStb(){var box=_getBox.call(this),boxType;if(box){boxType=box.getType();if(boxType==="DVR"||boxType==="STB"){return true}}return false}function _setBoxes(args,strict){if(this.isset(this._attr.boxes)){delete this._attr.boxes}this._attr.boxes=new EpgSetTopBoxes(args,strict);if(!V.isEmpty(this._attr.boxes)){return true}return false}function _setFavourites(arg){var j=0;if(V.isArray(arg)){this._attr.favouriteChannels=[];for(var i=arg.length;i--;){if(_addFavouriteChannelId.call(this,arg[i])){j++}}if(j===arg.length){return true}}return false}function _setFavouriteChannels(arg){if(V.isArray(arg)){return _setFavourites.call(this,arg)}return false}function _setEmailConfig(args){var emailConfig=this._attr.emailConfig;if(V.isString(args.recipient)){emailConfig.recipient=args.recipient}else{emailConfig.recipient=""}if(V.isBoolean(args.isVerified)){emailConfig.isVerified=args.isVerified}else{emailConfig.isVerified=false}if(V.isBoolean(args.isEnabled)){emailConfig.isEnabled=args.isEnabled}else{emailConfig.isEnabled=false}if(args.hasOwnProperty("recipient")||args.hasOwnProperty("isEnabled")||args.hasOwnProperty("isVerified")){return true}return false}function _setIsAccountEnabled(arg){if(V.isBoolean(arg)){this._attr.isAccountEnabled=arg;return true}else{this._attr.isAccountEnabled=false;return false}}function _setPushConfig(args){var pushConfig=this._attr.pushConfig;if(V.isString(args.recipient)){pushConfig.recipient=args.recipient}else{pushConfig.recipient=""}if(V.isBoolean(args.isVerified)){pushConfig.isVerified=args.isVerified}else{pushConfig.isVerified=false}if(V.isBoolean(args.isEnabled)){pushConfig.isEnabled=args.isEnabled}else{pushConfig.isEnabled=false}if(args.hasOwnProperty("recipient")||args.hasOwnProperty("isEnabled")||args.hasOwnProperty("isVerified")){return true}return false}function _setSmsConfig(args){var smsConfig=this._attr.smsConfig;if(V.isString(args.recipient)){smsConfig.recipient=args.recipient}else{smsConfig.recipient=""}if(V.isBoolean(args.isVerified)){smsConfig.isVerified=args.isVerified}else{smsConfig.isVerified=false}if(V.isBoolean(args.isEnabled)){smsConfig.isEnabled=args.isEnabled}else{smsConfig.isEnabled=false}if(V.isString(args.token)){smsConfig.token=args.token}if(args.hasOwnProperty("recipient")||args.hasOwnProperty("isEnabled")||args.hasOwnProperty("isVerified")||args.hasOwnProperty("token")){return true}return false}function _setCityCode(arg){var value=parseInt(arg,10);if(typeof value=="number"&&value===value){this._attr.cityCode=value;return true}return false}function _setUser(args,strict){var notSet=[];if(args){if(args.hasOwnProperty("boxes")&&!this.setBoxes(args.boxes,strict)){notSet[notSet.length]="boxes"}if(args.hasOwnProperty("defaultSmartCardId")&&!this.setDefaultSmartCardId(args.defaultSmartCardId)){notSet[notSet.length]="defaultSmartCardId"}if(args.hasOwnProperty("emailConfig")&&!this.setEmailConfig(args.emailConfig)){notSet[notSet.length]="emailConfig"}if(args.hasOwnProperty("favouriteChannels")&&!this.setFavouriteChannels(args.favouriteChannels)){notSet[notSet.length]="favouriteChannels"}if(args.hasOwnProperty("familyName")&&!this.setFamilyName(args.familyName)){notSet[notSet.length]="familyName"}if(args.hasOwnProperty("givenName")&&!this.setGivenName(args.givenName)){notSet[notSet.length]="givenName"}if(args.hasOwnProperty("isAccountEnabled")&&!this.setIsAccountEnabled(args.isAccountEnabled)){notSet[notSet.length]="isAccountEnabled"}if(args.hasOwnProperty("pushConfig")&&!this.setPushConfig(args.pushConfig)){notSet[notSet.length]="pushConfig"}if(args.hasOwnProperty("smsConfig")&&!this.setSmsConfig(args.smsConfig)){notSet[notSet.length]="smsConfig"}if(args.hasOwnProperty("cityCode")){this.setCityCode(args.cityCode)}if(notSet.length===0){return true}else{if(strict){throw new Error(_errMsgInvalidOptionalArgs.call(this,notSet))}}}return false}EpgUser.prototype.addFavouriteChannelId=function(channelId){return _addFavouriteChannelId.call(this,channelId)};EpgUser.prototype.deleteFavouriteChannelId=function(channelId){return _deleteFavouriteChannelId.call(this,channelId)};EpgUser.prototype.getBox=function(){return _getBox.call(this)||null};EpgUser.prototype.getBoxById=function(boxId){return _getBoxById.call(this,boxId)||null};EpgUser.prototype.getBoxes=function(){return this._attr.boxes||null};EpgUser.prototype.getCustomerId=function(){return this._attr.id||null};EpgUser.prototype.getDefaultSmartCardId=function(){return this._attr.defaultSmartCardId||null};EpgUser.prototype.getEmailConfig=function(){return this._attr.emailConfig||null};EpgUser.prototype.getEmailConfigRecipient=function(){return this._attr.emailConfig.recipient||null};EpgUser.prototype.getEmailConfigIsVerified=function(){return this._attr.emailConfig.isVerified||false};EpgUser.prototype.getEmailConfigIsEnabled=function(){return this._attr.emailConfig.isEnabled||false};EpgUser.prototype.getFamilyName=function(){return this._attr.familyName||null};EpgUser.prototype.getFavouriteChannels=function(){return this._attr.favouriteChannels||null};EpgUser.prototype.getGivenName=function(){return this._attr.givenName||null};EpgUser.prototype.getIsAccountEnabled=function(){return this._attr.isAccountEnabled||false};EpgUser.prototype.getPushConfig=function(){return this._attr.pushConfig||null};EpgUser.prototype.getPushConfigRecipient=function(){return this._attr.pushConfig.recipient||null};EpgUser.prototype.getPushConfigIsVerified=function(){return this._attr.pushConfig.isVerified||false};EpgUser.prototype.getPushConfigIsEnabled=function(){return this._attr.pushConfig.isEnabled||false};EpgUser.prototype.getSmsConfig=function(){return this._attr.smsConfig||null};EpgUser.prototype.getSmsConfigRecipient=function(){return this._attr.smsConfig.recipient||null};EpgUser.prototype.getSmsConfigIsVerified=function(){return this._attr.smsConfig.isVerified||false};EpgUser.prototype.getSmsConfigIsEnabled=function(){return this._attr.smsConfig.isEnabled||false};EpgUser.prototype.getCityCode=function(){return this._attr.cityCode||null};EpgUser.prototype.hasDvr=function(){return _hasDvr.call(this)};EpgUser.prototype.hasCompatibleBox=function(){return _hasCompatibleBox.call(this)};EpgUser.prototype.hasHdCapableBox=function(){return _hasHdCapableBox.call(this)};EpgUser.prototype.hasIncompatibleSubscription=function(){return _hasIncompatibleSubscription.call(this)};EpgUser.prototype.hasStb=function(){return _hasStb.call(this)};EpgUser.prototype.set=function(args,strict){return _setUser.call(this,args,strict)};EpgUser.prototype.setBoxes=function(arg,strict){return _setBoxes.call(this,arg,strict)};EpgUser.prototype.setDefaultSmartCardId=function(smartCard){return _setStringProperty.call(this,"defaultSmartCardId",smartCard)};EpgUser.prototype.setEmailConfig=function(emailConfig){return _setEmailConfig.call(this,emailConfig)};EpgUser.prototype.setEmailConfigRecipient=function(emailConfigRecipient){return _setEmailConfig.call(this,{recipient:emailConfigRecipient})};EpgUser.prototype.setEmailConfigIsVerified=function(emailConfigIsVerified){return _setEmailConfig.call(this,{isVerified:emailConfigIsVerified})};EpgUser.prototype.setEmailConfigIsEnabled=function(emailConfigIsEnabled){return _setEmailConfig.call(this,{isEnabled:emailConfigIsEnabled})};EpgUser.prototype.setFamilyName=function(familyName){return _setStringProperty.call(this,"familyName",familyName)};EpgUser.prototype.setFavouriteChannels=function(arg){return _setFavouriteChannels.call(this,arg)};EpgUser.prototype.setGivenName=function(givenName){return _setStringProperty.call(this,"givenName",givenName)};EpgUser.prototype.setIsAccountEnabled=function(isAccountEnabled){return _setIsAccountEnabled.call(this,isAccountEnabled)};EpgUser.prototype.setPushConfig=function(pushConfig){return _setPushConfig.call(this,pushConfig)};EpgUser.prototype.setPushConfigRecipient=function(pushConfigRecipient){return _setPushConfig.call(this,{recipient:pushConfigRecipient})};EpgUser.prototype.setPushConfigIsVerified=function(pushConfigIsVerified){return _setPushConfig.call(this,{isVerified:pushConfigIsVerified})};EpgUser.prototype.setPushConfigIsEnabled=function(pushConfigIsEnabled){return _setPushConfig.call(this,{isEnabled:pushConfigIsEnabled})};EpgUser.prototype.setSmsConfig=function(smsConfig){return _setSmsConfig.call(this,smsConfig)};EpgUser.prototype.setSmsConfigRecipient=function(smsConfigRecipient){return _setSmsConfig.call(this,{recipient:smsConfigRecipient})};EpgUser.prototype.setSmsConfigIsVerified=function(smsConfigIsVerified){return _setSmsConfig.call(this,{isVerified:smsConfigIsVerified})};EpgUser.prototype.setSmsConfigIsEnabled=function(smsConfigIsEnabled){return _setSmsConfig.call(this,{isEnabled:smsConfigIsEnabled})};EpgUser.prototype.setCityCode=function(cityCode){return _setCityCode.call(this,cityCode)};EpgUser.prototype.init=function(args,strict){this._type="User";this._attr={boxes:{},favouriteChannels:[],emailConfig:{},smsConfig:{},pushConfig:{}};if(args.customerId){args.id=args.customerId}if(!_setDigitProperty.call(this,"id",args.id)){throw new Error(_errMsgInvalidArgs.call(this))}_setUser.call(this,args,strict);this.init=EmptyFunction}})();(function(){var basePath="";var baseUrl="https://"+document.location.hostname;var favouritesTime=new Date().getTime();var favouritesRefreshTime=60000;var fullUrl=null;var lang="English";var errMsg="Error in ";var userRefreshTime=30000;var userTime=new Date().getTime();try{var Cookie=UPC.util.Cookie;var F=UPC.util.Fetch;var V=UPC.util.Validate}catch(err){throw"epg-customer.js -> dependancy library is missing or did not initiate properly"}EpgSession=(function(){var _objName="EpgSession";var _objErrMsg="Error in "+_objName;var bookings=null;var bookingsTime=new Date().getTime();var bookingsRefreshTime=30000;var cookieName="epg_state";var user=null;var persistentCookieName="epg_rm";var statusMessages={bookings:null,reminders:null,session:null};var remindersRefreshTime=30000;var remindersTime=new Date().getTime();var reminders=null;if(!EpgUser||!EpgBooking||!EpgEvent||!EpgReminder){throw _objErrMsg+"-> dependancy Epg objects library is missing or did not initiate properly"}function _hasRequiredParams(){if(V.isString(serverUrl)&&V.isString(serverPath)&&V.isString(lang)){return true}return false}function _setBookings(arg){var tmp=[];if(!bookings&&arg){bookings=new EpgBookings(arg,true)}else{bookings.set(arg,true)}if(V.isArray(arg)&&arg.length!==0){for(var i=arg.length;i--;){if(arg[i].id&&bookings.hasMember(arg[i].id)){tmp[tmp.length]=bookings.get(arg[i].id)}}}else{if(arg instanceof Object){if(arg.id&&bookings.hasMember(arg.id)){tmp=bookings.get(arg.id)}}}return tmp}function _setStatusBookings(status){var tmp=bookings.get();if(V.isString(status)&&!V.isEmpty(tmp)){for(var booking in tmp){if(tmp.hasOwnProperty(booking)){tmp[booking].setStatus(status)}}}}function _setStatusMessagesBookings(arg){statusMessages.bookings=arg}function _setStatusMessagesReminders(arg){statusMessages.reminders=arg}function _setStatusMessagesSession(arg){statusMessages.session=arg}function _setStatusReminders(status){if(V.isString(status)){for(var reminder in reminders){if(reminders.hasOwnProperty(reminder)&&reminder instanceof EpgReminder){reminders[reminders].setStatus(status)}}}}function _setReminders(arg){var tmp=[];if(!reminders&&arg){reminders=new EpgReminders(arg,true)}else{reminders.set(arg,true)}if(V.isArray(arg)&&arg.length!==0){for(var i=arg.length;i--;){if(arg[i].id&&reminders.hasMember(arg[i].id)){tmp[tmp.length]=reminders.get(arg[i].id)}}}else{if(arg instanceof Object){if(arg.id&&reminders.hasMember(arg.id)){tmp=reminders.get(arg.id)}}}return tmp}function create(args){var data=null;var params={};if(!hasSsl()){throw _objErrMsg+".create() -> invalid HTTP protocol use SSL"}if(!_hasRequiredParams){throw _objErrMsg+".create() -> please use "+_objName+".setParams() to set URL to server"}if(V.isBoolean(args.rememberMe)){params.rememberMe=args.rememberMe}if(V.isFunction(args.onSuccess)&&V.isFunction(args.onFailure)&&V.isString(args.username)&&V.isString(args.password)){params.username=args.username;params.password=args.password;F.getXhr(fullUrl+"User/session",{method:"post",params:params,onFailure:function(response){args.onFailure(response)},onSuccess:function(data,response){try{if(!V.isSession(data)&&!V.isUser(data.customer)){throw _ObjErrMsg+".create() -> onSuccess response contains invalid user object"}user=new EpgUser(data.customer);_setBookings(data.bookings);_setReminders(data.reminders);args.onSuccess(user,bookings,reminders,response)}catch(err){args.onFailure(response,err)}}})}else{throw _objErrMsg+".create() -> invalid params given"}}function destroy(args){var params={};if(!isValid()){return}if((V.isFunction(args.onSuccess)&&V.isFunction(args.onFailure))||Object.values(params).length===0){user=null;F.getXhr(fullUrl+"User/session",{method:"delete",onFailure:function(response){Cookie.remove(cookieName);Cookie.remove(persistentCookieName);args.onFailure(response)},onSuccess:function(){Cookie.remove(cookieName);Cookie.remove(persistentCookieName);args.onSuccess(true)}})}else{throw _objErrMsg+".destroy() -> invalid parameters given"}}function getBooking(eventId){if(!isValid()){throw _objErrMsg+".getBooking() -> no session found please login"}if(bookings&&bookings.hasMember(eventId)){return bookings.get(eventId)}return null}function getStatusMessageBookings(code){if(statusMessages.bookings.hasOwnProperty(code)){return statusMessages.bookings[code]}return null}function getStatusMessageReminders(code){if(statusMessages.reminders.hasOwnProperty(code)){return statusMessages.reminders[code]}return null}function getStatusMessageSession(code){if(statusMessages.session.hasOwnProperty(code)){return statusMessages.session[code]}return null}function getReminder(eventId){if(!isValid()){throw _objErrMsg+" getReminder() -> no session found please login"}if(reminders&&reminders.hasMember(eventId)){return reminders.get(eventId)}return null}function getUser(){return user||null}function hasBooking(eventId){if(eventId){if(!isValid()){return false}else{if(user){if(!user.hasDvr()){return false}}}if(bookings&&bookings.hasMember(eventId)){return true}}return false}function hasCookie(){var cookie=Cookie.read(cookieName);var persistentCookie=Cookie.read(persistentCookieName);if(V.isString(cookie)||V.isString(persistentCookie)){return true}return false}function hasSsl(){if(document.location.protocol==="https:"){return true}return false}function hasReminder(eventId){if(eventId){if(!isValid()){return false}else{if(user){if(!user.hasStb()){return false}}}if(reminders&&reminders.hasMember(eventId)){return true}}return false}function isValid(){if(hasCookie()&&hasSsl()&&user!==null&&bookings!==null&&reminders!==null){return true}return false}function setParams(args){if(!hasSsl()){throw _objErrMsg+".setParams() -> invalid HTTP protocol use SSL"}if(args){if(args.hasOwnProperty("lang")){lang=args.lang}if(V.isString(args.baseUrl)){baseUrl=args.baseUrl}if(V.isString(args.basePath)){basePath=args.basePath}else{throw _objErrMsg+".setParams() -> serverPath is not defined"}fullUrl=baseUrl+basePath;if(args.hasOwnProperty("statusMessagesBookings")){setStatusMessagesBookings(args.statusMessagesBookings)}else{retrieveStatusMessagesBookings({onSuccess:function(){},onFailure:function(){}})}if(args.hasOwnProperty("statusMessagesReminders")){setStatusMessagesReminders(args.statusMessagesReminders)}else{retrieveStatusMessagesReminders({onSuccess:function(){},onFailure:function(){}})}if(args.hasOwnProperty("statusMessagesSession")){setStatusMessagesReminders(args.statusMessagesSession)}else{retrieveStatusMessagesSession({onSuccess:function(){},onFailure:function(){}})}if(args.hasOwnProperty("bookingsRefreshTime")&&V.isInt(args.bookingsRefreshTime)){bookingsRefreshTime=args.bookingsRefreshTime}if(args.hasOwnProperty("favouritesRefreshTime")&&V.isInt(args.favouritesRefreshTime)){favouritesRefreshTime=args.favouritesRefreshTime}if(args.hasOwnProperty("reminderRefreshTime")&&V.isInt(args.reminderRefreshTime)){reminderRefreshTime=args.reminderRefreshTime}}else{throw _objErrMsg+".setParams() -> Invalid arguments passed"}}function retrieve(args){var data=null;var params={};if(!hasSsl()||!hasCookie()){throw _objErrMsg+".retrieve() -> invalid HTTP protocol use SSL"}if(V.isFunction(args.onSuccess)&&V.isFunction(args.onFailure)){F.getXhr(fullUrl+"User/session",{onFailure:function(response){args.onFailure(response)},onSuccess:function(data,response){try{user=new EpgUser(data.customer,true);_setBookings(data.bookings);_setReminders(data.reminders);args.onSuccess(data)}catch(err){args.onFailure(response,err)}}})}else{throw _objErrMsg+".retrieve() -> invalid params given"}}function retrieveBookings(args){var currentTime=new Date().getTime();var data=null;if(!isValid()){throw _objErrMsg+".retrieveBookings() -> no session found please login"}if(!user.hasDvr()){throw _objErrMsg+".retrieveBookings() -> box identified by defaultSmartCardId does not support DVR"}if(!args||(!V.isFunction(args.onSuccess)||!V.isFunction(args.onFailure))){throw _objErrMsg+".retrieveBookings() -> onSuccess and onFailure arguments are invalid"}if((bookingsTime<currentTime-bookingsRefreshTime)||((args.hasOwnProperty("cache")&&args.cache===false))){F.getXhr(fullUrl+"User/bookings",{onFailure:function(response){args.onFailure(response)},onSuccess:function(data,response){try{if(!V.isArray(data)){throw _ObjErrMsg+".retrieveBookings() -> onSuccess response contains invalid data object"}_setStatusBookings("deleted");args.onSuccess(_setBookings(data));bookingsTime=new Date().getTime()}catch(err){args.onFailure(response,err)}}})}else{args.onSuccess(bookings.getArray())}}function retrieveStatusMessagesBookings(args){if(!args||(!V.isFunction(args.onSuccess)||!V.isFunction(args.onFailure))){throw _objErrMsg+".retrieveStatusMessagesBookings() -> onSuccess and onFailure arguments are invalid"}F.getXhr(fullUrl+"bookings/statusMessages?lang="+lang,{onFailure:function(response){args.onFailure(response)},onSuccess:function(data,response){try{args.onSuccess(_setStatusMessagesBookings(data))}catch(err){args.onFailure(response,err)}}})}function retrieveStatusMessagesReminders(args){if(!args||(!V.isFunction(args.onSuccess)||!V.isFunction(args.onFailure))){throw _objErrMsg+"retrieveStatusMessagesReminders() -> onSuccess and onFailure arguments are invalid"}F.getXhr(fullUrl+"reminders/statusMessages?lang="+lang,{onFailure:function(response){args.onFailure(response)},onSuccess:function(data,response){try{args.onSuccess(_setStatusMessagesReminders(data))}catch(err){args.onFailure(response,err)}}})}function retrieveStatusMessagesSession(args){if(!args||(!V.isFunction(args.onSuccess)||!V.isFunction(args.onFailure))){throw _objErrMsg+".retrieveStatusMessagesSession() -> onSuccess and onFailure arguments are invalid"}F.getXhr(fullUrl+"User/session/statusMessages?lang="+lang,{onFailure:function(response){args.onFailure(response)},onSuccess:function(data,response){try{args.onSuccess(_setStatusMessagesSession(data))}catch(err){args.onFailure(response,err)}}})}function retrieveReminders(args){var currentTime=new Date().getTime();var data=null;if(!isValid()){throw _objErrMsg+".retrieveReminders() -> no session found please login"}if(!user.hasStb()){throw _objErrMsg+".retrieveReminders() -> box identified by defaultSmartCardId does not support DVR"}if(!args||(!V.isFunction(args.onSuccess)||!V.isFunction(args.onFailure))){throw _objErrMsg+".retrieveBookings() -> onSuccess and onFailure arguments are invalid"}if((remindersTime<currentTime-remindersRefreshTime)||((args.hasOwnProperty("cache")&&args.cache===false))){F.getXhr(fullUrl+"User/reminders",{onFailure:function(response){args.onFailure(response)},onSuccess:function(data,response){try{if(!V.isArray(data)){throw _ObjErrMsg+".retrieveReminders() -> onSuccess response contains invalid data object"}_setStatusReminders("deleted");args.onSuccess(_setReminders(data));remindersTime=new Date().getTime()}catch(err){args.onFailure(response,err)}}})}else{args.onSuccess(reminders.getArray())}}function updateBookings(args){var params={};if(!isValid()){throw _objErrMsg+"updateBookings() -> no session found please login"}if(!user.hasDvr()){throw _objErrMsg+".updateBookings() -> box identified by defaultSmartCardId does not support DVR"}params.shouldOverride=args.shouldOverride||false;if(V.isInt(args.eventId)){params.eventId=parseInt(args.eventId,10)}else{params.seriesId=parseInt(args.seriesId,10)}if((V.isInt(args.eventId)||V.isInt(args.seriesId))&&V.isFunction(args.onSuccess)&&V.isFunction(args.onFailure)){F.getXhr(fullUrl+"User/bookings",{method:"post",params:params,onFailure:function(response){args.onFailure(response)},onSuccess:function(data,response){try{if(params.shouldOverride){retrieveBookings({cache:false,onFailure:function(response){args.onFailure(response)},onSuccess:function(data){try{args.onSuccess(data)}catch(err){args.onFailure(response,err)}}})}else{args.onSuccess(_setBookings(data),response)}}catch(err){args.onFailure(response,err)}}})}else{throw _objErrMsg+".updateBookings() -> invalid parameters given"}}function updateReminders(args){var params={};if(!isValid()){throw _objErrMsg+"updateReminders() -> no session found please login"}if(!user.hasStb()){throw _objErrMsg+".updateReminders() -> customer does not have DTV subscription"}if((V.isInt(args.eventId))&&V.isFunction(args.onSuccess)&&V.isFunction(args.onFailure)){F.getXhr(fullUrl+"User/reminders",{method:"post",params:{eventId:parseInt(args.eventId,10)},onFailure:function(response){args.onFailure(response)},onSuccess:function(data,response){try{args.onSuccess(_setReminders(data),response)}catch(err){args.onFailure(response,err)}}})}else{throw _objErrMsg+".updateReminder() -> invalid parameters given"}}function retrieveStbStatus(args){if(!isValid()){throw _objErrMsg+"retrieveStbStatus() -> no session found please login"}if(!user.hasStb()){throw _objErrMsg+".retrieveStbStatus() -> customer does not have DTV subscription"}var url=fullUrl+"User/boxes";if(V.isFunction(args.onSuccess)&&V.isFunction(args.onFailure)){if(args.smartCardId){url+="/"+args.smartCardId}}else{throw _objErrMsg+".retrieveStbStatus() -> invalid parameters given"}F.getXhr(url,{method:"get",onSuccess:function(data,response){try{if(Object.isArray(data)){data.each(function(item){user.getBoxById(item.smartCardId).setReadyForServiceValue(item.isReadyForService)})}else{user.getBoxById(data.smartCardId).setReadyForServiceValue(data.isReadyForService)}args.onSuccess(user.getBoxes())}catch(err){args.onFailure(response,err)}},onFailure:function(response){args.onFailure(response)}})}return{create:create,destroy:destroy,getBooking:getBooking,getStatusMessageBookings:getStatusMessageBookings,getStatusMessageReminders:getStatusMessageReminders,getStatusMessageSession:getStatusMessageSession,getReminder:getReminder,getUser:getUser,hasBooking:hasBooking,hasCookie:hasCookie,hasSsl:hasSsl,hasReminder:hasReminder,isValid:isValid,retrieve:retrieve,retrieveBookings:retrieveBookings,retrieveStatusMessagesBookings:retrieveStatusMessagesBookings,retrieveStatusMessagesReminders:retrieveStatusMessagesReminders,retrieveStatusMessagesSession:retrieveStatusMessagesSession,retrieveReminders:retrieveReminders,retrieveStbStatus:retrieveStbStatus,setParams:setParams,updateBookings:updateBookings,updateReminders:updateReminders}})();function _deleteFavourite(args){var _objName=this._type;var _objErrMsg=errMsg+this._type;var params={};var self=this;if(!EpgSession.isValid()){throw _objErrMsg+".deleteFavourite() -> no session found please login"}if(V.isString(args.channelId)&&V.isFunction(args.onSuccess)&&V.isFunction(args.onFailure)){F.getXhr(fullUrl+"User/favouriteChannels",{method:"delete",params:{channelId:args.channelId},onFailure:function(response){args.onFailure(response)},onSuccess:function(data,response){try{self.set({favouriteChannels:data},true);args.onSuccess(self);favouritesTime=new Date().getTime()}catch(err){args.onFailure(response,err)}}})}else{throw _objErrMsg+".deleteFavourite() -> invalid parameters given"}}function _sendEmailToken(args){var _objName=this._type;var _objErrMsg=errMsg+this._type;var self=this;if(!EpgSession.isValid()){throw _objErrMsg+".sendEmailToken() -> no session found please login"}if(V.isFunction(args.onSuccess)&&V.isFunction(args.onFailure)){F.getXhr(fullUrl+"User/token",{method:"post",onFailure:function(response){args.onFailure(response)},onSuccess:function(data,response){try{if(!V.isUser(data)){throw _ObjErrMsg+".sendEmailToken() -> onSuccess response contains invalid user object"}self.set(data,true);args.onSuccess(self,response)}catch(err){args.onFailure(response,err)}}})}else{throw _objErrMsg+".sendEmailToken() -> invalid parameters given"}}function _sendSmsToken(args){var _objName=this._type;var _objErrMsg=errMsg+this._type;var self=this;if(!EpgSession.isValid()){throw _objErrMsg+".sendSmsToken() -> no session found please login"}if(V.isFunction(args.onSuccess)&&V.isFunction(args.onFailure)){F.getXhr(fullUrl+"User/token/sms",{method:"post",onFailure:function(response){args.onFailure(response)},onSuccess:function(data,response){try{if(!V.isUser(data)){throw _ObjErrMsg+"sendSmsToken() -> onSuccess response contains invalid user object"}self.set(data,true);args.onSuccess(self,response);userTime=new Date().getTime()}catch(err){args.onFailure(response,err)}}})}else{throw _objErrMsg+" sendSmsToken() -> invalid parameters given"}}function _retrieveFavourites(args){var _objName=this._type;var _objErrMsg=errMsg+this._type;var data=null;var currentTime=new Date().getTime();var self=this;var url=fullUrl+"User/favouriteChannels";if(!EpgSession.isValid()){throw _objErrMsg+".retrieveFavourites() -> no session found please login"}if(!args||(!V.isFunction(args.onSuccess)||!V.isFunction(args.onFailure))){throw _objErrMsg+".retrieveFavourites() -> onSuccess and onFailure arguments are invalid"}if((favouritesTime<currentTime-favouritesRefreshTime)||((args&&args.hasOwnProperty("cache")&&args.cache===false))){F.getXhr(url,{onFailure:function(response){args.onFailure(response)},onSuccess:function(data,response){try{self.set({favouriteChannels:data},true);args.onSuccess(self.getFavouriteChannels());favouritesTime=new Date().getTime()}catch(err){args.onFailure(response,err)}}})}else{args.onSuccess(this.getFavouriteChannels())}}function _retrieveUser(args){var _objName=this._type;var _objErrMsg=errMsg+this._type;var currentTime=new Date().getTime();var data=null;var self=this;var url=fullUrl+"User";if(!EpgSession.isValid()){throw errMsg+_objName+".retrieve() -> no session found please login"}if(!args||(!V.isFunction(args.onSuccess)||!V.isFunction(args.onFailure))){throw _objErrMsg+".retrieve() -> onSuccess and onFailure arguments are invalid"}if((userTime<currentTime-userRefreshTime)||((args.hasOwnProperty("cache")&&args.cache===false))){F.getXhr(url,{onFailure:function(response){args.onFailure(response)},onSuccess:function(data,response){try{self.set(data,true);args.onSuccess(self);userTime=new Date().getTime()}catch(err){args.onFailure(response,err)}}})}else{args.onSuccess(this)}}function _updateFavourites(args){var _objName=this._type;var _objErrMsg=errMsg+this._type;var self=this;if(!EpgSession.isValid()){throw _objErrMsg+".updateFavourites() -> no session found please login"}if(V.isString(args.channelId)&&V.isFunction(args.onSuccess)&&V.isFunction(args.onFailure)){F.getXhr(fullUrl+"User/favouriteChannels",{method:"put",params:{channelId:args.channelId},onFailure:function(response){args.onFailure(response)},onSuccess:function(data,response){try{self.set({favouriteChannels:data},true);args.onSuccess(self.getFavouriteChannels());favouritesTime=new Date().getTime()}catch(err){args.onFailure(response,err)}}})}else{throw _objErrMsg+".updateFavourites() -> invalid parameters given"}}function _updateUser(args){var _objName=this._type;var _objErrMsg=errMsg+this._type;var params={};var self=this;if(!EpgSession.isValid()){throw _objErrMsg+".update() -> no session found please login"}if(V.isDigit(args.defaultSmartCardId)){params.defaultSmartCardId=args.defaultSmartCardId}if(V.isBoolean(args.isAccountEnabled)){params.isAccountEnabled=args.isAccountEnabled}if(V.isBoolean(args.emailConfigIsEnabled)){params.emailConfigIsEnabled=args.emailConfigIsEnabled}if(typeof(args.emailConfigRecipient)==="string"){params.emailConfigRecipient=args.emailConfigRecipient}if(V.isBoolean(args.smsConfigIsEnabled)){params.smsConfigIsEnabled=args.smsConfigIsEnabled}if(typeof(args.smsConfigRecipient)==="string"){params.smsConfigRecipient=args.smsConfigRecipient}if(V.isFunction(args.onSuccess)&&V.isFunction(args.onFailure)&&!V.isEmpty(params)){F.getXhr(fullUrl+"User",{method:"put",params:params,onFailure:function(response){args.onFailure(response)},onSuccess:function(data,response){try{self.set(data,true);userTime=new Date().getTime();args.onSuccess(self,response)}catch(err){args.onFailure(response,err)}}})}else{throw _ObjErrMsg+".update() -> invalid parameters given"}}function _verifySmsToken(args){var _objName=this._type;var _objErrMsg=errMsg+this._type;var token=null;if(!EpgSession.isValid()){throw _objErrMsg+".verifySmsToken() -> no session found please login"}if(V.isBetweenStr(args.token,5,5)&&V.isAlphaNumeric(args.token,5,5)&&V.isFunction(args.onSuccess)&&V.isFunction(args.onFailure)){F.getXhr(fullUrl+"Token/verify/sms/"+args.token,{method:"delete",onFailure:function(response){args.onFailure(response)},onSuccess:function(data,response){try{args.onSuccess(data,response)}catch(err){args.onFailure(response,err)}}})}else{throw _objErrMsg+" verifySmsToken() -> invalid parameters given"}}EpgUser.prototype.deleteFavourite=function(args){return _deleteFavourite.call(this,args)};EpgUser.prototype.sendEmailToken=function(args){return _sendEmailToken.call(this,args)};EpgUser.prototype.sendSmsToken=function(args){return _sendSmsToken.call(this,args)};EpgUser.prototype.retrieve=function(args){return _retrieveUser.call(this,args)};EpgUser.prototype.retrieveFavourites=function(args){return _retrieveFavourites.call(this,args)};EpgUser.prototype.update=function(args){return _updateUser.call(this,args)};EpgUser.prototype.updateFavourites=function(args){return _updateFavourites.call(this,args)};EpgUser.prototype.verifySmsToken=function(args){return _verifySmsToken.call(this,args)}})();(function(){var errMsg="Error in ";basePath="",baseUrl=null,fullUrl=null,timeOut=15000;try{var F=UPC.util.Fetch,V=UPC.util.Validate}catch(err){throw"epg-schedule.js -> dependancy library is missing or did not initiate properly"}function _errMsgInvalidOptionalArgs(){return"init of "+(this._type?this._type:"EpgObject")+" failed one or more of the optional attributes is invalid"}function _parseUrlArgs(basepath,args){var optionalParams,tmp=[],url=fullUrl;if(V.isDigit(args.eventId)){url+="Event/"+args.eventId}else{if(V.isString(args.channelId)){url+="Channel/"+args.channelId}else{if(V.isDigit(args.programmeId)){url+="Programme/"+args.programmeId}else{if(V.isArray(args.channelIds)){if(args.channelIds.length>5){args.channelIds=args.channelIds.slice(0,5)}url+="Channel/"+(args.channelIds.join("|"))}else{if(V.isArray(args.eventIds)){if(args.eventIds.length>5){args.eventIds=args.eventIds.slice(0,5)}url+="Event/"+(args.eventIds.join("|"))}else{if(V.isArray(args.programmeIds)){if(args.programmeIds.length>5){args.programmeIds=args.programmeIds.slice(0,5)}url+="Programme/"+(args.programmeIds.join("|"))}else{if(V.isString(args.seriesId)){url+="Series/"+args.seriesId}else{if(V.isString(args.domainId)||V.isArray(args.domainIds)){if(args.domainId){url+="Domain/"+args.domainId}else{if(args.domainIds.length>5){args.domainIds=args.domainIds.slice(0,5)}url+="Domain/"+(args.domainIds.join("|"))}if(V.isDigit(args.groupId)){url+="/groups/"+args.groupId}else{if(V.isArray(args.groupIds)){if(args.groupIds.length>5){args.grouplIds=args.groupIds.slice(0,5)}url+="/groups/"+args.groupIds.join("|")}}}}}}}}}}url+=basepath;if(V.isObject(args.params)&&V.isArray(args.params.optional)){optionalParams=args.params.optional;for(var i=optionalParams.length;i--;){if(optionalParams[i]==="eventUrl"){tmp.push("Event.url")}else{if(optionalParams[i]==="channelUrl"){tmp.push("Channel.url")}else{if(optionalParams[i]==="channelLogo"){tmp.push("Channel.logoIMG")}else{if(optionalParams[i]==="shortDescription"){tmp.push("Programme.shortDescription")}}}}}tmp=tmp.join(",");args.params.optionalProperties=tmp;delete args.params.optional}return url}function _processBatch(objectType,data){var i=0,j=0,maxI,maxJ,result=null;if(V.isArray(data[0])&&V.isArray(data[0][0])){result=[];for(i=0,maxI=data.length;i<maxI;i+=1){for(j=0,maxJ=data[i].length;j<maxJ;j+=1){if(i===0){if(!V.isEmpty(data[i][j])){result.push(new objectType(data[i][j],true))}}else{if(!V.isEmpty(data[i][j])){result[j].set(data[i][j],true)}}}}}else{if(data.length>1){for(i=0,max=data.length;i<max;i++){if(i===0){if(!V.isEmpty(data[i])){result=new objectType(data[i],true)}}else{if(!V.isEmpty(data[i])){result.set(data[i],true)}}}}else{if(V.isArray(data[0])){result=[];for(i=0,max=data[0].length;i<max;i++){if(!V.isEmpty(data[0][i])){result.push(new objectType(data[0][i],true))}}}}}return result}function BatchRequest(args){var isRequestCancelled=false,isResponseEmpty=false,batchSize=1,responseNr=-1,responses=[],requestNr=-1,requestMax=40;function _request(){for(var i=batchSize;i--;){requestNr++;try{args.request.call(this,requestNr)}catch(err){isResponseError=true}}}this.add=function(data){if(V.isEmpty(data)){isResponseEmpty=true}else{responses.push(data)}responseNr++;if(isRequestCancelled){args.onFailure();return}try{if(requestNr===responseNr){if(isResponseEmpty||requestNr>=requestMax-1){args.onSuccess(responses)}else{_request.call(this)}}}catch(err){args.onFailure()}};this.cancel=function(){this.isRequestCancelled=true;args.onFailure()};if(args){if(V.isInt(args.batchSize)){batchSize=args.batchSize}if(V.isInt(args.batchMax)){requestMax=args.batchMax}if(V.isFunction(args.request)&&V.isFunction(args.onSuccess)){_request.call(this)}}}EpgSchedule=(function(){var _objName="EpgSchedule",_objErrMsg="Error in "+_objName;function _batchJsonpRequest(url,args,callbacks){var params={};if(V.isObject(args.params)){params=args.params}new BatchRequest({batchMax:V.isInt(args.batchMax)?args.batchMax:10,batchSize:V.isInt(args.batchSize)?args.batchSize:2,request:function(batchNr){var self=this;params.batch=batchNr;F.getJsonp.call(this,url,{params:params,timeOut:args.timeOut||timeOut,onFailure:function(){self.cancel()},onSuccess:function(data){self.add(data)}})},onFailure:function(){if(V.isObject(callbacks)&&V.isFunction(callbacks.onFailure)){callbacks.onFailure()}else{args.onFailure()}},onSuccess:function(data){if(V.isObject(callbacks)&&V.isFunction(callbacks.onSuccess)){callbacks.onSuccess(data)}else{args.onSuccess(data)}}})}function setParams(args){if(args){if(V.isString(args.baseUrl)){baseUrl=args.baseUrl}else{throw _objErrMsg+".setParams() -> serverPath is not defined"}if(V.isString(args.basePath)){basePath=args.basePath}else{throw _objErrMsg+".setParams() -> serverPath is not defined"}if(V.isString(args.timeOut)){timeOut=args.timeOut}if(baseUrl&&basePath){fullUrl=baseUrl+basePath;return true}}else{throw _objErrMsg+".setParams() -> Invalid arguments passed"}return false}function retrieveChannels(args){var url;if(!(args.channelId||args.channelIds)){url=_parseUrlArgs("Channel.json",args)}else{url=_parseUrlArgs(".json",args)}if(!args||!V.isFunction(args.onSuccess)||!V.isFunction(args.onFailure)){throw _objErrMsg+".retrieveChannels(): onSuccess or onFailure parameters are undefined"}else{if(args.channelId||args.channelIds){args.batchMax=args.batchSize=1}_batchJsonpRequest.call(this,url,args,{onSuccess:function(data){var tmp;try{if(args.channelId){tmp=new EpgChannel(data[0])}else{if(args.channelIds){tmp=_processBatch(EpgChannel,data)}else{tmp=_processBatch(EpgChannels,data)}}}catch(err){}args.onSuccess(tmp)}})}}function retrieveDomains(args){var url;if(!args||!(args.domainId||args.domainIds)){throw _objErrMsg+".retrieveDomains(): domainId(s) undefined"}url=_parseUrlArgs(".json",args);args.batchMax=args.batchSize=1;if(!V.isFunction(args.onSuccess)||!V.isFunction(args.onFailure)){throw _objErrMsg+".retrieveDomains(): onSuccess or onFailure parameters are undefined"}else{_batchJsonpRequest.call(this,url,args,{onSuccess:function(data){var tmp;try{if(args.domainId){tmp=new EpgDomain(data[0])}else{tmp=_processBatch(EpgDomains,data)}}catch(err){}args.onSuccess(tmp)}})}}function retrieveEvents(args){var url;if(!args||!(args.eventId||args.eventIds||args.channelId||args.channelIds||args.seriesId)){throw _objErrMsg+".retrieveEvents(): channelId(s) or seriesId undefined"}if(args.eventId||args.eventIds){args.batchMax=args.batchSize=1;url=_parseUrlArgs(".json",args)}else{url=_parseUrlArgs("/events.json",args)}if(!V.isFunction(args.onSuccess)||!V.isFunction(args.onFailure)){throw _objErrMsg+".retrieveEvents(): onSuccess or onFailure parameters are undefined"}else{_batchJsonpRequest.call(this,url,args,{onSuccess:function(data){var tmp;try{if(args.eventId){tmp=new EpgEvent(data[0])}else{if(args.eventIds){tmp=_processBatch(EpgEvent,data)}else{tmp=_processBatch(EpgEvents,data)}}}catch(err){}args.onSuccess(tmp)}})}}function retrieveEventsNowAndNext(args){var params={},url;if(!args||!(args.channelId||args.channelIds||args.seriesId)){throw _objErrMsg+".retrieveEventsNowAndNext(): channelId(s) or seriesId undefined"}if(args.eventId||args.eventIds){args.batchMax=args.batchSize=1}url=_parseUrlArgs("/events/NowAndNext.json",args);if(!V.isFunction(args.onSuccess)||!V.isFunction(args.onFailure)){throw _objErrMsg+".retrieveEventsNowAndNext(): onSuccess or onFailure parameters are undefined"}else{if(V.isObject(args.params)){params=args.params}params.order="startDateTime";params.batchSize=2;new BatchRequest({batchMax:1,batchSize:1,request:function(batchNr){var self=this;params.batch=batchNr;F.getJsonp.call(this,url,{params:params,timeOut:args.timeOut||timeOut,onFailure:function(){self.cancel()},onSuccess:function(data){self.add(data)}})},onFailure:function(){args.onFailure()},onSuccess:function(data){var tmp;try{if(args.channelId){tmp=_processBatch(EpgEvent,data)}else{tmp=_processBatch(EpgEvents,data)}}catch(err){}args.onSuccess(tmp)}})}}function retrieveGroups(args){var url;if(!args||!(args.domainId||args.domainIds)){throw _objErrMsg+".retrieveGroups(): domainId(s) undefined"}if(args.domainIds&&(args.groupId||args.groupIds)){throw _objErrMsg+".retrieveGroups(): you can not retrieve group(s) from multiple domains"}if(!(args.groupId||args.groupIds)){url=_parseUrlArgs("/groups.json",args)}else{url=_parseUrlArgs(".json",args)}args.batchMax=args.batchSize=1;if(!V.isFunction(args.onSuccess)||!V.isFunction(args.onFailure)){throw _objErrMsg+".retrieveGroups(): onSuccess or onFailure parameters are undefined"}else{_batchJsonpRequest.call(this,url,args,{onSuccess:function(data){var tmp;try{if(args.groupId){tmp=new EpgGroup(data[0])}else{tmp=_processBatch(EpgGroups,data)}}catch(err){}args.onSuccess(tmp)}})}}function retrieveProgrammes(args){var url;if(!(args.programmeId||args.programmeIds)){url=_parseUrlArgs("Programme.json",args)}else{url=_parseUrlArgs(".json",args)}if(!args||!V.isFunction(args.onSuccess)||!V.isFunction(args.onFailure)){throw _objErrMsg+".retrieveProgrammes(): onSuccess or onFailure parameters are undefined"}else{if(args.programmeId||args.programmeIds){args.batchMax=args.batchSize=1}_batchJsonpRequest.call(this,url,args,{onSuccess:function(data){var tmp;try{if(args.programmeId){tmp=new EpgProgramme(data[0])}else{if(args.programmeIds){tmp=_processBatch(EpgProgramme,data)}else{tmp=_processBatch(EpgProgrammes,data)}}}catch(err){}args.onSuccess(tmp)}})}}return{retrieveChannels:retrieveChannels,retrieveDomains:retrieveDomains,retrieveEvents:retrieveEvents,retrieveEventsNowAndNext:retrieveEventsNowAndNext,retrieveGroups:retrieveGroups,retrieveProgrammes:retrieveProgrammes,setParams:setParams}})()})();
