﻿function setProductNameHeight(groupId, rowId) {
    var selector = ".groupRow_" + groupId + "_" + rowId + " .prodListItemName";

    //find max height
    var maxHeight = 0;    
    $(selector).each(function (index) {
        if(maxHeight < $(this).height())
            maxHeight = $(this).height();
    });

    //set max height
    $(selector).each(function (index) {
        $(this).height(maxHeight);
    });
}

function getJSAsTable(groups, products, joinedProducts) {
    var html = "";

    html += "<table>";
    for (var i in products) {
        html += "<tr>";
        html += "<td>product</td>";
        html += "<td>count " + products[i][2] + "</td>";
        html += "<td>name " + products[i][3] + "</td>";
        html += "<td>clientsideid " + products[i][0] + "</td>";
        html += "<td>joinedProductId " + products[i][17] + "</td>";
        html += "<td>id " + products[i][18] + "</td>";
        html += "</tr>";
    }
    html += "</table>";

    html += "<table>";
    for (var i in joinedProducts) {
        html += "<tr>";
        html += "<td>joinedProduct</td>";
        html += "<td>id " + joinedProducts[i].id + "</td>";
        html += "<td>name " + joinedProducts[i].name + "</td>";
        html += "<td>firstProductID " + joinedProducts[i].firstProductID + "</td>";
        html += "<td>firstProductName " + joinedProducts[i].firstProductName + "</td>";
        html += "<td>secondProductID " + joinedProducts[i].secondProductID + "</td>";
        html += "<td>secondProductName " + joinedProducts[i].secondProductName + "</td>";
        html += "</tr>";
    }
    html += "</table>";

    return html;
}

function setQuerystringValue(href, qsName, qsValue) {
    var url = href.split("?");
    if (url.length < 2)
        return href;

    var ret = "";

    var qs = url[1].split("&");
    for (var i = 0; i < qs.length; i++) {

        if (qs[i].substr(0, qsName.length).toLowerCase() == qsName.toLowerCase()) {
            if (ret.length == 0)
                ret = "?" + qsName + "=" + qsValue;
            else
                ret += "&" + qsName + "=" + qsValue;
        }
        else if (ret.length == 0)
            ret = "?" + qs[i];
        else
            ret += "&" + qs[i];

    }

    return url[0] + ret;
}

function documentWrite(someData) {
    document.writeln(someData);
}

// Kollar om en viss plugin existerar
// nameOfPlugin (string): namnet på pluginen, t.ex: "Flip4Mac"
function pluginExists(nameOfPlugin) {
    for (var i = 0; i < navigator.plugins.length; i++){
        if (navigator.plugins[i].name.indexOf(nameOfPlugin) != -1) {
            return true;
        }
    }    
    return false;
}

// Skapar ett slideshow-objekt (kräver jQuery)
// bigImageId: id-värdet för den stora bilden som visas (img-element)
// puffingId: id-värdet för ingress-elementet (div-element, null om det inte används)
// articleArray: referens till den array som innehåller artikelobjekten
// playButtonSrc: sökväg till bilden för play-knappen
// pauseButtonSrc: sökväg till bilden för paus-knappen
// counterId: id till element som tar emot det aktuella bildnumret (index + 1)
function Slideshow(bigImageId, puffingId, articleArray, playButtonSrc, pauseButtonSrc, counterId) {
    this.currentSlideshowArticleIndex = 0;
    this.bigImageId = bigImageId;
    this.puffingId = puffingId;            
    this.articleArray = articleArray;
    this.timer = null;
    this.thumbRangeStart = null;
    this.thumbRangeLength = null;            
    this.counterId = counterId;
    
    if (playButtonSrc !== null) {
        this.playButton = new Image();
        this.playButton.src = playButtonSrc;
        this.playButton.alt = "Play-knapp";
        this.playButton.title = "Starta bildspel";
    }
    
    if (pauseButtonSrc !== null) {
        this.pauseButton = new Image();
        this.pauseButton.src = pauseButtonSrc;
        this.pauseButton.alt = "Pause-knapp";
        this.pauseButton.title = "Stoppa bildspel";    
    }
    
    var inst = this;
    
    // Visar en viss artikel (om dir inte är en int) ELLER går till nästa om dir > 0 eller föregående om dir <= 0
    this.show = function(dir) {
        var previousArticle = inst.articleArray[inst.currentSlideshowArticleIndex];
        var slideshowArticle = null;
        if (previousArticle !== null) {
            $("#" + previousArticle.id + "_thumb").removeClass("Current");                            
        }            

        if (isNaN(dir)) {
            // Anta att dir motsvarar idt för artikeln som ska visas,
            for (var i = 0; i < inst.articleArray.length; i++) {
                if (inst.articleArray[i].id == dir) {
                    slideshowArticle = inst.articleArray[i];
                    inst.currentSlideshowArticleIndex = i;
                }
            }
        } else {
            if (dir > 0) {
                inst.currentSlideshowArticleIndex = inst.currentSlideshowArticleIndex + 1 < inst.articleArray.length ? inst.currentSlideshowArticleIndex + 1 : 0;
            } else {
                inst.currentSlideshowArticleIndex = inst.currentSlideshowArticleIndex - 1 >= 0 ? inst.currentSlideshowArticleIndex - 1 : inst.articleArray.length - 1;
            }
            slideshowArticle = inst.articleArray[inst.currentSlideshowArticleIndex];
        }            
                    
        if (slideshowArticle !== null) {  
            if (inst.puffingId) {
                $("#" + String(inst.puffingId)).html(slideshowArticle.content);
            }
            if (inst.bigImageId) {                                                
                if (slideshowArticle.imagePreloadSrc) {
                    slideshowArticle.image.src = slideshowArticle.imagePreloadSrc;
                    slideshowArticle.imagePreloadSrc = null;
                }    
                
                $("#" + String(inst.bigImageId)).attr({
                    alt: slideshowArticle.image.alt, 
                    title: slideshowArticle.image.title, 
                    src: slideshowArticle.image.src});                                 
            }
            $("#" + slideshowArticle.id + "_thumb").addClass("Current");     
        }
        
        if (inst.counterId !== null) {
            $("#" + inst.counterId).html(inst.currentSlideshowArticleIndex + 1);            
        }
    };
    
    // Byter innehållet i puff-elementet mot den aktiva artikelns puff
    this.swapPuffContent = function(elementId, positionId) {
        var articleObject = inst.getArticleObject(elementId);
        var currentObject = inst.currentArticle();
        if (articleObject !== null && currentObject !== null) {
            inst.setPuffContent(positionId, currentObject.id);
            inst.show(articleObject.id);
        }
    };
    
    this.setPuffContent = function(targetId, elementId) {
        var articleObject = inst.getArticleObject(elementId);
        if (articleObject !== null) {
            $("#" + targetId).html(articleObject.puffHtml);            
        }
    };
    
    // Hämtar ett object utifrån ett visst id
    this.getArticleObject = function(elementId) {
        for (i = 0; i < inst.articleArray.length; i++) {                
            if (inst.articleArray[i].id == elementId) {
                return inst.articleArray[i];
            }
        }        
        return null;
    };
    
    // Startar eller stoppar det automatiska bildspelet
    // delay: hur länge varje artikel ska visas (minst 1000 ms)
    // valfri parameter - button: referens till play-knappen så att ikonen kan bytas för att reflektera statusen på bildspelet
    this.toggleAuto = function(delay) {
        if (inst.timer === null) {            
            if (arguments.length > 1) {
                inst.start(delay, arguments[1]);
            } else {
                inst.start(delay);
            }
        } else {            
            if (arguments.length > 1) {
                inst.stop(arguments[1]);
            } else {
                inst.stop();
            }
        }
    };
    
    // Startar bildspelet
    this.start = function(delay) {
        inst.delay = Math.max(1000, delay);
        inst.timer = setInterval(inst.auto, inst.delay);
        if (arguments.length > 1) {
            var buttonElement = arguments[1];
            if (buttonElement !== null) {
                buttonElement.src = this.pauseButton.src;
                buttonElement.alt = this.pauseButton.alt;
                buttonElement.title = this.pauseButton.title;
            }
        }
    };
    
    // Stoppar bildspelet
    this.stop = function() {
        clearInterval(inst.timer);
        inst.timer = null;
        if (arguments.length > 0) {
            var buttonElement = arguments[0];
            if (buttonElement !== null) {
                buttonElement.src = this.playButton.src;
                buttonElement.alt = this.playButton.alt;
                buttonElement.title = this.playButton.title;
            }
        }
    };
    
    // Anger hur många tumnaglar som ska visas
    // index: startindex (0 är första tumnageln)
    // length: anger hur många tumnaglar som ska visas
    this.setThumbRange = function(index, length) {
        index = parseInt(index, 10);
        length = parseInt(length, 10);
        inst.thumbRangeStart = isNaN(index) ? null : Math.max(0, index);
        inst.thumbRangeLength = isNaN(length) ? null : Math.max(0, length);                             
    };
    
    this.setThumbnailVisibility = function(start, length) {        
        if (start !== null && length !== null) {
            start = parseInt(start, 10);
            length = parseInt(length, 10);
            if (isNaN(start) || isNaN(length)) {
                return null;
            }
            
            var array = inst.articleArray;            
            for (var i = 0; i < inst.articleArray.length; i++) {
                var thumbnailId = String(inst.articleArray[i].id) + "_thumb";
                var element = document.getElementById(thumbnailId);
                if (element !== null) {
                    if (i >= start && i < (start + length)) {                        
                        element.style.position = "static";
                        element.style.visibility = "visible";
                    } else {                        
                        element.style.position = "absolute";
                        element.style.visibility = "hidden";
                    }
                }                
            }
        }
    };
    
    // Callback-metod för det automatiska bildspelet
    this.auto = function() {
        inst.show(1);              
    };
    
    // Uppdaterar bildspels-blocket med den aktuella bilden
    this.update = function() {
        var slideshowObj = inst.articleArray[inst.currentSlideshowArticleIndex];
        if (slideshowObj !== null) {
            inst.show(slideshowObj.id);
        }
        
        inst.setThumbnailVisibility(inst.thumbRangeStart, inst.thumbRangeLength, true);
    };
    
    // Returnerar indexet för den aktuella bilden (0-baserat)
    this.currentImage = function() {
        return inst.currentSlideshowArticleIndex;
    };
    
    this.currentArticle = function() {
        return inst.articleArray[inst.currentSlideshowArticleIndex];
    };
}

function HeaderMenu(imagePath, namePrefix, hoverSuffix, activeSuffix, imageExtension, startIndex, numImages) {
    this.imageArray = [];
    this.isIE = $.browser.msie;
    var inst = this;
        
    for (img = startIndex; img < (startIndex + numImages); img++) {
        var menuObject = new Object();
        menuObject.normal = new Image();
        menuObject.normal.src = imagePath + namePrefix + String(img) + imageExtension;
        menuObject.hover = new Image();
        menuObject.hover.src = imagePath + namePrefix + String(img) + hoverSuffix + imageExtension;
        menuObject.active = new Image();
        menuObject.active.src = imagePath + namePrefix + String(img) + activeSuffix + imageExtension;        
        inst.imageArray[String(namePrefix) + String(img)] = menuObject;
    }
    
    // Byter en bild i srcImage mot en annan
    this.swapImage = function(swapTo, srcImage) {
        var menuObject = inst.imageArray[srcImage.id];        
        if  (menuObject !== null) {
            if (swapTo == "hover") {
                srcImage.src = menuObject.hover.src;
            } else if (swapTo == "active") {
                srcImage.src = menuObject.active.src;
            } else { // swapTo == "normal"
                srcImage.src = menuObject.normal.src;
            }
        }
    };
    
    this.swapActiveImage = function(eventObject) {
        inst.swapImage("active", inst.isIE ? eventObject.srcElement : eventObject.currentTarget);        
    }
    this.swapNormalImage = function(eventObject) {
        inst.swapImage("normal", inst.isIE ? eventObject.srcElement : eventObject.currentTarget);
    }
    this.swapHoverImage = function(eventObject) {
        inst.swapImage("hover", inst.isIE ? eventObject.srcElement : eventObject.currentTarget);
    }
}

function trim(input) {
    if (input) {
        return input.replace(/^\s*/, "").replace(/\s*$/, "");
    } else {
        return "";
    }
}

// Lägg till en trim funktion till String
String.prototype.trim = function () {
    return trim(this.valueOf());
}


// Jämför en sträng med en annan och returner om de är lika eller ej
// valfri andra parameter: ignoreCase (default false)
String.prototype.equals = function(other) {        
    if (this.valueOf().length != other.toString().length) {
        return false;
    }
    var a = this.toString();
    var b = other.toString();
    if (arguments.length > 1 && arguments[1]) {
        // Case insensitive
        a = a.toLowerCase();
        b = b.toLowerCase();   
    }
    
    for (var i = 0; i < a.length; i++) {
        if (a.charAt(i) != b.charAt(i)) {
            return false;
        }
    }
    
    return true;
}


function isValidEmail(input) {
    return input !== null && input.length > 0 && input.search(/^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/gi) >= 0;
}

String.prototype.isEmail = function() {
    return isValidEmail(this.valueOf());
}

// Valideringsfunktion för sökformuläret
function SearchFormValidate() {
	var noChoicesMade = "Du har inte gjort några val";
	var monthNeedsYear = "Om du väljer månad måste du också välja år";

	var yearElement = $("#Search_Year");    
	var monthElement = $("#Search_Month");
	var textElement = $("#Search_Text");
	if (yearElement !== null && monthElement !== null && textElement !== null) {
		var year = parseInt(yearElement.val(), 10);
		var month = parseInt(monthElement.val(), 10);
		
		// Månad kräver år
		if (month > 0 && year == 0) {
			alert(monthNeedsYear);
			return false;
		}
		
		// Fritext måste vara ifyll om inte månad eller år är ifyllda
		if (month == 0 && year == 0 && textElement.val().trim().length == 0) {
			alert(noChoicesMade);
			return false;
		}
		
		return true;

	} else {
		return false;
	}	
}

// Ladda huvudmenyn
var menu = null;
function loadMenu() {
   try {
       if (menu === null) {
            menu = new HeaderMenu("images/header/", "meny_", "_hover", "_aktiv", ".gif", 2, 9);
            
            // Lägg till attributen        
            for (var i = 0; i < 9; i++) {
                var imgElement = document.getElementById("meny_" + String(i + 2));
                if (imgElement !== null) {            
                    if (imgElement.src.indexOf("_aktiv") != -1) {
                        if (menu.isIE) {
                            imgElement.attachEvent("onmouseout", menu.swapActiveImage);
                        } else {
                            imgElement.addEventListener("mouseout", menu.swapActiveImage, false);
                        }
                    } else {
                        if (menu.isIE) {
                            imgElement.attachEvent("onmouseout", menu.swapNormalImage);
                        } else {
                            imgElement.addEventListener("mouseout", menu.swapNormalImage, false);
                        }
                    }
                    if (menu.isIE) {
                        imgElement.attachEvent("onmouseover", menu.swapHoverImage);
                    } else {
                        imgElement.addEventListener("mouseover", menu.swapHoverImage, false);
                    }
                }
            }
        }
    } catch (Error) { }
    
    return true;
}

function pollFormValidate() {    
    if ($("input[@type=radio][@name=QOTD_Answer][@checked]").val() !== null) {
        return true;        
    } else {   
        alert("Du har inte valt något svar!");
        return false;
    }
}

function alreadyVoted() {
    alert("Du har redan röstat på den här frågan!");
    return false;
}

function openWindow(url, width, height) {
    return window.open(url, "_blank", "directories=0,height=" + height + ",width=" + width + ",location=0,scrollbars=1,status=0,toolbar=0", true);
}

function printObject(objectId, queryKey) {
    objectId = parseInt(objectId, 10);
    if (!isNaN(objectId) && objectId > 0) {        
        window.open("Print.aspx?" + queryKey + "=" + objectId, "_blank", "directories=0,scrollbars=1,status=0,toolbar=0,width=510,height=500");
    }
}

function flashObject(moviePath, width, height) {
    return '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="' + width + '" height="' + height + '">'+
          '<param name="movie" value="' + moviePath  + '" />'+
          '<param name="quality" value="high" />'+
          '<param name="menu" value="false" />'+
          '<param name="loop" value="true" />'+
          '<param name="wmode" value="opaque" />'+
          '<embed src="' + moviePath  + '" width="' + width + '" height="' + height + '" loop="true" wmode="opaque" quality="high" pluginspage="http://www.adobe.com/go/getflashplayer" type="application/x-shockwave-flash" menu="false"></embed>'+
        '</object>';
}

function audioObject(fileUrl, mimeType) {
    return '<embed src="' + fileUrl + '" width="400" height="20" autoplay="true" loop="false" type="' + mimeType + '"></embed>';
}


function documentWriteln(output) {
    document.writeln(output);
}

function reloadPage() {
    document.location.href = document.location.href;
}

// För spamskydd
function sendMessage(username, hostname) {
    document.location.href = "mailto:" + username + "@" + hostname;
}

// För spamskydd
function getMail(username, hostname) {
    return username + "@" + hostname;
}

//Byter en bilds källbild
function swap(id, imgPath) {
    $("#" + id).attr("src", imgPath);
}

//
function windowHeight(){
	var alto= 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		alto= window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		alto= document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		alto= document.body.clientHeight;
	}
	return alto;
}

function SetWindowHeight()
{
    setTimeout('SetWindowHeightGO()',0);
}
function SetWindowHeightGO()
{
    var _windowHeight = windowHeight();
    var RefDiv = document.getElementById('Page');
    RefDiv.style.height = 'auto';
	var _height = RefDiv.offsetHeight;

    if(_height<_windowHeight)
    {
        RefDiv.style.height = _windowHeight + 'px';
    }
}

// Sätt maxvidd på textarea
//Använd <textarea id="text" name="text" maxlength="1250"></textarea>
// Kalla setMaxLength() i body-onload
//-- http://www.quirksmode.org/dom/maxlength.html
function setMaxLength() {
	var x = document.getElementsByTagName('textarea');
	var counter = document.createElement('div');
	counter.className = 'counter';
	for (var i=0;i<x.length;i++) {
		if (x[i].getAttribute('maxlength')) {
			var counterClone = counter.cloneNode(true);
			counterClone.relatedElement = x[i];
			counterClone.innerHTML = '<span>0</span>/'+x[i].getAttribute('maxlength');
			x[i].parentNode.insertBefore(counterClone,x[i].nextSibling);
			x[i].relatedElement = counterClone.getElementsByTagName('span')[0];

			x[i].onkeyup = x[i].onchange = checkMaxLength;
			x[i].onkeyup();
		}
	}
}

function checkMaxLength() {
	var maxLength = this.getAttribute('maxlength');
	var currentLength = this.value.length;
    
    if (currentLength > maxLength)
    {        
        currentLength = maxLength;
	    this.value = this.value.substring(0,currentLength);		
	}
	this.relatedElement.firstChild.nodeValue = currentLength;
	// not innerHTML
}

function scrollToTheTop(iDoScroll)
{
	try
	{
		if(iDoScroll == 0)
			return;
			
		try
		{
			parent.scrollTo(0, document.anchors["theTop"].y);
		}
		catch(e)
		{
			//alert(e.toString());
		}
		
		try
		{
			document.all.theTop.scrollIntoView();
		}
		catch(e)
		{
			//alert(e.toString());
		}
		
		try
		{
			window.parent.scroll(0, 0);
		}
		catch(e)
		{
			//alert(e.toString());
		}
		
		if(ns4)
		{
			parent.scrollTo(0, document.anchors["theTop"].y);
		}
		else if(ie4 || ie5)
		{
			document.all.theTop.scrollIntoView();
		}
		else
		{
			window.parent.scroll(0, 0);
		}
	}
	catch(e)
	{
		//alert(e.toString());
	}
}

//Från w3schools
function setCookie(c_name,value,expiredays)
{
    var exdate=new Date();
    exdate.setDate(exdate.getDate()+expiredays);
    document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : "; expires="+exdate.toGMTString());
}

function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    { 
    c_start=c_start + c_name.length+1 ;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length
    return unescape(document.cookie.substring(c_start,c_end));
    } 
  }
return ""
}
