/*===============================================================*/
/* Copyright (c) CuteStudio Ltd. 2004-2006, All Rights Reserved. */
/*===============================================================*/

var memdelim = ",";
var rte_agent_info = navigator.userAgent.toLowerCase();
var isGecko = (rte_agent_info.indexOf("gecko") != -1);
var isOpera = (rte_agent_info.indexOf("opera") != -1);
var isSafari = (rte_agent_info.indexOf("safari") != -1);
var isFirefox = (rte_agent_info.indexOf("firefox") != -1);
var isKonqueror = (rte_agent_info.indexOf("konqueror") != -1);
var isIE = (document.all) ? !isOpera : false;
function memstore(formname)
{
var memform = "jsmem";
var mem = document.forms[memform];
if (mem)
{
var str = mem.mem.value;
if (str)
{
var dest = document.forms[formname];
if (dest) dest.mem.value = str;
}

}

return true;
}

function memmanage(name, val, set)
{
var ans = '';
var memform = "jsmem";
var form = parent.document.forms[memform];
if (!form) form = document.forms[memform];
if (form)
{
var memory = new Array();
var str = form.mem.value;
if (str)
{
var items = str.split(memdelim);
for (var i=0; i<items.length; i+=2)
memory[items[i]] = items[i+1];
}

if (set)
{
var list = new Array();
memory[name] = val;
for (var key in memory)
{
list.push(key);
list.push(memory[key]);
}

form.mem.value = list.join(memdelim);
}

else if (memory[name])
ans = memory[name];
}

return ans;
}

function memfind(name) { return memmanage(name, '', false); }

function mempush(name, val) { return memmanage(name, val, true); }

String.prototype.ucFirst = function () {
return this.substr(0,1).toUpperCase() + this.substr(1,this.length);
}

function txt(str) {
document.write(str);
}

function number(n) {
var teen = (n / 10) & 1;
var pfx = ['th','st','nd','rd'];
var p = 'th';
if (!teen && (n%10 < 4))
p = pfx[n%10];
return String(n) + p;
}

function cm_to_imp(cm)
{
var inch = cm / 2.54;
var feet = parseInt(inch/12);
var four = parseInt(4 * (inch - (feet * 12)));
var frac = '';
switch(four & 0x3)
{
case 1: frac = "&frac14;"; break;
case 2: frac = "&frac12;"; break;
case 3: frac = "&frac34;"; break;
}

return feet + "'" + parseInt(four/4) + frac;
}

function nlist(a,b,dflt,type) {
var inc = (a<b) ? 1 : -1;
var len = (a<b) ? b-a : a-b;
var month = new Array('January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December');
var desc = '';
for (var i=0; i<=len; i++)
{
var opt = (a == dflt) ? 'selected="selected" ' : '';
switch(type)
{
case "teen": desc = number(a); break;
case "month": desc = month[a-1]; break;
case "cm": desc = a + 'cm, ' + cm_to_imp(a) + '"'; break;
default: desc = a; break;
}

txt('<option '+opt+'value="'+a+'">'+desc+'</option>');
a += inc;
}

return true;
}

function itemlist(values,desc,dflt)
{
for (var i=0; i<values.length; i++)
{
var opt = (values[i] == dflt) ? 'selected="selected" ' : '';
txt('<option '+opt+'value="'+values[i]+'">'+desc[i].ucFirst()+'</option>');
}

return true;
}

function entry_hidden(name, value)
{
txt('<input type=hidden name="'+name+'" value="'+value+'">');
return true;
}

function remember(names,values)
{
for (var i=0; i<names.length; i++)
entry_hidden(names[i], values[i]);
return true;
}

function no_extension(str)
{
var index = str.indexOf('.');
if (index != -1)
str = str.substring(0, index);
return str;
}

function ms_colour(colour)
{
var len = colour.length;
if ((len == 4) && (colour.charAt(0) == '#'))
{
colour = '#' + colour.charAt(1) + colour.charAt(1) +

colour.charAt(2) + colour.charAt(2) +

colour.charAt(3) + colour.charAt(3);
}

return colour;
}

function rnd_style(num, outer, inner, text, file)
{
var in_is_colour = (inner.indexOf('.') == -1);
var out_is_colour = (outer.indexOf('.') == -1);
var t_bg =  (!in_is_colour) ? 'background: url('+root_images+'/'+inner+') repeat;' : '';
var c_bg =  (in_is_colour)  ? 'background: '+ms_colour(inner)+';' : '';
var nc_bg = (in_is_colour && out_is_colour) ? ms_colour(inner) : '';
txt('table.r_'+num+' { width: 100%; color: '+text+'; text-align: left; margin: 0px; padding: 0px;');
txt( t_bg+'border-collapse: collapse; }');
txt('table.r_'+num+' a { color: '+text+'; margin: 0; padding: 0; border: solid '+ms_colour(inner)+' 0px;}');
var b = 'background:'+nc_bg+' url('+file+') no-repeat';
txt('td.r_tl'+num+' { width: 8px; height: 8px; '+b+' top left;}');
txt('td.r_tm'+num+' { height: 8px; '+c_bg+'}');
txt('td.r_tr'+num+' { width: 8px; height: 8px; '+b+' top right;}');
txt('td.r_ml'+num+' { width: 8px;'+c_bg+'}');
txt('td.r_mm'+num+' { '+c_bg+'}');
txt('td.r_mr'+num+' { width: 8px;'+c_bg+'}');
txt('td.r_bl'+num+' { width: 8px; height: 8px; '+b+' bottom left;}');
txt('td.r_bm'+num+' { height: 8px;'+c_bg+'}');
txt('td.r_br'+num+' { width: 8px; height: 8px; '+b+' bottom right;}\n');
return true;
}

function misc_style(bgnd)
{
var ch = bgnd.charAt(0);
var col =  (ch == '#') ? bgnd : '#888888';
col = ms_colour(col);
txt('a:visited, a:link { color: '+col+';');
txt(' background:transparent; border: 0px; }');
return true;
}

function define_rnds(style, bgnd, bgnd_text, mid, mid_text, top, top_text, block, block_text,
corner1, corner2, corner3)
{
txt('<style type="text/css">');
var ch = bgnd.charAt(0);
if (ch == '#') txt('body { background: '+ms_colour(bgnd)+'; color: '+bgnd_text+';}');
else txt('body { background: url('+root_images+'/'+bgnd+') repeat; color: '+bgnd_text+';}');
rnd_style('1', bgnd, mid, mid_text, corner1);
rnd_style('2', mid,  top, top_text, corner2);
rnd_style('3', bgnd, block, block_text, corner3);
misc_style(block);
txt('</style>');
return true;
}

function rnd_o(la) {
var img = '<img height=8 width=8 src="'+root_images+'/t.gif">';
txt('<table class="r_'+la+'"><tr>');
txt('<td class="r_tl'+la+'">'+img+'</td>');
txt('<td class="r_tm'+la+'"></td>');
txt('<td class="r_tr'+la+'">'+img+'</td>');
txt('</tr><tr>');
txt('<td class="r_ml'+la+'"></td>');
txt('<td class="r_mm'+la+'">');
return true;
}

function rnd_c(la) {
var img = '<img height=8 width=8 src="'+root_images+'/t.gif">';
txt('</td><td class="r_mr'+la+'"></td>');
txt('</tr><tr>');
txt('<td class="r_bl'+la+'">'+img+'</td>');
txt('<td class="r_bm'+la+'"></td>');
txt('<td class="r_br'+la+'">'+img+'</td>');
txt('</tr></table>');
return true;
}

var g_formname;
function form_find(name)
{
g_formname = name;
if (!name)
{
if (f_lan) alert('missing form name');
return null;
}

else 
{
var form = document.forms[name];
if (!form && f_lan) alert('form "'+name+'" not found');
return form;
}

}

function form_set_value(form, field, value)
{
var elem = form.elements[field];
if (!elem)
{
if (f_lan) alert('element "'+field+'" missing in form "'+g_formname+'"');
return false;
}

elem.value = value;
return true;
}

function form_get_value(form, field)
{
var elem = form.elements[field];
if (!elem)
{
if (f_lan) alert('element "'+field+'" missing in form "'+g_formname+'"');
return false;
}

return elem.value;
}

function form_set_checkbox(form, field, value)
{
if (form)
{
var elem = form.elements[field];
if (!elem)
{
if (f_lan) alert('element "'+field+'" missing in form "'+g_formname+'"');
return false;
}

elem.checked = value;
return true;
}

return false;
}

function form_get_checkbox(form, field)
{
var elem = form.elements[field];
if (!elem)
{
if (f_lan) alert('element "'+field+'" missing in form "'+g_formname+'"');
return false;
}

return elem.checked;
}

function goto_page(page)
{
var form = form_find('leftmenu');
if (form)
{
form.action = page;
form.submit();
return true;
}

return false;
}

function left_action(page, button)
{
var form = form_find('leftmenu');
if (form)
{
if (button)
form_set_value(form, 'jscmd', button);
form.action = page;
form.submit();
return true;
}

return false;
}

function form_action(formname, action)
{
form = form_find(formname);
if (form) form.action = action;
return true;
}

function goto_profile(id, formname)
{
g_formname = formname;
var form = document.forms[formname];
if (!form) form = parent.document.forms[formname];
if (form)
{
form.action = 'profile.php';
if (form_set_value(form, 'p_id', id))
form.submit();
}

else if (f_lan)
{
if (form)
alert('Form '+formname+' not found');
else 
alert('No Form is present here');
}

return true;
}

var msg_gender_list = new Array();
function pl_hilite(cell, sel)
{
if (cell)
{
var need = cell.className;
var left = (need.indexOf("l_") == 0); if (left) need = need.substr(2);
if (need.charAt(0) == "s") need = need.substr(1);
if (sel) need = "s" + need;
if (left) need = "l_" + need;
if (cell.className != need) cell.className = need;
}

return true;
}

function pl_hl(idx, length, on, lnum)
{
for (var i=0; i<length; i++)
{
var sel = (on && (i == idx));
var cell = document.getElementById('l'+lnum+"_"+i);
pl_hilite(cell, sel);
cell = document.getElementById('r'+lnum+"_"+i);
pl_hilite(cell, sel);
}

return true;
}

function list_manage(formname, listname, op, conf)
{
var form = form_find(formname);
if (form.p_id.value)
{
var ok = (conf) ? confirm(conf) : true;
if (ok)
{
if (form_set_value(form, 'jscmd', op)
&& form_set_value(form, 'list', listname))
{
form.submit();
return true;
}

}

}

return false;
}

function msg_list_refresh() {
var frame = frames['list'];
if (!frame) frame = parent.frames['list'];
if (frame)
{
var loc = frame.location.href;
frame.location.href = loc;
}

return true;
}

function msg_action(cmd) {
var form = document.mailbox;
var mid = memfind("m_mid");
var sid = form.sid.value;
var next = form.nextdel.value;
var boxtype = form.boxtype.value;
if (mid)
{
var get = 'messages.php?cmd='+cmd+'&sid='+sid+'&mid='+mid

+ '&next='+next+'&m_mailbox='+boxtype;
frames['list'].location.href = get;
}

return false;
}

var reverse=true;
function msg_list(sid, args, boxtype) {
reverse = !reverse;
var rev = (reverse) ? 1 : 0;
var loc = 'messages.php?cmd=list&sid='+sid

+ '&m_mailbox='+boxtype+'&reverse='+rev+'&'+args;
frames['list'].location.href = loc;
return true;
}

function msg_setcounts(unread)
{
var span = parent.document.getElementById('mail_info');
if (span)
{
var html = (midlist.length == 1) ? parent.lang_intro : parent.lang_intros;
html = html.replace(/%s/, parent.lang_name);
html = html.replace(/%d/, midlist.length);
var note = (unread > 0) ? ' <b>' + parent.lang_new.replace(/%d/, unread) + '</b> ' : '';
html = html.replace(/%s/, note);
span.innerHTML = html + ' ';
}

return true;
}

function msg_show(idx)
{
var mid = midlist[idx];
mempush('m_mid', mid);
var form = parent.document.mailbox;
var unread = 0;
for (var i=0; i < midlist.length; i++)
{
var clas = null;
var g = miglist[i];
switch(g)
{
case 'm': clas = 'male'; break;
case 'f': clas = 'female'; break;
default:  clas = 'other'; break;
}

if (i == idx)
{
clas = 's' + clas;
if (mislist[i] == "t")
{
mislist[i] = "f";
var node = document.getElementById('tr_'+i);
if (node && (node.className != 'old')) node.className = 'old';
}

}

var lclas = 'l_' + clas;
var node = document.getElementById('l_'+i);
if (node && (node.className != lclas)) node.className = lclas;
node = document.getElementById('m_'+i);
if (node && (node.className != clas)) node.className = clas;
node = document.getElementById('r_'+i);
if (node && (node.className != clas)) node.className = clas;
if (mislist[i] == "t") unread++;
}

msg_setcounts(unread);
var get = 'messages.php?cmd=msg&sid='+sid+'&mid='+mid

+ '&m_mailbox='+boxtype;
parent.msg_who = minlist[idx];
parent.frames['msg'].location.hash = 'r' + mid;
parent.frames['msg'].location.href = get;
if (form)
{
form.p_id.value   = miilist[idx];
form.p_mid.value  = mid;
form.p_usr.value  = miulist[idx];
form.p_name.value = minlist[idx];
form.p_notify.value = miwlist[idx];
if (form.Reply) form.Reply.disabled = false;
form.Delete.disabled = false;
form.Unread.disabled = false;
var next = 0;
idx = Math.floor(idx);
if ((idx+1) < midlist.length)
next = midlist[idx + 1];
else if (idx > 0)
next = midlist[idx - 1];
form.nextdel.value = next;
}

return true;
}

function jump_later(page,ms)
{
setTimeout('location.href="'+page+'";', ms);
return true;
}

function popup(url)
{
window.open (url, 'foo', 'width=640,height=480,scrollbars=yes,resizable=1');
return true;
}

function help(subject)
{
return true;
}

var ff_form=null;
var ff_elem=null;
function focussing()
{
if (ff_form && ff_elem)
{
var f = document.forms[ff_form];
if (f)
{
var e = f.elements[ff_elem];
if (e) e.focus();
}

}

return true;
}

function setfocus(form, elem)
{
ff_form = form;
ff_elem = elem;
return true;
}

function check_versions()
{
if (build_ver && js_ver && (build_ver != js_ver))
{
alert("CuteDating has been updated, please press the REFRESH/RELOAD"

+ " button on your browser");
}

return true;
}

var group_oldaction = null;
function form_command(formname, action, cmd, field, value)
{
form = form_find(formname);
if (form)
{
if (form_set_value(form, 'jscmd', cmd)
&& form_set_value(form, field, value))
{
if (action) form.action = action;
form.submit();
}

}

return true;
}

function form_set_and_submit(formname, field, value)
{
form = form_find(formname);
if (form && form_set_value(form, field, value))
{
form.submit();
return true;
}

return false;
}

function textarea_check(tid, maxlen)
{
var ok = true;
var area = document.getElementById(tid);
var desc = document.getElementById('d_'+tid);
if (!maxlen) maxlen = 128;
if (area)
{
var len = area.value.length;
if (len > maxlen)
{
alert("No more space!");
area.value = area.value.substring(0,maxlen-1);
len = maxlen;
ok = false;
}

if (desc)
{
var left = Math.round(100 - 100 * len/maxlen);
desc.innerHTML = 'Space left: '+left+'%';
}

}

else if

(f_lan) alert('area not found '+tid);
return ok;
}
