src/cm/media/js/site/f_text_view_frame.js
changeset 341 053551f213fb
parent 206 38aa907c6479
child 368 7279252f7bd9
equal deleted inserted replaced
340:9e2b9e568e42 341:053551f213fb
     1 var gResetOtherFieldsOnFilterFieldChange = true;
     1 var gResetOtherFieldsOnFilterFieldChange = true;
     2 
     2 
     3 var myDefaultOuterLayoutSettings = {
     3 var myDefaultOuterLayoutSettings = {
     4 	center : {
     4   center : {
     5 		paneSelector :".outer-center"
     5     paneSelector :".outer-center"
     6 	},
     6   },
     7 	north : {
     7   north : {
     8 		size :50,//30,
     8     size :50,//30,
     9 		spacing_open :0,
     9     spacing_open :0,
    10 		closable :false,
    10     closable :false,
    11 		resizable :false
    11     resizable :false
    12 	}
    12   }
    13 };
    13 };
    14 
    14 
    15 var innerNorthPaneDefaults = {
    15 var innerNorthPaneDefaults = {
    16 	'innerNorthPaneOpened' :'0',
    16   'innerNorthPaneOpened' :'0',
    17 	'selectedTab' :'0'
    17   'selectedTab' :'0'
    18 };
    18 };
    19 
    19 
    20 onInnerNorthPaneClose = function() {
    20 onInnerNorthPaneClose = function() {
    21 	_setCookie('innerNorthPaneOpened', '0');
    21   _setCookie('innerNorthPaneOpened', '0');
    22 	$('#add_comment_btn').css('top', 63) ;
    22   $('#add_comment_btn').css('top', 63) ;
    23 	return true;
    23   return true;
    24 }
    24 }
    25 
    25 
    26 onInnerNorthPaneOpen = function() {
    26 onInnerNorthPaneOpen = function() {
    27 	_setCookie('innerNorthPaneOpened', '1');
    27   _setCookie('innerNorthPaneOpened', '1');
    28 	$('#add_comment_btn').css('top', 149) ;
    28   $('#add_comment_btn').css('top', 149) ;
    29 	return true;
    29   return true;
    30 }
    30 }
    31 
    31 
    32 // DEFAULT LAYOUT SETTINGS
    32 // DEFAULT LAYOUT SETTINGS
    33 var myDefaultInnerLayoutSettings = {
    33 var myDefaultInnerLayoutSettings = {
    34 	north : {
    34   north : {
    35 		// size: 66, /* 66 for FF */
    35     // size: 66, /* 66 for FF */
    36 		size :88, /* 66 for FF */
    36     size :88, /* 66 for FF */
    37 		spacing_closed :8,
    37     spacing_closed :8,
    38 		slidable :false,		
    38     slidable :false,    
    39 		resizable :false, /* important */
    39     resizable :false, /* important */
    40 		togglerLength_closed :"100%",
    40     togglerLength_closed :"100%",
    41 		togglerLength_open :"100%",
    41     togglerLength_open :"100%",
    42 		togglerAlign_closed :"center",
    42     togglerAlign_closed :"center",
    43 		/* togglerContent_closed :"options", */
    43     /* togglerContent_closed :"options", */
    44 		togglerTip_closed :gettext("click to show options"),
    44     togglerTip_closed :gettext("click to show options"),
    45 		togglerTip_open :gettext("click to hide options"),
    45     togglerTip_open :gettext("click to hide options"),
    46 		initClosed :false,
    46     initClosed :false,
    47 		paneSelector :".inner-north",
    47     paneSelector :".inner-north",
    48 		onopen :"onInnerNorthPaneOpen",
    48     onopen :"onInnerNorthPaneOpen",
    49 		onclose :"onInnerNorthPaneClose"
    49     onclose :"onInnerNorthPaneClose"
    50 	}
    50   }
    51 };
    51 };
    52 
    52 
    53 var outerLayout, innerLayout;
    53 var outerLayout, innerLayout;
    54 layoutFrames = function() {
    54 layoutFrames = function() {
    55 
    55 
    56 	var innerNorthPaneOpened = $.cookie('innerNorthPaneOpened');
    56   var innerNorthPaneOpened = $.cookie('innerNorthPaneOpened');
    57 	myDefaultInnerLayoutSettings.north.initClosed = (innerNorthPaneOpened === null) ? (innerNorthPaneDefaults['innerNorthPaneOpened'] == '0')
    57   myDefaultInnerLayoutSettings.north.initClosed = (innerNorthPaneOpened === null) ? (innerNorthPaneDefaults['innerNorthPaneOpened'] == '0')
    58 			: (innerNorthPaneOpened == "0");
    58       : (innerNorthPaneOpened == "0");
    59 
    59 
    60 	outerLayout = $('body').layout(myDefaultOuterLayoutSettings);
    60   outerLayout = $('body').layout(myDefaultOuterLayoutSettings);
    61 	innerLayout = $('div.outer-center').layout(myDefaultInnerLayoutSettings);
    61   innerLayout = $('div.outer-center').layout(myDefaultInnerLayoutSettings);
    62 	
    62   
    63 	// to trigger add_comment_btn positioning
    63   // to trigger add_comment_btn positioning
    64 	if (myDefaultInnerLayoutSettings.north.initClosed)
    64   if (myDefaultInnerLayoutSettings.north.initClosed)
    65 		onInnerNorthPaneClose() ;
    65     onInnerNorthPaneClose() ;
    66 	else 
    66   else 
    67 		onInnerNorthPaneOpen() ;
    67     onInnerNorthPaneOpen() ;
    68 }
    68 }
    69 
    69 
    70 fillFilterTab = function() {
    70 fillFilterTab = function() {
    71 	
    71   
    72 	var tab = $('#c_filter');
    72   var tab = $('#c_filter');
    73 	
    73   
    74 	var html = '<div style="float:right">' +
    74   var html = '<div style="float:right">' +
    75 				'<table>' +
    75         '<table>' +
    76 					'<tr>' +
    76           '<tr>' +
    77 					'<td style="text-align:right;">' +
    77           '<td style="text-align:right;">' +
    78 					gettext('Text') +
    78           gettext('Text') +
    79 				'<td>&nbsp;</td>' +
    79         '<td>&nbsp;</td>' +
    80 				'<td>' +
    80         '<td>' +
    81 					'<input id="filter_text" type="text"></input>' +
    81           '<input id="filter_text" type="text"></input>' +
    82 					'<input id="c_filter_btn" type="button" value="' + gettext('Search') + '"></input>' +
    82           '<input id="c_filter_btn" type="button" value="' + gettext('Search') + '"></input>' +
    83 				'</td>' +
    83         '</td>' +
    84 					'</tr>' +
    84           '</tr>' +
    85 					'<tr>' +
    85           '<tr>' +
    86 						'<td colspan="3" style="text-align:right;">' +
    86             '<td colspan="3" style="text-align:right;">' +
    87 							'<input id="c_filterreset_btn" type="button" value="' + gettext('Reset') + '"></input>' +
    87               '<input id="c_filterreset_btn" type="button" value="' + gettext('Reset') + '"></input>' +
    88 							'<input id="c_filterhideall_btn" type="button" value="' + gettext('Hide all Comments') + '"></input>' +
    88               '<input id="c_filterhideall_btn" type="button" value="' + gettext('Hide all Comments') + '"></input>' +
    89 						'</td>' +
    89             '</td>' +
    90 					'</tr>' +
    90           '</tr>' +
    91 				'</table>' +
    91         '</table>' +
    92 			'</div>' +
    92       '</div>' +
    93 			'<table>' +
    93       '<table>' +
    94 				'<tr>' +
    94         '<tr>' +
    95 					'<td style="text-align:right;">' +
    95           '<td style="text-align:right;">' +
    96 					gettext('Authors') +
    96           gettext('Authors') +
    97 					'</td>' +
    97           '</td>' +
    98 					'<td>&nbsp;</td>' +
    98           '<td>&nbsp;</td>' +
    99 					'<td>' +
    99           '<td>' +
   100 						'<select id="filter_name"></select>' +
   100             '<select id="filter_name"></select>' +
   101 					'</td>' +
   101           '</td>' +
   102 					'<td>&nbsp;</td>' +
   102           '<td>&nbsp;</td>' +
   103 					'<td style="text-align:right;">' +
   103           '<td style="text-align:right;">' +
   104 					gettext('States') +
   104           gettext('States') +
   105 					'</td>' +
   105           '</td>' +
   106 					'<td>&nbsp;</td>' +
   106           '<td>&nbsp;</td>' +
   107 					'<td>' +
   107           '<td>' +
   108 						'<select id="filter_state"></select>' +
   108             '<select id="filter_state"></select>' +
   109 					'</td>' +
   109           '</td>' +
   110 				'</tr>' +
   110         '</tr>' +
   111 				'<tr>' +
   111         '<tr>' +
   112 					'<td style="text-align:right;">' +
   112           '<td style="text-align:right;">' +
   113 						gettext('Dates') +
   113             gettext('Dates') +
   114 					'</td>' +
   114           '</td>' +
   115 					'<td>&nbsp;</td>' +
   115           '<td>&nbsp;</td>' +
   116 					'<td>' +
   116           '<td>' +
   117 						'<select id="filter_date"></select>' +
   117             '<select id="filter_date"></select>' +
   118 					'</td>' +
   118           '</td>' +
   119 					'<td>&nbsp;</td>' +
   119           '<td>&nbsp;</td>' +
   120 					'<td style="text-align:right;">' +
   120           '<td style="text-align:right;">' +
   121 						gettext('Tags') +
   121             gettext('Tags') +
   122 					'</td>' +
   122           '</td>' +
   123 					'<td>&nbsp;</td>' +
   123           '<td>&nbsp;</td>' +
   124 					'<td>' +
   124           '<td>' +
   125 						'<select id="filter_tag"></select>' +
   125             '<select id="filter_tag"></select>' +
   126 					'</td>' +
   126           '</td>' +
   127 				'</tr>' +
   127         '</tr>' +
   128 			'</table>';
   128       '</table>';
   129 	tab.append($(html));	
   129   tab.append($(html));  
   130 	
   130   
   131 	$("#c_filter input[type='text']").add("#c_filter select").addClass('c_filter_field') ;
   131   $("#c_filter input[type='text']").add("#c_filter select").addClass('c_filter_field') ;
   132 
   132 
   133 	$("#filter_name").add("#filter_date").add("#filter_tag").add("#filter_state").change(function() {
   133   $("#filter_name").add("#filter_date").add("#filter_tag").add("#filter_state").change(function() {
   134 		if (frames['text_view_comments'].readyForAction()) {
   134     if (frames['text_view_comments'].readyForAction()) {
   135 			var elt = $(this) ;
   135       var elt = $(this) ;
   136 			frames['text_view_comments'].checkForOpenedDialog(null, function() {
   136       frames['text_view_comments'].checkForOpenedDialog(null, function() {
   137 				//console.info($(this)) ;
   137         //console.info($(this)) ;
   138 				//console.info(elt) ;
   138         //console.info(elt) ;
   139 				//applyFilter($(this)) ;
   139         //applyFilter($(this)) ;
   140 				applyFilter(elt) ;
   140         applyFilter(elt) ;
   141 			}) ;
   141       }) ;
   142 		}
   142     }
   143 	});
   143   });
   144 
   144 
   145 	$("#c_filter_btn").click(function() {
   145   $("#c_filter_btn").click(function() {
   146 		if (frames['text_view_comments'].readyForAction()) {
   146     if (frames['text_view_comments'].readyForAction()) {
   147 			var elt = $("#filter_text") ;
   147       var elt = $("#filter_text") ;
   148 			frames['text_view_comments'].checkForOpenedDialog(null, function() {
   148       frames['text_view_comments'].checkForOpenedDialog(null, function() {
   149 				applyFilter(elt) ;
   149         applyFilter(elt) ;
   150 			}) ;
   150       }) ;
   151 		}
   151     }
   152 	});
   152   });
   153 
   153 
   154 	$('#filter_text').keyup( function(e) {
   154   $('#filter_text').keyup( function(e) {
   155 		if (e.keyCode == 13) {$("#c_filter_btn").click();}
   155     if (e.keyCode == 13) {$("#c_filter_btn").click();}
   156 	});
   156   });
   157 
   157 
   158 	$("#c_filterreset_btn").click( function() {
   158   $("#c_filterreset_btn").click( function() {
   159 		if (frames['text_view_comments'].readyForAction()) {
   159     if (frames['text_view_comments'].readyForAction()) {
   160 			frames['text_view_comments'].checkForOpenedDialog(null, function() {
   160       frames['text_view_comments'].checkForOpenedDialog(null, function() {
   161 				resetFilter();
   161         resetFilter();
   162 			}) ;
   162       }) ;
   163 		}
   163     }
   164 	});
   164   });
   165 
   165 
   166 	$("#c_filterhideall_btn").click( function() {
   166   $("#c_filterhideall_btn").click( function() {
   167 		if (frames['text_view_comments'].readyForAction()) {
   167     if (frames['text_view_comments'].readyForAction()) {
   168 			frames['text_view_comments'].checkForOpenedDialog(null, function() {
   168       frames['text_view_comments'].checkForOpenedDialog(null, function() {
   169 				frames['text_view_comments'].hideAll() ;
   169         frames['text_view_comments'].hideAll() ;
   170 			}) ;
   170       }) ;
   171 		}
   171     }
   172 	});
   172   });
   173 	
   173   
   174 }
   174 }
   175 fillTopToolbar = function() {
   175 fillTopToolbar = function() {
   176 	
   176   
   177 	var parent = $('#outer-north');
   177   var parent = $('#outer-north');
   178 
   178 
   179 	var viewPrev = gettext('view previous comment') ;
   179   var viewPrev = gettext('view previous comment') ;
   180 	var viewNext = gettext('view next comment') ;
   180   var viewNext = gettext('view next comment') ;
   181 	var viewFirst = gettext('view first comment') ;
   181   var viewFirst = gettext('view first comment') ;
   182 	var viewLast = gettext('view last next comment') ;
   182   var viewLast = gettext('view last next comment') ;
   183 	var viewAll = gettext('view all comments') ;
   183   var viewAll = gettext('view all comments') ;
   184 	var viewScopeRemoved = gettext('view all detached comments') ;
   184   var viewScopeRemoved = gettext('view all detached comments') ;
   185 	var advancedInterface = gettext('toggle advance interface') ;
   185   var advancedInterface = gettext('toggle advance interface') ;
   186 	var print = gettext('print document with/without comments') ;
   186   var print = gettext('print document with/without comments') ;
   187 	var exportDoc = gettext('export document with/without comments') ;
   187   var exportDoc = gettext('export document with/without comments') ;
   188 	var fullscreen = gettext('toggle full screen view') ;
   188   var fullscreen = gettext('toggle full screen view') ;
   189 	var feed = gettext('text feed') ;
   189   var feed = gettext('text feed') ;
   190 	var addComment = gettext('add a comment') ;
   190   var addComment = gettext('add a comment') ;
   191 
   191 
   192 	var html = '<div id="c-right-btn">' +
   192   var html = '<div id="c-right-btn">' +
   193 		        '<img id="c_fullscreen_btn" src="' + sv_media_url + '/img/arrow_out.png" title="'+ fullscreen +'" alt="'+ fullscreen +'"/>' +      
   193             '<img id="c_fullscreen_btn" src="' + sv_media_url + '/img/arrow_out.png" title="'+ fullscreen +'" alt="'+ fullscreen +'"/>' +      
   194 		        '<img id="c_print_btn" src="' + sv_media_url + '/img/printer.png" title="'+ print +'" alt="'+ print +'"/>' +         
   194             '<img id="c_print_btn" src="' + sv_media_url + '/img/printer.png" title="'+ print +'" alt="'+ print +'"/>' +         
   195 		        '<img id="c_export_btn" src="' + sv_media_url + '/img/page_go.png" title="'+ exportDoc +'" alt="'+ exportDoc +'"/>' +
   195             '<img id="c_export_btn" src="' + sv_media_url + '/img/page_go.png" title="'+ exportDoc +'" alt="'+ exportDoc +'"/>' +
   196 		        '<a target="_blank" href="' + frames['text_view_comments'].sv_text_feed_url + '"><img id="c_feed_btn" src="' + sv_media_url + '/img/feed.png" title="'+ feed +'" alt="'+ feed +'"/></a>' +         
   196             '<a target="_blank" href="' + frames['text_view_comments'].sv_text_feed_url + '"><img id="c_feed_btn" src="' + sv_media_url + '/img/feed.png" title="'+ feed +'" alt="'+ feed +'"/></a>' +         
   197 	        '</div>' +
   197           '</div>' +
   198 		    '<div id="c-msg-wrapper">' +
   198         '<div id="c-msg-wrapper">' +
   199 			'</div>' + 
   199       '</div>' + 
   200 			'<table style="margin-bottom:.3em;">' + 
   200       '<table style="margin-bottom:.3em;">' + 
   201 			'<tbody>' + 
   201       '<tbody>' + 
   202 			'<tr>' + 
   202       '<tr>' + 
   203 			'<td>' +
   203       '<td>' +
   204 				'<span id="c_filter_results" >' +
   204         '<span id="c_filter_results" >' +
   205 				'<b>&nbsp;<span id="c_f_res_nb_dis"></span></b>&nbsp;<span id="c_f_res_nb_dis_txt"></span>' +
   205         '<b>&nbsp;<span id="c_f_res_nb_dis"></span></b>&nbsp;<span id="c_f_res_nb_dis_txt"></span>' +
   206 				'<span id="c_f_res_details">&nbsp;(' + gettext('filter:') + '&nbsp;<span id="c_f_res_nb_com"></span>/<span id="c_f_res_nb_tot_com"></span>&nbsp;<span id="c_f_res_nb_com_txt"></span>&nbsp;<span id="c_f_res_nb_rep"></span>/<span id="c_f_res_nb_tot_rep"></span><span id="c_f_res_nb_rep_txt"></span>)</span>' +
   206         '<span id="c_f_res_details">&nbsp;(' + gettext('filter:') + '&nbsp;<span id="c_f_res_nb_com"></span>/<span id="c_f_res_nb_tot_com"></span>&nbsp;<span id="c_f_res_nb_com_txt"></span>&nbsp;<span id="c_f_res_nb_rep"></span>/<span id="c_f_res_nb_tot_rep"></span><span id="c_f_res_nb_rep_txt"></span>)</span>' +
   207 				'</span>' +
   207         '</span>' +
   208 			'</td>' +
   208       '</td>' +
   209 			'<td>' +
   209       '<td>' +
   210 			'<span id="browse_section">' +
   210       '<span id="browse_section">' +
   211 			', ' + gettext('browse by:') + ' ' + 
   211       ', ' + gettext('browse by:') + ' ' + 
   212 				'<select id="browse_by">' + 
   212         '<select id="browse_by">' + 
   213 				'<option value="scope">' + gettext('location') + '</option>' +
   213         '<option value="scope">' + gettext('location') + '</option>' +
   214 				'<option value="modif_thread">' + gettext('modification') + '</option>' +
   214         '<option value="modif_thread">' + gettext('modification') + '</option>' +
   215 				'</select>' + 
   215         '</select>' + 
   216 			'</span>' +
   216       '</span>' +
   217 			'</td>' + 
   217       '</td>' + 
   218 			'<td width="40" align="right">' + 
   218       '<td width="40" align="right">' + 
   219 				'<a href="#" id="c_browse_first"><img title="'+ viewFirst +'" alt="'+ viewFirst +'" src="' + sv_media_url + '/img/control_fastbackward_blue.png"/></a>' +
   219         '<a href="#" id="c_browse_first"><img title="'+ viewFirst +'" alt="'+ viewFirst +'" src="' + sv_media_url + '/img/control_fastbackward_blue.png"/></a>' +
   220 				'<a href="#" id="c_browse_prev"><img title="'+ viewPrev +'" alt="'+ viewPrev +'" src="' + sv_media_url + '/img/control_playback_blue.png"/></a>' +
   220         '<a href="#" id="c_browse_prev"><img title="'+ viewPrev +'" alt="'+ viewPrev +'" src="' + sv_media_url + '/img/control_playback_blue.png"/></a>' +
   221 			'</td>' +
   221       '</td>' +
   222 			'<td width="50" align="center">' +
   222       '<td width="50" align="center">' +
   223 					'<span id="c_browse_indx_scope">-</span>' +
   223           '<span id="c_browse_indx_scope">-</span>' +
   224 					'<span id="c_browse_indx_modif_thread" style="display: none;">-</span>' +
   224           '<span id="c_browse_indx_modif_thread" style="display: none;">-</span>' +
   225 					'/' +
   225           '/' +
   226 					'<span id="c_browse_indx_total"></span>' + 
   226           '<span id="c_browse_indx_total"></span>' + 
   227 			'</td>' +
   227       '</td>' +
   228 			'<td width="40" align="left">' +
   228       '<td width="40" align="left">' +
   229 				'<a href="#" id="c_browse_next"><img title="'+ viewNext +'" alt="'+ viewNext +'" src="' + sv_media_url + '/img/control_play_blue.png"/></a>' +
   229         '<a href="#" id="c_browse_next"><img title="'+ viewNext +'" alt="'+ viewNext +'" src="' + sv_media_url + '/img/control_play_blue.png"/></a>' +
   230 				'<a href="#" id="c_browse_last"><img title="'+ viewLast +'" alt="'+ viewLast +'" src="' + sv_media_url + '/img/control_fastforward_blue.png"/></a>' +
   230         '<a href="#" id="c_browse_last"><img title="'+ viewLast +'" alt="'+ viewLast +'" src="' + sv_media_url + '/img/control_fastforward_blue.png"/></a>' +
   231 			'</td>' +
   231       '</td>' +
   232 			'<td width="20" align="left">' +
   232       '<td width="20" align="left">' +
   233 			'<a href="#" id="c_browse_all"><img title="'+ viewAll +'" alt="'+ viewAll +'" src="' + sv_media_url + '/img/view_all.png"/></a>' +
   233       '<a href="#" id="c_browse_all"><img title="'+ viewAll +'" alt="'+ viewAll +'" src="' + sv_media_url + '/img/view_all.png"/></a>' +
   234 			'</td>' +
   234       '</td>' +
   235 			'<td width="20" align="left">' +
   235       '<td width="20" align="left">' +
   236 			'<a href="#" id="c_browse_scope_removed"><img title="'+ viewScopeRemoved +'" alt="'+ viewScopeRemoved +'" src="' + sv_media_url + '/img/view_scope_removed2.png"/></a>' +
   236       '<a href="#" id="c_browse_scope_removed"><img title="'+ viewScopeRemoved +'" alt="'+ viewScopeRemoved +'" src="' + sv_media_url + '/img/view_scope_removed2.png"/></a>' +
   237 			'</td>' +
   237       '</td>' +
   238 			'<td width="20" align="left">' +
   238       '<td width="20" align="left">' +
   239 				'<a href="#" id="c_advanced_btn"><img title="'+ advancedInterface +'" alt="'+ advancedInterface +'" src="' + sv_media_url + '/img/application_split.png"/></a>' +
   239         '<a href="#" id="c_advanced_btn"><img title="'+ advancedInterface +'" alt="'+ advancedInterface +'" src="' + sv_media_url + '/img/application_split.png"/></a>' +
   240 			'</td>' +
   240       '</td>' +
   241 			'<td width="20" align="left">' +
   241       '<td width="20" align="left">' +
   242 				'<a href="#" id="c_thread_unthread"><img id="c_thread_unthread_img"/></a>' +
   242         '<a href="#" id="c_thread_unthread"><img id="c_thread_unthread_img"/></a>' +
   243 			'</td>' +
   243       '</td>' +
   244 			'</tr>' +
   244       '</tr>' +
   245 			'</tbody>' +
   245       '</tbody>' +
   246 			'</table>' ;
   246       '</table>' ;
   247 	parent.prepend($(html));
   247   parent.prepend($(html));
   248 
   248 
   249 	$("#add_comment_btn").click( function() {
   249   $("#add_comment_btn").click( function() {
   250 		if (frames['text_view_comments'].readyForAction()) {
   250     if (frames['text_view_comments'].readyForAction()) {
   251 			frames['text_view_comments'].checkForOpenedDialog(null, function() {
   251       frames['text_view_comments'].checkForOpenedDialog(null, function() {
   252 				frames['text_view_comments'].gSync.showCommentForm(null) ;
   252         frames['text_view_comments'].gSync.showCommentForm(null) ;
   253 			}) ;
   253       }) ;
   254 		}
   254     }
   255 	});
   255   });
   256 
   256 
   257 	var showBrowseIndx = function() {
   257   var showBrowseIndx = function() {
   258 		$("#browse_by option").each(function() {
   258     $("#browse_by option").each(function() {
   259 			$("#c_browse_indx_"+this.value).hide() ;
   259       $("#c_browse_indx_"+this.value).hide() ;
   260 		}) ;
   260     }) ;
   261 		$('#c_browse_indx_' + $('#browse_by').val()).show() ;
   261     $('#c_browse_indx_' + $('#browse_by').val()).show() ;
   262 	};
   262   };
   263 	
   263   
   264 	var first_browse_by_val = $.cookie('browse_by');
   264   var first_browse_by_val = $.cookie('browse_by');
   265 	first_browse_by_val = (first_browse_by_val == null) ? "location" : first_browse_by_val ;
   265   first_browse_by_val = (first_browse_by_val == null) ? "location" : first_browse_by_val ;
   266 	_setCookie('browse_by', $('#browse_by').val());
   266   _setCookie('browse_by', $('#browse_by').val());
   267 	$("#browse_by option[value="+ first_browse_by_val +"]").attr("selected", true);
   267   $("#browse_by option[value="+ first_browse_by_val +"]").attr("selected", true);
   268 	showBrowseIndx() ;
   268   showBrowseIndx() ;
   269 	
   269   
   270 	$("#browse_by").change(function() {
   270   $("#browse_by").change(function() {
   271 		_setCookie('browse_by', $('#browse_by').val());
   271     _setCookie('browse_by', $('#browse_by').val());
   272 		showBrowseIndx() ;
   272     showBrowseIndx() ;
   273 	});
   273   });
   274 	
   274   
   275 	var lBrowse = function(whereto) {
   275   var lBrowse = function(whereto) {
   276 		if (frames['text_view_comments'].readyForAction()) 
   276     if (frames['text_view_comments'].readyForAction()) 
   277 			frames['text_view_comments'].checkForOpenedDialog(null, function() {
   277       frames['text_view_comments'].checkForOpenedDialog(null, function() {
   278 				frames['text_view_comments'].browse($('#browse_by').val(), whereto); 
   278         frames['text_view_comments'].browse($('#browse_by').val(), whereto); 
   279 			}) ;
   279       }) ;
   280 	};
   280   };
   281 	$("#c_browse_prev").click( function() {lBrowse("prev");});
   281   $("#c_browse_prev").click( function() {lBrowse("prev");});
   282 	$("#c_browse_next").click( function() {lBrowse("next");});
   282   $("#c_browse_next").click( function() {lBrowse("next");});
   283 	$("#c_browse_first").click( function() {lBrowse("first");});
   283   $("#c_browse_first").click( function() {lBrowse("first");});
   284 	$("#c_browse_last").click( function() {lBrowse("last");});
   284   $("#c_browse_last").click( function() {lBrowse("last");});
   285 	$("#c_browse_all").click( function() {
   285   $("#c_browse_all").click( function() {
   286 		if (frames['text_view_comments'].readyForAction()) {
   286     if (frames['text_view_comments'].readyForAction()) {
   287 			frames['text_view_comments'].checkForOpenedDialog(null, function() {
   287       frames['text_view_comments'].checkForOpenedDialog(null, function() {
   288 				frames['text_view_comments'].gSync.showAllComments() ;
   288         frames['text_view_comments'].gSync.showAllComments() ;
   289 			}) ;
   289       }) ;
   290 		}
   290     }
   291 	});
   291   });
   292 	
   292   
   293 	$("#c_browse_scope_removed").click( function() {
   293   $("#c_browse_scope_removed").click( function() {
   294 		if (frames['text_view_comments'].readyForAction()) {
   294     if (frames['text_view_comments'].readyForAction()) {
   295 			frames['text_view_comments'].checkForOpenedDialog(null, function() {
   295       frames['text_view_comments'].checkForOpenedDialog(null, function() {
   296 				frames['text_view_comments'].gSync.showScopeRemovedComments() ;
   296         frames['text_view_comments'].gSync.showScopeRemovedComments() ;
   297 			}) ;
   297       }) ;
   298 		}
   298     }
   299 	});
   299   });
   300 	
   300   
   301 	$("#c_print_btn").click( function() {
   301   $("#c_print_btn").click( function() {
   302 		if (frames['text_view_comments'].readyForAction()) {
   302     if (frames['text_view_comments'].readyForAction()) {
   303 			var ids = frames['text_view_comments'].gDb.getFilteredCommentIdsAsString() ;
   303       var ids = frames['text_view_comments'].gDb.getFilteredCommentIdsAsString() ;
   304 			frames['text_view_comments'].CY.log($("#filteredIds").val(ids)) ;
   304       frames['text_view_comments'].CY.log($("#filteredIds").val(ids)) ;
   305 			openPrintDialog() ;
   305       openPrintDialog() ;
   306 		}
   306     }
   307 	});
   307   });
   308 	
   308   
   309 	$("#c_export_btn").click( function() {
   309   $("#c_export_btn").click( function() {
   310 		if (frames['text_view_comments'].readyForAction()) {
   310     if (frames['text_view_comments'].readyForAction()) {
   311 			var ids = frames['text_view_comments'].gDb.getFilteredCommentIdsAsString() ;
   311       var ids = frames['text_view_comments'].gDb.getFilteredCommentIdsAsString() ;
   312 			frames['text_view_comments'].CY.log($("#filteredIds").val(ids)) ;
   312       frames['text_view_comments'].CY.log($("#filteredIds").val(ids)) ;
   313 			openExportDialog() ;
   313       openExportDialog() ;
   314 		}
   314     }
   315 	});
   315   });
   316 	
   316   
   317 	if (frames['text_view_comments'].gLayout.isInComentSite()) {
   317   if (frames['text_view_comments'].gLayout.isInComentSite()) {
   318 		$("#c_fullscreen_btn").click( function() {
   318     $("#c_fullscreen_btn").click( function() {
   319 				toggleFrameSize();
   319         toggleFrameSize();
   320 		});
   320     });
   321 	} ;	
   321   } ; 
   322 	
   322   
   323 	$("#c_advanced_btn").click( function() {
   323   $("#c_advanced_btn").click( function() {
   324 		$('.ui-layout-toggler').click() ; // calling the layout method did not work well edo that instead		
   324     $('.ui-layout-toggler').click() ; // calling the layout method did not work well edo that instead   
   325 	}) ;
   325   }) ;
   326 	
   326   
   327 	setThreadPref = function() {
   327   setThreadPref = function() {
   328 		var v = frames['text_view_comments'].c_readPreference('comments', 'threadpad');
   328     var v = frames['text_view_comments'].c_readPreference('comments', 'threadpad');
   329 
   329 
   330 		var btn_src = sv_media_url + '/img/unthread_box.png' ;
   330     var btn_src = sv_media_url + '/img/unthread_box.png' ;
   331 		var btn_desc = gettext('unthread discussions') ;
   331     var btn_desc = gettext('unthread discussions') ;
   332 		if (v == '0') { 
   332     if (v == '0') { 
   333 			btn_src = sv_media_url + '/img/thread_box.png' ;
   333       btn_src = sv_media_url + '/img/thread_box.png' ;
   334 			btn_desc = gettext('thread discussions') ;
   334       btn_desc = gettext('thread discussions') ;
   335 		}
   335     }
   336 		$('#c_thread_unthread_img').attr('src', btn_src).attr('alt', btn_desc).attr('title', btn_desc) ;
   336     $('#c_thread_unthread_img').attr('src', btn_src).attr('alt', btn_desc).attr('title', btn_desc) ;
   337 	};
   337   };
   338 	
   338   
   339 	setThreadPref();	
   339   setThreadPref();  
   340 	$('#c_thread_unthread').click( function() {
   340   $('#c_thread_unthread').click( function() {
   341 		var v = frames['text_view_comments'].c_readPreference('comments', 'threadpad');
   341     var v = frames['text_view_comments'].c_readPreference('comments', 'threadpad');
   342 		var anti_v = (v == '0') ? '1' : '0';
   342     var anti_v = (v == '0') ? '1' : '0';
   343 		frames['text_view_comments'].c_persistPreference('comments', 'threadpad', anti_v);
   343     frames['text_view_comments'].c_persistPreference('comments', 'threadpad', anti_v);
   344 		setThreadPref();
   344     setThreadPref();
   345 		frames['text_view_comments'].gSync.animateToTop() ;
   345     frames['text_view_comments'].gSync.animateToTop() ;
   346 	});
   346   });
   347 	
   347   
   348 }
   348 }
   349 
   349 
   350 onSliderStop = function() {
   350 onSliderStop = function() {
   351 	var slideVal = $("#c_slider").slider('value') ;
   351   var slideVal = $("#c_slider").slider('value') ;
   352 //	console.info("in onSliderStop slider val : " + slideVal) ;
   352 //  console.info("in onSliderStop slider val : " + slideVal) ;
   353 	if (slideVal > (frames['text_view_comments'].gConf['sliderFixedMin'] * 100)) 
   353   if (slideVal > (frames['text_view_comments'].gConf['sliderFixedMin'] * 100)) 
   354 		$("#c_slider").slider('value', [90]) ;
   354     $("#c_slider").slider('value', [90]) ;
   355 	if (slideVal < (frames['text_view_comments'].gConf['sliderFixedMax'] * 100)) 
   355   if (slideVal < (frames['text_view_comments'].gConf['sliderFixedMax'] * 100)) 
   356 		$("#c_slider").slider('value', [10]) ;
   356     $("#c_slider").slider('value', [10]) ;
   357 	
   357   
   358 	frames['text_view_comments'].c_setCommentsColWidth(slideVal) ;
   358   frames['text_view_comments'].c_setCommentsColWidth(slideVal) ;
   359 	frames['text_view_comments'].c_persistPreference('layout', 'comments_col_width', slideVal);
   359   frames['text_view_comments'].c_persistPreference('layout', 'comments_col_width', slideVal);
   360 }
   360 }
   361 
   361 
   362 fillTextPreferencesTab = function() {
   362 fillTextPreferencesTab = function() {
   363 	var tab = $('#c_text_preferences');
   363   var tab = $('#c_text_preferences');
   364 	tab.append($(
   364   tab.append($(
   365 			'<table>' +
   365       '<table>' +
   366 			'<tr>' +
   366       '<tr>' +
   367 			'<td>' +
   367       '<td>' +
   368 			gettext('Text style') +
   368       gettext('Text style') +
   369 			'</td>' +
   369       '</td>' +
   370 			'<td>&nbsp;</td>' +
   370       '<td>&nbsp;</td>' +
   371 			'<td>' +
   371       '<td>' +
   372 			'<select id="c_textpref_style"></select>' +
   372       '<select id="c_textpref_style"></select>' +
   373 			'</td>' +
   373       '</td>' +
   374 			'</tr>' +
   374       '</tr>' +
   375 			'</table>')) ;
   375       '</table>')) ;
   376 	var styles = frames['text_view_comments'].gTextStyles ;
   376   var styles = frames['text_view_comments'].gTextStyles ;
   377 	for (var key in styles) {
   377   for (var key in styles) {
   378 		$("#c_textpref_style").append($("<option value='"+ key +"'>" + styles[key] + "</option>")) ;
   378     $("#c_textpref_style").append($("<option value='"+ key +"'>" + styles[key] + "</option>")) ;
   379 	}
   379   }
   380 	
   380   
   381 	var setTextStyle = function() {
   381   var setTextStyle = function() {
   382 		var styles = frames['text_view_comments'].gTextStyles ;
   382     var styles = frames['text_view_comments'].gTextStyles ;
   383 		var wish = $('#c_textpref_style').val() ;
   383     var wish = $('#c_textpref_style').val() ;
   384 		for (var key in styles) {
   384     for (var key in styles) {
   385 			if (key == wish)
   385       if (key == wish)
   386 				frames['text_view_comments'].CY.get("#textcontainer").addClass(styles[key]) ;
   386         frames['text_view_comments'].CY.get("#textcontainer").addClass(styles[key]) ;
   387 			else 
   387       else 
   388 				frames['text_view_comments'].CY.get("#textcontainer").removeClass(styles[key]) ;
   388         frames['text_view_comments'].CY.get("#textcontainer").removeClass(styles[key]) ;
   389 		}
   389     }
   390 	};
   390   };
   391 	
   391   
   392 	var setTextStyleField = function() {
   392   var setTextStyleField = function() {
   393 		var v = frames['text_view_comments'].c_readPreference('text', 'style');
   393     var v = frames['text_view_comments'].c_readPreference('text', 'style');
   394 		$('#c_textpref_style').val(v);
   394     $('#c_textpref_style').val(v);
   395 	};
   395   };
   396 	
   396   
   397 	$("#c_textpref_style").change(function(v) {
   397   $("#c_textpref_style").change(function(v) {
   398 		frames['text_view_comments'].c_persistPreference('text', 'style', $("#c_textpref_style").val());
   398     frames['text_view_comments'].c_persistPreference('text', 'style', $("#c_textpref_style").val());
   399 		setTextStyle();
   399     setTextStyle();
   400 	});
   400   });
   401 	
   401   
   402 	setTextStyleField();
   402   setTextStyleField();
   403 	setTextStyle();
   403   setTextStyle();
   404 }
   404 }
   405 
   405 
   406 fillPreferencesTab = function() {
   406 fillPreferencesTab = function() {
   407 	var tab = $('#c_preferences');
   407   var tab = $('#c_preferences');
   408 
   408 
   409 	var html = '<div style="float:right"><input id="c_pref_save_btn" type="button" value="' + gettext('Save') + '"></input><input id="c_pref_reset_btn" type="button" value="' + gettext('Reset') + '"></input></div>' +
   409   var html = '<div style="float:right"><input id="c_pref_save_btn" type="button" value="' + gettext('Save') + '"></input><input id="c_pref_reset_btn" type="button" value="' + gettext('Reset') + '"></input></div>' +
   410 				'<table>' +
   410         '<table>' +
   411 				'<tr>' +
   411         '<tr>' +
   412 					'<td>' +
   412           '<td>' +
   413 						gettext('Animation duration') +
   413             gettext('Animation duration') +
   414 					'</td>' +
   414           '</td>' +
   415 					'<td>&nbsp;</td>' +
   415           '<td>&nbsp;</td>' +
   416 					'<td>' +
   416           '<td>' +
   417 						'<input id="c_pref_animduration" type="text" style="width:3em" value="" />' +
   417             '<input id="c_pref_animduration" type="text" style="width:3em" value="" />' +
   418 					'</td>' +
   418           '</td>' +
   419 				'</tr>' + 
   419         '</tr>' + 
   420 				'<tr>' +
   420         '<tr>' +
   421 					'<td>' +
   421           '<td>' +
   422 						'<span class="frame_helptext">' + gettext('(0.001 to 1 second)') + '</span>' +
   422             '<span class="frame_helptext">' + gettext('(0.001 to 1 second)') + '</span>' +
   423 					'</td>' +
   423           '</td>' +
   424 					'<td></td><td></td>' +
   424           '<td></td><td></td>' +
   425 				'</tr>' +
   425         '</tr>' +
   426 				'</table>';
   426         '</table>';
   427 	tab.append($(html)) ;
   427   tab.append($(html)) ;
   428 
   428 
   429 	setPreferencesFieldsValue = function() {
   429   setPreferencesFieldsValue = function() {
   430 		var v = frames['text_view_comments'].c_readPreference('general', 'animduration');
   430     var v = frames['text_view_comments'].c_readPreference('general', 'animduration');
   431 		$('#c_pref_animduration').val(v);
   431     $('#c_pref_animduration').val(v);
   432 	};
   432   };
   433 	
   433   
   434 	setPreferencesFieldsValue();
   434   setPreferencesFieldsValue();
   435 
   435 
   436 	$('#c_pref_animduration').blur( function() {
   436   $('#c_pref_animduration').blur( function() {
   437 		var v = parseFloat($(this).val());
   437     var v = parseFloat($(this).val());
   438 		if (isNaN(v) || (v <= 0) || (v > 1)) {
   438     if (isNaN(v) || (v <= 0) || (v > 1)) {
   439 			v = frames['text_view_comments'].c_readDefaultPreference('general', 'animduration');
   439       v = frames['text_view_comments'].c_readDefaultPreference('general', 'animduration');
   440 		}
   440     }
   441 		$(this).val(v);
   441     $(this).val(v);
   442 	});
   442   });
   443 
   443 
   444 	$('#c_pref_reset_btn').click( function() {
   444   $('#c_pref_reset_btn').click( function() {
   445 		frames['text_view_comments'].c_resetPreferences(['general']);
   445     frames['text_view_comments'].c_resetPreferences(['general']);
   446 		setPreferencesFieldsValue();
   446     setPreferencesFieldsValue();
   447 
   447 
   448 		enqueueMsg(gettext('preferences reset (will apply on next load)'));
   448     enqueueMsg(gettext('preferences reset (will apply on next load)'));
   449 	});
   449   });
   450 
   450 
   451 	$('#c_pref_save_btn').click( function() {
   451   $('#c_pref_save_btn').click( function() {
   452 		frames['text_view_comments'].c_persistPreference('general', 'animduration', $('#c_pref_animduration').val());
   452     frames['text_view_comments'].c_persistPreference('general', 'animduration', $('#c_pref_animduration').val());
   453 
   453 
   454 		enqueueMsg(gettext('preferences saved (will apply on next load)'));
   454     enqueueMsg(gettext('preferences saved (will apply on next load)'));
   455 	});
   455   });
   456 }
   456 }
   457 
   457 
   458 initFrame = function() {
   458 initFrame = function() {
   459 	_initYesNoDialog();
   459   _initYesNoDialog();
   460 	_initPrintDialog() ;	
   460   _initPrintDialog() ;  
   461 
   461 
   462 	$(window).resize(function(){
   462   $(window).resize(function(){
   463  		onSliderStop(); 
   463     onSliderStop(); 
   464 //		console.log('in frame resize' +  $("#c_slider").slider('value')) ;
   464 //    console.log('in frame resize' +  $("#c_slider").slider('value')) ;
   465 //		console.log('in frame resize' + frames['text_view_comments'].CY.DOM.winWidth()) ;
   465 //    console.log('in frame resize' + frames['text_view_comments'].CY.DOM.winWidth()) ;
   466 //		console.log('in frame resize' + $(window).width()) ;
   466 //    console.log('in frame resize' + $(window).width()) ;
   467 	});
   467   });
   468 
   468 
   469 	//$('<div id="c_slider"></div>').appendTo("#c-btns").slider({ 
   469   //$('<div id="c_slider"></div>').appendTo("#c-btns").slider({ 
   470 	$('#c_slider').slider({ 
   470   $('#c_slider').slider({ 
   471 	animate: true,
   471   animate: true,
   472 	range: "min",
   472   range: "min",
   473 	value: frames['text_view_comments'].c_readPreference('layout','comments_col_width'),
   473   value: frames['text_view_comments'].c_readPreference('layout','comments_col_width'),
   474 	min: 1,
   474   min: 1,
   475 	iframeFix: true,
   475   iframeFix: true,
   476 	max: 100,
   476   max: 100,
   477 //	step: 5,
   477 //  step: 5,
   478 	slide: function(event, ui) {
   478   slide: function(event, ui) {
   479 		var slideVal = ui.value ;
   479     var slideVal = ui.value ;
   480 		frames['text_view_comments'].c_setCommentsColWidth(slideVal) ;
   480     frames['text_view_comments'].c_setCommentsColWidth(slideVal) ;
   481 	},
   481   },
   482 	stop:function(event, ui) {
   482   stop:function(event, ui) {
   483 		onSliderStop() ;
   483     onSliderStop() ;
   484 	}
   484   }
   485 	}) ;
   485   }) ;
   486 
   486 
   487 	
   487   
   488 	_initTabs();
   488   _initTabs();
   489 	
   489   
   490 	f_interfaceFreeze();
   490   f_interfaceFreeze();
   491 };
   491 };
   492 
   492 
   493 _initTabs = function() {
   493 _initTabs = function() {
   494 	$(".inner-north").tabs();
   494   $(".inner-north").tabs();
   495 
   495 
   496 	var selectedTab = $.cookie('selectedTab');
   496   var selectedTab = $.cookie('selectedTab');
   497 	selectedTab = (selectedTab === null) ? innerNorthPaneDefaults['selectedTab'] : parseInt(selectedTab);
   497   selectedTab = (selectedTab === null) ? innerNorthPaneDefaults['selectedTab'] : parseInt(selectedTab);
   498 	$(".inner-north").tabs('select', selectedTab);
   498   $(".inner-north").tabs('select', selectedTab);
   499 	$(".inner-north").bind('tabsselect', function(event, ui) {
   499   $(".inner-north").bind('tabsselect', function(event, ui) {
   500 		// // Objects available in the function context:
   500     // // Objects available in the function context:
   501 			// ui.tab // anchor element of the selected (clicked) tab
   501       // ui.tab // anchor element of the selected (clicked) tab
   502 			// ui.panel // element, that contains the selected/clicked tab
   502       // ui.panel // element, that contains the selected/clicked tab
   503 			// contents
   503       // contents
   504 			// ui.index // zero-based index of the selected (clicked) tab
   504       // ui.index // zero-based index of the selected (clicked) tab
   505 			_setCookie('selectedTab', ui.index);
   505       _setCookie('selectedTab', ui.index);
   506 
   506 
   507 		});
   507     });
   508 }
   508 }
   509 
   509 
   510 _initYesNoDialog = function() {
   510 _initYesNoDialog = function() {
   511 	$('#dialog_h').dialog( {
   511   $('#dialog_h').dialog( {
   512 		// bgiframe: true, // why would we ?
   512     // bgiframe: true, // why would we ?
   513 		autoOpen :false,
   513     autoOpen :false,
   514 		modal :true
   514     modal :true
   515 	});
   515   });
   516 }
   516 }
   517 
   517 
   518 _setCookie = function(name, value) {
   518 _setCookie = function(name, value) {
   519 	var cookieExpire = new Date();
   519   var cookieExpire = new Date();
   520 	cookieExpire.setFullYear(2100, 0, 1);
   520   cookieExpire.setFullYear(2100, 0, 1);
   521 	$.cookie(name, value, {
   521   $.cookie(name, value, {
   522 		'expires' :cookieExpire,
   522     'expires' :cookieExpire,
   523 		'path': '/'
   523     'path': '/'
   524 	});
   524   });
   525 }
   525 }
   526 
   526 
   527 //contains code thats offered by the text_view_comment_frame to its child frame text_view_comment
   527 //contains code thats offered by the text_view_comment_frame to its child frame text_view_comment
   528 f_getFrameFilterData = function () {
   528 f_getFrameFilterData = function () {
   529 	var name = $('#filter_name').val(); ; 
   529   var name = $('#filter_name').val(); ; 
   530 	var date_str = $('#filter_date').val(); ; 
   530   var date_str = $('#filter_date').val(); ; 
   531 	var text = $('#filter_text').val(); ; 
   531   var text = $('#filter_text').val(); ; 
   532 	var tag = $('#filter_tag').val(); ; 
   532   var tag = $('#filter_tag').val(); ; 
   533 	var state = $('#filter_state').val(); ; 
   533   var state = $('#filter_state').val(); ; 
   534 	return {'name':name, 'date':date_str, 'text':text, 'tag':tag, 'state':state} ;
   534   return {'name':name, 'date':date_str, 'text':text, 'tag':tag, 'state':state} ;
   535 }
   535 }
   536 
   536 
   537 f_setFilterValue = function (obj) {
   537 f_setFilterValue = function (obj) {
   538 	for (key in obj) {
   538   for (key in obj) {
   539 		if (key.indexOf('filter_') == 0) 
   539     if (key.indexOf('filter_') == 0) 
   540 			$('#'+key).val(obj[key]); // wont explode even if argument is silly
   540       $('#'+key).val(obj[key]); // wont explode even if argument is silly
   541 	}
   541   }
   542 }
   542 }
   543 
   543 
   544 f_isFrameFilterFieldsInit = function () {
   544 f_isFrameFilterFieldsInit = function () {
   545 	var obj = f_getFrameFilterData() ;
   545   var obj = f_getFrameFilterData() ;
   546 	var ret = true ;
   546   var ret = true ;
   547 	for (key in obj) {
   547   for (key in obj) {
   548 		ret = ret && (obj[key] == "") ;
   548     ret = ret && (obj[key] == "") ;
   549 	}
   549   }
   550 	return ret ;
   550   return ret ;
   551 }
   551 }
   552 
   552 
   553 initFilterFields = function () {
   553 initFilterFields = function () {
   554 	$('.c_filter_field').val("") ;
   554   $('.c_filter_field').val("") ;
   555 }
   555 }
   556 
   556 
   557 resetFilter = function () {
   557 resetFilter = function () {
   558 	initFilterFields() ;
   558   initFilterFields() ;
   559 	frames['text_view_comments'].reinit() ;
   559   frames['text_view_comments'].reinit() ;
   560 	enqueueMsg(gettext("filter reset")) ;
   560   enqueueMsg(gettext("filter reset")) ;
   561 }
   561 }
   562 
   562 
   563 applyFilter = function(self) {
   563 applyFilter = function(self) {
   564 	var val = self.val() ;  
   564   var val = self.val() ;  
   565 	if (gResetOtherFieldsOnFilterFieldChange) {
   565   if (gResetOtherFieldsOnFilterFieldChange) {
   566 		initFilterFields() ;  
   566     initFilterFields() ;  
   567 		self.val(val) ; 
   567     self.val(val) ; 
   568 	}
   568   }
   569 	frames['text_view_comments'].reinit();
   569   frames['text_view_comments'].reinit();
   570 	enqueueMsg(gettext("filter applied"));
   570   enqueueMsg(gettext("filter applied"));
   571 }
   571 }
   572 
   572 
   573 f_updateFilterCountResult = function(nbDiscussions, nbComments, nbReplies, nbAllComments, nbAllReplies) {
   573 f_updateFilterCountResult = function(nbDiscussions, nbComments, nbReplies, nbAllComments, nbAllReplies) {
   574 	// update result counter message field.
   574   // update result counter message field.
   575 	$("#c_f_res_nb_dis").html(nbDiscussions) ;
   575   $("#c_f_res_nb_dis").html(nbDiscussions) ;
   576 	$("#c_f_res_nb_dis_txt").html(ngettext('discussion', 'discussions', nbDiscussions)) ;
   576   $("#c_f_res_nb_dis_txt").html(ngettext('discussion', 'discussions', nbDiscussions)) ;
   577 
   577 
   578 	$("#c_f_res_nb_com").html(nbComments) ;
   578   $("#c_f_res_nb_com").html(nbComments) ;
   579 	$("#c_f_res_nb_tot_com").html(nbAllComments) ;
   579   $("#c_f_res_nb_tot_com").html(nbAllComments) ;
   580 	$("#c_f_res_nb_com_txt").html(ngettext('comment', 'comments', nbComments)) ;
   580   $("#c_f_res_nb_com_txt").html(ngettext('comment', 'comments', nbComments)) ;
   581 	$("#c_f_res_nb_rep").html(nbReplies) ; 
   581   $("#c_f_res_nb_rep").html(nbReplies) ; 
   582 	$("#c_f_res_nb_tot_rep").html(nbAllReplies) ; 
   582   $("#c_f_res_nb_tot_rep").html(nbAllReplies) ; 
   583 	$("#c_f_res_nb_rep_txt").html('&nbsp;' + ngettext('reply', 'replies', nbReplies)) ;
   583   $("#c_f_res_nb_rep_txt").html('&nbsp;' + ngettext('reply', 'replies', nbReplies)) ;
   584 
   584 
   585 	// update browser infos
   585   // update browser infos
   586 	$("#c_browse_indx_total").html(nbDiscussions) ; 
   586   $("#c_browse_indx_total").html(nbDiscussions) ; 
   587 	
   587   
   588 	//console.info('nbDiscussions + typeof nbDiscussions +nbComments + typeof nbComments) ;
   588   //console.info('nbDiscussions + typeof nbDiscussions +nbComments + typeof nbComments) ;
   589 	$("#c_filter_results").show() ; 
   589   $("#c_filter_results").show() ; 
   590 } ;
   590 } ;
   591 
   591 
   592 f_updateFilterCountDetailed = function(detailed) {
   592 f_updateFilterCountDetailed = function(detailed) {
   593 	if (detailed) {
   593   if (detailed) {
   594 		$("#c_f_res_details").show() ;
   594     $("#c_f_res_details").show() ;
   595 		$("c_browse_all").val('View all (filtered) comments')
   595     $("c_browse_all").val('View all (filtered) comments')
   596 	}
   596   }
   597 	else {
   597   else {
   598 		$("#c_f_res_details").hide() ;
   598     $("#c_f_res_details").hide() ;
   599 		$("#c_browse_all").val('View all comments')
   599     $("#c_browse_all").val('View all comments')
   600 	}
   600   }
   601 } ;
   601 } ;
   602 
   602 
   603 f_updateFilterData = function(newFilterData) {
   603 f_updateFilterData = function(newFilterData) {
   604 //	console.info(newFilterData) ;
   604 //  console.info(newFilterData) ;
   605 	// users
   605   // users
   606 	var selectedNameOption = $("#filter_name option:selected").attr("name") ;
   606   var selectedNameOption = $("#filter_name option:selected").attr("name") ;
   607 	var all = gettext("all") ;
   607   var all = gettext("all") ;
   608 	$("#filter_name option").remove() ;
   608   $("#filter_name option").remove() ;
   609 	
   609   
   610 	$("#filter_name").append($("<option name='c_f2_user_all' value=''>" + all + "</option>")) ;
   610   $("#filter_name").append($("<option name='c_f2_user_all' value=''>" + all + "</option>")) ;
   611 	for (var  i=0, ilen=newFilterData['names'].length; i < ilen ; i++) {
   611   for (var  i=0, ilen=newFilterData['names'].length; i < ilen ; i++) {
   612 		var item = newFilterData['names'][i] ;
   612     var item = newFilterData['names'][i] ;
   613 		$("#filter_name").append($("<option name='c_f2_user_"+ item.name +"' value='"+ item.name +"'>" + item.name +"("+item.nb_comments+")</option>")) ;
   613     $("#filter_name").append($("<option name='c_f2_user_"+ item.name +"' value='"+ item.name +"'>" + item.name +"("+item.nb_comments+")</option>")) ;
   614 	}
   614   }
   615 	
   615   
   616 	$("#filter_name option[name="+selectedNameOption+"]").attr("selected", true);
   616   $("#filter_name option[name="+selectedNameOption+"]").attr("selected", true);
   617 	
   617   
   618 	// dates
   618   // dates
   619 	var selectedDateOption = $("#filter_date option:selected").attr("name") ;
   619   var selectedDateOption = $("#filter_date option:selected").attr("name") ;
   620 
   620 
   621 	$("#filter_date option").remove() ;
   621   $("#filter_date option").remove() ;
   622 	
   622   
   623 	$("#filter_date").append($("<option name='c_f_date_all' value=''>" + all + "</option>")) ;
   623   $("#filter_date").append($("<option name='c_f_date_all' value=''>" + all + "</option>")) ;
   624 	for (var  i=0, ilen=newFilterData['dates'].length; i < ilen ; i++) {
   624   for (var  i=0, ilen=newFilterData['dates'].length; i < ilen ; i++) {
   625 		var item = newFilterData['dates'][i] ;
   625     var item = newFilterData['dates'][i] ;
   626 		var ddd = ngettext('last 24 hours (%(nb_comments)s)', 'last %(nb_days)s days (%(nb_comments)s)', item.nb_day) ;
   626     var ddd = ngettext('last 24 hours (%(nb_comments)s)', 'last %(nb_days)s days (%(nb_comments)s)', item.nb_day) ;
   627 		var ccc = interpolate(ddd,{'nb_days':item.nb_day, 'nb_comments':item.nb_comments}, true) ;		
   627     var ccc = interpolate(ddd,{'nb_days':item.nb_day, 'nb_comments':item.nb_comments}, true) ;    
   628 		
   628     
   629 		$("#filter_date").append($("<option name='c_f_date_"+ item.nb_day +"' value='"+ item.nb_day_date +"'>" + ccc + "</option>")) ;
   629     $("#filter_date").append($("<option name='c_f_date_"+ item.nb_day +"' value='"+ item.nb_day_date +"'>" + ccc + "</option>")) ;
   630 	}
   630   }
   631 	
   631   
   632 	$("#filter_date option[name="+selectedDateOption+"]").attr("selected", true);
   632   $("#filter_date option[name="+selectedDateOption+"]").attr("selected", true);
   633 	
   633   
   634 	// text : nothing to do
   634   // text : nothing to do
   635 	
   635   
   636 	// tags
   636   // tags
   637 	var selectedTagOption = $("#filter_tag option:selected").attr("name") ;
   637   var selectedTagOption = $("#filter_tag option:selected").attr("name") ;
   638 
   638 
   639 	$("#filter_tag option").remove() ;
   639   $("#filter_tag option").remove() ;
   640 	
   640   
   641 	$("#filter_tag").append($("<option name='c_f2_tag_all' value=''>" + all + "</option>")) ;
   641   $("#filter_tag").append($("<option name='c_f2_tag_all' value=''>" + all + "</option>")) ;
   642 	for (var  i=0, ilen=newFilterData['tags'].length; i < ilen ; i++) {
   642   for (var  i=0, ilen=newFilterData['tags'].length; i < ilen ; i++) {
   643 		var item = newFilterData['tags'][i] ;
   643     var item = newFilterData['tags'][i] ;
   644 		$("#filter_tag").append($("<option name='c_f2_tag_"+ item.name +"' value='"+ item.name +"'>" + item.name +"("+item.nb_comments+")</option>")) ;
   644     $("#filter_tag").append($("<option name='c_f2_tag_"+ item.name +"' value='"+ item.name +"'>" + item.name +"("+item.nb_comments+")</option>")) ;
   645 	}
   645   }
   646 	$("#filter_tag option[name="+selectedTagOption+"]").attr("selected", true);
   646   $("#filter_tag option[name="+selectedTagOption+"]").attr("selected", true);
   647 	
   647   
   648 	// states
   648   // states
   649 	var selectedStateOption = $("#filter_state option:selected").attr("state") ;
   649   var selectedStateOption = $("#filter_state option:selected").attr("state") ;
   650 
   650 
   651 	$("#filter_state option").remove() ;
   651   $("#filter_state option").remove() ;
   652 	
   652   
   653 	$("#filter_state").append($("<option name='c_f2_state_all' value=''>" + all + "</option>")) ;
   653   $("#filter_state").append($("<option name='c_f2_state_all' value=''>" + all + "</option>")) ;
   654 	for (var  i=0, ilen=newFilterData['states'].length; i < ilen ; i++) {
   654   for (var  i=0, ilen=newFilterData['states'].length; i < ilen ; i++) {
   655 		var item = newFilterData['states'][i] ;
   655     var item = newFilterData['states'][i] ;
   656 		$("#filter_state").append($("<option name='c_f2_state_"+ item.state +"' value='"+ item.state +"'>" + gettext(item.state) +"("+item.nb_comments+")</option>")) ;
   656     $("#filter_state").append($("<option name='c_f2_state_"+ item.state +"' value='"+ item.state +"'>" + gettext(item.state) +"("+item.nb_comments+")</option>")) ;
   657 	}
   657   }
   658 	$("#filter_state option[name="+selectedStateOption+"]").attr("selected", true);
   658   $("#filter_state option[name="+selectedStateOption+"]").attr("selected", true);
   659 } ;
   659 } ;
   660 
   660 
   661 f_interfaceUnfreeze = function() {
   661 f_interfaceUnfreeze = function() {
   662 	// tabs headers
   662   // tabs headers
   663 	for ( var i = 0, ilen = $(".c_tab").length; i < ilen; i++) {
   663   for ( var i = 0, ilen = $(".c_tab").length; i < ilen; i++) {
   664 		$(".inner-north").tabs("enable", i);
   664     $(".inner-north").tabs("enable", i);
   665 	}
   665   }
   666 
   666 
   667 	$(".inner-north select").add(".inner-north input").add("#outer-north select").add("#outer-north input").each( function() {
   667   $(".inner-north select").add(".inner-north input").add("#outer-north select").add("#outer-north input").each( function() {
   668 		$(this).attr("disabled", false);
   668     $(this).attr("disabled", false);
   669 	});
   669   });
   670 
   670 
   671 	$("#c_slider").slider('enable') ;
   671   $("#c_slider").slider('enable') ;
   672 
   672 
   673 } ;
   673 } ;
   674 
   674 
   675 f_interfaceFreeze = function() {
   675 f_interfaceFreeze = function() {
   676 	// tabs headers
   676   // tabs headers
   677 	for ( var i = 0, ilen = $(".c_tab").length; i < ilen; i++) {
   677   for ( var i = 0, ilen = $(".c_tab").length; i < ilen; i++) {
   678 		$(".inner-north").tabs("disable", i);
   678     $(".inner-north").tabs("disable", i);
   679 	}
   679   }
   680 
   680 
   681 	$(".inner-north select").add(".inner-north input").add("#outer-north select").add("#outer-north input").each( function() {
   681   $(".inner-north select").add(".inner-north input").add("#outer-north select").add("#outer-north input").each( function() {
   682 		$(this).attr("disabled", true);
   682     $(this).attr("disabled", true);
   683 	});
   683   });
   684 	
   684   
   685 	$("#c_slider").slider('disable') ;
   685   $("#c_slider").slider('disable') ;
   686 } ;
   686 } ;
   687 
   687 
   688 f_enqueueMsg = function(msg) {
   688 f_enqueueMsg = function(msg) {
   689 	enqueueMsg(msg) ; 	
   689   enqueueMsg(msg) ;   
   690 } ;
   690 } ;
   691 
   691 
   692 f_enqueueErrorMsg = function(msg) {
   692 f_enqueueErrorMsg = function(msg) {
   693 	enqueueErrorMsg(msg) ; 	
   693   enqueueErrorMsg(msg) ;  
   694 } ;
   694 } ;
   695 
   695 
   696 f_removeLoadingMsg = function() {
   696 f_removeLoadingMsg = function() {
   697 	removeLoadingMsg() ;
   697   removeLoadingMsg() ;
   698 }
   698 }
   699 
   699 
   700 f_initFrame = function() {
   700 f_initFrame = function() {
   701 	initFrame() ;
   701   initFrame() ;
   702 }
   702 }
   703 
   703 
   704 f_layoutFrames = function() {
   704 f_layoutFrames = function() {
   705 	layoutFrames() ;
   705   layoutFrames() ;
   706 }
   706 }
   707 
   707 
   708 f_fillTextPreferencesTab = function() {
   708 f_fillTextPreferencesTab = function() {
   709 	fillTextPreferencesTab() ;
   709   fillTextPreferencesTab() ;
   710 }
   710 }
   711 
   711 
   712 f_fillPreferencesTab = function() {
   712 f_fillPreferencesTab = function() {
   713 	fillPreferencesTab() ;
   713   fillPreferencesTab() ;
   714 }
   714 }
   715 
   715 
   716 f_fillBrowseSection = function() {
   716 f_fillBrowseSection = function() {
   717 	fillBrowseSection() ;
   717   fillBrowseSection() ;
   718 }
   718 }
   719 
   719 
   720 f_fillFilterTab = function() {
   720 f_fillFilterTab = function() {
   721 	fillFilterTab() ;
   721   fillFilterTab() ;
   722 }
   722 }
   723 
   723 
   724 f_fillTopToolbar = function() {
   724 f_fillTopToolbar = function() {
   725 	fillTopToolbar() ;
   725   fillTopToolbar() ;
   726 }
   726 }
   727 
   727 
   728 f_yesNoDialog = function(htmlContent, title, noFunction, noFunctionContext, noFunctionArgs, yesFunction, yesFunctionContext, yesFunctionArgs) {
   728 f_yesNoDialog = function(htmlContent, title, noFunction, noFunctionContext, noFunctionArgs, yesFunction, yesFunctionContext, yesFunctionArgs) {
   729 	$('#dialog_h').html(htmlContent) ;
   729   $('#dialog_h').html(htmlContent) ;
   730 	
   730   
   731 	$('#dialog_h').dialog('option', 'title', title) ;
   731   $('#dialog_h').dialog('option', 'title', title) ;
   732 
   732 
   733 	function onNo() {
   733   function onNo() {
   734 		if (noFunction != null)
   734     if (noFunction != null)
   735 			noFunction.call(noFunctionContext, noFunctionArgs) ;
   735       noFunction.call(noFunctionContext, noFunctionArgs) ;
   736 	}
   736   }
   737 	
   737   
   738 	function onYes() {
   738   function onYes() {
   739 		if (yesFunction != null)
   739     if (yesFunction != null)
   740 			yesFunction.call(yesFunctionContext, yesFunctionArgs) ;
   740       yesFunction.call(yesFunctionContext, yesFunctionArgs) ;
   741 	}
   741   }
   742 	var buttons = {} ;
   742   var buttons = {} ;
   743 	buttons[gettext('No')] = function() {$(this).dialog('close');onNo();} ;
   743   buttons[gettext('No')] = function() {$(this).dialog('close');onNo();} ;
   744 	buttons[gettext('Yes')] = function() {$(this).dialog('close');onYes();} ;
   744   buttons[gettext('Yes')] = function() {$(this).dialog('close');onYes();} ;
   745 	$('#dialog_h').dialog('option', 'buttons', buttons) ;        
   745   $('#dialog_h').dialog('option', 'buttons', buttons) ;        
   746 	$('#dialog_h').dialog('open') ;
   746   $('#dialog_h').dialog('open') ;
   747 }
   747 }
   748 
   748 
   749 f_setCookie = function(name, value) {
   749 f_setCookie = function(name, value) {
   750 	_setCookie(name, value) ;
   750   _setCookie(name, value) ;
   751 }
   751 }
   752 
   752 
   753 
   753 
   754 
   754 
   755 /*****************************************************************************/
   755 /*****************************************************************************/
   756 
   756 
   757 
   757 
   758 gInFullScreen = false;
   758 gInFullScreen = false;
   759 
   759 
   760 _setFrameSize = function() {
   760 _setFrameSize = function() {
   761 	if (parent != window) { // (this condition is to enable accessing "comments_frame" view from top window) TODO test under IE   
   761   if (parent != window) { // (this condition is to enable accessing "comments_frame" view from top window) TODO test under IE   
   762 		if (gInFullScreen) {
   762     if (gInFullScreen) {
   763 			var headerHeight = parent.$("#header").height();
   763       var headerHeight = parent.$("#header").height();
   764 			var windowHeight = parent.$(parent).height();
   764       var windowHeight = parent.$(parent).height();
   765 			var frameHeight = (windowHeight - headerHeight - 2) + 'px'; // - 2 to prevent scrollbars ? --> TODO test it without -2
   765       var frameHeight = (windowHeight - headerHeight - 2) + 'px'; // - 2 to prevent scrollbars ? --> TODO test it without -2
   766 	
   766   
   767 			var windowWidth = parent.$(parent).width();
   767       var windowWidth = parent.$(parent).width();
   768 			var frameWidth = (windowWidth - 2) + 'px'; // - 2 to prevent scrollbars ?// --> TODO test it without -2
   768       var frameWidth = (windowWidth - 2) + 'px'; // - 2 to prevent scrollbars ?// --> TODO test it without -2
   769 	
   769   
   770 			// TODO we should be embeded ! shouldn't work otherwise anyway (frame security concerns)
   770       // TODO we should be embeded ! shouldn't work otherwise anyway (frame security concerns)
   771 			parent.$("#text_view_frame").css( {
   771       parent.$("#text_view_frame").css( {
   772 				'position' :'absolute',
   772         'position' :'absolute',
   773 				'left' :'0px',
   773         'left' :'0px',
   774 				'top' :headerHeight,
   774         'top' :headerHeight,
   775 				'width' :frameWidth,
   775         'width' :frameWidth,
   776 				'height' :frameHeight
   776         'height' :frameHeight
   777 			});
   777       });
   778 		}
   778     }
   779 		else {
   779     else {
   780 			var frameTop = Math.ceil(parent.$("#autoexpand_text_view_frame_container").position()["top"]);
   780       var frameTop = Math.ceil(parent.$("#autoexpand_text_view_frame_container").position()["top"]);
   781 	
   781   
   782 			var windowHeight = parent.$(parent).height();
   782       var windowHeight = parent.$(parent).height();
   783 			var frameHeight = (windowHeight - frameTop - 2) + 'px'; // - 2 to prevent scrollbars // ? --> TODO test it without -2
   783       var frameHeight = (windowHeight - frameTop - 2) + 'px'; // - 2 to prevent scrollbars // ? --> TODO test it without -2
   784 			
   784       
   785 			var windowWidth = parent.$(parent).width();
   785       var windowWidth = parent.$(parent).width();
   786 			var frameWidth = (windowWidth - 2) + 'px'; // - 2 to prevent scrollbars ? // --> TODO test it without -2
   786       var frameWidth = (windowWidth - 2) + 'px'; // - 2 to prevent scrollbars ? // --> TODO test it without -2
   787 	
   787   
   788 			// TODO test if we're embeded ! wont work otherwise anyway (frame security)
   788       // TODO test if we're embeded ! wont work otherwise anyway (frame security)
   789 			parent.$("#text_view_frame").css( {
   789       parent.$("#text_view_frame").css( {
   790 				'position' :'relative',
   790         'position' :'relative',
   791 				'width' :'99.9%',
   791         'width' :'99.9%',
   792 				'height' :frameHeight,
   792         'height' :frameHeight,
   793 				'top' :'0px'
   793         'top' :'0px'
   794 			});
   794       });
   795 		}
   795     }
   796 	}
   796   }
   797 }
   797 }
   798 _toFullScreenSize = function() {
   798 _toFullScreenSize = function() {
   799 	gInFullScreen = true;
   799   gInFullScreen = true;
   800 	_setFrameSize() ;
   800   _setFrameSize() ;
   801 
   801 
   802 	$("#c_fullscreen_btn").attr('src', sv_media_url + '/img/arrow_in.png');
   802   $("#c_fullscreen_btn").attr('src', sv_media_url + '/img/arrow_in.png');
   803 
   803 
   804 	f_setCookie('fullscreen', '1') ;
   804   f_setCookie('fullscreen', '1') ;
   805 };
   805 };
   806 
   806 
   807 _toNormalSize = function() {
   807 _toNormalSize = function() {
   808 	gInFullScreen = false;
   808   gInFullScreen = false;
   809 	_setFrameSize() ;
   809   _setFrameSize() ;
   810 
   810 
   811 	$("#c_fullscreen_btn").attr('src', sv_media_url + 'img/arrow_out.png');
   811   $("#c_fullscreen_btn").attr('src', sv_media_url + 'img/arrow_out.png');
   812 	
   812   
   813 	f_setCookie('fullscreen', '0') ;
   813   f_setCookie('fullscreen', '0') ;
   814 };
   814 };
   815 
   815 
   816 _toInitialSize = function() {
   816 _toInitialSize = function() {
   817 	//console.info('_toInitialSize') ; 
   817   //console.info('_toInitialSize') ; 
   818 	var fullscreen = ($.cookie('fullscreen') == '1');
   818   var fullscreen = ($.cookie('fullscreen') == '1');
   819 	if (fullscreen)
   819   if (fullscreen)
   820 		_toFullScreenSize() ;
   820     _toFullScreenSize() ;
   821 	else 
   821   else 
   822 		_toNormalSize() ;
   822     _toNormalSize() ;
   823 };
   823 };
   824 
   824 
   825 toInitialSize = function() {
   825 toInitialSize = function() {
   826 	_toInitialSize() ;
   826   _toInitialSize() ;
   827 	parent.$(parent).resize(function(){
   827   parent.$(parent).resize(function(){
   828 //		console.log('before setFramesize in top resize winwidth' + 	frames['text_view_comments'].CY.DOM.winWidth()) ;
   828 //    console.log('before setFramesize in top resize winwidth' +  frames['text_view_comments'].CY.DOM.winWidth()) ;
   829 		_setFrameSize();
   829     _setFrameSize();
   830 //		console.log('after setFramesize in top resize winwidth' + 	frames['text_view_frame'].frames['text_view_comments'].CY.DOM.winWidth()) ;
   830 //    console.log('after setFramesize in top resize winwidth' +   frames['text_view_frame'].frames['text_view_comments'].CY.DOM.winWidth()) ;
   831 	});
   831   });
   832 }
   832 }
   833 
   833 
   834 toggleFrameSize = function() {
   834 toggleFrameSize = function() {
   835 	if (gInFullScreen)
   835   if (gInFullScreen)
   836 		_toNormalSize() ;
   836     _toNormalSize() ;
   837 	else 
   837   else 
   838 		_toFullScreenSize() ;
   838     _toFullScreenSize() ;
   839 }
   839 }
   840 
   840