// Updateprogress
function setupLoader(searchterm)
{
	$(searchterm).removeClass().addClass('loader-inline-r');
}

// PredefinedDescriptions
function predefdesc(regrow, predef) {
    var textBox = $('#' + regrow).find('td.text_wide input').first(),
        hrefText;
    $("#" + predef + " a").each(function() {
        $(this).click(function() {
            hrefText = $(this).text();
            if (textBox.val() == "") {
                textBox.val(hrefText);
            } else {
                textBox.val(textBox.val() + ', ' + hrefText);
            }
        });
    });
}

// Project state persister
function projectPersister(shortcuts, selectproject) {
    var pid = $("#"+selectproject).find("input:checked").val();
    if (pid != null){
        $("#"+shortcuts + " a").each(function() {
            var a = $(this).attr("href") + "#" + pid;
            $(this).attr("href", a);
        });
    }
    var ps = $("#"+selectproject+" input").each(function() {
        var pval = $(this).val();
        $(this).click(function() {
           setHashUrl(pval);
        });
    });
    
    // Set last project
    var projid = getHashUrl();
    if (projid == "") {
        return;
    } else {
        var h = $("#"+selectproject+" input[value='"+projid+"']");
		if (h == null)
		{
			return;
		}
        h.attr("checked", "checked")
        h.click();
    }
}
function singleProjectPersister(selectproject) {
    var pid = $("#" + selectproject).find("input:checked").val();

    // Set last project
    var projid = getHashUrl();
    if (projid == "") {
        return;
    } else {
        var h = $("#" + selectproject + " input[value='" + projid + "']");
        if (h == null) {
            return;
        }
        h.attr("checked", "checked")
        h.click();
    }
}

/* TODO: Remove if not used */
function fillDiagram(selectproject, selectinterval) {
    var url = getHashUrl().split(';');
    if (url[0].length != 36) {
        //console.log('filldiagram returned');
        return;
    }
    var id = url[0];
    var p = $("#" + selectproject + " input[value='" + id + "']");
    if (p == null) {
        return;
    }
    
    p.attr("checked", "checked");
    //p.click();

    $("#" + selectinterval + " input[value='span']").click();
}
function selectDate(selectinterval, selectspan) {
    var url = getHashUrl().split(';');
    if ($("#" + selectinterval + " input[value='span']").attr("checked")) {
        //console.log("hit");
        if (url[1].length == 10 || url[2].length == 10) {
            var ft = $("#" + selectspan + " input.calendar");
            //console.log(ft);
            $(ft[0]).val(url[1]);
            $(ft[1]).val(url[2]);
            //console.log(ft);
            $("#" + selectspan + " input[type='submit']").click();
            setHashUrl(null);
        }
    } else {
        //console.log("dateselect returned");
    }
}
/* remove to here */

// Timechanger
function setupTimechanger(searchterm) {
    $(searchterm).each(function() {
        $(this).unbind().change(function() {
            if ($(this).hasClass('singleselect')) {
                calcSingleTime($(this).attr('id'));
            } else {
                calcTime($(this).attr('id'));
            }
        });
    });
}
function calcSingleTime(searchterm) {
    var parent = $("#"+searchterm).closest("tr");
    var hourString = parent.find("td.time select option:selected").text();
    var total = parent.find("td.number_small input:first");
    total.val(hourString);
}
function calcTime(searchterm) {
    var parent = $("#"+searchterm).closest("tr");

    var both = parent.find("td.time select");
    var left = $(both[0]);
    var right = $(both[1]);
    var total = parent.find("td.number_small input:first");
	
    if(left.val()=="23:30"){
        right.val("23:59")
    }else{
        if(getTimeInt(left)>=getTimeInt(right)){
            var time = (getTimeInt(left) >= "2330") ? "23:59" : $(left).find("option:selected").next().val();
            right.val(time)
        }
    }
    var leftTime = new Date(getMs(left));
    var rightTime = new Date(getMs(right));
    var totalTime = (getTimeInt(left) == "0000" && getTimeInt(right) == "2359") ? 24 : msToHours(rightTime-leftTime);
    total.val(totalTime)
}
function msToHours(a){
    return(Math.round((a*10)/1000/60/60)/10).toFixed(2);
}
function getTimeInt(a){
    return a.val().split(":").join();
}
function getMs(a){
    var b=a.val().split(":");
    return ms=((b[0]*60*60)+(b[1]*60))*1000;
}

// Communication select all button
function selectAllButton(all, items) {
    var ch = 'checked';
    all.bind('click', function() {
        items.each(function() {
            if(all.attr(ch))
                $(this).attr(ch, true);
            else
                $(this).attr(ch, false);
            $(this).bind('click', function() {
                if (!$(this).attr(ch))
                    all.attr(ch, false);
            });
        });
    });
}

// Etc
$.extend({
    getUrlVars: function() {
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
        for (var i = 0; i < hashes.length; i++) {
            hash = hashes[i].split('=');
            vars.push(hash[0]);
            vars[hash[0]] = hash[1];
        }
        return vars;
    },
    getUrlVar: function(name) {
        return $.getUrlVars()[name];
    }
});
// Gets the string after the # in the url
function getHashUrl()
{
    return document.location.hash.replace("#", "");
}
function setHashUrl(str)
{
    return document.location.hash = str;
}

// Rollover
function setupMenu(id) {
	var images = $('#' + id + ' img');
	images.each(function (i) {
		var img = images[i];
		var src = $(images[i]).attr('src');
		var srcHover = src.replace(/(.*)\./, '$1-over.');
		
		// Preload rollover image
		var imgPL = new Image();
		$(imgPL).attr('src', srcHover);
		
		$(img).bind("mouseover", function() {
			$(img).attr("src", srcHover);
		});
		$(img).bind("mouseout", function() {
			$(img).attr("src", src);
		});
	});
}

// jQuery datepicker calendar
function setupCalendar(selector) {
    $(selector).datepicker({
        changeMonth: true,
        changeYear: true,
        currentText: 'Dagens dato',
        dateFormat: 'dd.mm.yy',
        dayNamesMin: ['S&oslash;', 'Ma', 'Ti', 'On', 'To', 'Fr', 'L&oslash;'],
        firstDay: 1,
        monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Des'],
        showAnim: '',
        showWeek: true,
        weekHeader: 'Uke',
        yearRange: 'c-3:c+3'
    });
    $('#ui-datepicker-div').css('display', 'none');
}

// Projects.aspx scripts
function listSelectAll(selector) {
    $(selector).bind("click", function() {
        var checked = $(selector).attr("checked");
        $(selector).closest("div").find("input[type='checkbox']").each(function() {
            $(this).attr('checked', checked);
        });
    });
}

// DropDownList IE width-fix
function fixDropDownLists() {
    if ($.browser.msie) {
        $('select.wide')
            .bind('focus mouseover', function() {
                $(this).addClass('expand').removeClass('clicked');
            })
            .bind('click', function() {
                $(this).toggleClass('clicked');
            })
            .bind('mouseout', function() {
                if (!$(this).hasClass('clicked')) {
                    $(this).removeClass('expand');
                }
            })
            .bind('blur', function() {
                $(this).removeClass('expand clicked');
            });
    }
}

// Confirmation box
function confirmBox(selector) {
    $(selector).click(function() {
        var a = confirm("Er du sikker på at du vil slette dette elementet?");
        return a;
    });
}

function customConfirm(selector, msg) {
    $(selector).click(function() {
        var a = confirm(msg);
        return a;
    });
}

// Image preload
function preloadImages(arrayOfImages) {
    $(arrayOfImages).each(function() {
        $('<img/>')[0].src = this;
    });
}

// Tooltips
function setupTooltips(selector) {
    var posX = 10,
        posY = 20,
        tooltipId = "jqtooltip";
    $(selector)
        .hover(
            function(e) {
                this.t = this.title;
                this.title = "";
                $("body").append("<div id='" + tooltipId + "'>" + this.t + "</span>");
                $("#" + tooltipId)
                    .css("background-color", "#FFF6BF")
                    .css("border", "1px solid #FFD324")
                    .css("color", "#514721")
                    .css("padding", "5px")
                    .css("font-weight", "bold")
                    .css("top", (e.clientY - posY) + "px")
                    .css("left", (e.clientX + posX) + "px")
                    .css("position", "absolute")
            },
	        function() {
	            this.title = this.t;
	            $("#" + tooltipId).remove();
	        }
	    )
	    .mousemove(
	        function(e) {
	            $("#" + tooltipId)
			        .css("top", (e.clientY - posY) + "px")
			        .css("left", (e.clientX + posX) + "px")
	        }
    	)
}

function scrollToSelected(selector) {
    var container = $(selector),
    scrollTo = container.find("input[type='radio']:checked"),
    subtractHeight = container.height() / 2;
    
    container.scrollTop(
        scrollTo.offset().top - container.offset().top - subtractHeight
    );
}
