// Generic code starts here
function CompressedStdList(args, isDark, isSelected) {
    this.rowClass = "complistlight"; 
    if (isDark) {
        this.rowClass = "complistdark";
    }
    if (isSelected) { 
        this.rowClass= "complistselected";
    }
    
    this.title = args["title"];
    if (this.title == null) {
        this.title = args["fullname"];
    }

    this.itemdate = args["publishdate"];
    if (this.itemdate == null) {
        this.itemdate = args["releasedate"];
    }
    if (this.itemdate == null) {
        this.itemdate = args["updatedate"];
    }
    this.console = args["console"];
    if (this.console != null) {
        this.subtitle = " - " + this.console;
    } else {
        this.subtitle = "";
    }
    
    var ts = args["teaser"];
    var ts_maxlength = 75;
    if (ts != null) {
        if (ts.length > ts_maxlength) {
            this.teaser = ts.substr(0,ts_maxlength)+ "...";
        } else {
            this.teaser = ts;
        }
    }
    this.path = args["path"];
    this.index = args["index"];
    this.divId = args["divId"];
	this.hasBody = args["hasBody"];
}	

CompressedStdList.prototype.writeRow = function(e) {
	this.toElement = e;
	var aDiv = document.createElement("li");
	aDiv.className = this.rowClass;
	aDiv.id = this.divId;
	//aDiv.setAttribute("onclick", "selectRow(\""+this.divId+"\","+this.index+"); return false;");
	
	var buffer = new Array();
  	
  	if (this.hasBody == 'true') {
		buffer[buffer.length] = "<a class='bullet' href='";
		buffer[buffer.length] = this.path;
		buffer[buffer.length] = "'></a>";
	}
	
	buffer[buffer.length] = "<a href='#' onclick='selectRow(\""+this.divId+"\"," +this.index + ");return false;'>";
    buffer[buffer.length] = "<h1>" + this.title + this.subtitle + "</h1>";
    buffer[buffer.length] = "<h2>" + this.teaser + "</h2>";
    buffer[buffer.length] = "</a>";
    
    var o = buffer.join("");		
    aDiv.innerHTML = o;	
    
    this.toElement.appendChild(aDiv);
}

function CompressedSimpleList(args, isDark, isSelected) {
    this.rowClass = "onelistlight"; 
    if (isDark) {
        this.rowClass = "onelistdark";
    }
    if (isSelected) { 
        this.rowClass= "onelistselected";
    }
    
    // title for this type of listing is max 70 chars
    var tl = args["title"];
    var tl_maxlength = 70;
    if (tl == null) {
        tl = args["fullname"];
    }
    if (tl.length > tl_maxlength) {
        this.title = tl.substr(0,tl_maxlength)+ "...";
    } else {
        this.title = tl;
    }
        
    var ts = args["teaser"];
    var ts_maxlength = 90;
    if (ts != null) {
        if (ts.length > ts_maxlength) {
            this.teaser = ts.substr(0,ts_maxlength)+ "...";
        } else {
            this.teaser = ts;
        }
    }
    this.path = args["path"];
    this.index = args["index"];
    this.divId = args["divId"];
	this.hasBody = args["hasBody"];
}	


CompressedSimpleList.prototype.writeRow = function(e) {
    this.toElement = e;
    var aDiv = document.createElement("li"); 
    aDiv.className = this.rowClass;
    aDiv.id = this.divId;
    var buffer = new Array();

  	if (this.hasBody == 'true') {
		buffer[buffer.length] = "<a class='bullet' href='";
		buffer[buffer.length] = this.path;
		buffer[buffer.length] = "'></a>";
	}
	
    buffer[buffer.length] = "<a href='#' onclick='selectRow(\""+this.divId+"\"," +this.index + ");return false;'>";
    
/*
    buffer[buffer.length] = "<div class='onelisttext'><div class='bullet'>";
	if (this.hasBody == 'true') {
		buffer[buffer.length] = "<a href='";
		buffer[buffer.length] = this.path;
		buffer[buffer.length] = "'></a>";
	}
	buffer[buffer.length] = "<div class='selectrow' onclick='selectRow(\""+this.divId+"\","
    buffer[buffer.length] = this.index;
    buffer[buffer.length] = ");return false;'><a href='#' onclick='selectRow(\""+this.divId+"\","
    buffer[buffer.length] = this.index;
    buffer[buffer.length] = ");event.cancelBubble=true;return false;' class='midrub'>";
    buffer[buffer.length] = this.title;
    buffer[buffer.length] = "</a></div></div></div>";
*/
    buffer[buffer.length] = "<h1>" + this.title + "</h1>";
	buffer[buffer.length] = "</a>";

    
    var o = buffer.join("");		
    aDiv.innerHTML = o;	
    
    this.toElement.appendChild(aDiv);
}

function CompressedWideList(args, isDark) {


    this.rowClass = "listwidelight"; 
    if(isDark)this.rowClass = "listwidedark";
    
    this.title = args["title"];
	var tl = args["title"];
    var tl_maxlength = 30;
    if (this.title != null) {
        //this.title = args["fullname"];
        if (tl.length > tl_maxlength) {
			this.title = tl.substr(0, tl_maxlength) + "...";
		}
		else {
			this.title = tl;
		}		
    }
    
	this.pegi = args["pegi"];
	if ( this.pegi == null) {
		this.pegi = "";
	} else {
	
        var pegivals = this.pegi.split(", ");
        var lnt = pegivals.length;
        var hej = "";
        for (var i=0;i<lnt;i++) {
            var curval = pegivals[i];
            if ( curval.indexOf("plus") >= 0 )
            this.pegi = "<img src='/furniture/images/"+curval+"_s.gif'/> ";
        }	
	}
    
    this.createdate = args["createdate"];
    
	this.publishdate = args["publishdate"];
    this.publishdate = this.publishdate == undefined ? this.createdate : this.publishdate;

	this.releasedate = args["releasedate"];
    this.releasedate = this.releasedate == undefined ? " - ": this.releasedate;

    this.console = args["console"];
    this.console = this.console == undefined ? " - ": this.console;

 
    var ts = args["teaser"];
    var ts_maxlength = 55;
    if (ts != null) {
        if (ts.length > ts_maxlength) {
            this.teaser = ts.substr(0,ts_maxlength)+ "...";
        } else {
            this.teaser = ts;
        }
    }
 
    this.path = args["path"];
    this.divId = args["divId"];
	this.hasBody = args["hasBody"];
	this.msgNotClickable = args["msgNotClickable"];
	
	this.itemType = args["itemType"];
}

CompressedWideList.prototype.writeRow = function(e) {
    
    this.toElement = e;
    var aDiv = document.createElement("li"); 
    aDiv.className = this.rowClass;
    aDiv.id = this.divId;
    var buffer = new Array();

	if (this.hasBody == "true") {
		buffer[buffer.length] = "<a href='" + this.path + "'>";
	} else {
		buffer[buffer.length] = "<a class='noclick'>";
	}
	
	// ITEMTYPE CONSTANT
	// Trim leading and trailing whitespace characters
	var itemTypeTrim = trim(this.itemType," ");
	// Replace in-the-middle whitespace characters with "_"
	var itemTypeTrimTemp = itemTypeTrim.replace(' ','_');
	// Convert to lower case
	var itemTypeTrimLow = itemTypeTrimTemp.toLowerCase();
	// Get constant from language file
	var itemTypeConstantFnc = "messages.lists_itemType_" + itemTypeTrimLow;
	var itemTypeConstant = getConstant(itemTypeConstantFnc,"messages.lists_itemType_undefined");	
	
	// CONSOLE CONSTANT
	// Trim leading and trailing whitespace characters
	var consoleTrim = trim(this.console," ");
	// Replace in-the-middle whitespace characters with "_"
	var consoleTrimTemp = consoleTrim.replace(' ','_');
	// Convert to lower case
	var consoleTrimLow = consoleTrimTemp.toLowerCase();
	// Get constant from language file
	var consoleConstantFnc = "messages.lists_console_" + consoleTrimLow;
	var consoleConstant = getConstant(consoleConstantFnc,"messages.lists_console_undefined");

	buffer[buffer.length] = "<div><div class=\"info\">";
	//buffer[buffer.length] = "<ul><li><b>"+messages.lists_itemType+":</b> "+this.itemType+"</li><li><b>"+messages.lists_console+":</b> "+this.console+"</li>"
	buffer[buffer.length] = "<ul><li><b>"+messages.lists_itemType+":</b> "+itemTypeConstant+"</li><li><b>"+messages.lists_console+":</b> "+consoleConstant+"</li>"	
	//buffer[buffer.length] = "<li><b>"+messages.lists_published+":</b> "+this.publishdate+"</li><li><b>"+messages.lists_releaseDate+":</b> "+this.releasedate+"</li></ul>"; //Originalraden
	buffer[buffer.length] = "<li>&nbsp;</li><li><b>"+messages.lists_releaseDate+":</b> "+this.releasedate+"</li></ul>"; //ny rad som Rikard testar
	buffer[buffer.length] = "</div>";
	buffer[buffer.length] = this.pegi + "</div><h1>";
    buffer[buffer.length] = this.title;
	if(this.hasBody != "true"){
		buffer[buffer.length] = "   ("+this.msgNotClickable+")";
	}
    buffer[buffer.length] = this.subtitle;
    buffer[buffer.length] = " </h1>";
    
	buffer[buffer.length] = " <h2>";
    buffer[buffer.length] = this.teaser;
	buffer[buffer.length] = " </h2>";
//	if (this.hasBody == "true") {
		buffer[buffer.length] = "</a>";
//	}
    
    var o = buffer.join("");		
    aDiv.innerHTML = o;	
    
    this.toElement.appendChild(aDiv);
}

function CompressedGameList(args, isDark, isSelected) {
	
    this.rowClass = "complistlight"; 
    if (isDark) {
        this.rowClass = "complistdark";
    }
    if (isSelected) { 
        this.rowClass= "complistselected";
    }
    
    this.title = args["title"];
    if (this.title == null) {
        this.title = args["fullname"];
    }
    this.itemdate = args["publishdate"];
    if (this.itemdate == null) {
        this.itemdate = args["releasedate"];
    }
    if (this.itemdate == null) {
        this.itemdate = args["updatedate"];
    }
    
    this.genre = args["genre"];
	this.hasBody = args["hasBody"];

    var pegitmp = args["pegi"];
    var pegitmp2 = "";
    if (pegitmp != null) {
        
        var pegivals = pegitmp.split(", ");
        var lnt = pegivals.length;
        for (var i=0;i<lnt;i++) {
            var curval = pegivals[i];
            pegitmp2 += "<img src='/furniture/images/"+curval+"_s.gif'/> ";
        }
        this.pegiImgs = pegitmp2;
        this.pegi = args["pegi"].replace('plus','+');
    }
    else {
        this.pegi = "";
        this.pegiImgs = "";    
    }

	// pln@fiwe - for some reason we get an ending LI tag in the date.
	// and this makes the generated code invalid. so we remove it here
	var cleanDate = this.itemdate.split("<",1)[0];
	
    if (this.genre != null) {
        this.subtitle = cleanDate + (cleanDate.length == 0 ?  "" : " / ") + this.genre;
    } else{
        this.subtitle = cleanDate;
    }
    
    this.path = args["path"];
    this.index = args["index"];
    this.divId = args["divId"];
}	

CompressedGameList.prototype.writeRow = function(e){
	this.toElement = e;
	var aDiv = document.createElement("li");
	aDiv.className = this.rowClass;
	aDiv.id = this.divId;
	
	var buffer = new Array();
	
	if (this.hasBody == 'true') {
		buffer[buffer.length] = "<a class='bullet' href='";
		buffer[buffer.length] = this.path;
		buffer[buffer.length] = "'></a>";
	}
	
	buffer[buffer.length] = "<a href='#' onclick='selectRow(\""+this.divId+"\"," +this.index + ");return false;'>";
    buffer[buffer.length] = "<div class='iconholderpegi'>" + this.pegiImgs + "</div>";
    buffer[buffer.length] = "<h1>" + this.title + "</h1>";
    buffer[buffer.length] = "<h2>" + this.subtitle + "</h2>";
    buffer[buffer.length] = "</a>";
    
    var o = buffer.join("");		

    aDiv.innerHTML = o;	
    
    this.toElement.appendChild(aDiv);
}

function ExpandedStdList(args, isDark) {
    this.rowClass = "expandlistlight"; 
    if(isDark)this.rowClass = "expandlistdark";				
    this.title = args["title"];
    this.teaser = args["teaser"];
    this.path = args["path"];
    this.index = args["index"];
    this.productImg = args["productImg"];
    this.info = args["info"];
	this.hasBody = args["hasBody"];
}

ExpandedStdList.prototype.writeRow = function(e) {
    this.toElement = e;
    var aDiv = document.createElement("li"); 
    
    // This is not working in IE !!!
    //aDiv.setAttribute('class', this.rowClass);

    // USet this instead!
    aDiv.className = this.rowClass;
    
    var buffer = new Array();			
    buffer[buffer.length] = "<div class='listimg'>";
	if (this.hasBody == 'true') {
		buffer[buffer.length] = "<a href='";
		buffer[buffer.length] = this.path + "'>";
	}
    if(this.productImg != null){
        buffer[buffer.length] = "<img src='";
        buffer[buffer.length] = this.productImg;
        buffer[buffer.length] = "' border='0' />";
    }
    
	if (this.hasBody == 'true') {
		buffer[buffer.length] = "</a>";
	}
	buffer[buffer.length] = "</div><div class='expandlisttext'><div>";
	if (this.hasBody == 'true') {
		buffer[buffer.length] = "<a href='";
		buffer[buffer.length] = this.path;
		buffer[buffer.length] = "' class='largerub'>";
		buffer[buffer.length] = this.title;
		buffer[buffer.length] = "</a>";
	}else{
		buffer[buffer.length] = "<div class='largerub'>";
		buffer[buffer.length] = this.title;
		buffer[buffer.length] = "</div>";
		
	}
	buffer[buffer.length] = "</div><div class='blackstrong'>";
    buffer[buffer.length] = this.teaser;
    buffer[buffer.length] = "</div></div>";

    if(this.info != undefined){
        
        buffer[buffer.length] = "<div class='expandlistinfo'><table cellpadding='0' cellspacing='0' border='0' class='tablelistinfo'>";
        buffer[buffer.length] = "<table cellpadding='0' cellspacing='0' border='0' class='tablelistinfo'>";
        for(var k=0; k<this.info.length; k++){
            var fieldName = this.info[k][0];
            var fieldValue = this.info[k][1];
            if (fieldValue != null) {
                if (fieldName == 'PEGI:') {
                    buffer[buffer.length] = "<tr><td class='labellistinfo'>"+fieldName+"</td><td align='left'>";
                    var pegivals = fieldValue.split(", ");
                    var lnt = pegivals.length;
                    if (lnt > 3) {
                        lnt = 3;
                    }
                    for (var i=0;i<lnt;i++) {
                        var curval = pegivals[i];
                        buffer[buffer.length] = "<img src='/furniture/images/"+curval+"_s.gif'/> ";
                    }
                    buffer[buffer.length] = "</td></tr>";
                } else {
                    buffer[buffer.length] = "<tr><td class='labellistinfo'>"+fieldName+"</td><td align='left'>"+fieldValue+"</td></tr>";
                }
            }
        }
        buffer[buffer.length] = "</table></table></div>";		
    }
    //buffer[buffer.length] = "</div>";
    
    var o = buffer.join("");		
    aDiv.innerHTML = o;
    this.toElement.appendChild(aDiv);
}

function pagingObj(e, pages, selected, next, previous) {	
    var buffer = new Array();	
    this.toElement = e;
    var aDiv = document.createElement("div"); 
    aDiv.id = "paging";
    
    if(previous != undefined){
        buffer[buffer.length] = "<a href='#' onclick='gotoPage("+previous+");return false;'><img src='/furniture/images/arrow_left.gif' width='9' height='9' alt='' border='0' class='pagingleft'/></a>&nbsp;";
    }
    
    for(var i=0; i<pages;){
        i++;
        if ( (selected < 10 && i < 10) || (i-5 <= selected && i+5 >= selected) ) {
            if(i == parseInt(selected,10)){				
                buffer[buffer.length] = "<a href='#' onclick='gotoPage("+i+");return false;'class='selected' style='text-decoration:none;'>"+i+"</a>&nbsp;";
            }else{
                buffer[buffer.length] = "<a href='#' onclick='gotoPage("+i+");return false;'>"+i+"</a>&nbsp;";	
            }
        }
    }
    
    if(next != undefined){
        buffer[buffer.length] = "<a href='#' onclick='gotoPage("+next+");return false;'><img src='/furniture/images/arrow_right.gif' width='9' height='9' alt='' border='0' class='pagingright'/></a>";	
    }
    var o = buffer.join("");
    aDiv.innerHTML = o;
    this.toElement.appendChild(aDiv);
}

function rightAreaInfoObj(inTitle, inTeaser, inPath, inImage, inInfo, inLinkText, hasBody) {		

    var e = document.getElementById("complist");
    
    var olddiv = document.getElementById("listrightarea");
    if (olddiv != null) {
        e.removeChild(olddiv);
    }
    
    var rightDiv = document.createElement("div");
    rightDiv.id = 'listrightarea';
    
    var buffer = new Array();
    if(inImage != null){
        buffer[buffer.length] = "<div id='rightareaimg'><a href='";
        buffer[buffer.length] = inPath;
        buffer[buffer.length] = "'><img src='";
        buffer[buffer.length] = inImage;
        buffer[buffer.length] = "' alt='' border='0' />";
        buffer[buffer.length] = "</a></div>";
        buffer[buffer.length] = "<div id='rightareadivider'></div>";
    }
    if(inInfo != null && inInfo.length>0){
        
        buffer[buffer.length] = "<div id='rightareainfo'>";
        buffer[buffer.length] = "<table cellpadding='0' cellspacing='0' border='0' class='tablelistinfo'>";
        for(var k=0; k<inInfo.length; k++){
            var fieldName = inInfo[k][0];
            var fieldValue = inInfo[k][1];
            if (fieldValue != null) {
                if (fieldName == 'PEGI: ') {
                    buffer[buffer.length] = "<tr><td class='labellistinfo'>"+fieldName+"</td><td align='left'>";
                    var pegivals = fieldValue.split(", ");
                    for (var i=0;i<pegivals.length;i++) {
                        var curval = pegivals[i];
                        buffer[buffer.length] = "<img src='/furniture/images/"+curval+"_s.gif'/> ";
                    }
                     buffer[buffer.length] = "</td></tr>";
                } else {
                    buffer[buffer.length] = "<tr><td class='labellistinfo'>"+fieldName+"</td><td align='left'>"+fieldValue+"</td></tr>";
                }
            }
			
        }
        buffer[buffer.length] = "</table>";		
        buffer[buffer.length] = "</div>";
    }
    buffer[buffer.length] = "<div class='floatbreak'></div>";
    buffer[buffer.length] = "<div id='rightareawide'>";
	if (hasBody == 'true') {
		buffer[buffer.length] = "<a href='";
		buffer[buffer.length] = inPath;
		buffer[buffer.length] = "' class='largerub'>";
		buffer[buffer.length] = inTitle;
		buffer[buffer.length] = "</a><p class='infotext'><a href='";
		buffer[buffer.length] = inPath;
		buffer[buffer.length] = "'>"
		buffer[buffer.length] = inTeaser;
		buffer[buffer.length] = "</a></p><a class='infolink' href='";
		buffer[buffer.length] = inPath;
		buffer[buffer.length] = "'>" + inLinkText + "</a></div>";
	}else{
		buffer[buffer.length] = "<div><div class='largerub'>";
		buffer[buffer.length] = inTitle;
		buffer[buffer.length] = "</div></div><p class='infotext'>";
		buffer[buffer.length] = inTeaser;
		buffer[buffer.length] = "</p></div>";
		
	}
    var o = buffer.join("");
    rightDiv.innerHTML = o;
    
    e.appendChild(rightDiv);
}		

// set proper higlighting for rows
function highlightRow(inThis,selectedStyle,lightStyle,darkStyle) {
    if (inThis != null) {
        
        // set default styles
        if (selectedStyle == null) {
            selectedStyle = "complistselected";
        }
        if (lightStyle == null) {
            lightStyle = "complistlight";
        }
        if (darkStyle == null) {
            darkStyle = "complistdark";
        }
        
        // check if it is an even ('e') or uneven ('u') row and set proper style
        if (currentDiv.substring(1,0) == 'e') {
            document.getElementById(currentDiv).className = lightStyle;
        } else {
            document.getElementById(currentDiv).className = darkStyle;
        }
        
        // highlight the selected row
        var divId = inThis; // this is the id of the div was selected/clicked
        var e = document.getElementById(divId);
        e.className = selectedStyle;
        currentDiv = divId;
    }
}

function listItems(requester, page, formName){

    if (requester == null) {
        return;
    }
    
    if (formName == null) {
        formName = document.filterForm;
    }
    
    // clear the old results
    clearLists();
     
    if (page == null) {
        formName.page.value = "";
    } else {
        formName.page.value = page;
    }
    
    // filter on console
    var x = formName.checkbox_console;
    var theVal = "";
    if (x != null){
        var length = x.length;
        for(i = 0; i < length; i++) {
            if ( x[i].checked ) {
                theVal += '"' + x[i].value + '" AND ';
            }
        }
        if (theVal != '' && theVal.length > 4) {
            var substrEnd = ((theVal.length)-4);
            theVal = theVal.substring(0,substrEnd);
            formName.fieldname_console.value = theVal;
        } else {
            formName.fieldname_console.value = '';
        }
    }
    
    // filter on genre
    var x = formName.checkbox_genre;
    var theVal = "";
    if (x != null){
        var length = x.length;
        for(i = 0; i < length; i++) {
            if ( x[i].checked ) {
                theVal += '"' + x[i].value + '" AND ';
            }
        }
        if (theVal != '' && theVal.length > 4) {
            var substrEnd = ((theVal.length)-4);
            theVal = theVal.substring(0,substrEnd);
            formName.fieldname_genre.value = theVal;
        } else {
            formName.fieldname_genre.value = '';
        }
    }




    // reverse the sortorder if a date field is selected

    var sortfield = formName.sortfield;
    var sortreversed = formName.sortreversed;
    var changesortorder = formName.changesortorder;

    if (sortfield != null && sortreversed != null) {
        if (sortfield.value == 'publishdate' || sortfield.value == 'updatedate' || sortfield.value == 'releasedate') {
            formName.sortreversed.value = "true";
            if (changesortorder != null && changesortorder.value == 'true') {       //.checked
                formName.sortreversed.value = "false";
            }
        } else {
            formName.sortreversed.value = "false";
            if (changesortorder != null && changesortorder.value == 'true') {       //.checked
                formName.sortreversed.value = "true";
            }
        }
    }

    requester.resultListener=listItemsListener;         
    requester.execute();
}



function createPager(data,inDiv) {
    
    // clear loader
    clearLoader();
    
    var meta = data.getMeta();
    var pages = meta["totalpages"];
    var selected = meta["currentpage"];
    var next = meta["nextpage"];
    var previous = meta["previouspage"];
    document.filterForm.key.value = meta["searchkey"];
    if (pages > 1) {
        pagingObj(inDiv, pages, selected, next, previous);
    }
}

function clearLists() {
    clearLoader();
    removeElements(document.getElementById("listleftarea"));
    removeElements(document.getElementById("listleftareawide"));
    removeElements(document.getElementById("listrightarea"));
    removeElements(document.getElementById("listexpanded"));
    showLoader();
}

function clearListRightArea(){
    var e = document.getElementById("listrightarea");
    removeElements(e);
}	

function removeElements(e){
    if(e != null) {
        while(e.hasChildNodes()){
            e.removeChild(e.childNodes[0]);
        }
    }
}

function clearLoader(){
    var e = document.getElementById("loader");
    removeElements(e);
}	

function showLoader() {
    try {
        var e = document.getElementById("loader");
        this.toElement = e;
        var loader = document.createElement("div");
        loader.innerHTML = "<div class='loadersymbol'></div>";
        e.appendChild(loader);
    } catch (exception) {
        //
    }
}

function showMessage(message) {
    try {
        var e = document.getElementById("loader");
        this.toElement = e;
        var loader = document.createElement("div");
        loader.innerHTML = "<div class='message'>" + message + "</div>";
        e.appendChild(loader);
    } catch (exception) {
        //
    }
}

function getElementValue(elementId) {
    
    var myValue = null;
    try {
        myValue = document.getElementById(elementId).value;
        // strip html
        myValue = myValue.replace(/(<([^>]+)>)/ig,"");
    } catch (err) {
        // element not found
    }
    return myValue;
}

function updateResultsMessage(data, resultmessage) {
    
    var myDiv = document.getElementById("activeresult");
    if (myDiv != null) {
        var myText = resultmessage;
        if (data != null) {
            var meta = data.getMeta();
            myText = myText.replace('{0}', meta["resultsfrom"]);
            myText = myText.replace('{1}', meta["resultsto"]);
            myText = myText.replace('{2}', meta["totalhits"]);
            myDiv.innerHTML = myText;
        } else {
            myDiv.innerHTML = myText;
        }
        setFilterMessage();
    }
}

function setFilterMessage() {
    
    var e = document.getElementById("activelabel");
    e.innerHTML = "";
    e.style.display = 'none';
    var filterfields = new Array("fromdate","todate","fieldname_console","fieldname_genre","fieldname_pegi","fieldname_title","fieldname_console");
    for (var i=0;i<filterfields.length;i++) {
        var curField = document.getElementById(filterfields[i]);
        if (curField != null) {
//            if (curField.name == 'itemId' && curField.selectedIndex != 0) {
//                alert( curField.selectedIndex );
//                e.innerHTML = "<img src='/furniture/images/greenbullet.gif' width='7' height='7' alt='' border='0' />&nbsp;" + messages.search_activelabel + ":";
//                break;
//            }
            if (curField.name != 'itemId' && curField.value != '') {
                e.innerHTML = "<a onclick='cleanActiveFilter(searchRequester,null);return false;' href='#'>"+ messages.search_activelabel +":</a>";
                e.style.display = 'block';
                break;
            }
        }
    }
}

function cleanActiveFilter(requester, page, formName){
		
 	if (requester == null) {
        return;
    }
    
    if (formName == null) {
        formName = document.filterForm;
    }
    
	 // clean filter on console
    var x = formName.checkbox_console;
    var theVal = "";
    if (x != null){
        var length = x.length;
        for(i = 0; i < length; i++) {
            if ( x[i].checked ) {
                x[i].checked = false;
            }
        }
    }
    
    // clean filter on genre
    var x = formName.checkbox_genre;
    var theVal = "";
    if (x != null){
        var length = x.length;
        for(i = 0; i < length; i++) {
            if ( x[i].checked ) {
               x[i].checked = false;
            }
        }
	}
	
	
	initReleaseValues();
	initPegiValues();
		
	sliderUpdateHandlersEmpty();
	
	releaseSlider.setValue(1,0);
	releaseSlider.setValue(5,1);
	pegiSlider.setValue(1,0);
	pegiSlider.setValue(5,1);

	go("docheck");	
	
	sliderUpdateHandlers();
	
}



var curLetterSelected = 'allstyle';
function searchByLetter(letter) {
    try {
        // unselect the current selected letter
        document.getElementById(curLetterSelected).className = 'unselected';
        var newLetterSelected = 'allstyle';
        var newval = '';
        if(letter != undefined && letter != '' && letter != null) {
            if (letter == "#") {
                newval = '"0*" OR "1*" OR "2*" OR "3*" OR "4*" OR "5*" OR "6*" OR "7*" OR "8*" OR "9*"';
                newLetterSelected = 'allstyle';
            } else {
                newval = '"' + letter + '*"';
                newLetterSelected = letter + 'style';
            }
        }
        curLetterSelected = newLetterSelected;
        document.filterForm.fieldname_title.value = newval;
        document.getElementById(newLetterSelected).className = 'selected';
        go();
    } catch (exception) {
        // unable to set proper value
    }
}

function clearSearchKey(){
    try {
        document.filterForm.key.value = "";
    } catch (exception) {
        // could not clear search
    }
}

function showPoll(requester, formName){

    if (requester == null) {
        return;
    }
    
    if (formName == null) {
        formName = document.pollForm;
    }
    
    var pollDiv = document.getElementById("pollresults");
    removeElements(pollDiv);
    showPollLoader();
    
    requester.resultListener=showPollListener;         
    requester.execute();
}


function showPollListener(data){
    clearPollLoader();
    var pollDiv = document.getElementById("pollinfo");
    removeElements(pollDiv);
    
    if(pollRequester.hasError()){
        showPollMessage(pollRequester.getErrorMessage());
        return;
    }
    
    if(!pollRequester.hasResult()){
        showPollMessage(messages.common_noresults);
        return;
    }
    
    if(data == null) {
        return;
    }

    var pollItems = data.getItems();
    var meta = data.getMeta();
    
    if (meta["hasvoted"] == 'false') {
    
        // code to show the poll questions here.
        var buffer = new Array();
        
        
        // start pollform
        // buffer[buffer.length] = "<div id='pollresults'>";
        buffer[buffer.length] = "<p style='padding-left:5px;'>";
        buffer[buffer.length] = meta["pollquestion"];
        buffer[buffer.length] = "</p>";

        if(meta["polltype"] == "List"){
            buffer[buffer.length] = "<div class='pollradio'>";
            buffer[buffer.length] = "  <select id='pollval' name='pollval' onchange='fetchSelectValue(this);' >";
            buffer[buffer.length] = "    <option value ='" + itemId + "'>" + messages.polls_select + "</option>";
        } 
        else if(meta["polltype"] == "Radio" || meta["polltype"] == "Check Boxes"){
            var htmlPollType = meta["polltype"] == 'Radio' ? 'radio' : 'checkbox';
        }
        
               
        
        // possible answers
        for(var k = 0; k <pollItems.length; k++){
            var myItem = pollItems[k];
            var localizedanswer = myItem.getFieldByName("localizedanswer");
            var itemId = myItem.getItemId();
            
            if(meta["polltype"] == "Radio" || meta["polltype"] == "Check Boxes"){
                buffer[buffer.length] = "<div class='pollradio'>";
                buffer[buffer.length] = "  <input id='pollval' type='";
                buffer[buffer.length] = htmlPollType;
                buffer[buffer.length] = "' name='pollval' value='";
                buffer[buffer.length] = itemId;
                if(meta["polltype"] == "Radio"){
                    buffer[buffer.length] = "' onclick='document.pollForm.answer.value = this.value;'/> ";
                }
                else if(meta["polltype"] == "Check Boxes"){
                    buffer[buffer.length] = "' onclick='document.pollForm.answer.value=manageMultipleAnswers(document.pollForm, this.value, this.checked);'/> ";
                }
                buffer[buffer.length] = localizedanswer;
                buffer[buffer.length] = "  <br/>";
                buffer[buffer.length] = "</div>";
            }
            else if (meta["polltype"] == "List"){
                // type 'list' i.e. 'select' tag
                buffer[buffer.length] = "    <option value ='" + itemId + "' >" + localizedanswer + "</option>";
            }
        }

        if(meta["polltype"] == "List"){
            buffer[buffer.length] = "  </select>";
            buffer[buffer.length] = "</div>";
        } 

        

        
        
        // submit button
        buffer[buffer.length] = "<div class='pollsubmit'>";
        buffer[buffer.length] = "<a class='arrow' href='#' onclick='showPoll(pollRequester,document.pollForm);return false;' >";
        buffer[buffer.length] = messages.submit;
        buffer[buffer.length] = "</a>";
        //buffer[buffer.length] = "</div>"; 

        var o = buffer.join("");
        pollDiv.innerHTML = o;
        
    } else {
    
        // code to show the results here.
        var buffer = new Array();
        
        // start table
        buffer[buffer.length] = "<div id='pollresult'>";
        buffer[buffer.length] = "<p>";
        buffer[buffer.length] = meta["pollquestion"];
        buffer[buffer.length] = "</p>";
        buffer[buffer.length] = "<br/><table border='0' cellspacing='0' cellpadding='0' width='100%'>";
        
        // rows
        for(var k = 0; k <pollItems.length; k++){
            var myItem = pollItems[k];
            var localizedanswer = myItem.getFieldByName("localizedanswer");
            var votes = myItem.getFieldByName("votes");
            var percentage = myItem.getFieldByName("permillage") / 10;
            var itemId = myItem.getItemId();

            // are we dealing with an even or uneven row
            var color = "green";
            if (k % 2 == 0) {
                color = "red";
            } else {
                color = "green";
            }
            color = color;
            
            buffer[buffer.length] = "<tr>";
            buffer[buffer.length] = "<td colspan='1' valign='top'>";
            buffer[buffer.length] = "<span class='txt'> ";
            buffer[buffer.length] = localizedanswer;
            buffer[buffer.length] = "</span>";
            buffer[buffer.length] = "<span class='txt'><nobr> (";
            buffer[buffer.length] = percentage;
            buffer[buffer.length] = "%)</nobr></span>";
            buffer[buffer.length] = "<br/><br/>";
            buffer[buffer.length] = "</td>";
            buffer[buffer.length] = "<td align='left' valign='top' style='border-left:1px black solid;'>";
            if (color == 'green') {
                buffer[buffer.length] = "<img src='/furniture/images/poll_alt2.jpg' height='12' width='";
                buffer[buffer.length] = percentage;
                buffer[buffer.length] = "%' border='0'  hspace='0' vspace='0' />";
            } else {
                buffer[buffer.length] = "<img src='/furniture/images/poll_alt1.jpg' height='12' width='";
                buffer[buffer.length] = percentage;
                buffer[buffer.length] = "%' border='0'  hspace='0' vspace='0' />";
            }
            
            buffer[buffer.length] = "</td>";
            buffer[buffer.length] = "</tr>";            
        }
        
        // y axis
        buffer[buffer.length] = "<tr>";
        buffer[buffer.length] = "<td></td>";
        buffer[buffer.length] = "<td width='70' valign='top' align='left' colspan='1' >";
        var languageExtension =  meta["polllanguage"] == 'sv' ||  meta["polllanguage"] == 'no' ||  meta["polllanguage"] == 'dk' ||  meta["polllanguage"] == 'fi' ?  meta["polllanguage"] : "generic";
        buffer[buffer.length] = "<img src='/furniture/images/poll_yaxel_" + languageExtension + ".gif' height='9' width='70'  hspace='0' vspace='0' alt='' border='0' />";
        buffer[buffer.length] = "</td>";
        buffer[buffer.length] = "</tr>";
        buffer[buffer.length] = "</table>";
        buffer[buffer.length] = "</div>";

        //number of votes
        buffer[buffer.length] =  "<div class='txt'>";
        buffer[buffer.length] = messages.polls_totalvotes1 + '&nbsp;';
        buffer[buffer.length] = meta["totalvotes"] + '&nbsp;';
        buffer[buffer.length] = messages.polls_totalvotes2;
        buffer[buffer.length] = "<br/></div>";


        var o = buffer.join("");
        pollDiv.innerHTML = o;
    }
}


function manageMultipleAnswers(pollForm, value, isAddition){
    var answerList = deserialize(pollForm.answer.value);
    return serialize((isAddition) ? addAnswerToList(answerList, value) : removeAnswerFromList(answerList, value));
}

function deserialize(serializedData){
    return serializedData.length == undefined || serializedData.length == 0 ? [] : serializedData.split('~~~~~');
}

function serialize(list){
    var returnValue = "";
    for(i=0; i<list.length; i++){
        returnValue += (i != 0 ? "~~~~~" : "") + list[i];
    }        
    return returnValue;
}

function addAnswerToList(answerList, value){
    answerList[answerList.length] = value;
    return answerList;
}

function removeAnswerFromList(answerList, value){
    var result = new Array();    
    for(i=0; i< answerList.length; i++){
        if(answerList[i] != value){
            result[result.length] = answerList[i];
        }
    }
    return result;
}


function fetchSelectValue(selectElement){
    answer = selectElement.options[selectElement.selectedIndex].value;
    document.pollForm.answer.value = answer;
}


function showPollMessage(message) {
    try {
        var e = document.getElementById("pollinfo");
        this.toElement = e;
        var loader = document.createElement("div");
        loader.innerHTML = "<div style='text-align:center;margin-top:15px;margin-bottom:15px;;font-size:11px;'>" + message + "</div>";
        e.appendChild(loader);
    } catch (exception) {
        //
    }
}


function clearPollLoader(){
    var e = document.getElementById("pollinfo");
    removeElements(e);
}

function showPollLoader() {
    try {
        var e = document.getElementById("pollinfo");
        removeElements(e);
        this.toElement = e;
        var loader = document.createElement("div");
        loader.id = "pollresultsloader";
        loader.innerHTML = "<div style='text-align:center;margin-top:15px;margin-bottom:15px;'><img src='/furniture/images/loading_small.gif' width='20' height='20' alt='' border='0' /></div>";
        e.appendChild(loader);
    } catch (exception) {
        //
    }
}

/**
*
*  Javascript trim, ltrim, rtrim
*
**/
 
function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function getConstant(fnc,fncUndef) {
	var temp;
	var tempUndef = eval(fncUndef);	
	try {
		temp = eval(fnc);
		//If undefined, test for undefined message constant
		temp = temp == undefined ? tempUndef : temp;			
		//If no message constant found then use " - "
		temp = temp == undefined ? " - " : temp;							
		return temp;
	}
	catch (err) {
		//If error, test for undefined message constant	
		temp = tempUndef;	
		//If no message constant found then use " - "
		temp = temp == undefined ? " - " : temp;					
		return temp;	
	}
}

