// text on thumb size
var SH=17;

function get(id)
{
    return document.getElementById(id);
}

function uok(src, offset)
{
    var o = document.getElementById("userpicture");
    if (!o)
        return;
    var tmp = new Image;
    tmp.src = src.src;
    var scaled = get_scaled_size(tmp.width, tmp.height, 75, 75, false);
    var rect = get_rect(scaled, 75, 75);
    var html = '<img style="margin: 0px 0px 0px 0px; position: absolute; clip: ' + css_rect(rect) + '" src="' + src.src + '" width="' + scaled[0] + '" height="' + scaled[1] + '" title="' + src.title + '" alt="' + src.alt + '"/>';
    o.style.left = Math.floor(5 + offset + (75 - scaled[0]) / 2) + 'px';
    o.style.top  = Math.floor(4 + offset + (75 - scaled[1]) / 2) + 'px';
    o.innerHTML  = html;
    o.parentNode.style.backgroundImage = 'url(' + ICO_BG + ')';
}

function uerror(src, offset)
{
    var o = document.getElementById("userpicture");
    if (!o)
        return;
    var html = '<img src="' + ICO_NO_PHOTO + '" width="67" height="75" alt="' + src.alt + '" title="' + src.title + '"/>';
    o.style.left = (5 + offset + (75 - 67) / 2) + 'px';
    o.style.top  = (4 + offset) + 'px';
    o.innerHTML  = html;
    o.parentNode.style.backgroundImage = 'url(' + ICO_BG + ')';
}

function quote_html(html)
{
    var ret = '';
    for (var i = 0; i < html.length; i++)
    {
        var c = html.charAt(i);
        switch (c)
        {
            case '>':
                ret += '&gt;';
                break;
            case '<':
                ret += '&lt;';
                break;
            case '"':
                ret += '&quot;';
                break;
            case '&':
                ret += '&amp;';
                break;
            default:
                ret += c;
        }
    }
    return ret;
}

function get_cookie(name) 
{
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

function set_cookie(name, value, days, domain)
{
  if (days)
  {
    var date = new Date();
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    var expires = "; expires=" + date.toGMTString();
  }
  else 
    var expires = "";
  var cstr = name + "=" + value + expires + "; path=/";
  if (domain)
    cstr += '; domain=' + domain;
  document.cookie = cstr;
}

function highlight(field) 
{
  field.focus();
  field.select();
}

function jsstring(src)
{
    var ret = '';
    for (var i = 0; i < src.length; i++)
    {
        var c = src.charAt(i);
        switch (c)
        {
            case '\'':
                ret += '\\\'';
                break;
            case '"':
                ret += '\\"';
                break;
            case '\\':
                ret += '\\\\';
                break;
            default:
                ret += c;
        }
    }
    return ret;
}

function get_rect(dim, max_width, max_height)
{
    var browser_offset = 0;
    var offset = 0;
    return [0, offset + max_width, max_height - browser_offset, offset, offset];
}

function css_rect(rect)
{
    return 'rect(' + rect[0] + 'px,' + rect[1] + 'px,' + rect[2] + 'px,' + rect[3] + 'px)';
}

function image_details_url(user, server, filename, tagname)
{
    var ret = '';
    if(tagname && tagname != '')
    {
        ret += 'tag/' + tagname + '/';
    } 
    ret += server + '/' + filename;
    return ret;
}

function slideshow_details_url(user, id, tagname)
{
    var ret = '';
    if(tagname && tagname != '')
    {
        ret += 'tag/' + tagname + '/';
    } 
    ret += id;
    return ret;
}

function thumb_url(srv, bucket, thumbname, direct)
{
    var id = srv + '/' + bucket + '/' + thumbname;
    if (direct)
        return id;
    return id;
}

function get_scaled_size(width, height, max_width, max_height, crop)
{
    if (width <= max_width && height <= max_height && !crop)
        return [width, height];

    if (crop)
    {
        max_width  += SH;
        max_height += SH;
    }
    height *= 1.0;
    width  *= 1.0;
    k = crop ? Math.max(max_width/width, max_height/height) : Math.min(max_width/width, max_height/height);;
    w = Math.floor(width * k);
    h = Math.floor(height * k);
    if (w == 0)
        w = 1;
    if (h == 0)
        h = 1;
    return [w, h];
}

function noimage_url()
{
    return '';
}

function list_url(user, tagname)
{
    var ret = '/user/' + user + '/images';
    if (tagname != '')
        ret += '/tag/' + encodeURIComponent(tagname);
    return ret;
}

function slideshow_list_url(user, tagname)
{
    var ret = '/user/' + user + '/slideshows';
    if (tagname != '')
        ret += '/tag/' + encodeURIComponent(tagname);
    return ret;
}

function scaled_image_url(server, filename)
{
    var id = '' + server + '/scaled.php?server=' + server + '&filename=' + filename + '&xsize=640&ysize=480';
    return 'http://' + cache_host(id) + '/Himg' + id;
}

function show_links()
{
    var c = get_cookie('myimages');
    var is_user = c && c.length > 0;

    var o = get('hmyshows');
    if (o)
        o.innerHTML = 
            is_user ? 
            "| <a class=\"menu\" href=\"http://my.imageshack.us/slideshow/my_shows.php\">Slideshows</a> " :
            "";
    var o = get('hmyimages');
    if (o)
        o.innerHTML = 
            is_user ? 
            "| <a class=\"menu\" href=\"" + myimages_url() + "\">My Images</a> " :
            "| <a class=\"menu\" href=\"http://my.imageshack.us/registration\">My Images</a> ";
    var o = get('hmyvideos');
    if (o)
        o.innerHTML = 
            is_user ? 
            "| <a class=\"menu\" href=\"http://my.imageshack.us/video/my_videos.php\">Videos</a> " :
            "";
    var o = get('hmyfriends');
    if (o)
        o.style.display = is_user ? 'inline' : 'none';
    var o = get('hmyprefs');
    if (o)
        o.innerHTML = 
            is_user ? 
            "| <a class=\"menu\" href=\"http://profile.imageshack.us/prefs/index.php\">Preferences</a> " :
            "";
    var o = get('hmyvmails');
    if (o)
        o.style.display = is_user ? 'inline' : 'none';
}

function trim(src, length)
{
    if (!src)
        return '';
    if (src.length <= length)
        return src;
    return src.substring(0, length - 2) + '..';
}


function iurl(id, root)
{
    if (typeof USE_IMAGE_CACHE=='undefined' || !USE_IMAGE_CACHE)
    {
        if (!root)
            return id;
        else
            return id;
    }
    return '' + id;
}

function myimages_url()
{
    var c = get_cookie('miMODE');
    if (c != 'classic')
        return 'http://my.imageshack.us/v_images.php';
    return 'http://my.imageshack.us/v_images_old.php';
}

function lightencode(s)
{
    return s.replace('?', '%3F').replace('&', '%26');
}
