<!--
var BZ_LOCALE = 'bzlocale';

function isEmpty(str) {
    if (undefined != str || null != str) {
        str = trimAll(str);
        for (var x=0; x < str.length; x++) {
            if (str.charAt(x) != ' ') {
                return false;
            }
        }
    }
    return true;
}

function trimAll(str) {
    return str.replace(/^\s+|\s+$/g, '');
}

function setCookie(name, value, expires, path, domain) {
    // expires = days; no expires = for current session only
    if (!isEmpty(name) && !isEmpty(value)) {
        var cookieValue = name + '=' + escape(value);

        if (expires) {
            var now = new Date();
            var expiration = new Date(now.getTime() + (60 * 60 * 24 * 1000));
            cookieValue = cookieValue + ';expires=' + expiration.toGMTString();
        }
        if (path) {
            cookieValue = cookieValue + ';path=' + path;
        }
        if (domain) {
            cookieValue = cookieValue + ';domain=' + domain;
        }
        if ('https:' == window.location.protocol) {
            cookieValue = cookieValue + ';secure';
        }
        document.cookie = cookieValue;
        return true;
    }
    else {
        return false;
    }
}

function getCookie(name) {
    var cookies = document.cookie.split(';');
    var token;
    var key;
    for (x=0; x < cookies.length; x++) {
        token = cookies[x].split('=');
        key = trimAll(token[0]);
        if (key == name) {
            return unescape(trimAll(token[1]));
        }
    }
    return null;
}


// localization

function getLocale() {
    var bzlocale = getCookie(BZ_LOCALE);
    return (null == bzlocale) ? 'en_US' : bzlocale;
}

function setLocale(lang) {
    setCookie(BZ_LOCALE, lang, '1000', "/", "");
}


var langImgs = new Array(10);
var langOverImgs = new Array(10);
var langArrowImgs = new Array(10);
var locales = new Array(10);

langImgs[0] = new Image(123, 20);
langImgs[0].src="/pics/lang/plang_english.gif";
langOverImgs[0] = new Image(123, 20);
langOverImgs[0].src="/pics/lang/plang_english_o.gif";
langArrowImgs[0] = new Image(123, 20);
langArrowImgs[0].src = "/pics/lang/plang_english_a.gif";
locales[0] = "en_US";

langImgs[1] = new Image(123, 20);
langImgs[1].src="/pics/lang/plang_japan.gif";
langOverImgs[1] = new Image(123, 20);
langOverImgs[1].src="/pics/lang/plang_japan_o.gif";
langArrowImgs[1] = new Image(123, 20);
langArrowImgs[1].src = "/pics/lang/plang_japan_a.gif";
locales[1] = "ja_JP";

langImgs[2] = new Image(123, 20);
langImgs[2].src="/pics/lang/plang_tchinese.gif";
langOverImgs[2] = new Image(123, 20);
langOverImgs[2].src="/pics/lang/plang_tchinese_o.gif";
langArrowImgs[2] = new Image(123, 20);
langArrowImgs[2].src = "/pics/lang/plang_tchinese_a.gif";
locales[2] = "zh_TW";

langImgs[3] = new Image(123, 20);
langImgs[3].src="/pics/lang/plang_chinese.gif";
langOverImgs[3] = new Image(123, 20);
langOverImgs[3].src="/pics/lang/plang_chinese_o.gif";
langArrowImgs[3] = new Image(123, 20);
langArrowImgs[3].src = "/pics/lang/plang_chinese_a.gif";
locales[3] = "zh_CN";

langImgs[4] = new Image(123, 20);
langImgs[4].src="/pics/lang/plang_korean.gif";
langOverImgs[4] = new Image(123, 20);
langOverImgs[4].src="/pics/lang/plang_korean_o.gif";
langArrowImgs[4] = new Image(123, 20);
langArrowImgs[4].src = "/pics/lang/plang_korean_a.gif";
locales[4] = "ko_KR";

langImgs[5] = new Image(123, 20);
langImgs[5].src="/pics/lang/plang_french.gif";
langOverImgs[5] = new Image(123, 20);
langOverImgs[5].src="/pics/lang/plang_french_o.gif";
langArrowImgs[5] = new Image(123, 20);
langArrowImgs[5].src = "/pics/lang/plang_french_a.gif";
locales[5] = "fr_FR";

langImgs[6] = new Image(123, 20);
langImgs[6].src="/pics/lang/plang_german.gif";
langOverImgs[6] = new Image(123, 20);
langOverImgs[6].src="/pics/lang/plang_german_o.gif";
langArrowImgs[6] = new Image(123, 20);
langArrowImgs[6].src = "/pics/lang/plang_german_a.gif";
locales[6] = "de_DE";

langImgs[7] = new Image(123, 20);
langImgs[7].src="/pics/lang/plang_spanish.gif";
langOverImgs[7] = new Image(123, 20);
langOverImgs[7].src="/pics/lang/plang_spanish_o.gif";
langArrowImgs[7] = new Image(123, 20);
langArrowImgs[7].src = "/pics/lang/plang_spanish_a.gif";
locales[7] = "es_ES";

langImgs[8] = new Image(123, 20);
langImgs[8].src="/pics/lang/plang_italian.gif";
langOverImgs[8] = new Image(123, 20);
langOverImgs[8].src="/pics/lang/plang_italian_o.gif";
langArrowImgs[8] = new Image(123, 20);
langArrowImgs[8].src = "/pics/lang/plang_italian_a.gif";
locales[8] = "it_IT";

langImgs[9] = new Image(123, 20);
langImgs[9].src="/pics/lang/plang_russian.gif";
langOverImgs[9] = new Image(123, 20);
langOverImgs[9].src="/pics/lang/plang_russian_o.gif";
langArrowImgs[9] = new Image(123, 20);
langArrowImgs[9].src = "/pics/lang/plang_russian_a.gif";
locales[9] = "ru_RU";

langImgs[10] = new Image(123, 20);
langImgs[10].src="/pics/lang/plang_portugese.gif";
langOverImgs[10] = new Image(123, 20);
langOverImgs[10].src="/pics/lang/plang_portugese_o.gif";
langArrowImgs[10] = new Image(123, 20);
langArrowImgs[10].src = "/pics/lang/plang_portugese_a.gif";
locales[10] = "pt_BR";

function selectedLang() {
    try {
        var selectedLangImg = document.getElementById('selectedLangImg');
        if (undefined == selectedLangImg) {
            return;
        }
        selectedLangImg.src = langArrowImgs[0].src;
        if (selectedLangImg) {
            var url = window.location.href;
            for (var i=1; i < locales.length; i++) {
                if (url.indexOf('/' + locales[i] + '/') != -1) {
                    selectedLangImg.src = langArrowImgs[i].src;
                    break;
                }
            }
            selectedLangImg = null;
        }
    }
    catch (error) {
        ;
    }
}

function selectLang(idx) {
   var locale = locales[idx];
   setLocale(locale);
   collapseLandLangPulldown();
   window.location.href = ('en_US' == locale) ? '/' : '/' + locale;
}

function hiLight(langImg, idx, over) {
   langImg.src = (over) ? langOverImgs[idx].src : langImgs[idx].src;
}

function createTooltip(id) {
   var tt = document.createElement("DIV");
   tt.id = id;
   tt.style.border='none';
   tt.style.position='absolute';
   tt.style.backgroundColor='white';
   document.body.appendChild(tt);
   return tt;
}

function findPos(obj) {
	var curleft = 0;
    var curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
    return [curleft,curtop];
}

function getLangPulldownMenu(img) {
    var pdDiv = createTooltip('langselection');
    var pos = findPos(img);
    pdDiv.style.left = (pos[0] - 2) + 'px';
    pdDiv.style.top = (pos[1]+ 21) + 'px';
    return pdDiv;
}

function runLangPulldown(img) {
    var langPulldown = document.getElementById('langselection');
    if (langPulldown != null) {
        collapseLandLangPulldown()
    }
    else {
        expandLangPulldown(img);
    }
}

function collapseLandLangPulldown() {
    var langPulldown = document.getElementById('langselection');
    if (langPulldown != null) {
        langPulldown.style.visibility='hidden';
        document.body.removeChild(langPulldown);
        langPulldown = null;
    }
}

function expandLangPulldown(img) {
    var langPulldown = getLangPulldownMenu(img);
    langPulldown.innerHTML=getPulldownHTML();
    langPulldown.style.visibility='visible';
}

function getPulldownHTML() {
    var pulldownHTML = '<table cellpadding="0" cellspacing="0" border="0" id="langSelection" class="lang_pulldown">';
    pulldownHTML = pulldownHTML.concat('<tr class="lang_pulldown">');
    pulldownHTML = pulldownHTML.concat('<td class="lang_pulldown"><img src="/pics/lang/plang_english.gif" border="0" width="123" height="20" onclick="javascript:selectLang(0)" onMouseOut="javascript:hiLight(this, 0, false)" onMouseOver="javascript:hiLight(this, 0, true)"/></td>');
    pulldownHTML = pulldownHTML.concat('</tr>');
    pulldownHTML = pulldownHTML.concat('<tr class="lang_pulldown">');
    pulldownHTML = pulldownHTML.concat('<td class="lang_pulldown"><img src="/pics/lang/plang_japan.gif" border="0" width="123" height="20" onclick="javascript:selectLang(1)" onMouseOut="javascript:hiLight(this, 1, false)" onMouseOver="javascript:hiLight(this, 1, true)"/></td>');
    pulldownHTML = pulldownHTML.concat('</tr>');
    pulldownHTML = pulldownHTML.concat('<tr class="lang_pulldown">');
    pulldownHTML = pulldownHTML.concat('<td class="lang_pulldown"><img src="/pics/lang/plang_tchinese.gif" border="0" width="123" height="20" onclick="javascript:selectLang(2)" onMouseOut="javascript:hiLight(this, 2, false)" onMouseOver="javascript:hiLight(this, 2, true)"/></td>');
    pulldownHTML = pulldownHTML.concat('</tr>');
    pulldownHTML = pulldownHTML.concat('<tr class="lang_pulldown">');
    pulldownHTML = pulldownHTML.concat('<td class="lang_pulldown"><img src="/pics/lang/plang_chinese.gif" border="0" width="123" height="20" onclick="javascript:selectLang(3)" onMouseOut="javascript:hiLight(this, 3, false)" onMouseOver="javascript:hiLight(this, 3, true)"/></td');
    pulldownHTML = pulldownHTML.concat('</tr>');
    pulldownHTML = pulldownHTML.concat('<tr class="lang_pulldown">');
    pulldownHTML = pulldownHTML.concat('<td class="lang_pulldown"><img src="/pics/lang/plang_korean.gif" border="0" width="123" height="20" onclick="javascript:selectLang(4)" onMouseOut="javascript:hiLight(this, 4, false)" onMouseOver="javascript:hiLight(this, 4, true)"/></td>');
    pulldownHTML = pulldownHTML.concat('</tr>');
    pulldownHTML = pulldownHTML.concat('<tr class="lang_pulldown">');
    pulldownHTML = pulldownHTML.concat('<td class="lang_pulldown"><img src="/pics/lang/plang_french.gif" border="0" width="123" height="20" onclick="javascript:selectLang(5)" onMouseOut="javascript:hiLight(this, 5, false)" onMouseOver="javascript:hiLight(this, 5, true)"/></td>');
    pulldownHTML = pulldownHTML.concat('</tr>');
    pulldownHTML = pulldownHTML.concat('<tr class="lang_pulldown">');
    pulldownHTML = pulldownHTML.concat('<td class="lang_pulldown"><img src="/pics/lang/plang_german.gif" border="0" width="123" height="20" onclick="javascript:selectLang(6)" onMouseOut="javascript:hiLight(this, 6, false)" onMouseOver="javascript:hiLight(this, 6, true)"/></td>');
    pulldownHTML = pulldownHTML.concat('</tr>');
    pulldownHTML = pulldownHTML.concat('<tr class="lang_pulldown">');
    pulldownHTML = pulldownHTML.concat('<td class="lang_pulldown"><img src="/pics/lang/plang_spanish.gif" border="0" width="123" height="20" onclick="javascript:selectLang(7)" onMouseOut="javascript:hiLight(this, 7, false)" onMouseOver="javascript:hiLight(this, 7, true)"/></td>');
    pulldownHTML = pulldownHTML.concat('</tr>');
    pulldownHTML = pulldownHTML.concat('<tr class="lang_pulldown">');
    pulldownHTML = pulldownHTML.concat('<td class="lang_pulldown"><img src="/pics/lang/plang_italian.gif" border="0" width="123" height="20" onclick="javascript:selectLang(8)" onMouseOut="javascript:hiLight(this, 8, false)" onMouseOver="javascript:hiLight(this, 8, true)"/></td>');
    pulldownHTML = pulldownHTML.concat('</tr>');
    pulldownHTML = pulldownHTML.concat('<tr class="lang_pulldown">');
    pulldownHTML = pulldownHTML.concat('<td class="lang_pulldown"><img src="/pics/lang/plang_russian.gif" border="0" width="123" height="20" onclick="javascript:selectLang(9)" onMouseOut="javascript:hiLight(this, 9, false)" onMouseOver="javascript:hiLight(this, 9,true)"/></td>');
    pulldownHTML = pulldownHTML.concat('</tr>');
    pulldownHTML = pulldownHTML.concat('<tr class="lang_pulldown">');
    pulldownHTML = pulldownHTML.concat('<td class="lang_pulldown"><img src="/pics/lang/plang_portugese.gif" border="0" width="123" height="20" onclick="javascript:selectLang(10)" onMouseOut="javascript:hiLight(this, 10, false)" onMouseOver="javascript:hiLight(this, 10, true)"/></td>');
    pulldownHTML = pulldownHTML.concat('</tr>');
    pulldownHTML = pulldownHTML.concat('</table>');
    return pulldownHTML;
}

function autoSenseLang() {
    try {
        var url = window.location.href;
        var locale = getLocale();
        if (undefined == locale) {
            return;
        }
        if ('en_US' != locale && url.indexOf('/' + locale + '/') == -1) {
            window.location.href = '/' + locale;
        }
    }
    catch (error) {
        ;
    }
}

function getLangFromURL() {
    var url = window.location.href;
    var lang = locales[0];
    for (var i=1; i < locales.length; i++) {
        if (url.indexOf('/' + locales[i] + '/') != -1) {
            lang = locales[i];
            break;
        }
    }
    return lang;
}

function getUnique(max) {
    var now = new Date();
    return (now.getMilliseconds() * Math.floor(Math.random()*max+1));
}

function isWin() {
    return (navigator.platform.indexOf('Win') != -1);
}

function isWinXP() {
    return (navigator.userAgent.indexOf("Windows NT 5") != -1);
}

function isVista() {
    return (navigator.userAgent.indexOf("Windows NT 6") != -1);
}

function isMac() {
    return (navigator.platform.indexOf('Mac') != -1);
}

function isMacOS_10_4() {
    return (navigator.userAgent.indexOf("OS X 10.4") != -1 || navigator.userAgent.indexOf("OS X 10_4") != -1);
}

function isMacOS_10_5() {
    return (navigator.userAgent.indexOf("OS X 10.5") != -1 || navigator.userAgent.indexOf("OS X 10_5") != -1); 
}

function isMacIntel() {
    return (navigator.userAgent.indexOf('Intel Mac') != -1);
}

function isMacPowerPC() {
    return (navigator.userAgent.indexOf('PowerPC') != -1 || navigator.userAgent.indexOf('PPC Mac') != -1);
}

function isLinux() {
    return (navigator.platform.indexOf('Linux') != -1);
}

function redirectDownloadPage() {
    if (isMacIntel()) {
        window.location.href = '/download_mac.htm';
    }
    else if (isWin() && isVista()) {
        window.location.href = '/download_vista.html';
    }
}

function isIE() {
    return (navigator.userAgent.indexOf('MSIE') != -1);
}

function getRadioValue(name) {
    var radio = document.getElementsByName(name);
    if (undefined != radio && radio.length > 0) {
        for (var i=0; i < radio.length; i++) {
            if (radio[i].checked) {
                return radio[i].value;
            }
        }
    }
    return null;
}

function getInnerText (node) {
    if (node.textContent != undefined) {
        return node.textContent;
    }
    else if (node.innerText != undefined) {
        return node.innerText;
    }
    else if (node.text != undefined) {
        return node.text;
    }
    else {
        switch (node.nodeType) {
            case 3:
            case 4:
                return node.nodeValue;
                break;
            case 1:
            case 11:
                var innerText = '';
                for (var i = 0; i < node.childNodes.length; i++) {
                    innerText += getInnerText(node.childNodes[i]);
                }
                return innerText;
                break;
            default:
                return '';
        }
    }
}

function writeToInnerHTML(obj, html){
    if (undefined == obj || obj == null) {
        return;
    }

    if (document.getElementById || document.all){
        obj.innerHTML = html;
    }
    else if (document.layers){
        obj.document.open();
        obj.document.write(html);
        obj.document.close();
    }
}

function match(restr, str) {
    if (!isEmpty(restr)) {
        var re = new RegExp(restr);
        return (str.match(re));
    }
    return false;
}

function matchIgnoreCase(restr, str) {
    if (!isEmpty(restr)) {
        var re = new RegExp(restr, 'i');
        return (str.match(re));
    }
    return false;
}


function isAlphanumeric(str) {
    return match('^[0-9a-zA-Z]+$', str);
}

function isNumber(str) {
    return isValid(str, '0123456789.');
}


function isValid(str, validChars) {
    if (isEmpty(str)) {
        return false;
    }
    var character;
    for (i = 0; i < str.length; i++) {
        character = str.charAt(i);
        if (validChars.indexOf(character) == -1) {
            return false;
        }
    }
    return true;
}

function numOfCheckbox(id) {
    var chkboxes = document.forms[0].elements[id];
    if (undefined == chkboxes) {
        return 0;
    }
    else if (undefined != chkboxes && undefined == chkboxes.length) {
        return 1;
    }
    else if (undefined != chkboxes && undefined != chkboxes.length) {
        return chkboxes.length;
    }
}

function numOfElementbyName(name) {
    var count = 0;
    for (var i=0; i < document.forms[0].elements.length; i++) {
        var element = document.forms[0].elements[i];
        if (undefined != element) {
            if ((name == element.name)) {
                count++;
            }
        }
    }
    return count;
}

function isEnter(e) {
    var keyCode;
    if(e && e.which){ //if which property of event object is supported (NN4)
        e = e
        keyCode = e.which //character code is contained in NN4's which property
    }
    else{
        e = event
        keyCode = e.keyCode //character code is contained in IE's keyCode property
    }
    return (keyCode == 13);
}

function addCacheBreakerToURL(url) {
    var ran_number= getUnique(8);
    var firstLetter = (url.indexOf('?')<0) ? '?' : '&';
    return url + firstLetter + 'bznetid=' + ran_number;
}

function i8n(key, id) {
    try {
        $(document).ready(function() {
            $.ajax({
                url: "/api/i8n/" + key,
                type: 'GET',
                cache: false,
                dataType: 'text',
                timeout: 10000,
                success: function(text) {
                    if (undefined == text) {
                        return;
                    }
                    $('#' + id).html(text);
                }
            });
        });
    }
    catch (error) {
        ;
    }
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function autoDownloadLink(imgId) {
    $(document).ready(function() {
        var dlImgLink = document.getElementById(imgId);
        if (isMac()) {
            if (isMacPowerPC()) {
                dlImgLink.href ='download_powerpc.html'
            }
            else {
                dlImgLink.href = '/mac/install_backblaze';
            }
        }
        else {
            dlImgLink.href = '/win32/install_backblaze.exe';
        }
    });
}


//-->