var sortSettings = new Array(); var maxSortCriteria = 3; var productOrder = new Array(); var currentView = 'shortthin'; var manual_addedProducts = new Array(); var manual_hiddenProducts = new Array(); var hiddenCriteria = new Array(); var oldHref = ""; var rowFilters = new Array(); var screenUpdatesOn = true; function turnOffScreenUpdates() { screenUpdatesOn = false; } function turnOnScreenUpdates() { screenUpdatesOn = true; updateScreen(); } function handleFilterChange() { processSort(); } function setFilter(name,filtertext,field) { var filter = new Array(); filter["name"] = name; filter["filtertext"] = filtertext; filter["field"] = field; rowFilters[name] = filter; handleFilterChange(); } function listSizeChooserOnChange() { views[currentView]['threshold'] = document.compareenginecontrolsform.listSizeChooserControl.options[document.compareenginecontrolsform.listSizeChooserControl.selectedIndex].text; if(views[currentView]['threshold'] == 'all') { views[currentView]['threshold'] = ""+productOrder.length; } updateScreen(); window.focus(); } function hideCriteria(criteria) { if(hiddenCriteria.indexOf(criteria)==-1) { hiddenCriteria.push(criteria); } updateScreen(); window.focus(); } function showHiddenCriteria() { while(hiddenCriteria.length>0) { hiddenCriteria.shift(); } updateScreen(); window.focus(); } function removeAllProductsLackingCriteria(criteria) { } function addProductToComparison(productID) { if(manual_addedProducts.indexOf(productID)==-1) { manual_addedProducts.push(productID); } updateScreen(); window.focus(); } function openCompareWindow(csvlist) { var width = Math.min(800,screen.width); var height = Math.min(480,screen.height); var thisWin = window.open("/products/compareWindow.php#[["+csvlist+"]]","compareEngineComparisonWindow"); thisWin.focus(); } function removeFromCompareWindow(csvlist) { var ids = csvlist.split(","); for(var i=0;i 0)&&(newParam['criteria'] == sortSettings[0]['criteria'])) { if(sortSettings[0]['direction'] == 'up') { sortSettings[0]['direction'] = 'down'; } else { sortSettings[0]['direction'] = 'up'; } } else { newParam['direction'] = criteriameta[criteria]['sort_default_direction']; while(sortSettings.length >= maxSortCriteria) { sortSettings.pop(); } sortSettings.unshift(newParam); } processSort(); var sortInfoText = "sort by "; for(var i=0;i-1) { start = window.location.href.indexOf('[['); end = window.location.href.indexOf(']]'); if((start > -1)&&(end > -1)) { start += 2; } else { var ids = new Array(); return ids; } } else if(window.location.href.indexOf('%5B')>-1) { start = window.location.href.indexOf('%5B%5B'); end = window.location.href.indexOf('%5D%5D'); if((start > -1)&&(end > -1)) { start += 6; } else { var ids = new Array(); return ids; } } query = window.location.href.substring(start,end); var ids = query.split(","); return ids; } function isDigit(num) { if (num.length>1){return false;} var string="1234567890"; if (string.indexOf(num)!=-1){return true;} return false; } function trim(stringToTrim) { return stringToTrim.replace(/^\s+|\s+$/g,""); } function sortCompareForCriteria(a,b,criteria,direction) { var retVal = 0; var aval = a[criteria]['value']; if((a[criteria]['sortvalue']!=null)&&(a[criteria]['sortvalue']!='')) { aval = a[criteria]['sortvalue']; } var bval = b[criteria]['value']; if((b[criteria]['sortvalue']!=null)&&(b[criteria]['sortvalue']!='')) { bval = b[criteria]['sortvalue']; } if(criteriameta[criteria]['sort_function']=='num') { if((aval == null)||(aval == '')) { aval = '0'; } if((bval == null)||(bval == '')) { bval = '0'; } aval = parseFloat(trim(aval)); bval = parseFloat(trim(bval)); } if(criteriameta[criteria]['sort_function']=='enum') { aval = parseFloat(trim(a[criteria]['sortorder'])); bval = parseFloat(trim(b[criteria]['sortorder'])); } if(criteriameta[criteria]['sort_function']=='date') { aval = trim(a[criteria]['date']); bval = trim(b[criteria]['date']); } if(criteriameta[criteria]['sort_function']=='price') { aval = parseFloat(trim(a[criteria]['price'])); bval = parseFloat(trim(b[criteria]['price'])); } if(criteriameta[criteria]['sort_function']=='screenres') { if( (a[criteria]['hor'] == null)||(a[criteria]['hor'] == '')|| (a[criteria]['ver'] == null)||(a[criteria]['ver'] == '') ) { aval = 0; } else { aval = parseFloat(trim(a[criteria]['hor']))*parseFloat(trim(a[criteria]['ver'])); } if( (b[criteria]['hor'] == null)||(b[criteria]['hor'] == '')|| (b[criteria]['ver'] == null)||(b[criteria]['ver'] == '') ) { bval = 0; } else { bval = parseFloat(trim(b[criteria]['hor']))*parseFloat(trim(b[criteria]['ver'])); } } if(criteriameta[criteria]['sort_function']=='isempty') { if((aval == null)||(trim(aval) == '')) { aval = 0; } else { aval = 1; } if((bval == null)||(trim(bval) == '')) { bval = 0; } else { bval = 1; } } if(aval>bval) { retVal = 1; } else if(aval==bval) { retVal = 0; } else { retVal = -1; } if(direction == 'down') { retVal = -(retVal); } return retVal; } function updateScreen() { if(screenUpdatesOn == true) { $('compareengine').innerHTML = getCompareEngineHTML(); for(var rowinsert in views[currentView]['rowinserts']) { if(($('adsource'+rowinsert) != null)&&($('compareengineadcontents'+rowinsert)!=null)) { $('compareengineadcontents'+rowinsert).innerHTML = $('adsource'+rowinsert).innerHTML; } } /* var width = $('compareengine').offsetWidth; if(width!=null) { if(screen.width>width) { top.outerWidth = width+30; } else { top.outerWidth = screen.width; } } */ } } function sortComparison(a,b) { var result = 0; for(var i=0;i0) { productOrder.sort(sortComparison); } updateScreen(); } function cleanValue(value) { value = unescape(value); value = trim(value); if((value == null)||(value == "")) { return ""; } value = value.replace(/\+/g,' '); return value; } function getHighlightClass(product,criteria) { var value = cleanValue(products[product][criteria]['value']); var highlightFunction = criteriameta[criteria]['highlight_function']; if(highlightFunction == 'yesno') { if(value == 'yes') { return 'hlgood'; } else { return 'hlbad'; } } return ""; } function applyTemplate(product,criteria) { var value = cleanValue(products[product][criteria]['value']); if((value == null)||(value == "")) { return " "; } var template = criteriameta[criteria]['template']; if((template!=null)&&(template != "")) { value = template.replace(/\[\[\[value\]\]\]/g,value); } if((criteria == 'name')||(criteria == 'minipiclink')) { var dirname = cleanValue(products[product]['dirname']['value']); value = ''+value+''; } return value; } function processCheckedItems() { var checkedProducts = ''; var firstProd = true; for(var i=0; i0) { compareEngineToolkit += 'Show '+hiddenCriteria.length+' Hidden Criteria'; } } else { /* compareEngineToolkit += '  Add all products to the comparison window.  '; */ compareEngineToolkit += 'Show products.'; } compareEngineToolkit += ''; return compareEngineToolkit; } function getCompareEngineHTML() { var rowSortOrder = new Array(); var tableBodyHTML = ''; var tableHeaderGroupRowHTML = ''; var tableHeaderCriteriaRowHTML = ''; var numberOfCells = 0; var numberOfVisibleGroups = 0; var formHeader = '
'; var formFooter = '
'; for(var group in views[currentView]['criteria']['order']) { var itemsInGroupCount = 0; for(var i=0; i-1) { continue; } itemsInGroupCount++; numberOfCells++; tableHeaderCriteriaRowHTML += ''; if(criteriameta[criteria]['sort_function'] != "") { tableHeaderCriteriaRowHTML += ''+criteriameta[criteria]['title']+''; } else { tableHeaderCriteriaRowHTML += ''+criteriameta[criteria]['title']; } if(views[currentView]['manual']=='1') { tableHeaderCriteriaRowHTML += '
'; if(criteriameta[criteria]['can_hide'] == 1) { tableHeaderCriteriaRowHTML += '
'; if(criteriameta[criteria]['sort_function'] == "yesno") { // tableHeaderCriteriaRowHTML += '   xx'; } } else { tableHeaderCriteriaRowHTML += '
'; } } tableHeaderCriteriaRowHTML += ''; } if(itemsInGroupCount>0) { tableHeaderGroupRowHTML += ''+views[currentView]['criteria']['groupmeta'][group]['title']+''; numberOfVisibleGroups++; } } tableHeaderGroupRowHTML += ""; tableHeaderCriteriaRowHTML += ""; var filterResults = 0; for(var filterName in rowFilters) { var filterObj = rowFilters[filterName]; if((filterObj['filtertext'] != null) && (trim(filterObj['filtertext']) != "")) { filterResults = 1; } } var createRowCounter = 0; var numberOfVisibleProducts = Math.min(productOrder.length,views[currentView]['threshold']); for (var i=0; ((i< productOrder.length)&&(createRowCounter< numberOfVisibleProducts)); i++) { numberOfVisibleGroups = 0; var product = productOrder[i]['id']['value']; if((manual_addedProducts.indexOf(product)==-1)&&(views[currentView]['manual']=='1')) { continue; } if(filterResults > 0) { var ok = true; for(var filterName in rowFilters) { var filterOK = true; var filterObj = rowFilters[filterName]; if(filterObj['filtertext'] == null) { continue; } var filter = ""; if((filterObj['filtertext'] != null) && (trim(filterObj['filtertext']) != '')) { filter = trim(filterObj['filtertext']).toLowerCase(); filterOK = false; for(var group in views[currentView]['criteria']['order']) { for(var j=0; j-1) && (filterObj['field'] == -1)) { continue; } var filterCheckValue = applyTemplate(product,criteria); if(filterCheckValue != null) { filterCheckValue = filterCheckValue.toLowerCase(); if((( (filterObj['field'] == -1) || (criteria == filterObj['field']) ) && (filterCheckValue.indexOf(filter)!=-1))) { filterOK = true; } } } } } if(!filterOK) { ok = false; } } if(!ok) { continue; } } if((createRowCounter>0)&&((createRowCounter % views[currentView]['repeatheaderafter'])==0)) { tableBodyHTML += tableHeaderCriteriaRowHTML; } var rowInsert = views[currentView]['rowinserts'][''+createRowCounter]; if((rowInsert != null)&&(rowInsert != '')) { tableBodyHTML += ''+unescape(rowInsert)+'\n'; } tableBodyHTML += ''; for(var group in views[currentView]['criteria']['order']) { var itemsInGroupCount = 0; for(var j=0; j-1) { continue; } itemsInGroupCount++; var highlightclass = getHighlightClass(product,criteria); tableBodyHTML += ''+applyTemplate(product,criteria)+'\n'; } if(itemsInGroupCount>0) { numberOfVisibleGroups++; } } tableBodyHTML += ''; createRowCounter++; } if(views[currentView]['showgroups'] == 0) { tableHeaderGroupRowHTML = ''; } tableBodyHTML = '
'+formHeader+'\n
'+getCompareEngineToolkit()+'
\n'+tableHeaderGroupRowHTML+tableHeaderCriteriaRowHTML+tableBodyHTML+'
\n'+formFooter; return tableBodyHTML; }