﻿/* Selector */
var filteredArray = new Array(0);
var tmpInnerHTML = "";
//Selector datatype
function selector(title, show, table) {
    this.title = title;
    this.show = show;
    this.table = table;
}

//Product datatype
function product(id, gid, language, title, leadtext, category, addpage) {
    this.id = id;
    this.gid = gid;
    this.language = language;
    this.title = title;
    this.leadtext = leadtext;
    this.category = category;
	this.addpage = addpage;
}

product.prototype.url = function() {
    if (this.addpage == true) {
        return "/product/ap/" + db + "/" + this.id + ".aspx";
    }
    else {
        if (this.id != null && this.id != "") {
            return "/product/" + db + "/" + this.id + ".aspx";
        }
        else {
            return "/product/" + this.language + "/" + this.gid + ".aspx";
        }
    }
};

function setColumnView(nr, bol) {
    this.nr = nr;
    this.bol = bol;
    strColumnView = nr;
    bilde = bol;
    update();
}

function update() {
    filteredArray = filter();
    for (x = 0; x < 10; x++) {
        if (selectorArray[x].show) {
            populateDropdown(x);
        }
    }
    var obj = document.getElementById('filteredArray');
    var tmpInner = "";
    tmpInner = writeTableStart();
    tmpInner += eval('dumpFilteredArray' + strColumnView + 'Columns(obj)');
    tmpInner += writeTableEnd();

    obj.innerHTML = tmpInner;
}
//The function populates a dropdown based on values from the filtered product list
function populateDropdown(number) {
    var categoryArray = new Array(0);
    //Get actual dropdown
    var categoryDropdown = document.getElementById("category" + number);
    j = 0;
    //Create list of actual category
    for (i = 0; i < filteredArray.length; i++) {
        tmpArr = (filteredArray[i].category[number]).split("&&");
        for (g = 0; g < tmpArr.length; g++) {
            categoryArray[j] = tmpArr[g];
            j++;
        }
    }
    //Make sure every instance is unique
    categoryArray = unique(categoryArray);
    //Sort elements in list
    categoryArray.sort();
    //Save old values and empty dropdown
    selectedValue = categoryDropdown.options[categoryDropdown.selectedIndex].text
    categoryDropdown.length = 0;
    //Add default value	
    var e = document.createElement('option');
    e.text = '- Any -';
    e.value = '';
    categoryDropdown.options.add(e);
    //Populate dropdown with the new list
    for (i = 0; i < categoryArray.length; i++) {
        e = document.createElement('option');
        if (categoryArray[i].indexOf('|') != -1) {
            tmpArr = categoryArray[i].split("|");
            e.text = tmpArr[1];
        }
        else {
            e.text = categoryArray[i];
        }
        e.value = categoryArray[i];
        categoryDropdown.options.add(e);
    }
    //Set old saved value to selected
    for (i = 0; i < categoryDropdown.length; i++) {
        if (selectedValue == categoryDropdown.options[i].text) {
            categoryDropdown.selectedIndex = i;
        }
    }
}

//Filter product list so that the list correspond to the values selected in the dropdown lists
function filter() {
    filteredArray = new Array(0);
    selectedArray = getSelectedValues();
    count = 0;
    for (i = 0; i < myArray.length; i++) {
        addProduct = true;
        for (j = 0; j < 10; j++) {
            if (selectorArray[j].show) {
                if ((myArray[i].category[j]).match("&&") != null && (selectedArray[j] != "")) {
                    if (filterMultiCategory(selectedArray[j], myArray[i].category[j]) == false)
                        addProduct = false;
                }
                else if (selectedArray[j] != myArray[i].category[j] && (selectedArray[j] != "")) {
                    addProduct = false;
                }
            }
        }

        if (addProduct) {
            filteredArray[count] = myArray[i];
            count++;
        }
    }
    return filteredArray;
}

function filterMultiCategory(selected, values) {
    tmpArr = values.split("&&");
    for (g = 0; g < tmpArr.length; g++) {
        if (tmpArr[g] == selected) {
            return true;
        }
    }
    return false;
}

//Get list with selected dropdown values
function getSelectedValues() {
    var selectedArray = new Array(0);
    for (i = 0; i < 10; i++) {
        if (selectorArray[i].show) {
            categoryDropdown = document.getElementById("category" + i);
            selectedArray[i] = categoryDropdown.options[categoryDropdown.selectedIndex].value;
        }
    }

    return selectedArray;
}

//The function makes sure that every element in a list is unique
function unique(a) {
    tmp = new Array(0);
    for (i = 0; i < a.length; i++) {
        if (!contains(tmp, a[i]) && a[i] != '') {
            tmp.length += 1;
            tmp[tmp.length - 1] = a[i];
        }
    }
    return tmp;
}

//The function checks if a list contains a certain value
function contains(a, e) {
    for (j = 0; j < a.length; j++) {
        if (a[j] == e) {
            return true;
        }
    }
    return false;
}

function writeTableStart() { return "<table cellspacing=\"0\" cellpadding=\"5\" border=\"2\">"; }
function writeTableEnd() { return "</table>"; }

function getSingleSelectors(i) {
    var tmp = "<div class=\"subHeadline\">" + selectorArray[i - 1].title + "</div>" +
						"<select name=\"cat" + (i - 1) + "\" onChange=\"update()\" id=\"category" + (i - 1) + "\" class=\"dropDownList product-sel\"><option value=\"\">- Any - </select>";
    return tmp;
}
function writeSelectors() {
    //"<form name=\"\" style=\"\">" +
    var tmpSelectors =

	"<table cellspacing=\"0\" cellpadding=\"2\" width=\"" + selectorWidth + "\" border=\"0\">" +
		"<tr><td>"
    for (i = 1; i < 11; i++) {
        if (selectorArray[i - 1].show) {
            tmpSelectors += "<div class=\"selectorContainer\">" + getSingleSelectors(i) + "</div>";
        }
    }
    tmpSelectors = tmpSelectors + "</tr>" +
	"</table>";
    //"</form>";
    document.getElementById('selectors').innerHTML = tmpSelectors;
}

//Write the list in table version
function dumpFilteredArray2Columns(obj) {
    tmpInnerHTML = '';
    var tableHeader = "<table class=\"productSelector\" cellspacing=\"0\" cellpadding=\"3\" border=\"0\" width=\"" + selectorWidth + "\">";
    var tableHeaderContent = "";
    var tmpTableHeaderContent = "";

    if (bilde) { tmpTableHeaderContent += "<td>&nbsp;</td>" }
    tmpTableHeaderContent += "<td>&nbsp;</td>";
    for (j = 0; j < selectorArray.length; j++) {
        if (selectorArray[j].table == "1") {
            tmpTableHeaderContent += "<th>" + selectorArray[j].title + "</th>";
        }
        tableHeaderContent = "<thead><tr>" + tmpTableHeaderContent + "</tr><thead/>";
    }

    tmpInnerHTML =
	tmpInnerHTML + tableHeader + tableHeaderContent + "<tbody>";

    for (i = 0; i < filteredArray.length; i++) {
        tmpInnerHTML +=
			"<tr>";
        if (bilde) { tmpInnerHTML += "<td><a href=\"" + filteredArray[i].url() + "\"><img class=\"productImage\" src=\"/global/gad/gad02511.nsf/vwImages/" + filteredArray[i].gid + "/$file/" + filteredArray[i].gid + "_icon.jpg\"></a></td>" }
        tmpInnerHTML += "<td><a href=\"" + filteredArray[i].url() + "\">" + filteredArray[i].title + "<a></td>";
        for (j = 0; j < selectorArray.length; j++) {
            tmpList = "";
            tmpArr = filteredArray[i].category[j].split("&&");
            for (g = 0; g < tmpArr.length; g++) {
                if (tmpArr[g].indexOf('|') != -1) {
                    ;
                    tmpArr2 = tmpArr[g].split("|");
                    tmpList = tmpList + tmpArr2[1];
                }
                else {
                    tmpList = tmpList + tmpArr[g];
                }
                if (g != (tmpArr.length - 1)) {
                    tmpList = tmpList + ", ";
                }
            }
            if (selectorArray[j].table == "1") { tmpInnerHTML += "<td>" + tmpList + "&nbsp;</td>"; }
        }
        "<tr>";
    }
    tmpInnerHTML += "</tbody></table>";
    return tmpInnerHTML;
}

