var STATE_XHR_DISABLED      = -2;

function $(id)
{
    return document.getElementById(id);
}

function setVisible(id, is_visible)
{
    var o = $(id);
    if (o)
        o.style.display = is_visible ? 'block' : 'none';
}


function setClass(id, name)
{
    var o = $(id);
    if (o)
        o.className = name;
}


function showText(div_id, text)
{
    var o = $(div_id);
    if (o)
        o.innerHTML = text;
}

function showErrorLabel(div_id, text)
{
    var o = $(div_id);
    if (o)
        o.innerHTML = text;
        o.style.display = 'block';
}

function select(field) 
{
    field.focus();
    field.select();
}


function handleKeyDown(evt) 
{
    evt = evt || window.event;
    if (evt && evt.keyCode == 27) 
    {
        if (evt.preventDefault) 
        {
            evt.preventDefault();
            evt.stopPropagation();
        } 
        else 
        {
            evt.returnValue = false;
            evt.cancelBubble = true;
        }
        return false;
    }
    return true;
}

function format_size(size, sizes)
{
    size = parseInt(size, 10);
    sizes = sizes || ['B', 'KB', 'MB', 'GB'];
    var i = 0;
    while (i < sizes.length)
    {
        if (size < 1024)
            break;
        if (i != sizes.length - 1)
            size /= 1024;
        ++i;
    }
    if (i == 0)
        return '' + size + 'B';
    return '' + (Math.floor(size * 100) / 100) + ' ' + sizes[i];
}


function setProgress(text, uploaded, total, barWidth)
{
    var percent = Math.floor(100 * uploaded/total);
    var pos = text.indexOf('%p');
    if (pos >= 0)
        text = text.substring(0, pos) + Math.floor(percent) + '%' + text.substring(pos + 2);
    pos = text.indexOf('%t');
    if (pos >= 0)
        text = text.substring(0, pos) + format_size(total) + text.substring(pos + 2);
    pos = text.indexOf('%u');
    if (pos >= 0)
        text = text.substring(0, pos) + format_size(uploaded) + text.substring(pos + 2);
    showText('bar_div', text);

    $('progress').style.width = Math.floor(percent * barWidth /100) + 'px';

}

function short_file_name(name, len)
{
    name = name || '';
    if (name.length > len)
        return name.substring(0, len - 2) + '..';
    else
        return name;
}

function isXHREnabled()
{
    return YAHOO.util.Connect.getConnectionObject() ? true : false;
}

function checkXHR()
{
    if (!isXHREnabled())
    {
        goState(STATE_XHR_DISABLED);
    }
}

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 show_speed_info(paid_by, progress, limit, speed_limit, sent, total, is_upload)
{
    var message = '<div id="speed_txt">';
    var p_speed = $('p_speed').value;
    if (!paid_by)
    {
        if (!progress)
        {
            message += '&nbsp;</div>';
        }
        else
        {
            if (limit && total > 10 * 1024 * 1024)
            {
                message += 'Your speed has been limited to <span class="red"><b>%speed</b></span><br/>The transfer will be completed in<br/><span class="green"><b>%left</b></span></div>';
            }
            else
            {
                message += 'The transfer will be completed in<br/><span class="green"><b>%left</b></span></div>';
            }

        }
        if (total > 10 * 1024 * 1024)
        {
			setVisible('banner_content',1);
			setVisible('apply_buy_div',false);
        }
    }
    else
    {
		setVisible('banner_content', 0);
        if (!progress)
        {
            if (paid_by == 'sender' && is_upload || paid_by == 'recipient' && !is_upload)
            {
                message += 'You are currently using Speed Pass';
            }
            else
            {
                message += 'Your other party uses Speed Pass';
            }
        }
        else
        {
            if (paid_by == 'sender' && is_upload || paid_by == 'recipient' && !is_upload)
            {
                message += 'The transfer will be completed in<br/><span class="green"><b>%left</b></span><br/>';
                message += 'You are currently using Speed Pass';
            }
            else
            {
                message += 'The transfer will be completed in<br/><span class="green"><b>%left</b></span><br/>';
                message += 'Your other party uses Speed Pass';
            }
        }
        message += '</div>';
    }
    $('speed').innerHTML = format_speed(message, sent, total, speed_limit, p_speed);
}

function format_speed(message, sent, total, speed, p_speed)
{
    var actualspeed;
    if (startTime)
    {
        var t = Math.ceil(((new Date()).getTime() - startTime) / 1000);
        if (t > 0)
            actualspeed = Math.ceil(sent / t);
        else
            actualspeed = speed;
    }
    else
        actualspeed = speed;

    var left = total - sent;

    var speed_sizes = ['bps', 'Kbps', 'Mbps'];

    var p = message.indexOf('%actualspeed');
    if (p >= 0)
        message = message.substring(0, p) + format_size(actualspeed * 8, speed_sizes) +  message.substring(p + 12);
    p = message.indexOf('%speed');
    if (p >= 0)
        message = message.substring(0, p) + format_size(speed * 8, speed_sizes) +  message.substring(p + 6);
    p = message.indexOf('%premiumspeed');
    if (p >= 0)
        message = message.substring(0, p) + format_size(p_speed * 8, speed_sizes) + message.substring(p + 13);
    p = message.indexOf('%left');
    if (p >= 0)
        message = message.substring(0, p) + time_left(left, actualspeed) + message.substring(p + 5);
    p = message.indexOf('%premiumleft');
    if (p >= 0)
        message = message.substring(0, p) + time_left(left, p_speed) + message.substring(p + 12);
    return message;

}

function time_left(left, speed)
{
    var s_left = Math.floor(left / speed);
    if (s_left == 0)
        s_left = 1;
    var h_left = Math.floor(s_left / 3600);
    s_left = s_left % 3600;
    var m_left = Math.floor(s_left / 60);
    s_left = s_left % 60;

    if (h_left == 0 && m_left == 0)
        return 'less than 1 min';

    if (s_left > 30)
    {
        m_left++;
        if (m_left == 60)
        {
            m_left = 0;
            h_left++;
        }
    }

    var ret = 'approximately ';
    if (h_left == 1)
        ret += h_left + ' hour ';
    else
    if (h_left > 0)
        ret += h_left + ' hours ';
    if (m_left > 0)
        ret += m_left + ' min';
    return ret;
}

function buy()
{
    var k;
    if ($('getmode'))
        k = 'recipient,' + $('key').value;
    else
        k = 'sender,' + key;
    $('buy_custom').value = k;
    $('buy_form').submit();
    return false;
}

function buy_recovery(pay_type)
{
    var hours;
    var price;
    var description;
    var sel_obj;


    if ($('pass30d').checked)
    {
        hours = 24 * 30;
        price = 19.99;
        description = '30-day Speed Pass';
    }
    else
    if ($('pass7d').checked)
    {
        hours = 24 * 7;
        price = 4.99;
        description = '7-day Speed Pass';
    }
    else
    {
        hours = 24;
        price = 0.99;
        description = '24-hour Speed Pass';
    }



    switch(pay_type)
    {
    	case 'paypal': 
		{ 
            $('custom').value += ',' + hours;
            $('amount').value = price;
            $('payment_description').value = description;

			$('paypal_form').submit(); 
			return false; 
		}

    	case 'amazon': 
		{ 

            $('amazon_custom').value += ',' + hours;
            $('amazon_amount').value = price;
            $('amazon_payment_description').value = description;

			$('amazon_form').submit(); 
			return false; 
		}
	}
}



function choose_paytype(type)
{

     switch(type)
     {
    	case 'paypal': 
		{ 
            $('id_label').innerHTML = 'Your Transaction ID or or Receipt ID:';
            break;
		}

    	case 'amazon': 
		{ 
            $('id_label').innerHTML = 'Your Transaction ID:';
			break;		
		}
	}
}





function restorepass()
{
    var k;
    if ($('getmode'))
        k = 'recipient,' + $('key').value;
    else
    if (key)
        k = 'sender,' + key;
    if (k)
        $('recover_custom').value = k;
    $('recover_form').submit();
    return false;
}

document.onkeydown = handleKeyDown;
