﻿function addEvent(elm, evType, fn, useCapture)
// addEvent and removeEvent
// cross-browser event handling for IE5+,  NS6 and Mozilla
// By Scott Andrew
{
    if (elm.addEventListener) {
        elm.addEventListener(evType, fn, useCapture);
        return true;
    } else if (elm.attachEvent) {
        var r = elm.attachEvent('on' + evType, fn);
        return r;
    } else {
        alert('Handler could not be removed');
    }
}

/**
* Sets the correct value to a counter field
* @param field The field
* @param countfield The count field
* @param maxlimit maximum chars in field
*/
function textCounter(field, countfield, maxlimit) {
    var text = field.value.replace(/[\r]/g, '').length;
    var text2 = field.value.replace(/[\r\n]/g, '').length; // Count without \n\r
    var diff = text - text2;

    countfield.value = maxlimit - (text2 + diff * 2);
}

/**
* Prevent HTML input in textboxes.
*/
function validateInput(TextBoxID, ErrorMessage) {
    var TextBox = document.getElementById(TextBoxID).value;
    if (TextBox.indexOf('<') == -1 || TextBox.indexOf('>') == -1) {
        return true;
    } else {
        alert(ErrorMessage);
        return false;
    }
}

/**
* Numbers < 10 should be presented with a character in front
*/
function padLeft(number,character) {
    return (number < 10) ? character + number : number;
}

/**
* Toggles show/hide for an object with it objID.
*/
function showHide(objId) {
    var obj = document.getElementById(objId);

    if (obj.style.display == 'block') {
        obj.style.display = 'none';
    }
    else if (obj.style.display == 'none') {
        obj.style.display = 'block';
    }
}

/**
* Toggles show/hide for an object with it objID
*/
function toggleShowHide(objId, show) {
    var obj = (document.all) ? document.all[objId] : document.getElementById(objId);

    if (show === 0) {
        obj.style.display = 'none';
    }
    else if (show == 1) {
        obj.style.display = 'block';
    }
}

/**
* Performs a sarissa ajax GET request and returns the response as XML.
*/
function performXMLRequest(url, fn) {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open('GET', url, true);
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            fn(xmlhttp.responseXML);
        }
    };
    xmlhttp.send(null);
}
/**
* Performs a sarissa ajax GET request and returns the response as text.
*/
function performTextRequest(url, fn) {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open('GET', url, true);
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            fn(xmlhttp.responseText);
        }
    };
    xmlhttp.send(null);
}
function isXMLHTTPCompatible() {
    return Sarissa.IS_ENABLED_XMLHTTP;
}

function confirmSubmit(message) {
    var MyResult;

    //Your code here, before validation

    if (typeof (Page_ClientValidate) == 'function') {
        Page_ClientValidate();
        MyResult = Page_IsValid;
    }
    else {
        MyResult = true;
    }

    //More of your code here, after validation

    if (MyResult !== false) {
        MyResult = confirm(message);
    }

    return MyResult;
}

function resizeImage2(which, maxWidth) {
    var elem = document.getElementById(which);

    if (elem === undefined || elem === null) {
        return false;
    }
    var orig_width = elem.width;
    var orig_height = elem.height;

    if (maxWidth === undefined) {
        maxWidth = 150;
    }
    if (elem.width > elem.height) {
        if (elem.width > maxWidth) {
            elem.width = maxWidth;
            elem.height = orig_height * (maxWidth / orig_width);
        }
    } else {
        if (elem.height > maxWidth) {
            elem.height = maxWidth;
            elem.width = orig_width * (maxWidth / orig_height);
        }
    }
    return true;
}

function resizeImage(which, whichdiv, maxWidth, maxHeight) {
    var elem = document.getElementById(which);
    var elemdiv = document.getElementById(whichdiv);

    if (elem === undefined || elem === null) {
        return false;
    }
    var newWidth;
    var newHeight;
    var l2;

    if (elem.width < maxWidth && elem.height < maxHeight) {
        newHeight = elem.height;
        newWidth = elem.width;
    }
    else {
        if (maxWidth === undefined) {
            maxWidth = 150;
        }
        if (maxHeight === undefined) {
            maxHeight = 150;
        }
        if ((elem.width / maxWidth) > (elem.width / maxHeight)) {
            l2 = elem.width;
            newWidth = maxWidth;
            newHeight = elem.height * (maxWidth / l2);
            if (newHeight > maxHeight) {
                newWidth = newWidth * (maxHeight / newHeight);
                newHeight = maxHeight;
            }
        }
        else {
            l2 = elem.height;
            newHeight = maxHeight;
            newWidth = elem.width * (maxHeight / l2);

            if (newWidth > maxWidth) {
                newHeight = newHeight * (maxWidth / newWidth);
                newWidth = maxWidth;
            }
        }
    }
    elem.height = newHeight;
    elemdiv.setAttribute('style', 'height:' + newHeight + 'px;');
    elem.width = newWidth;
    return true;
}

function checkBrowserAjaxSupport() {
    var xmlHttp;
    try {
        // Firefox, Opera 8.0+, Safari
        xmlHttp = new XMLHttpRequest();
    }
    catch (e) {
        // Internet Explorer
        try {
            xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
        }
        catch (e) {
            try {
                xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
            }
            catch (e) {
                return false;
            }
        }
    }
    return true;
}


function showSpoiler(id) {
    document.getElementById("spoilshow_" + id).style.display = 'none';
    document.getElementById("spoilhid_" + id).style.display = 'block';
}

function createCookie(name, value, days) {
    var expires;
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        expires = '; expires=' + date.toGMTString();
    } else {
        expires = '';
    }
    document.cookie = name + '=' + value + expires + '; path=/';
}

function readCookie(name) {
    var nameEQ = name + '=';
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) === ' ') {
            c = c.substring(1, c.length);
        }
        if (c.indexOf(nameEQ) === 0) {
            return c.substring(nameEQ.length, c.length);
        }
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, '', -1);
}

function eraseCookies(names) {
    for (var i = 0; i < names.length; i++) {
        eraseCookie(names[i]);
    }
}

/*
* Ticker
*/

var tickerTimer;

function tickerDisplayEvents(text) {
    if (text == 'serverisdown') {
        window.clearInterval(tickerTimer);
    } else {
        if (document.getElementById('ticker') && text.length > 0) {
            document.getElementById('ticker').innerHTML = text;
        }
    }
}

function SucceededCallback(result, userContext, methodName) {
    if (methodName == 'GetNews') {
        tickerDisplayEvents(result);
    } else {
        window.clearInterval(tickerTimer);
    }
}

// Get a generic List.
function tickerGetNews() {
    Ticker.GetNews();
}

// Callback function invoked when the call to 
// the Web service methods fails.
function FailedCallback(error, userContext, methodName) {
    window.clearInterval(tickerTimer);
}

function startTicker() {
    // Assign default values to the generated proxy.
    Ticker.set_defaultUserContext('Default context');
    Ticker.set_defaultSucceededCallback(SucceededCallback);
    Ticker.set_defaultFailedCallback(FailedCallback);
    if (!tickerTimer) {
        tickerTimer = window.setInterval('tickerGetNews()', 60000);
    }
}

/*
* Shortcuts
*/

function scBoxOver() {
    try {
        document.getElementById('scSettingsLink').style.visibility = 'visible';
    }
    catch (e) { }
}

function scBoxOut() {
    try {
        document.getElementById('scSettingsLink').style.visibility = 'hidden';
    }
    catch (e) { }
}


/**
* CLOCK
*/

function getLocalDate(year, month, day, dateFormat) {
if (dateFormat.length < 2) { // When not logged in there is no dateformat
dateFormat = 'yyyy-mm-dd';
}
dateFormat = dateFormat.replace('yyyy', year);
dateFormat = dateFormat.replace('mm', month);
dateFormat = dateFormat.replace('dd', day);
dateFormat = dateFormat.replace('d', day);
dateFormat = dateFormat.replace('m', month);

return dateFormat;
}

/**
* Show online users and clock
*/
function runClock(timeDiff, dateFormat) {
    var now = new Date();

    var newTime;
    newTime = now.getTime() - timeDiff;
    now.setTime(newTime);

    var localDate = getLocalDate(now.getFullYear(), padLeft(now.getMonth()+1,'0'), padLeft(now.getDate(),'0'), dateFormat);

    document.getElementById('time').firstChild.nodeValue = localDate + ' ' + padLeft(now.getHours(), '0') + ':' + padLeft(now.getMinutes(), '0') + ':' + padLeft(now.getSeconds(),'0');

    setTimeout('runClock(timeDiff,"' + dateFormat + '");', 1000);
}

/** 
* Calculates a time difference between client and server, to make js clock to run correctly
*/
function timeDiff(Year, Month, Day, Hour, Minute, Second, dateFormat) {
    var timeDifferense;
    var serverClock = new Date(Year, Month - 1, Day, Hour, Minute, Second);

    var clientClock = new Date();
    var serverSeconds;
    var clientSeconds;
    timeDiff = clientClock.getTime() - serverClock.getTime() - 3000;
    runClock(timeDiff, dateFormat);
}


/* Ajax presence detection */
if (typeof (Sys) !== 'undefined') {
Sys.Application.notifyScriptLoaded();
}

function goAnchor(elementID) {
    if (elementID === '') {
        scroll(0, 0);
    } else {
        var element = document.getElementById(elementID);
        element.scrollTop = element.offsetTop;
    }
}

/* Array.indexOf for IE */
if (!Array.indexOf) {
    Array.prototype.indexOf = function(obj) {
        for (var i = 0; i < this.length; i++) {
            if (this[i] == obj) {
                return i;
            }
        }
        return -1;
    }
}

