/* */ var CLOUD = new Object(); CLOUD['filters'] = new Object(); CLOUD['filters']['pg'] = 1; // Default start page. CLOUD['filters']['sft'] = ''; CLOUD['filters']['context'] = 'default'; CLOUD.add_filter = function(filter) { // Ensure filter haven't been added already - shouldn't be possible. CLOUD['filters']['sft']= decodeURIComponent(CLOUD['filters']['sft']); var sft = CLOUD['filters']['sft'].split(","); var filter_exists = false; for(var i = 0; i < sft.length; i++) { if ( sft[i] == filter) { filter_exists = true; break; } } if ( filter_exists == false ) { if (CLOUD['filters']['sft']) { CLOUD['filters']['sft'] += ","+filter; } else { CLOUD['filters']['sft'] = filter; } } CLOUD['filters']['sft']= encodeURIComponent(CLOUD['filters']['sft']); // Always restart on page 1 when applying a new filter. CLOUD['filters']['pg'] = 1; CLOUD.search(); } CLOUD.clear_filters = function() { CLOUD['filters']['sft'] = ''; } // get_top_value is used in conjunction with add_param to assign a numeric value to // the filter being added. This allows us to control the order filters are displayed // in on the breadcrumb line. CLOUD.go_to_page = function(page_num, total_pages, direction, context, page_selector) { if (!page_num) { //var selected_index = document.getElementById('page_selector').selectedIndex; //page_num = document.getElementById('page_selector').options[selected_index].value; var selected_index = document.getElementById(page_selector).selectedIndex; page_num = document.getElementById(page_selector).options[selected_index].value; } // Ensure we've got valid numerics. var re = new RegExp( "^\\d+$" ); if( !page_num.match(re) || !total_pages.match(re) ) { alert("Invalid page value encountered for either page number or total pages!"); return false; } if ( total_pages && ( direction == "next" || direction == "previous" ) ) { if (direction == "next") { // Direction is 'next' page_num = parseInt(page_num) < parseInt(total_pages) ? ++page_num : total_pages; } else { // Direction must be 'previous' page_num = ( parseInt(page_num) - 1 ) < 1 ? 1 : --page_num; } } CLOUD['filters']['pg'] = page_num; CLOUD['filters']['context'] = context; CLOUD.search(); return false; } CLOUD.remove_filter = function(filter_name) { // Remove array element indicated by order_value from CLOUD['params'] array. CLOUD['filters']['sft']= decodeURIComponent(CLOUD['filters']['sft']); var sft = CLOUD['filters']['sft'].split(","); var new_sft = new Array(); //filter_name = encodeURIComponent(filter_name); for(var i = 0; i < sft.length; i++) { var filter_sft = encodeURIComponent( sft[i] ); if ( sft[i] != filter_name ) //if ( filter_sft != filter_name ) { new_sft.push(sft[i]); //new_sft.push(filter_sft); } } CLOUD['filters']['pg'] = 1; CLOUD['filters']['sft'] = new_sft.join(','); CLOUD['filters']['sft']= encodeURIComponent(CLOUD['filters']['sft']); CLOUD.search(); return false; } CLOUD.search = function() { var uri = CLOUD['filters']['context'] == 'preview' ? '/search/preview/?' : '/search/?'; var params = ''; // Ensure keywords and categories are escaped. params += '&kw='+encodeURIComponent(CLOUD['filters']['kw']); params += '&sft='+encodeURIComponent(CLOUD['filters']['sft']); for (var key in CLOUD['filters'] ) { // if (key == 'sft' || key == 'kw' ) { continue; } if( params ) { params += "&"+key+"="+CLOUD['filters'][key]; } else { params = key+"="+CLOUD['filters'][key]; } } var url = uri+params; window.location = url; return false; } CLOUD.set = function(key, value) { CLOUD['filters'][key] = value; } CLOUD.set_smart_prefix = function(smtpfx, od) { CLOUD['filters']['smtpfx'] = smtpfx; CLOUD['filters']['od'] = od; CLOUD.search(); } // Just a humble debug function to display current parameter settings. CLOUD.show_params = function() { var params = ""; for (var key in CLOUD['filters'] ) { if( params ) { params += "&"+key+"="+CLOUD['filters'][key]; } else { params = key+"="+CLOUD['filters'][key]; } } alert("CLOUD.show_params() #01 params=="+params); } CLOUD.shrink_filters = function(filter_name) { // Shrink/rebuild the CLOUD['sft'] string up to and including filter_name. var sft = CLOUD['filters']['sft'].split(","); //filter_name = encodeURIComponent(filter_name); var new_sft = new Array(); var last = false; for(var i = 0; i < sft.length && last == false; i++) { var filter_sft = encodeURIComponent(sft[i]); new_sft.push(sft[i]); //new_sft.push(filter_sft); if ( sft[i] == filter_name ) //if ( filter_sft == filter_name ) { last = true; } } CLOUD['filters']['sft'] = new_sft.join(','); CLOUD.search(); return false; }