/****************BLOCKUI**********************/
;(function($) {
if (/1\.(0|1|2)\.(0|1|2)/.test($.fn.jquery) || /^1.1/.test($.fn.jquery)) {
	alert('blockUI requires jQuery v1.2.3 or later!  You are using v' + $.fn.jquery);
	return;
}
$.fn._fadeIn = $.fn.fadeIn;
var noOp = function() {};
var mode = document.documentMode || 0;
var setExpr = $.browser.msie && (($.browser.version < 8 && !mode) || mode < 8);
var ie6 = $.browser.msie && /MSIE 6.0/.test(navigator.userAgent) && !mode;

$.blockUI   = function(opts) { install(window, opts); };
$.unblockUI = function(opts) { remove(window, opts); };

$.growlUI = function(title, message, timeout, onClose) {
	var $m = $('<div class="growlUI"></div>');
	if (title) $m.append('<h1>'+title+'</h1>');
	if (message) $m.append('<h2>'+message+'</h2>');
	if (timeout == undefined) timeout = 3000;
	$.blockUI({
		message: $m, fadeIn: 700, fadeOut: 1000, centerY: false,
		timeout: timeout, showOverlay: false,
		onUnblock: onClose, 
		css: $.blockUI.defaults.growlCSS
	});
};
$.fn.block = function(opts) {
	return this.unblock({ fadeOut: 0 }).each(function() {
		if ($.css(this,'position') == 'static')
			this.style.position = 'relative';
		if ($.browser.msie)
			this.style.zoom = 1; 
		install(this, opts);
	});
};
$.fn.unblock = function(opts) {
	return this.each(function() {
		remove(this, opts);
	});
};
$.blockUI.version = 2.33; 
$.blockUI.defaults = {
	
	message:  '<h1>Please wait...</h1>',
	title: null,	  
	draggable: true,  	
	theme: false,
	css: {
		padding:	0,
		margin:		0,
		width:		'30%',
		top:		'40%',
		left:		'35%',
		textAlign:	'center',
		color:		'#000',
		border:		'3px solid #aaa',
		backgroundColor:'#fff',
		cursor:		'wait'
	},
	themedCSS: {
		width:	'30%',
		top:	'40%',
		left:	'35%'
	},
	overlayCSS:  {
		backgroundColor: '#000',
		opacity:	  	 0.6,
		cursor:		  	 'wait'
	},
	growlCSS: {
		width:  	'350px',
		top:		'10px',
		left:   	'',
		right:  	'10px',
		border: 	'none',
		padding:	'5px',
		opacity:	0.6,
		cursor: 	'default',
		color:		'#fff',
		backgroundColor: '#000',
		'-webkit-border-radius': '10px',
		'-moz-border-radius':	 '10px',
		'border-radius': 		 '10px'
	},
	iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',
	forceIframe: false,

	baseZ: 1000,

	centerY: true,
	allowBodyStretch: true,
	bindEvents: true,
	constrainTabKey: true,
	fadeIn:  200,
	fadeOut:  400,
	timeout: 0,
	showOverlay: true,
	focusInput: true,
	applyPlatformOpacityRules: true,
	onBlock: null,
	onUnblock: null,
	quirksmodeOffsetHack: 4
};
var pageBlock = null;
var pageBlockEls = [];
function install(el, opts) {
	var full = (el == window);
	var msg = opts && opts.message !== undefined ? opts.message : undefined;
	opts = $.extend({}, $.blockUI.defaults, opts || {});
	opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});
	var css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
	var themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});
	msg = msg === undefined ? opts.message : msg;
	
	if (full && pageBlock)
		remove(window, {fadeOut:0});
	if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) {
		var node = msg.jquery ? msg[0] : msg;
		var data = {};
		$(el).data('blockUI.history', data);
		data.el = node;
		data.parent = node.parentNode;
		data.display = node.style.display;
		data.position = node.style.position;
		if (data.parent)
			data.parent.removeChild(node);
	}
	var z = opts.baseZ;
	var lyr1 = ($.browser.msie || opts.forceIframe) 
		? $('<iframe class="blockUI" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+opts.iframeSrc+'"></iframe>')
		: $('<div class="blockUI" style="display:none"></div>');
	var lyr2 = $('<div class="blockUI blockOverlay" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');
	
	var lyr3, s;
	if (opts.theme && full) {
		s = '<div class="blockUI blockMsg blockPage ui-dialog ui-widget ui-corner-all" style="z-index:'+z+';display:none;position:fixed">' +
				'<div class="ui-widget-header ui-dialog-titlebar blockTitle">'+(opts.title || '&nbsp;')+'</div>' +
				'<div class="ui-widget-content ui-dialog-content"></div>' +
			'</div>';
	}
	else if (opts.theme) {
		s = '<div class="blockUI blockMsg blockElement ui-dialog ui-widget ui-corner-all" style="z-index:'+z+';display:none;position:absolute">' +
				'<div class="ui-widget-header ui-dialog-titlebar blockTitle">'+(opts.title || '&nbsp;')+'</div>' +
				'<div class="ui-widget-content ui-dialog-content"></div>' +
			'</div>';
	}
	else if (full) {
		s = '<div class="blockUI blockMsg blockPage" style="z-index:'+z+';display:none;position:fixed"></div>';
	}			
	else {
		s = '<div class="blockUI blockMsg blockElement" style="z-index:'+z+';display:none;position:absolute"></div>';
	}
	lyr3 = $(s);
	if (msg) {
		if (opts.theme) {
			lyr3.css(themedCSS);
			lyr3.addClass('ui-widget-content');
		}
		else 
			lyr3.css(css);
	}
	if (!opts.applyPlatformOpacityRules || !($.browser.mozilla && /Linux/.test(navigator.platform)))
		lyr2.css(opts.overlayCSS);
	lyr2.css('position', full ? 'fixed' : 'absolute');
	if ($.browser.msie || opts.forceIframe)
		lyr1.css('opacity',0.0);
	var layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el);
	$.each(layers, function() {
		this.appendTo($par);
	});
	
	if (opts.theme && opts.draggable && $.fn.draggable) {
		lyr3.draggable({
			handle: '.ui-dialog-titlebar',
			cancel: 'li'
		});
	}
	var expr = setExpr && (!$.boxModel || $('object,embed', full ? null : el).length > 0);
	if (ie6 || expr) {
		if (full && opts.allowBodyStretch && $.boxModel)
			$('html,body').css('height','100%');
		if ((ie6 || !$.boxModel) && !full) {
			var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');
			var fixT = t ? '(0 - '+t+')' : 0;
			var fixL = l ? '(0 - '+l+')' : 0;
		}
		$.each([lyr1,lyr2,lyr3], function(i,o) {
			var s = o[0].style;
			s.position = 'absolute';
			if (i < 2) {
				full ? s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"')
					 : s.setExpression('height','this.parentNode.offsetHeight + "px"');
				full ? s.setExpression('width','jQuery.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"')
					 : s.setExpression('width','this.parentNode.offsetWidth + "px"');
				if (fixL) s.setExpression('left', fixL);
				if (fixT) s.setExpression('top', fixT);
			}
			else if (opts.centerY) {
				if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"');
				s.marginTop = 0;
			}
			else if (!opts.centerY && full) {
				var top = (opts.css && opts.css.top) ? parseInt(opts.css.top) : 0;
				var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"';
				s.setExpression('top',expression);
			}
		});
	}
	if (msg) {
		if (opts.theme)
			lyr3.find('.ui-widget-content').append(msg);
		else
			lyr3.append(msg);
		if (msg.jquery || msg.nodeType)
			$(msg).show();
	}
	if (($.browser.msie || opts.forceIframe) && opts.showOverlay)
		lyr1.show(); 
	if (opts.fadeIn) {
		var cb = opts.onBlock ? opts.onBlock : noOp;
		var cb1 = (opts.showOverlay && !msg) ? cb : noOp;
		var cb2 = msg ? cb : noOp;
		if (opts.showOverlay)
			lyr2._fadeIn(opts.fadeIn, cb1);
		if (msg)
			lyr3._fadeIn(opts.fadeIn, cb2);
	}
	else {
		if (opts.showOverlay)
			lyr2.show();
		if (msg)
			lyr3.show();
		if (opts.onBlock)
			opts.onBlock();
	}
	bind(1, el, opts);
	if (full) {
		pageBlock = lyr3[0];
		pageBlockEls = $(':input:enabled:visible',pageBlock);
		if (opts.focusInput)
			setTimeout(focus, 20);
	}
	else
		center(lyr3[0], opts.centerX, opts.centerY);
	if (opts.timeout) {
		
		var to = setTimeout(function() {
			full ? $.unblockUI(opts) : $(el).unblock(opts);
		}, opts.timeout);
		$(el).data('blockUI.timeout', to);
	}
};
function remove(el, opts) {
	var full = (el == window);
	var $el = $(el);
	var data = $el.data('blockUI.history');
	var to = $el.data('blockUI.timeout');
	if (to) {
		clearTimeout(to);
		$el.removeData('blockUI.timeout');
	}
	opts = $.extend({}, $.blockUI.defaults, opts || {});
	bind(0, el, opts); 
	
	var els;
	if (full) 
		els = $('body').children().filter('.blockUI').add('body > .blockUI');
	else
		els = $('.blockUI', el);
	if (full)
		pageBlock = pageBlockEls = null;
	if (opts.fadeOut) {
		els.fadeOut(opts.fadeOut);
		setTimeout(function() { reset(els,data,opts,el); }, opts.fadeOut);
	}
	else
		reset(els, data, opts, el);
};

function reset(els,data,opts,el) {
	els.each(function(i,o) {
		
		if (this.parentNode)
			this.parentNode.removeChild(this);
	});
	if (data && data.el) {
		data.el.style.display = data.display;
		data.el.style.position = data.position;
		if (data.parent)
			data.parent.appendChild(data.el);
		$(el).removeData('blockUI.history');
	}
	if (typeof opts.onUnblock == 'function')
		opts.onUnblock(el,opts);
};

function bind(b, el, opts) {
	var full = el == window, $el = $(el);

	if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked')))
		return;
	if (!full)
		$el.data('blockUI.isBlocked', b);
	if (!opts.bindEvents || (b && !opts.showOverlay)) 
		return;
	var events = 'mousedown mouseup keydown keypress';
	b ? $(document).bind(events, opts, handler) : $(document).unbind(events, handler);

};

function handler(e) {
	
	if (e.keyCode && e.keyCode == 9) {
		if (pageBlock && e.data.constrainTabKey) {
			var els = pageBlockEls;
			var fwd = !e.shiftKey && e.target == els[els.length-1];
			var back = e.shiftKey && e.target == els[0];
			if (fwd || back) {
				setTimeout(function(){focus(back)},10);
				return false;
			}
		}
	}
	if ($(e.target).parents('div.blockMsg').length > 0)
		return true;
	
	return $(e.target).parents().children().filter('div.blockUI').length == 0;
};
function focus(back) {
	if (!pageBlockEls)
		return;
	var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];
	if (e)
		e.focus();
};
function center(el, x, y) {
	var p = el.parentNode, s = el.style;
	var l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth');
	var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');
	if (x) s.left = l > 0 ? (l+'px') : '0';
	if (y) s.top  = t > 0 ? (t+'px') : '0';
};
function sz(el, p) {
	return parseInt($.css(el,p))||0;
};
})(jQuery);


/*****************************HEADER**********************************/
jQuery.noConflict();

jQuery(document).ready(function()
{
	if(currentFolderId)
	{
		jQuery.ajax({
			type: "POST",
			url: "/channel/get_home_link_href/id/"+currentFolderId,
			success: function(msg)
			{
				if(msg != "")
				{
					var jsonT = eval('('+ msg +')');  
					
					hrefTo = jsonT.href;
				}
	   		}
	 	});
	}
	jQuery("#page_header, #channel_header, #pew_header").css("cursor", "pointer").click(function()
	{
		window.location = hrefTo;
	});
	
	if(jQuery.browser.msie == true)
	{
		if(jQuery.browser.version == "6.0")
		{}
		else
		{
			jQuery(".direct-download").each(function(i, ele)
			{
				fileUrl = ele.href;
				ele.href = fileUrl+"?download=true";
			});
		}
	}
	else
	{
		jQuery(".direct-download").each(function(i, ele)
		{
			fileUrl = ele.href;
			ele.href = fileUrl+"?download=true";
		});
	}
});










/***************FLOWPLAYER***********************/

(function(){function g(o){console.log("$f.fireEvent",[].slice.call(o))}function k(q){if(!q||typeof q!="object"){return q}var o=new q.constructor();for(var p in q){if(q.hasOwnProperty(p)){o[p]=k(q[p])}}return o}function m(t,q){if(!t){return}var o,p=0,r=t.length;if(r===undefined){for(o in t){if(q.call(t[o],o,t[o])===false){break}}}else{for(var s=t[0];p<r&&q.call(s,p,s)!==false;s=t[++p]){}}return t}function c(o){return document.getElementById(o)}function i(q,p,o){if(typeof p!="object"){return q}if(q&&p){m(p,function(r,s){if(!o||typeof s!="function"){q[r]=s}})}return q}function n(s){var q=s.indexOf(".");if(q!=-1){var p=s.substring(0,q)||"*";var o=s.substring(q+1,s.length);var r=[];m(document.getElementsByTagName(p),function(){if(this.className&&this.className.indexOf(o)!=-1){r.push(this)}});return r}}function f(o){o=o||window.event;if(o.preventDefault){o.stopPropagation();o.preventDefault()}else{o.returnValue=false;o.cancelBubble=true}return false}function j(q,o,p){q[o]=q[o]||[];q[o].push(p)}function e(){return"_"+(""+Math.random()).substring(2,10)}var h=function(t,r,s){var q=this;var p={};var u={};q.index=r;if(typeof t=="string"){t={url:t}}i(this,t,true);m(("Begin*,Start,Pause*,Resume*,Seek*,Stop*,Finish*,LastSecond,Update,BufferFull,BufferEmpty,BufferStop").split(","),function(){var v="on"+this;if(v.indexOf("*")!=-1){v=v.substring(0,v.length-1);var w="onBefore"+v.substring(2);q[w]=function(x){j(u,w,x);return q}}q[v]=function(x){j(u,v,x);return q};if(r==-1){if(q[w]){s[w]=q[w]}if(q[v]){s[v]=q[v]}}});i(this,{onCuepoint:function(x,w){if(arguments.length==1){p.embedded=[null,x];return q}if(typeof x=="number"){x=[x]}var v=e();p[v]=[x,w];if(s.isLoaded()){s._api().fp_addCuepoints(x,r,v)}return q},update:function(w){i(q,w);if(s.isLoaded()){s._api().fp_updateClip(w,r)}var v=s.getConfig();var x=(r==-1)?v.clip:v.playlist[r];i(x,w,true)},_fireEvent:function(v,y,w,A){if(v=="onLoad"){m(p,function(B,C){if(C[0]){s._api().fp_addCuepoints(C[0],r,B)}});return false}A=A||q;if(v=="onCuepoint"){var z=p[y];if(z){return z[1].call(s,A,w)}}if(y&&"onBeforeBegin,onMetaData,onStart,onUpdate,onResume".indexOf(v)!=-1){i(A,y);if(y.metaData){if(!A.duration){A.duration=y.metaData.duration}else{A.fullDuration=y.metaData.duration}}}var x=true;m(u[v],function(){x=this.call(s,A,y,w)});return x}});if(t.onCuepoint){var o=t.onCuepoint;q.onCuepoint.apply(q,typeof o=="function"?[o]:o);delete t.onCuepoint}m(t,function(v,w){if(typeof w=="function"){j(u,v,w);delete t[v]}});if(r==-1){s.onCuepoint=this.onCuepoint}};var l=function(p,r,q,t){var s={};var o=this;var u=false;if(t){i(s,t)}m(r,function(v,w){if(typeof w=="function"){s[v]=w;delete r[v]}});i(this,{animate:function(y,z,x){if(!y){return o}if(typeof z=="function"){x=z;z=500}if(typeof y=="string"){var w=y;y={};y[w]=z;z=500}if(x){var v=e();s[v]=x}if(z===undefined){z=500}r=q._api().fp_animate(p,y,z,v);return o},css:function(w,x){if(x!==undefined){var v={};v[w]=x;w=v}r=q._api().fp_css(p,w);i(o,r);return o},show:function(){this.display="block";q._api().fp_showPlugin(p);return o},hide:function(){this.display="none";q._api().fp_hidePlugin(p);return o},toggle:function(){this.display=q._api().fp_togglePlugin(p);return o},fadeTo:function(y,x,w){if(typeof x=="function"){w=x;x=500}if(w){var v=e();s[v]=w}this.display=q._api().fp_fadeTo(p,y,x,v);this.opacity=y;return o},fadeIn:function(w,v){return o.fadeTo(1,w,v)},fadeOut:function(w,v){return o.fadeTo(0,w,v)},getName:function(){return p},getPlayer:function(){return q},_fireEvent:function(w,v,x){if(w=="onUpdate"){var y=q._api().fp_getPlugin(p);if(!y){return}i(o,y);delete o.methods;if(!u){m(y.methods,function(){var A=""+this;o[A]=function(){var B=[].slice.call(arguments);var C=q._api().fp_invoke(p,A,B);return C==="undefined"||C===undefined?o:C}});u=true}}var z=s[w];if(z){z.apply(o,v);if(w.substring(0,1)=="_"){delete s[w]}}}})};function b(o,t,z){var E=this,y=null,x,u,p=[],s={},B={},r,v,w,D,A,q;i(E,{id:function(){return r},isLoaded:function(){return(y!==null)},getParent:function(){return o},hide:function(F){if(F){o.style.height="0px"}if(y){y.style.height="0px"}return E},show:function(){o.style.height=q+"px";if(y){y.style.height=A+"px"}return E},isHidden:function(){return y&&parseInt(y.style.height,10)===0},load:function(F){if(!y&&E._fireEvent("onBeforeLoad")!==false){m(a,function(){this.unload()});x=o.innerHTML;if(x&&!flashembed.isSupported(t.version)){o.innerHTML=""}flashembed(o,t,{config:z});if(F){F.cached=true;j(B,"onLoad",F)}}return E},unload:function(){if(x.replace(/\s/g,"")!==""){if(E._fireEvent("onBeforeUnload")===false){return E}try{if(y){y.fp_close();E._fireEvent("onUnload")}}catch(F){}y=null;o.innerHTML=x}return E},getClip:function(F){if(F===undefined){F=D}return p[F]},getCommonClip:function(){return u},getPlaylist:function(){return p},getPlugin:function(F){var H=s[F];if(!H&&E.isLoaded()){var G=E._api().fp_getPlugin(F);if(G){H=new l(F,G,E);s[F]=H}}return H},getScreen:function(){return E.getPlugin("screen")},getControls:function(){return E.getPlugin("controls")},getConfig:function(F){return F?k(z):z},getFlashParams:function(){return t},loadPlugin:function(I,H,K,J){if(typeof K=="function"){J=K;K={}}var G=J?e():"_";E._api().fp_loadPlugin(I,H,K,G);var F={};F[G]=J;var L=new l(I,null,E,F);s[I]=L;return L},getState:function(){return y?y.fp_getState():-1},play:function(G,F){function H(){if(G!==undefined){E._api().fp_play(G,F)}else{E._api().fp_play()}}if(y){H()}else{E.load(function(){H()})}return E},getVersion:function(){var G="flowplayer.js 3.1.4";if(y){var F=y.fp_getVersion();F.push(G);return F}return G},_api:function(){if(!y){throw"Flowplayer "+E.id()+" not loaded when calling an API method"}return y},setClip:function(F){E.setPlaylist([F]);return E},getIndex:function(){return w}});m(("Click*,Load*,Unload*,Keypress*,Volume*,Mute*,Unmute*,PlaylistReplace,ClipAdd,Fullscreen*,FullscreenExit,Error,MouseOver,MouseOut").split(","),function(){var F="on"+this;if(F.indexOf("*")!=-1){F=F.substring(0,F.length-1);var G="onBefore"+F.substring(2);E[G]=function(H){j(B,G,H);return E}}E[F]=function(H){j(B,F,H);return E}});m(("pause,resume,mute,unmute,stop,toggle,seek,getStatus,getVolume,setVolume,getTime,isPaused,isPlaying,startBuffering,stopBuffering,isFullscreen,toggleFullscreen,reset,close,setPlaylist,addClip,playFeed").split(","),function(){var F=this;E[F]=function(H,G){if(!y){return E}var I=null;if(H!==undefined&&G!==undefined){I=y["fp_"+F](H,G)}else{I=(H===undefined)?y["fp_"+F]():y["fp_"+F](H)}return I==="undefined"||I===undefined?E:I}});E._fireEvent=function(O){if(typeof O=="string"){O=[O]}var P=O[0],M=O[1],K=O[2],J=O[3],I=0;if(z.debug){g(O)}if(!y&&P=="onLoad"&&M=="player"){y=y||c(v);A=y.clientHeight;m(p,function(){this._fireEvent("onLoad")});m(s,function(Q,R){R._fireEvent("onUpdate")});u._fireEvent("onLoad")}if(P=="onLoad"&&M!="player"){return}if(P=="onError"){if(typeof M=="string"||(typeof M=="number"&&typeof K=="number")){M=K;K=J}}if(P=="onContextMenu"){m(z.contextMenu[M],function(Q,R){R.call(E)});return}if(P=="onPluginEvent"){var F=M.name||M;var G=s[F];if(G){G._fireEvent("onUpdate",M);G._fireEvent(K,O.slice(3))}return}if(P=="onPlaylistReplace"){p=[];var L=0;m(M,function(){p.push(new h(this,L++,E))})}if(P=="onClipAdd"){if(M.isInStream){return}M=new h(M,K,E);p.splice(K,0,M);for(I=K+1;I<p.length;I++){p[I].index++}}var N=true;if(typeof M=="number"&&M<p.length){D=M;var H=p[M];if(H){N=H._fireEvent(P,K,J)}if(!H||N!==false){N=u._fireEvent(P,K,J,H)}}m(B[P],function(){N=this.call(E,M,K);if(this.cached){B[P].splice(I,1)}if(N===false){return false}I++});return N};function C(){if($f(o)){$f(o).getParent().innerHTML="";w=$f(o).getIndex();a[w]=E}else{a.push(E);w=a.length-1}q=parseInt(o.style.height,10)||o.clientHeight;if(typeof t=="string"){t={src:t}}r=o.id||"fp"+e();v=t.id||r+"_api";t.id=v;z.playerId=r;if(typeof z=="string"){z={clip:{url:z}}}if(typeof z.clip=="string"){z.clip={url:z.clip}}z.clip=z.clip||{};if(o.getAttribute("href",2)&&!z.clip.url){z.clip.url=o.getAttribute("href",2)}u=new h(z.clip,-1,E);z.playlist=z.playlist||[z.clip];var F=0;m(z.playlist,function(){var H=this;if(typeof H=="object"&&H.length){H={url:""+H}}m(z.clip,function(I,J){if(J!==undefined&&H[I]===undefined&&typeof J!="function"){H[I]=J}});z.playlist[F]=H;H=new h(H,F,E);p.push(H);F++});m(z,function(H,I){if(typeof I=="function"){if(u[H]){u[H](I)}else{j(B,H,I)}delete z[H]}});m(z.plugins,function(H,I){if(I){s[H]=new l(H,I,E)}});if(!z.plugins||z.plugins.controls===undefined){s.controls=new l("controls",null,E)}s.canvas=new l("canvas",null,E);t.bgcolor=t.bgcolor||"#000000";t.version=t.version||[9,0];t.expressInstall="http://www.flowplayer.org/swf/expressinstall.swf";function G(H){if(!E.isLoaded()&&E._fireEvent("onBeforeClick")!==false){E.load()}return f(H)}x=o.innerHTML;if(x.replace(/\s/g,"")!==""){if(o.addEventListener){o.addEventListener("click",G,false)}else{if(o.attachEvent){o.attachEvent("onclick",G)}}}else{if(o.addEventListener){o.addEventListener("click",f,false)}E.load()}}if(typeof o=="string"){flashembed.domReady(function(){var F=c(o);if(!F){throw"Flowplayer cannot access element: "+o}else{o=F;C()}})}else{C()}}var a=[];function d(o){this.length=o.length;this.each=function(p){m(o,p)};this.size=function(){return o.length}}window.flowplayer=window.$f=function(){var p=null;var o=arguments[0];if(!arguments.length){m(a,function(){if(this.isLoaded()){p=this;return false}});return p||a[0]}if(arguments.length==1){if(typeof o=="number"){return a[o]}else{if(o=="*"){return new d(a)}m(a,function(){if(this.id()==o.id||this.id()==o||this.getParent()==o){p=this;return false}});return p}}if(arguments.length>1){var r=arguments[1];var q=(arguments.length==3)?arguments[2]:{};if(typeof o=="string"){if(o.indexOf(".")!=-1){var t=[];m(n(o),function(){t.push(new b(this,k(r),k(q)))});return new d(t)}else{var s=c(o);return new b(s!==null?s:o,r,q)}}else{if(o){return new b(o,r,q)}}}return null};i(window.$f,{fireEvent:function(){var o=[].slice.call(arguments);var q=$f(o[0]);return q?q._fireEvent(o.slice(1)):null},addPlugin:function(o,p){b.prototype[o]=p;return $f},each:m,extend:i});if(typeof jQuery=="function"){jQuery.prototype.flowplayer=function(q,p){if(!arguments.length||typeof arguments[0]=="number"){var o=[];this.each(function(){var r=$f(this);if(r){o.push(r)}});return arguments.length?o[arguments[0]]:new d(o)}return this.each(function(){$f(this,k(q),p?k(p):{})})}}})();(function(){var e=typeof jQuery=="function";var i={width:"100%",height:"100%",allowfullscreen:true,allowscriptaccess:"always",quality:"high",version:null,onFail:null,expressInstall:null,w3c:false,cachebusting:false};if(e){jQuery.tools=jQuery.tools||{};jQuery.tools.flashembed={version:"1.0.4",conf:i}}function j(){if(c.done){return false}var l=document;if(l&&l.getElementsByTagName&&l.getElementById&&l.body){clearInterval(c.timer);c.timer=null;for(var k=0;k<c.ready.length;k++){c.ready[k].call()}c.ready=null;c.done=true}}var c=e?jQuery:function(k){if(c.done){return k()}if(c.timer){c.ready.push(k)}else{c.ready=[k];c.timer=setInterval(j,13)}};function f(l,k){if(k){for(key in k){if(k.hasOwnProperty(key)){l[key]=k[key]}}}return l}function g(k){switch(h(k)){case"string":k=k.replace(new RegExp('(["\\\\])',"g"),"\\$1");k=k.replace(/^\s?(\d+)%/,"$1pct");return'"'+k+'"';case"array":return"["+b(k,function(n){return g(n)}).join(",")+"]";case"function":return'"function()"';case"object":var l=[];for(var m in k){if(k.hasOwnProperty(m)){l.push('"'+m+'":'+g(k[m]))}}return"{"+l.join(",")+"}"}return String(k).replace(/\s/g," ").replace(/\'/g,'"')}function h(l){if(l===null||l===undefined){return false}var k=typeof l;return(k=="object"&&l.push)?"array":k}if(window.attachEvent){window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){}})}function b(k,n){var m=[];for(var l in k){if(k.hasOwnProperty(l)){m[l]=n(k[l])}}return m}function a(r,t){var q=f({},r);var s=document.all;var n='<object width="'+q.width+'" height="'+q.height+'"';if(s&&!q.id){q.id="_"+(""+Math.random()).substring(9)}if(q.id){n+=' id="'+q.id+'"'}if(q.cachebusting){q.src+=((q.src.indexOf("?")!=-1?"&":"?")+Math.random())}if(q.w3c||!s){n+=' data="'+q.src+'" type="application/x-shockwave-flash"'}else{n+=' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'}n+=">";if(q.w3c||s){n+='<param name="movie" value="'+q.src+'" />'}q.width=q.height=q.id=q.w3c=q.src=null;for(var l in q){if(q[l]!==null){n+='<param name="'+l+'" value="'+q[l]+'" />'}}var o="";if(t){for(var m in t){if(t[m]!==null){o+=m+"="+(typeof t[m]=="object"?g(t[m]):t[m])+"&"}}o=o.substring(0,o.length-1);n+='<param name="flashvars" value=\''+o+"' />"}n+="</object>";return n}function d(m,p,l){var k=flashembed.getVersion();f(this,{getContainer:function(){return m},getConf:function(){return p},getVersion:function(){return k},getFlashvars:function(){return l},getApi:function(){return m.firstChild},getHTML:function(){return a(p,l)}});var q=p.version;var r=p.expressInstall;var o=!q||flashembed.isSupported(q);if(o){p.onFail=p.version=p.expressInstall=null;m.innerHTML=a(p,l)}else{if(q&&r&&flashembed.isSupported([6,65])){f(p,{src:r});l={MMredirectURL:location.href,MMplayerType:"PlugIn",MMdoctitle:document.title};m.innerHTML=a(p,l)}else{if(m.innerHTML.replace(/\s/g,"")!==""){}else{m.innerHTML="<h2>Flash version "+q+" or greater is required</h2><h3>"+(k[0]>0?"Your version is "+k:"You have no flash plugin installed")+"</h3>"+(m.tagName=="A"?"<p>Click here to download latest version</p>":"<p>Download latest version from <a href='http://www.adobe.com/go/getflashplayer'>here</a></p>");if(m.tagName=="A"){m.onclick=function(){location.href="http://www.adobe.com/go/getflashplayer"}}}}}if(!o&&p.onFail){var n=p.onFail.call(this);if(typeof n=="string"){m.innerHTML=n}}if(document.all){window[p.id]=document.getElementById(p.id)}}window.flashembed=function(l,m,k){if(typeof l=="string"){var n=document.getElementById(l);if(n){l=n}else{c(function(){flashembed(l,m,k)});return}}if(!l){return}if(typeof m=="string"){m={src:m}}var o=f({},i);f(o,m);return new d(l,o,k)};f(window.flashembed,{getVersion:function(){var m=[0,0];if(navigator.plugins&&typeof navigator.plugins["Shockwave Flash"]=="object"){var l=navigator.plugins["Shockwave Flash"].description;if(typeof l!="undefined"){l=l.replace(/^.*\s+(\S+\s+\S+$)/,"$1");var n=parseInt(l.replace(/^(.*)\..*$/,"$1"),10);var r=/r/.test(l)?parseInt(l.replace(/^.*r(.*)$/,"$1"),10):0;m=[n,r]}}else{if(window.ActiveXObject){try{var p=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(q){try{p=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");m=[6,0];p.AllowScriptAccess="always"}catch(k){if(m[0]==6){return m}}try{p=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(o){}}if(typeof p=="object"){l=p.GetVariable("$version");if(typeof l!="undefined"){l=l.replace(/^\S+\s+(.*)$/,"$1").split(",");m=[parseInt(l[0],10),parseInt(l[2],10)]}}}}return m},isSupported:function(k){var m=flashembed.getVersion();var l=(m[0]>k[0])||(m[0]==k[0]&&m[1]>=k[1]);return l},domReady:c,asString:g,getHTML:a});if(e){jQuery.fn.flashembed=function(l,k){var m=null;this.each(function(){m=flashembed(this,l,k)});return l.api===false?this:m}}})();


/***************MY SUBSCRIPTION WIDGET****************/

 
$j = jQuery.noConflict();
var AS4MySubscriptionsWidget = Class.create({
	switchTo: function(to, from, cwid)
	{
		$j("#my_subscriptions_"+from+"_"+cwid).css("display", "none");
		$j("#my_subscriptions_"+to+"_"+cwid).css("display", "block");
	},
	
	logInToMySubscriptions: function(cwid)
	{
		var email_address = $j("#subscription_email_address_"+cwid).val();
		
		if(email_address == "")
		{
			alert("Please enter an email address");
			return false;
		}
		
		var url = '/my_subscriptions/check_subscription_email_address';		
		var params = {
			renderMode: 'update',
			email_address: email_address
		}
		
		AS4Shell.getInstance().ajaxUpdate(url, params, null, $A([this.onFormSent.bind(this, cwid)]), {message: 'Loading...', method:"post"});
	},
	
	onFormSent: function(cwid, transport, target)
	{
		
		
		if(transport.headerJSON.new_subscriber != "true")
		{
			this.submitForm(cwid);
		}
		else
		{
			this.switchTo("email_confirmation", "form", cwid);
		}
	},
	
	submitForm: function(cwid)
	{
		$j("#my_subscriptions_form_"+cwid+" form").submit();
	}
	
});
AS4MySubscriptionsWidget.getInstance = function(channelWidgetsId)
{
	if(!AS4MySubscriptionsWidget.instance)
		AS4MySubscriptionsWidget.instance = new AS4MySubscriptionsWidget();
		
	return AS4MySubscriptionsWidget.instance;
}

/************************************JSON2*******************************/
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);
            }
            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');
        };
    }
}());
/***********************************************JCRYPTION******************************************/
(function($) {
	$.jCryption = function(el, options) {
		var base = this;

		base.$el = $(el);
		base.el = el;

		base.$el.data("jCryption", base);
		base.init = function() {

			base.options = $.extend({},$.jCryption.defaultOptions, options);

			$encryptedElement = $("<input />",{
				type:'hidden',
				name:base.options.postVariable
			});

			if (base.options.submitElement !== false) {
				var $submitElement = base.options.submitElement;
			} else {
				var $submitElement = base.$el.find(":input:submit");
			}

			$submitElement.bind(base.options.submitEvent,function() {
				$(this).attr("disabled",true);
				if(base.options.beforeEncryption()) {
					   $.jCryption.getKeys(base.options.getKeysURL,function(keys) {
						   $.jCryption.encrypt(base.$el.serialize(),keys,function(encrypted) {
						   	   $encryptedElement.val(encrypted);
						   	   $(base.$el).find(":input").attr("disabled",true).end().append($encryptedElement).submit();
						   });
					   });
				}
				return false;
			});

		};

		base.init();
	};

	$.jCryption.getKeys = function(url,callback) {
		var base = this;
		base.getKeys = function() {
			$.getJSON(url,function(data){
				keys = new base.jCryptionKeyPair(data.e,data.n,data.maxdigits);
				if($.isFunction(callback)) {
					callback.call(this, keys);
				}
			});
		};

		base.jCryptionKeyPair = function(encryptionExponent, modulus, maxdigits) {
			setMaxDigits(parseInt(maxdigits,10));
			this.e = biFromHex(encryptionExponent);
			this.m = biFromHex(modulus);
			this.chunkSize = 2 * biHighIndex(this.m);
			this.radix = 16;
			this.barrett = new BarrettMu(this.m);
		};

		base.getKeys();
	};

	$.jCryption.encrypt = function(string,keyPair,callback) {
		var charSum = 0;
		for(var i = 0; i < string.length; i++){
			charSum += string.charCodeAt(i);
		}
		var tag = '0123456789abcdef';
		var hex = '';
		hex += tag.charAt((charSum & 0xF0) >> 4) + tag.charAt(charSum & 0x0F);

		var taggedString = hex + string;

		var encrypt = [];
		var j = 0;

		while (j < taggedString.length) {
			encrypt[j] = taggedString.charCodeAt(j);
			j++;
		}

		while (encrypt.length % keyPair.chunkSize !== 0) {
			encrypt[j++] = 0;
		}

		function encryption(encryptObject) {
			var charCounter = 0;
			var j, block;
			var encrypted = "";
			function encryptChar() {
				block = new BigInt();
				j = 0;
				for (var k = charCounter; k < charCounter+keyPair.chunkSize; ++j) {
					block.digits[j] = encryptObject[k++];
					block.digits[j] += encryptObject[k++] << 8;
				}
				var crypt = keyPair.barrett.powMod(block, keyPair.e);
				var text = keyPair.radix == 16 ? biToHex(crypt) : biToString(crypt, keyPair.radix);
				encrypted += text + " ";
				charCounter += keyPair.chunkSize;
				if (charCounter < encryptObject.length) {
					setTimeout(encryptChar, 1)
				} else {
					var encryptedString = encrypted.substring(0, encrypted.length - 1);
					if($.isFunction(callback)) {
						callback(encryptedString);
					} else {
					 	return encryptedString;
					}

				}
			}
			setTimeout(encryptChar, 1);
		}

		encryption(encrypt);
	};

	$.jCryption.defaultOptions = {
		submitElement:false,
		submitEvent:"click",
		getKeysURL:"main.php?generateKeypair=true",
		beforeEncryption:function(){return true},
		postVariable:"jCryption"
	};

	$.fn.jCryption = function(options) {
		return this.each(function(){
			(new $.jCryption(this, options));
		});
	};

})(jQuery);


var biRadixBase = 2;
var biRadixBits = 16;
var bitsPerDigit = biRadixBits;
var biRadix = 1 << 16;
var biHalfRadix = biRadix >>> 1;
var biRadixSquared = biRadix * biRadix;
var maxDigitVal = biRadix - 1;
var maxInteger = 9999999999999998;
var maxDigits;
var ZERO_ARRAY;
var bigZero, bigOne;
var dpl10 = 15;
var highBitMasks = new Array(0x0000, 0x8000, 0xC000, 0xE000, 0xF000, 0xF800,
0xFC00, 0xFE00, 0xFF00, 0xFF80, 0xFFC0, 0xFFE0,
0xFFF0, 0xFFF8, 0xFFFC, 0xFFFE, 0xFFFF);

var hexatrigesimalToChar = new Array(
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
'u', 'v', 'w', 'x', 'y', 'z'
);

var hexToChar = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f');

var lowBitMasks = new Array(0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F,
0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF,
0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF);

function setMaxDigits(value) {
	maxDigits = value;
	ZERO_ARRAY = new Array(maxDigits);
	for (var iza = 0; iza < ZERO_ARRAY.length; iza++) ZERO_ARRAY[iza] = 0;
	bigZero = new BigInt();
	bigOne = new BigInt();
	bigOne.digits[0] = 1;
}

function BigInt(flag) {
	if (typeof flag == "boolean" && flag == true) {
		this.digits = null;
	}
	else {
		this.digits = ZERO_ARRAY.slice(0);
	}
	this.isNeg = false;
}

function biFromDecimal(s) {
	var isNeg = s.charAt(0) == '-';
	var i = isNeg ? 1 : 0;
	var result;
	while (i < s.length && s.charAt(i) == '0') ++i;
	if (i == s.length) {
		result = new BigInt();
	}
	else {
		var digitCount = s.length - i;
		var fgl = digitCount % dpl10;
		if (fgl == 0) fgl = dpl10;
		result = biFromNumber(Number(s.substr(i, fgl)));
		i += fgl;
		while (i < s.length) {
			result = biAdd(biMultiply(result, biFromNumber(1000000000000000)),
			biFromNumber(Number(s.substr(i, dpl10))));
			i += dpl10;
		}
		result.isNeg = isNeg;
	}
	return result;
}

function biCopy(bi) {
	var result = new BigInt(true);
	result.digits = bi.digits.slice(0);
	result.isNeg = bi.isNeg;
	return result;
}

function biFromNumber(i) {
	var result = new BigInt();
	result.isNeg = i < 0;
	i = Math.abs(i);
	var j = 0;
	while (i > 0) {
		result.digits[j++] = i & maxDigitVal;
		i >>= biRadixBits;
	}
	return result;
}

function reverseStr(s) {
	var result = "";
	for (var i = s.length - 1; i > -1; --i) {
		result += s.charAt(i);
	}
	return result;
}

function biToString(x, radix) {
	var b = new BigInt();
	b.digits[0] = radix;
	var qr = biDivideModulo(x, b);
	var result = hexatrigesimalToChar[qr[1].digits[0]];
	while (biCompare(qr[0], bigZero) == 1) {
		qr = biDivideModulo(qr[0], b);
		digit = qr[1].digits[0];
		result += hexatrigesimalToChar[qr[1].digits[0]];
	}
	return (x.isNeg ? "-" : "") + reverseStr(result);
}

function biToDecimal(x) {
	var b = new BigInt();
	b.digits[0] = 10;
	var qr = biDivideModulo(x, b);
	var result = String(qr[1].digits[0]);
	while (biCompare(qr[0], bigZero) == 1) {
		qr = biDivideModulo(qr[0], b);
		result += String(qr[1].digits[0]);
	}
	return (x.isNeg ? "-" : "") + reverseStr(result);
}

function digitToHex(n) {
	var mask = 0xf;
	var result = "";
	for (i = 0; i < 4; ++i) {
		result += hexToChar[n & mask];
		n >>>= 4;
	}
	return reverseStr(result);
}

function biToHex(x) {
	var result = "";
	var n = biHighIndex(x);
	for (var i = biHighIndex(x); i > -1; --i) {
		result += digitToHex(x.digits[i]);
	}
	return result;
}

function charToHex(c) {
	var ZERO = 48;
	var NINE = ZERO + 9;
	var littleA = 97;
	var littleZ = littleA + 25;
	var bigA = 65;
	var bigZ = 65 + 25;
	var result;

	if (c >= ZERO && c <= NINE) {
		result = c - ZERO;
	} else if (c >= bigA && c <= bigZ) {
		result = 10 + c - bigA;
	} else if (c >= littleA && c <= littleZ) {
		result = 10 + c - littleA;
	} else {
		result = 0;
	}
	return result;
}

function hexToDigit(s) {
	var result = 0;
	var sl = Math.min(s.length, 4);
	for (var i = 0; i < sl; ++i) {
		result <<= 4;
		result |= charToHex(s.charCodeAt(i))
	}
	return result;
}

function biFromHex(s) {
	var result = new BigInt();
	var sl = s.length;
	for (var i = sl, j = 0; i > 0; i -= 4, ++j) {
		result.digits[j] = hexToDigit(s.substr(Math.max(i - 4, 0), Math.min(i, 4)));
	}
	return result;
}

function biFromString(s, radix) {
	var isNeg = s.charAt(0) == '-';
	var istop = isNeg ? 1 : 0;
	var result = new BigInt();
	var place = new BigInt();
	place.digits[0] = 1; // radix^0
	for (var i = s.length - 1; i >= istop; i--) {
		var c = s.charCodeAt(i);
		var digit = charToHex(c);
		var biDigit = biMultiplyDigit(place, digit);
		result = biAdd(result, biDigit);
		place = biMultiplyDigit(place, radix);
	}
	result.isNeg = isNeg;
	return result;
}

function biDump(b) {
	return (b.isNeg ? "-" : "") + b.digits.join(" ");
}

function biAdd(x, y) {
	var result;

	if (x.isNeg != y.isNeg) {
		y.isNeg = !y.isNeg;
		result = biSubtract(x, y);
		y.isNeg = !y.isNeg;
	}
	else {
		result = new BigInt();
		var c = 0;
		var n;
		for (var i = 0; i < x.digits.length; ++i) {
			n = x.digits[i] + y.digits[i] + c;
			result.digits[i] = n & 0xffff;
			c = Number(n >= biRadix);
		}
		result.isNeg = x.isNeg;
	}
	return result;
}

function biSubtract(x, y) {
	var result;
	if (x.isNeg != y.isNeg) {
		y.isNeg = !y.isNeg;
		result = biAdd(x, y);
		y.isNeg = !y.isNeg;
	} else {
		result = new BigInt();
		var n, c;
		c = 0;
		for (var i = 0; i < x.digits.length; ++i) {
			n = x.digits[i] - y.digits[i] + c;
			result.digits[i] = n & 0xffff;
			if (result.digits[i] < 0) result.digits[i] += biRadix;
			c = 0 - Number(n < 0);
		}
		if (c == -1) {
			c = 0;
			for (var i = 0; i < x.digits.length; ++i) {
				n = 0 - result.digits[i] + c;
				result.digits[i] = n & 0xffff;
				if (result.digits[i] < 0) result.digits[i] += biRadix;
				c = 0 - Number(n < 0);
			}
			result.isNeg = !x.isNeg;
		} else {
			result.isNeg = x.isNeg;
		}
	}
	return result;
}

function biHighIndex(x) {
	var result = x.digits.length - 1;
	while (result > 0 && x.digits[result] == 0) --result;
	return result;
}

function biNumBits(x) {
	var n = biHighIndex(x);
	var d = x.digits[n];
	var m = (n + 1) * bitsPerDigit;
	var result;
	for (result = m; result > m - bitsPerDigit; --result) {
		if ((d & 0x8000) != 0) break;
		d <<= 1;
	}
	return result;
}

function biMultiply(x, y) {
	var result = new BigInt();
	var c;
	var n = biHighIndex(x);
	var t = biHighIndex(y);
	var u, uv, k;

	for (var i = 0; i <= t; ++i) {
		c = 0;
		k = i;
		for (j = 0; j <= n; ++j, ++k) {
			uv = result.digits[k] + x.digits[j] * y.digits[i] + c;
			result.digits[k] = uv & maxDigitVal;
			c = uv >>> biRadixBits;
		}
		result.digits[i + n + 1] = c;
	}
	result.isNeg = x.isNeg != y.isNeg;
	return result;
}

function biMultiplyDigit(x, y) {
	var n, c, uv;

	result = new BigInt();
	n = biHighIndex(x);
	c = 0;
	for (var j = 0; j <= n; ++j) {
		uv = result.digits[j] + x.digits[j] * y + c;
		result.digits[j] = uv & maxDigitVal;
		c = uv >>> biRadixBits;
	}
	result.digits[1 + n] = c;
	return result;
}

function arrayCopy(src, srcStart, dest, destStart, n) {
	var m = Math.min(srcStart + n, src.length);
	for (var i = srcStart, j = destStart; i < m; ++i, ++j) {
		dest[j] = src[i];
	}
}



function biShiftLeft(x, n) {
	var digitCount = Math.floor(n / bitsPerDigit);
	var result = new BigInt();
	arrayCopy(x.digits, 0, result.digits, digitCount,result.digits.length - digitCount);
	var bits = n % bitsPerDigit;
	var rightBits = bitsPerDigit - bits;
	for (var i = result.digits.length - 1, i1 = i - 1; i > 0; --i, --i1) {
		result.digits[i] = ((result.digits[i] << bits) & maxDigitVal) |
		((result.digits[i1] & highBitMasks[bits]) >>>
		(rightBits));
	}
	result.digits[0] = ((result.digits[i] << bits) & maxDigitVal);
	result.isNeg = x.isNeg;
	return result;
}

function biShiftRight(x, n) {
	var digitCount = Math.floor(n / bitsPerDigit);
	var result = new BigInt();
	arrayCopy(x.digits, digitCount, result.digits, 0,x.digits.length - digitCount);
	var bits = n % bitsPerDigit;
	var leftBits = bitsPerDigit - bits;
	for (var i = 0, i1 = i + 1; i < result.digits.length - 1; ++i, ++i1) {
		result.digits[i] = (result.digits[i] >>> bits) |
		((result.digits[i1] & lowBitMasks[bits]) << leftBits);
	}
	result.digits[result.digits.length - 1] >>>= bits;
	result.isNeg = x.isNeg;
	return result;
}

function biMultiplyByRadixPower(x, n) {
	var result = new BigInt();
	arrayCopy(x.digits, 0, result.digits, n, result.digits.length - n);
	return result;
}

function biDivideByRadixPower(x, n)
{
	var result = new BigInt();
	arrayCopy(x.digits, n, result.digits, 0, result.digits.length - n);
	return result;
}

function biModuloByRadixPower(x, n)
{
	var result = new BigInt();
	arrayCopy(x.digits, 0, result.digits, 0, n);
	return result;
}

function biCompare(x, y) {
	if (x.isNeg != y.isNeg) {
		return 1 - 2 * Number(x.isNeg);
	}
	for (var i = x.digits.length - 1; i >= 0; --i) {
		if (x.digits[i] != y.digits[i]) {
			if (x.isNeg) {
				return 1 - 2 * Number(x.digits[i] > y.digits[i]);
			} else {
				return 1 - 2 * Number(x.digits[i] < y.digits[i]);
			}
		}
	}
	return 0;
}

function biDivideModulo(x, y) {
	var nb = biNumBits(x);
	var tb = biNumBits(y);
	var origYIsNeg = y.isNeg;
	var q, r;
	if (nb < tb) {
		if (x.isNeg) {
			q = biCopy(bigOne);
			q.isNeg = !y.isNeg;
			x.isNeg = false;
			y.isNeg = false;
			r = biSubtract(y, x);
			x.isNeg = true;
			y.isNeg = origYIsNeg;
		} else {
			q = new BigInt();
			r = biCopy(x);
		}
		return new Array(q, r);
	}

	q = new BigInt();
	r = x;

	var t = Math.ceil(tb / bitsPerDigit) - 1;
	var lambda = 0;
	while (y.digits[t] < biHalfRadix) {
		y = biShiftLeft(y, 1);
		++lambda;
		++tb;
		t = Math.ceil(tb / bitsPerDigit) - 1;
	}

	r = biShiftLeft(r, lambda);
	nb += lambda;
	var n = Math.ceil(nb / bitsPerDigit) - 1;

	var b = biMultiplyByRadixPower(y, n - t);
	while (biCompare(r, b) != -1) {
		++q.digits[n - t];
		r = biSubtract(r, b);
	}
	for (var i = n; i > t; --i) {
		var ri = (i >= r.digits.length) ? 0 : r.digits[i];
		var ri1 = (i - 1 >= r.digits.length) ? 0 : r.digits[i - 1];
		var ri2 = (i - 2 >= r.digits.length) ? 0 : r.digits[i - 2];
		var yt = (t >= y.digits.length) ? 0 : y.digits[t];
		var yt1 = (t - 1 >= y.digits.length) ? 0 : y.digits[t - 1];
		if (ri == yt) {
			q.digits[i - t - 1] = maxDigitVal;
		} else {
			q.digits[i - t - 1] = Math.floor((ri * biRadix + ri1) / yt);
		}

		var c1 = q.digits[i - t - 1] * ((yt * biRadix) + yt1);
		var c2 = (ri * biRadixSquared) + ((ri1 * biRadix) + ri2);
		while (c1 > c2) {
			--q.digits[i - t - 1];
			c1 = q.digits[i - t - 1] * ((yt * biRadix) | yt1);
			c2 = (ri * biRadix * biRadix) + ((ri1 * biRadix) + ri2);
		}

		b = biMultiplyByRadixPower(y, i - t - 1);
		r = biSubtract(r, biMultiplyDigit(b, q.digits[i - t - 1]));
		if (r.isNeg) {
			r = biAdd(r, b);
			--q.digits[i - t - 1];
		}
	}
	r = biShiftRight(r, lambda);

	q.isNeg = x.isNeg != origYIsNeg;
	if (x.isNeg) {
		if (origYIsNeg) {
			q = biAdd(q, bigOne);
		} else {
			q = biSubtract(q, bigOne);
		}
		y = biShiftRight(y, lambda);
		r = biSubtract(y, r);
	}

	if (r.digits[0] == 0 && biHighIndex(r) == 0) r.isNeg = false;

	return new Array(q, r);
}

function biDivide(x, y) {
	return biDivideModulo(x, y)[0];
}

function biModulo(x, y) {
	return biDivideModulo(x, y)[1];
}

function biMultiplyMod(x, y, m) {
	return biModulo(biMultiply(x, y), m);
}

function biPow(x, y) {
	var result = bigOne;
	var a = x;
	while (true) {
		if ((y & 1) != 0) result = biMultiply(result, a);
		y >>= 1;
		if (y == 0) break;
		a = biMultiply(a, a);
	}
	return result;
}

function biPowMod(x, y, m) {
	var result = bigOne;
	var a = x;
	var k = y;
	while (true) {
		if ((k.digits[0] & 1) != 0) result = biMultiplyMod(result, a, m);
		k = biShiftRight(k, 1);
		if (k.digits[0] == 0 && biHighIndex(k) == 0) break;
		a = biMultiplyMod(a, a, m);
	}
	return result;
}

function BarrettMu(m) {
	this.modulus = biCopy(m);
	this.k = biHighIndex(this.modulus) + 1;
	var b2k = new BigInt();
	b2k.digits[2 * this.k] = 1;
	this.mu = biDivide(b2k, this.modulus);
	this.bkplus1 = new BigInt();
	this.bkplus1.digits[this.k + 1] = 1;
	this.modulo = BarrettMu_modulo;
	this.multiplyMod = BarrettMu_multiplyMod;
	this.powMod = BarrettMu_powMod;
}

function BarrettMu_modulo(x) {
	var q1 = biDivideByRadixPower(x, this.k - 1);
	var q2 = biMultiply(q1, this.mu);
	var q3 = biDivideByRadixPower(q2, this.k + 1);
	var r1 = biModuloByRadixPower(x, this.k + 1);
	var r2term = biMultiply(q3, this.modulus);
	var r2 = biModuloByRadixPower(r2term, this.k + 1);
	var r = biSubtract(r1, r2);
	if (r.isNeg) {
		r = biAdd(r, this.bkplus1);
	}
	var rgtem = biCompare(r, this.modulus) >= 0;
	while (rgtem) {
		r = biSubtract(r, this.modulus);
		rgtem = biCompare(r, this.modulus) >= 0;
	}
	return r;
}

function BarrettMu_multiplyMod(x, y) {
	var xy = biMultiply(x, y);
	return this.modulo(xy);
}

function BarrettMu_powMod(x, y) {
	var result = new BigInt();
	result.digits[0] = 1;
	while (true) {
		if ((y.digits[0] & 1) != 0) result = this.multiplyMod(result, x);
		y = biShiftRight(y, 1);
		if (y.digits[0] == 0 && biHighIndex(y) == 0) break;
		x = this.multiplyMod(x, x);
	}
	return result;
}

/***************************ALL RESOURCES PART***********************************/

$j = jQuery.noConflict();
var AS4AllResourcesPart = Class.create({
	searchTerms: null,
	previousTerms: null,
	channelController: null,
	channelWidgetsId: null,
	
	perPageUpdated: "false",
	
	bottomChange: "",
	
	initialize: function()
	{
	},
	refresh: function(page, options)
	{
		var options = Object.extend({
				limit: 3
			}, options
		);
		var url = '/widget/index/';
		var params = {
			renderMode: 'update',
			channel_widgets_id: this.channelWidgetsId,
			id: this.channelController.channelId,
			page: page,
			limit: options.limit,
			search_terms: this.searchTerms
		};
	
		AS4Shell.getInstance().ajaxUpdate(url, params, $$('#channel_widgets_' + this.channelWidgetsId + ' .widget_content.all_resources').first().identify(), $A([this.onRefreshComplete.bind(this)]), {showIndicator: false});
	},
	filter: function(page)
	{
		var url = '/widget/index/';
		var keywords = $j("#filter_keyword_"+cwid).val();
		var month = $j("#filter_month_"+cwid).val();
		var year = $j("#filter_year_"+cwid).val();
		var category = $j("#filter_category_"+cwid).val();
		var language = $j("#filter_language_"+cwid).val();
		var perPage = $j("#show_per_page_"+cwid+""+this.bottomChange).val();
			
		var params = {
			renderMode: 'update',
			channel_widgets_id: this.channelWidgetsId,
			id: this.channelController.channelId,
			keywords: keywords,
			month: month,
			year: year,
			category: category,
			language: language,
			page: page,
			perPage: perPage,
			pageUpdated: this.perPageUpdated
		};
		AS4Shell.getInstance().ajaxUpdate(url, params, $('all_resources_list_'+this.channelWidgetsId), $A([this.onFilterComplete.bind(this)]), {showIndicator: false});
	},
	onFilterComplete: function()
	{
		this.perPageUpdated = "false";
	},
	search: function(terms)
	{
		if ($('pagination_search_terms')) 
		{
			if (this.searchTerms == terms || (terms == null && $F('pagination_search_terms') != this.searchTerms) || this.searchTerms == this.previousTerms) 
				return;
		}
		else if(terms)
			this.searchTerms = terms;
			
		this.refresh(1);
	},
	onRefreshComplete: function(transport, target)
	{
		if(transport.headerJSON.meta.search_terms == this.searchTerms) 
		{
			this.previousTerms = transport.headerJSON.meta.search_terms;
			$('pagination_search_terms').value = this.previousTerms;
		}
	}
});

// Hash of all the resource widget instances.
hshAS4AllResourcesWidgets = {};

AS4AllResourcesPart.instance = null;
AS4AllResourcesPart.getInstance = function()
{
	if(!AS4AllResourcesPart.instance)
		AS4AllResourcesPart.instance = new AS4AllResourcesPart();
		
	return AS4AllResourcesPart.instance;
}

AS4AllResourcesPart.getInstanceById = function(intId)
{
	if(typeof(hshAS4AllResourcesWidgets[intId]) == 'undefined')
	{
		hshAS4AllResourcesWidgets[intId] = new AS4AllResourcesPart();
	}

	return hshAS4AllResourcesWidgets[intId];
}


/*******************************BLOG PART*******************************************/

$j = jQuery.noConflict();
var AS4BlogPart = Class.create({
	channelController: null,
	channelWidgetsId: null,
	
	perPageUpdated: "false",
	
	bottomChange: "",
	initialize: function()
	{
	},
	refresh: function(page, options)
	{
		var options = Object.extend({
				limit: 3
			}, options
		);
		var url = '/widget/index/';
		var params = {
			renderMode: 'update',
			channel_widgets_id: this.channelWidgetsId,
			id: this.channelController.channelId,
			page: page,
			limit: options.limit,
			search_terms: this.searchTerms
		};
		AS4Shell.getInstance().ajaxUpdate(url, params, $$('.blog_cwid_'+this.channelWidgetsId).first().identify(), $A([this.onRefreshComplete.bind(this)]), {showIndicator: false});
	},
	filter: function()
	{
		
		cwid = AS4BlogPart.getInstance().channelWidgetsId;
		var url = '/widget/index/';
		var month = $j("#filter_month_"+cwid).val();
			
		var params = {
			renderMode: 'update',
			channel_widgets_id: AS4BlogPart.getInstance().channelWidgetsId,
			id: this.channelController.channelId,
			month: month,
			page: 1,
			pageUpdated: AS4BlogPart.getInstance().perPageUpdated
		};
		AS4Shell.getInstance().ajaxUpdate(url, params, $$('.widget_content.blog.blog_cwid_'+AS4BlogPart.getInstance().channelWidgetsId).first().identify(), $A([this.onFilterComplete.bind(this)]), {showIndicator: false});
	},
	onFilterComplete: function()
	{
		AS4BlogPart.getInstance().perPageUpdated = "false";
	},
	onRefreshComplete: function(transport, target)
	{
		if(transport.headerJSON.meta.search_terms == this.searchTerms) 
		{
			this.previousTerms = transport.headerJSON.meta.search_terms;
			$('pagination_search_terms').value = this.previousTerms;
		}
	}
	
	
});
AS4BlogPart.instance = null;
AS4BlogPart.getInstance = function()
{
	if(!AS4BlogPart.instance)
		AS4BlogPart.instance = new AS4BlogPart();
		
	return AS4BlogPart.instance;
}


/*******************************AS4 Channel***********************************/


$j = jQuery.noConflict();
document.observe('dom:loaded', function() 
{
	
	if($('resource_manager'))
		AS4ResourceManager.getInstance().refresh();
	
	if($('all_resources'))
	{
		AS4AllResourcesPart.getInstance().channelController = AS4Channel.getInstance();
		AS4AllResourcesPart.getInstance().element = $('all_resources');
		AS4FormMethods.applyPlaceholders(null, $A([$('pagination_search_terms')]));
	}
	
	
	
	if(AS4Channel.getInstance().strShowIScreen != "")
	{
		
		AS4Channel.getInstance().installIIcons();
	}
	
},null);
var AS4Channel = Class.create({
	
	channelId: null,
	
	
	strShowIScreen: "",
	
		
	perPage: "",
	
	keys: null,
	
	form_data: null,
	
	current_cwid: null,
	
	
	initialize: function() 
	{},
		
	loadInlineResource: function(id, element)
	{
		var url = '/resources/view';
		
		var params = {
			id: id,
			inline: 'true'
		};
		
		AS4Shell.getInstance().ajaxUpdate(url, params, element, null);
	},
	
	
	urlForResource: function(id, options, element)
	{
		var url = '/resources/urlFor';
		
		var params = {
			id: id,
			inline: 'true',
			scaling: ( options.scaling ? options.scaling : false),
			embed: (options.embed ? options.embed : false)
		};
		
		AS4Shell.getInstance().ajaxUpdate(url, params, element, null);
	},
	
	insertFlashMovie: function(UFO,websiteDomain,resourceId,element)
	{	
			var resourceUrl = escape(websiteDomain+"/resources/view/id/"+resourceId+".flv");
		
			var FO = {
				movie:"/app/common/assets/flash/flvplayer.swf",
				width: "620",
				height: "400",
				majorversion:"7",
				build:"0",
				bgcolor:"#FFFFFF",
				flashvars:"file="+resourceUrl
			};
			UFO.create( FO, "player"+resourceId);
	},
	
	setApproval: function(resourceId)
	{
		var url = '/channel/set_resource_approval';
		
		var params = {
			resource_id: resourceId
		};
		
		AS4Shell.getInstance().ajaxUpdate(url, params, null, $A([this.onSetApprovalComplete.bind(this)]));
	},
	
	
	onSetApprovalComplete: function(transport, target)
	{
		if(!transport.headerJSON)
			return;
		this.approvalReload();
	},
			
	approvalReload: function()
	{
		
		top.location = self.location;
		
	},
	
	installIIcons: function()
	{		
			strShowIScreen = AS4Channel.getInstance().strShowIScreen;			
						
			arrShowIScreen = strShowIScreen.split("|");
			
			if(arrShowIScreen.length > 0)
			{
			
				arrShowIScreen.each(function(cwid, i)
				{
					if(cwid != "")
					{
						imageElement = $j("#channel_widgets_"+cwid+" img");
						
						$j.each($j("#channel_widgets_"+cwid+" img"), function(j, image)
						{
							image.id = "iScreenImage_"+cwid+"_"+j;
							
							thisImage = $j("#iScreenImage_"+cwid+"_"+j);							
							
							
							if(thisImage.attr("src").indexOf("/resources/view/id/") != "-1")
							{	
								
								
								hostname = window.location.hostname;
								imgSrc = thisImage.attr("src");
								imageId = imgSrc.replace("http://", "");
								
								imageId = imageId.replace(hostname, "");
								imageId = imageId.replace("?inline=true", "");
								imageId = imageId.replace("/resources/view/id/", "");
								imageId = imageId.replace(":81", "");
								imageId = imageId.replace(":82", "");
															
								var url = '/resources/get_image_summary';
						
								var params = {
									resource_id: imageId
								};
								
								$j.ajax({
								   type: "GET",
								   url: url,
								   data: "resource_id="+imageId,
								   success: function(text){
								     if(text != "")
								     {
									  
									     	imagePosition = $j("#iScreenImage_"+cwid+"_"+j).position();
									     	imageWidth = $j("#iScreenImage_"+cwid+"_"+j).width();
									     	imageHeight = $j("#iScreenImage_"+cwid+"_"+j).height(); 
	
									     	
											imageIIcon = "<div style='height:0px;position:relative;z-index:8;'><div class='i-icon hiddenicon' id='i-icon"+cwid+"-"+j+"' style='width:"+((imageWidth/100)*95)+"px;position:relative;z-index:10;'><div class='image_summary_text' id='image_summary_text_"+cwid+"_"+j+"'  style='visibillity:hidden;'>"+text+"</div></div><div class='clear' >&nbsp;</div></div><div style='height:0px;float:left;width:"+imageWidth+"px'class='i-icon-button'><img id='i-icon-button-"+cwid+"-"+j+"'  style='float:right;cursor:pointer;width:14px;height:14px;'  src='/app/common/assets/themes/default/css/images/icons_information.gif' alt='Click for Info' onclick='AS4Channel.getInstance().toggleSummary("+j+","+cwid+"); return false;'/></div><div class='clear'>&nbsp;</div>";
											
									     	$j("#iScreenImage_"+cwid+"_"+j).after(imageIIcon);
									     	
									     	popup = $j("#i-icon"+cwid+"-"+j);
									     	popupheight = $j("#i-icon"+cwid+"-"+j).height();
									     	
									     	
									     	
									    	$j(".primary #i-icon"+cwid+"-"+j).css("bottom", 80);
									    	$j(".secondary #i-icon"+cwid+"-"+j).css("bottom", 100);
									    	$j(".tertiary #i-icon"+cwid+"-"+j).css("bottom", 95);
									     	$j("#i-icon"+cwid+"-"+j).css("left", (imageWidth/100)*3);
									     	
									     
								     }
								   }
								 });
								
								
							}
						});
						
										
						
					}
				});
			}
	}, 
	
	toggleSummary: function(j , cwid, imgId) 
	{
		icontop = $j("#i-icon"+cwid+"-"+j).css("top");
		
		icontop = icontop.replace("px", "");
		
		if($j("#i-icon"+cwid+"-"+j).hasClass("hiddenicon"))
		{
			$j("#i-icon"+cwid+"-"+j).removeClass("hiddenicon");
			
			
			$j("#i-icon-button-"+cwid+"-"+j).attr("src", "/app/common/assets/themes/default/css/images/icons_close.gif");
			
			
	
			
		}
		else
		{
			$j("#i-icon"+cwid+"-"+j).addClass("hiddenicon");
			
			
			$j("#i-icon-button-"+cwid+"-"+j).attr("src", "/app/common/assets/themes/default/css/images/icons_information.gif"); 
						
			
		}
		
		
		
	},
	
	loadTranslationDetails: function(resource_id, channel_id, cwid, res_no)
	{
		var url = '/resources/load_translation_details';
		
		var params = {
			id: resource_id,
			channel_id: channel_id,
			cwid: cwid,
			res_no: res_no
		};
		
		AS4Shell.getInstance().ajaxUpdate(url, params, null, $A([this.onLoadTranslationDetailsComplete.bind(this)]));
	},
	
	onLoadTranslationDetailsComplete: function(transport, target)
	{
		cwid = transport.headerJSON.cwid;
		resNo = transport.headerJSON.res_no;
		categories = transport.headerJSON.categories;
		title = transport.headerJSON.title;
		summary = transport.headerJSON.summary;
		type = transport.headerJSON.type;
		publish_date = transport.headerJSON.publish_date;
		contact = transport.headerJSON.contact;
		create_date = transport.headerJSON.create_date;
		owner = transport.headerJSON.owner;
		translation_id = transport.headerJSON.translation_id;
		
		
		$j("#channel_widgets_"+cwid+" #resource"+resNo+" .top_row span.resource_type").html(categories);
		
		if(type == 5)
			$j("#channel_widgets_"+cwid+" #resource"+resNo+" .header_row").html("<a href='/resources/view/id/"+translation_id+"?download=true' title='"+title+"'>"+title+"</a>");
		else
			$j("#channel_widgets_"+cwid+" #resource"+resNo+" .header_row").html("<a href='/channel/view_resource/id/"+translation_id+"'>"+title+"</a>");
			
		$j("#channel_widgets_"+cwid+" #resource"+resNo+" .summary_row").html(summary);
		$j("#channel_widgets_"+cwid+" #resource"+resNo+" .last_row .owner").html(owner);
		$j("#channel_widgets_"+cwid+" #resource"+resNo+" .last_row .contact").html('Contact: '+contact);
		$j("#channel_widgets_"+cwid+" #resource"+resNo+" .last_row #pub_date").html(publish_date);
		$j("#channel_widgets_"+cwid+" #resource"+resNo+" .last_row #create_date").html(create_date);	
	},
	
	filterFormRecords: function(cwid, layout, all)
	{
		var search_filter = $j("#search_filter_"+cwid);
		var search_fields = $j("#search_fields_"+cwid);
		var display_language = $j("#language_filter_"+cwid);
		
		var url = "/widget/index/";
		
		if(all === true)
		{
			var params = {
				renderMode: 'update',
				resource_id: this.resourceId,
				search_filter: null,
				search_field: 0,
				channel_widgets_id: cwid,
				id: this.channelId,
				display_language: display_language.val()
			};
		}
		else
		{
			var params = {
				renderMode: 'update',
				resource_id: this.resourceId,
				search_filter: search_filter.val(),
				search_field: search_fields.val(),
				channel_widgets_id: cwid,
				id: this.channelId,
				display_language: display_language.val()
			};
		}
		
		AS4Shell.getInstance().ajaxUpdate(url, params,  $('form_widget_'+cwid), $A(), {method: 'get'});
	},
	
	filterFormRecords2: function(cwid, layout)
	{
		var search_filter = $j("#channel_widgets_"+cwid+" .form_search #search_filter");
		var search_fields = $j("#channel_widgets_"+cwid+" .form_search #search_fields");
		
		var field_value = search_fields.val();
		var filter_value = search_filter.val();
		
		if(filter_value == "")
		{
			alert("No search filter set");
			
			return false;
		}
		
	
		
		switch(layout)
		{
			case 'linear':
				
				var form_records = $j("#channel_widgets_"+cwid+" .form_records_linear table#values tbody tr");
				
				form_records.hide("fast");
				
				var record_count = 0;
				
				form_records.each(function(i, ele)
				{
					var form_record = jQuery(ele);
					
					if(field_value == "0")
					{
						var arr_form_value = form_record.children("td");
						
						arr_form_value.each(function(j, field)
						{
							var record_value = $j(field).children("span").html();
							
							if(record_value.indexOf(filter_value) != "-1")
							{
								record_count++;
								
								form_record.show("fast");
							}
						});
					}
					else
					{
						var arr_form_value = form_record.children("td#form_field_"+field_value+"");
						
						var record_value = arr_form_value.children("span").html();
						
						if(record_value.indexOf(filter_value) != "-1")
						{
							record_count++
							
							form_record.show("fast");
						}
					}
				});
			break;
			case 'record':
				var form_records = $j("#channel_widgets_"+cwid+" .form_records_grid .form_record");
				
				var record_count = 0;
				
				form_records.fadeOut("fast");
				
				form_records.each(function(i, ele)
				{
					
					
					
					var form_record = jQuery("#"+ele.id+" .central");
					
					if(field_value == "0")
					{
						var arr_form_value = form_record.children(".form_field");
						
						arr_form_value.each(function(j, field)
						{
							var record_value = $j("#"+field.id+" span").html();
						
							if(record_value.indexOf(filter_value) != "-1")
							{
								record_count++;
								
								form_record.parent().fadeIn("fast");
							}
						});
					}
					else
					{
						var arr_form_value = form_record.children("#form_field_"+field_value);
						var record_value = arr_form_value.children("span").html();
						
						if(record_value.indexOf(filter_value) != "-1")
						{
							record_count++;
							
							form_record.fadeIn("fast");
						}
					}
					
				});
			break;
		}
		
		jQuery(".form_record_count span").html(record_count);
		
	},
	
	submitForm: function(form_id, cwid)
	{		
		var pageForm = $j("#channel_widgets_"+cwid+" #form_"+form_id);
		
		var form_data = '{"captcha_confirm":';
		
		if($j("#humancheck_"+cwid).val() != "notanautomaton")
		{
				return false;
		}
		else
		{
			entered_captcha = "bypass";
			captcha_element_id = "0";
		}

		//retrive the captcha value entered so it can be put at the start on the json string
		if($j("#captcha_confirm_"+cwid).length > 0)
		{
			entered_captcha = $j("#captcha_confirm_"+cwid).val();
			
			captcha_element_id = $j("#captcha_confirm_"+cwid).siblings(".captcha_image").attr("id").replace("captcha_image_", "");
		}
		else
		{
			entered_captcha = "bypass";
			captcha_element_id = "0";
			
			
		}
		
		
		
		jQuery('.ajax_status .ajax_message').html('Sending Form');
		jQuery('.ajax_status').show();
		//$j("#form_form_element_698").css("opacity","0.3");
		
			
		//return false;	
		form_data += '"'+entered_captcha+'",';
		
		
		// loop througb all inputs textarea and select boxes and build a form data json string
		
		$j("#channel_widgets_"+cwid+" #form_"+form_id+" input").each(function(i, ele)
		{
			
			if(ele.id != "captcha_confirm" && ele.type != 'button' && ele.type != "reset" && ele.type != "checkbox")// ignore the capcha because we already have it also ignore button values
			{
				// strip out 'form_form_element_' so we just have a numeric id
				form_data += '"'+ele.id.replace("form_form_element_input_", "")+'":'+JSON.stringify(ele.value)+','; 
			}
			
			//if we have a checkbox then we only want to send the value if it is ticked
			if(ele.type == "checkbox" && ele.checked)
			{
				form_data += '"'+ele.id.replace("form_form_element_input_", "")+'":'+JSON.stringify(ele.value)+','; 
			}
				
					
		});
		
		// we need to get the innerhtml of a text area so we do things slightly differently
		$j("#channel_widgets_"+cwid+" #form_"+form_id+" textarea").each(function(i, ele)
		{
					
			// strip out 'form_form_element_' so we just have a numeric id
			form_data += '"'+ele.id.replace("form_form_element_input_", "")+'":'+JSON.stringify(ele.value)+','; 
		});
		
		// we need to get the value of a select box so we do things slightly differently
		$j("#channel_widgets_"+cwid+" #form_"+form_id+" select").each(function(i, ele)
		{
			selectedValue = $j("#"+ele.id).val();		

			// strip out 'form_form_element_' so we just have a numeric id
			form_data += '"'+ele.id.replace("form_form_element_input_", "")+'":'+JSON.stringify(selectedValue)+','; 
		});

		var session = $j("#session_"+cwid).val();
		var secure_domain = $j("#secure_domain_"+cwid).val();
		
		var strLen = form_data.length;
				
	
		
		form_data = form_data.slice(0,strLen-1); 
		
		form_data += "}";
		
		AS4Channel.getInstance().setFormDataToBeSent(form_data);
		
		// encrypt the form data
		
		AS4Channel.getInstance().current_cwid = cwid;
		
		$j.jCryption.getKeys("/channel/get_keys/generateKeypair/true", function(receivedKeys)
		{
			AS4Channel.getInstance().setEncryptionKeys(receivedKeys);
			//AS4Channel.getInstance().keys = receivedKeys;
					
			$j.jCryption.encrypt(AS4Channel.getInstance().form_data,AS4Channel.getInstance().keys,function(encrypted) {
				encrypted_data = encrypted;
				
				var params = {
					form_id: form_id,
					form_data: encrypted_data, // needs to be encrypted for validation
					captcha_element_id: captcha_element_id,
					channel_widgets_id: AS4Channel.getInstance().current_cwid,
					session: session,
					validation: "true"
				};
		
				var url = "/channel/save_form_record";
		
				AS4Shell.getInstance().ajaxUpdate(url, params, $('form_constructor'), $A([AS4Channel.getInstance().onPageFormSent.bind(AS4Channel.getInstance(), form_id)]), {message: 'Sending Form...', method:"post"});
				
				jQuery('.ajax_status .ajax_message').html('Loading');
				jQuery('.ajax_status').hide();
				$j("#form_form_element_698").css("opacity","1");
				
			});
		});
		
	},
	
	onPageFormSent: function(form_id, transport)
	{
		var errMsg = "";
		var cwid = transport.headerJSON.channel_widgets_id;
		var widget_name = transport.headerJSON.widget_name;
		
		$j("#form_widget_"+cwid+" .form_errors").html("");
		
		if(transport.headerJSON.result == "success")
		{
			$j("#form_"+form_id).submit();
		}
		else if(transport.headerJSON.result == "failed_captcha")
		{
			field = transport.headerJSON.field;
			msg = transport.headerJSON.error;
		
			$j("#"+widget_name+"_widget_"+cwid+" .form_form_element label").css("color", "#555555");
			$j("#"+widget_name+"_widget_"+cwid+" .form_form_element").css("border", "none");
			$j("#"+widget_name+"_widget_"+cwid+" .form_errors").html("");
			$j("#"+widget_name+"_widget_"+cwid+"  .captcha_error").html("");
			
			$j("#"+widget_name+"_widget_"+cwid+" #form_form_element_"+field+" ").css("border", "1px dashed red");
			$j("#"+widget_name+"_widget_"+cwid+"  .captcha_error").html("<p style='color:red'><strong>"+msg+"</strong></p>");
						
			var imgSrc = $j("#form_widget_"+cwid+"  #captcha_image_"+field).attr("src");
			var d = new Date();
			
			$j("#form_widget_"+cwid+"  #captcha_image_"+field).attr("src", imgSrc+"?"+d);
			
		}
		else if(transport.headerJSON.result == "failed_email")
		{
			field = transport.headerJSON.field;
			errMsg = transport.headerJSON.error;
			
			
			$j("#"+widget_name+"_widget_"+cwid+" .form_form_element label").css("color", "#555555");
			$j("#"+widget_name+"_widget_"+cwid+" .form_form_element").css("border", "none");
			$j("#"+widget_name+"_widget_"+cwid+" .captcha_error").html("");
			
			$j("#"+widget_name+"_widget_"+cwid+" #form_form_element_"+field+" label").css("color", "#FF0000");
			$j("#"+widget_name+"_widget_"+cwid+" #form_form_element_"+field).css("border", "1px dashed #FF0000");
		
			$j("#"+widget_name+"_widget_"+cwid+" .form_errors").html("<p style='color:red'><strong>"+errMsg+"</strong></p>");
			
		}
		else if(transport.headerJSON.result == "failed")
		{
			$j("#"+widget_name+"_widget_"+cwid+" .form_form_element label").css("color", "#555555");
			$j("#"+widget_name+"_widget_"+cwid+" .form_form_element").css("border", "none");
			$j("#"+widget_name+"_widget_"+cwid+" .captcha_error").html("");
			
			transport.headerJSON.errors.each(function(err, i)
			{
				errMsg += err+"<br />";
							
			});
							
			transport.headerJSON.fields.each(function(id, i)
			{
				$j("#"+widget_name+"_widget_"+cwid+" #form_form_element_"+id+" label").css("color", "#FF0000");
				$j("#"+widget_name+"_widget_"+cwid+" #form_form_element_"+id).css("border", "1px dashed #FF0000");
			});
			
			$j("#"+widget_name+"_widget_"+cwid+" .form_errors").html("<p style='color:red'><strong>"+errMsg+"</strong></p>");
		}
		
	},
	
	initialiseForm: function(form_id, cwid)
	{
		var form = $j("#channel_widgets_"+cwid+" #form_"+form_id);
		var form_content = $j("#channel_widgets_"+cwid+" #form_content_"+form_id);
		var channel_widget = $j("#channel_widgets_"+cwid);
		var column = $j("#channel_widgets_"+cwid).parent();
		
		if(form)
		{
			var form_form_elements = form.children(".form_form_element");
			var channel_widget_padding_left = channel_widget.css("padding-left");
			var channel_widget_padding_right = channel_widget.css("padding-right");
			var padding = (channel_widget_padding_left.replace("px", "")*1)+(channel_widget_padding_right.replace("px", "")*1);
			form_form_elements.each(function(i, ele)
			{
				current_element = $j("#channel_widgets_"+cwid+" #form_"+form_id+" #"+ele.id);
				
				if(current_element.width() > channel_widget.width())
				{
					current_element.css("width", channel_widget.width()-20);
				}
			});
			
			form_content.css("position", "static");
			form_content.css("margin", "0px");
			
			form_content.css("width", column.width()-padding);
		}
		
		
	},
	
	refreshFormRecords: function(page)
	{
		var options = Object.extend({
				limit: 3
			}, options
		);
		cwid = this.channelWidgetsId;
		
		var search_filter = $j("#search_filter_"+cwid);
		var search_fields = $j("#search_fields_"+cwid);
		var display_language = $j("#language_filter_"+cwid);
		
		var url = '/widget/index/';
		var params = {
			renderMode: 'update',
			channel_widgets_id: this.channelWidgetsId,
			page: page,
			limit: options.limit,
			search_terms: this.searchTerms,
			per_page: this.perPage,
			search_filter: search_filter.val(),
			search_field: search_fields.val()
		};
		
		AS4Shell.getInstance().ajaxUpdate(url, params, $('form_widget_'+this.channelWidgetsId), null, {showIndicator: false});
	},
	
	refreshFormRecords1: function(page)
	{
		cwid = this.channelWidgetsId;
		
		var search_filter = $j("#search_filter_"+cwid);
		var search_fields = $j("#search_fields_"+cwid);
		var display_language = $j("#language_filter_"+cwid);
		
		var url = "/widget/index/";
		
		
			var params = {
				renderMode: 'update',
				resource_id: this.resourceId,
				search_filter: search_filter.val(),
				search_field: search_fields.val(),
				channel_widgets_id: cwid,
				id: this.channelId,
				display_language: display_language.val(),
				page: page,
				per_page: this.perPage
			};
		
		
		AS4Shell.getInstance().ajaxUpdate(url, params,  $('form_widget_'+cwid), $A(), {method: 'get'});
	},
	
	formRecordPagination: function(cwid, perPage, showNewest, page)
	{
		
		
		var record_list = $j("#form_records_list_"+cwid);
		var records = $j("#form_records_list_"+cwid+" .form_record");
		
		var pages = Math.ceil(records.size() / perPage);
		
		var page_start = (perPage*page)-perPage ;
		var page_end = (perPage*page)-1 ;
		
		var next_page = page + 1;
		var prev_page = page - 1;
		records.each(function(record_position, ele)
		{
			record = $j("#"+ele.id);
			
			record.fadeIn("fast");
			
			if(record_position < page_start || record_position > page_end)
			{
				record.fadeOut("fast");
			}
			
		});
		
		var pagination_container = $j("#record_pagination_"+cwid);
		
		var page_links = "";
		
		if(page > "1")
		{
			page_links += '<a href="javascript:void(0);" onclick="AS4Channel.getInstance().formRecordPagination('+cwid+', '+perPage+', 10,1)" id="record_page_link_first_'+cwid+'">First</a>';
			page_links += '<a href="javascript:void(0);" onclick="AS4Channel.getInstance().formRecordPagination('+cwid+', '+perPage+', 10, '+prev_page+' )"  id="record_page_link_prev_'+cwid+'">Prev</a>';
		}
		
		for(i=1 ; i<=pages ; i++)
		{
			page_links += '<a href="javascript:void(0);" onclick="AS4Channel.getInstance().formRecordPagination('+cwid+',  '+perPage+',  10,'+i+')" id="record_page_link_'+i+'_'+cwid+'">'+i+'</a>';
		}
				
		if(page < pages)
		{
			page_links += '<a href="javascript:void(0);" onclick="AS4Channel.getInstance().formRecordPagination('+cwid+',  '+perPage+', 10,'+next_page+')" id="record_page_link_next_'+cwid+'">Next</a>';
			page_links += '<a href="javascript:void(0);" onclick="AS4Channel.getInstance().formRecordPagination('+cwid+',  '+perPage+', 10,'+page+')" id="record_page_link_last_'+cwid+'">Last</a>';
		}
		
		
		pagination_container.html(page_links);
		
	},
	
	setEncryptionKeys: function(keys)
	{
		AS4Channel.getInstance().keys = keys;
	},
	
	setFormDataToBeSent: function(form_data)
	{
		AS4Channel.getInstance().form_data = form_data;
	}
		
	
	
	
	
});
AS4Channel.instance = null;
AS4Channel.getInstance = function()
{
	if(!AS4Channel.instance)
		AS4Channel.instance = new AS4Channel();
		
	return AS4Channel.instance;
}
 

