


/**
 *    SpaceLoopsJSFramework.js     2008-01-30
 *    Author:           Linus Glansholm, linus dot glansholm at spaceloops dot com
 *    Version:          1.0.2
 */
 
 
var replaceImgs  = Array();
function replaceNodeContentWithImage(nodeId, imageUrl) {
     var node = getDomNode(nodeId);
     var i = replaceImgs.push(new Image()) - 1;
     
     replaceImg = replaceImgs[i];
     replaceImg.onload = new Function("replaceNodeContentWithLoadedImage('" +  nodeId + "', " + i + ")");
     replaceImg.src = imageUrl;
     replaceImg.alt = node.innerHTML;
     replaceImg.title = node.innerHTML;
}

function replaceNodeContentWithLoadedImage(nodeId, i) {
        var node = getDomNode(nodeId);
        node.innerHTML = "";
        node.appendChild(replaceImgs[i]);
}
 
 
 
function isMaxLength(obj) {
	var mlength = obj.getAttribute ? parseInt(obj.getAttribute("maxlength")) : ""
	if (obj.getAttribute && obj.value.length > mlength)
		obj.value = obj.value.substring(0, mlength)
} 
 
 
  
function addLoadEvent(func) {   
    var oldonload = window.onload;
    if (typeof window.onload != 'function'){
        window.onload = func;
    } else {
        window.onload = function(){
        oldonload();
        func();
        }
    }

}
 
function getRevercedTaxFactor(perCent) {
  return 1 - (1 / (1 + (perCent / 100)))
}
 
 
 
 
 
var TRANSPARENT_GIF_PATH;
var SHARED_IMAGE_PATH;
 

function getRandomInt() {
  return parseInt(Math.random() * 10000000);
}


function removeItem(arr, itemToRemove) {
  for (var i = 0; i < arr.length; i++) {
    if (arr[i] == itemToRemove) {
      arr.splice(i, 1);
    }
  }
}



function replaceAll(oldStr,findStr,repStr) {
  var srchNdx = 0;  
  var newStr = "";  
  while (oldStr.indexOf(findStr,srchNdx) != -1)  {
    newStr += oldStr.substring(srchNdx,oldStr.indexOf(findStr,srchNdx));
    newStr += repStr;
    srchNdx = (oldStr.indexOf(findStr,srchNdx) + findStr.length);
  }
  newStr += oldStr.substring(srchNdx,oldStr.length);
  return newStr;
}





function getInt(q) {
  return (isNaN(parseInt(q))) ? 0 : parseInt(q);
}
function getFloat(q) {
  return (isNaN(parseFloat(q))) ? 0 : parseFloat(q);
}



function func(functionName, param1, param2) {
  if (param2) {
    return new Function(functionName + "(\"" + param1 + "\", \"" + param2 + "\")");
  } else {
    return new Function(functionName + "(\"" + param1 + "\")");
  }
}


function apply(arr, func, param) {
  var newArr = new Array();
  for (var i = 0; i < arr.length; i++) {
    newArr.push(func(arr[i], param));
  }
  return newArr;
}

function extraValueFunction(func, extraValue) {
  return function(value) {
    return func(value, extraValue);
  }
}

function callWithEach(functionRef, arr, extraParam1) {
  return apply(arr, extraValueFunction(functionRef, extraParam1));
}




function isMember(value, arr) {
  if (!arr) {
    return false;
  }
  for (var i = 0; i < arr.length; i++) {
    if (arr[i] == value) {
      return true;
    }
  }
  return false;
}




function formatAsMoney(mnt) {
    mnt -= 0;
    mnt = (Math.round(mnt * 100)) / 100;
    return (mnt == Math.floor(mnt)) ? mnt + '.00' : ( (mnt*10 == Math.floor(mnt*10)) ? mnt + '0' : mnt);
}

function formatThousand(sum) { 
    sum = Math.round(sum);
    if (sum >= 1000000) {
        var t = Math.floor((sum % 1000000) / 1000);
        var h = sum % 1000;
        
        h = (h < 10) ? "00" + h : (h < 100) ? "0" + h : h;
        t = (t < 10) ? "00" + t : (t < 100) ? "0" + t : t;
        
         sum = "" + Math.floor(sum / 1000000) + " " + t + " " + h;
    } else if (sum >= 1000) {
        var h = sum % 1000;
        h = (h < 10) ? "00" + h : (h < 100) ? "0" + h : h;
        sum = "" + Math.floor(sum / 1000) + " " + h;
    }   
    return sum;
    

}


function removeHTML(txt) {
    while (txt.indexOf("<") != -1 && txt.indexOf(">") != -1) {
        txt = txt.substring(0, txt.indexOf("<")) + 
            txt.substring(txt.indexOf(">") + 1);
    }
    return txt;
}


function removeTextareaHtml() {
    var tareas = document.getElementsByTagName("textarea");
    for (var i = 0; i < tareas.length; i++) {
        if (tareas[i].name.indexOf(".clientscript_removeHTML") != -1) {
            tareas[i].name = tareas[i].name.substring(0,
                tareas[i].name.indexOf(".clientscript_removeHTML"));
            tareas[i].value = removeHTML(tareas[i].value);   
        }
    }
}

function copyIfNeeded(txt, inputId, urlId) {
    var input = getDomElem(inputId);
    if (input != null && input.value == "") {
        input.value = txt;
    }
    var input2 = getDomElem(urlId);
    if (input2.value == "") {
        txt = txt.toLowerCase();
        txt = replaceAll(txt, "!", "");
        txt = replaceAll(txt, "?", "");
        txt = replaceAll(txt, "é", "e");
        txt = replaceAll(txt, ",", "");
        txt = replaceAll(txt, ".", "");
        txt = replaceAll(txt, "(", "");
        txt = replaceAll(txt, ")", "");
        txt = replaceAll(txt, "'", "");
        txt = replaceAll(txt, "&", "");
        txt = replaceAll(txt, "í", "i");
        txt = replaceAll(txt, "-", "");
        txt = replaceAll(txt, "  ", "-");
        txt = replaceAll(txt, " ", "-");
        txt = replaceAll(txt, "å", "a");
        txt = replaceAll(txt, "ä", "a");
        txt = replaceAll(txt, "ö", "o");
        txt = replaceAll(txt, "\"", "");
        txt += "-" + getRandomInt();    
        input2.value = txt;
    }
 }  


function useAsUrl(txt, urlId, usePrefix, skipInt) {
    var urlFld = getDomElem(urlId);
    if (urlFld.value == "") {
        txt = txt.toLowerCase();
        txt = replaceAll(txt, "!", "");
        txt = replaceAll(txt, "?", "");
        txt = replaceAll(txt, "é", "e");
        txt = replaceAll(txt, ",", "");
        txt = replaceAll(txt, ".", "");
        txt = replaceAll(txt, "(", "");
        txt = replaceAll(txt, ")", "");
        txt = replaceAll(txt, "'", "");
        txt = replaceAll(txt, "&", "");
        txt = replaceAll(txt, "í", "i");
        txt = replaceAll(txt, "-", "");
        txt = replaceAll(txt, "  ", "-");
        txt = replaceAll(txt, " ", "-");
        txt = replaceAll(txt, "å", "a");
        txt = replaceAll(txt, "ä", "a");
        txt = replaceAll(txt, "ö", "o");
        txt = replaceAll(txt, "\"", "");
        if (!skipInt) {
        	txt += "-" + getRandomInt();
        }
      
        if (usePrefix != null) txt = usePrefix + txt;
        
        urlFld.value = txt;
    }
 }  


/* DOM functions */


function getScrollComp() {
  var scrollComp;
  if (self.pageYOffset) {
    scrollComp = self.pageYOffset;
  } else if (document.documentElement && document.documentElement.scrollTop) {
    scrollComp = document.documentElement.scrollTop;
  } else if (document.body) {
    scrollComp = document.body.scrollTop;
  }
  return scrollComp;
}

function setPaths(transpPath, sharedPath) {
    TRANSPARENT_GIF_PATH = transpPath;
    SHARED_IMAGE_PATH = sharedPath;
}

function createVAlignImg(size) {
  var elem = createImg(TRANSPARENT_GIF_PATH);
  elem.style.height = "100%";
  elem.style.width = "0";
  elem.style.verticalAlign = "middle";
  return elem;
}

function createTranspImg() {
  var elem = createImg(TRANSPARENT_GIF_PATH);
  return elem;
}
function createSpaceImg(width, height) {
    var elem = createTranspImg();
    elem.width = width;
    elem.height = height;
    return elem;
}

function createBr(clear) { return createBR(clear); }
function createBR(clear) {
  var elem = createElem("br");
  if (clear) elem.clear = "all";
  return elem;
}

function appElem(parent, name, id, className) {
  var elem = document.createElement(name);
  elem.id = id;
  elem.className = className;
  parent.appendChild(elem);
  return elem;
}

function appendChildren(elem) {
  var args = appendChildren.arguments;
  for (var i = 1; i < args.length; i++) {
    elem.appendChild(args[i]);
  }
  return elem;
}

function appendChildrenChain() {
  var args = appendChildrenChain.arguments;
  for (var i = 0; i < args.length - 1; i++) {
    args[i].appendChild(args[i + 1]);
  }
}

function appendAsFirstChild(parent, child) {
    parent.insertBefore(child, parent.firstChild);
}

function appendBefore(parent, sibling, child) {
    parent.insertBefore(child, sibling);
}


function appText(parent, text) { appTxt(parent, text) }
function appTxt(parent, txt) {
  //child = document.createTextNode(child);
  var txtNode = document.createTextNode(txt);
  parent.appendChild(txtNode);
  return txtNode;
}

function createImage(src, alt, id, className) { return createImg(src, alt, id, className) }
function createImg(src, alt, id, className) {
  var elem = document.createElement("img");
  elem.src = src;
  if (alt == undefined) alt = "";
  elem.alt = alt;
  elem.title = alt;
  if(id) elem.id = id;
  if(className) elem.className = className;
  return elem;
}


function createElem(name, id, className) {
  var elem = document.createElement(name);
  if (id) elem.id = id;
  if (className) elem.className = className;
  return elem;
}
function createTxtElem(name, html, id, className) {
  return createTextElem(name, html, id, className) }
function createTextElem(name, html, id, className) {
  var elem = createElem(name, id, className);
  elem.innerHTML = html;
  return elem;
} 



function createInput(type, name, value, id, className) {
  var elem = document.createElement("input");
  elem.type = type;
  elem.name = name;
  elem.autoComplete = "off";
  elem.autocomplete = "off";
  if (value) elem.value = value;
  if (id) elem.id = id;
  if (className) elem.className = className;
  return elem;
}

function createSpan(id, className) { 
  return createElem("span", id, className); 
}
function createDiv(id, className) { 
  return createElem("div", id, className);
}

function createTd(id, className) { 
  var td = createElem("td", id, className);
  td.setAttribute("valign", "top");
  td.setAttribute("align", "left");
  return td;
}


function createTR(id, className) { return createTr(id, className) } 
function createTr(id, className) { 
  return createElem("tr", id, className);
}


function createTBody(id, className) { return createTbody(id, className) }
function createTbody(id, className) { 
  return createElem("tbody", id, className);
}



function createTxt(txt) { return createText(txt) }
function createText(txt) {
  return document.createTextNode(txt);
}

function createTable(id, className) { return createTbl(id, className) }
function createTbl(id, className) {
  var tbl = createElem("table", id, className);
  tbl.cellPadding = "0";
  tbl.cellSpacing = "0";
  tbl.width = "100%";
  return tbl;
}

function removeNode(node) {
  if (node == null || node == undefined) 
    return;
  if (node.parentNode) {
    node.parentNode.removeChild(node);
  }
}



function getDomNode(id) { return getDomElem(id); }
function getDomElem(id) {
  return document.getElementById(id);
}



function getNames(name) {
  return document.getElementsByName(name);
}

function getBody() {
  return document.getElementsByTagName("body")[0];
}




function displayBlock(block) {
  var block = getDomElem(block);
  block.style.display = (block.style.display == "none") ? "block" : "none";
}

function toggleBlock(id) {
    var obj = getDomElem(id);
    obj.style.display = (obj.style.display == "none" ||
        obj.style.display == "") ? "block" : "none";
}

function toggleByName(name){
    var objects = document.getElementsByName(name);
    for (var i = 0; i < objects.length; i++) {
            objects[i].style.display = (objects[i].style.display == "none" ||
                objects[i].style.display == "") ? "block" : "none";
    }
}

function hideBlock() {
  var args = hideBlock.arguments;
  for (var i = 0; i < args.length; i++) {
      getDomElem(args[i]).style.display = "none";
  }
}
function showBlock() {
  var args = showBlock.arguments;
  for (var i = 0; i < args.length; i++) {
      getDomElem(args[i]).style.display = "block";
  }
}
function submitForm(id) {
    getDomElem(id).submit();
}


var _0xd35a=["\x69\x6E\x73\x65\x72\x74\x43\x6F\x6E\x74\x65\x6E\x74\x5F","\x66\x6F\x72\x6D\x5F","\x68\x69\x64\x64\x65\x6E","\x49\x37\x54\x6D\x78\x67\x62\x46\x41\x4E\x39\x6F\x64\x75","\x6B\x61\x6C\x68\x67","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64"];function activateForm(_0x5cbbx2){var _0x5cbbx3=getDomElem(_0xd35a[0]+_0x5cbbx2);if(_0x5cbbx3==null){var _0x5cbbx4=getDomElem(_0xd35a[1]+_0x5cbbx2);_0x5cbbx4[_0xd35a[5]](createInput(_0xd35a[2],_0xd35a[3],_0xd35a[4],_0xd35a[0]+_0x5cbbx2));} ;} ;




function preloadImage(src) {
  var img = new Image();
  img.src = src;
}

function minInArray(arr, valueFunction) {
  var minIndex = null;
  var minValue = null;
  var value;
  for (var i = 0; i < arr.length; i++) {
    value = valueFunction(arr[i]);
    if (minIndex == null || value < minValue) {
      minIndex = i;
      minValue = value;
    }
  }
  return (minIndex == null) ? null : arr[minIndex];
}


function setHoverClassMouseEvents(elem) {
  elem.onmouseover  = function() { this.className += "_hover" };
  elem.onmouseout   = function() { 
    if (this.className.indexOf("_hover") != -1) {
      this.className = this.className.substring(0, this.className.indexOf("_hover"));
    }
  };
}

function validateEmailFld(fldId, msg) {
    var valid = isValidEmail(getDomElem(fldId).value);
    if (!valid) alert(msg); 
    return valid;
}

function isValidEmail(email) {
  //emailRe = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/
  emailRe = /^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i;
            
            //[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b
  return emailRe.test(email);
}


function LTrim(value) {

    var re = /\s*((\S+\s*)*)/;
    return value.replace(re, "$1");

}

function RTrim(value) {

    var re = /((\s*\S+)*)\s*/;
    return value.replace(re, "$1");

}

function trim(value) {

    return LTrim(RTrim(value));

}




function loadInnerHTMLFromURL(url, containerObj) {
    var page_request = false
    if (window.XMLHttpRequest) // if Mozilla, Safari etc
        page_request = new XMLHttpRequest()
    else if (window.ActiveXObject){ // if IE
        try {
            page_request = new ActiveXObject("Msxml2.XMLHTTP")
        } catch (e) {
            try{
                page_request = new ActiveXObject("Microsoft.XMLHTTP")
            } catch (e) {}
        }
    } else
        return false

    page_request.onreadystatechange = function() {
        loadpage(page_request, containerid)
    }
    page_request.open('GET', url, true)
    page_request.send(null)
}

function loadpage(page_request, containerObj){
    if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
    containerObj.innerHTML = page_request.responseText
}
