/* General scripts */

function getLang()
{
    return undefined === window._lang ? '' : window._lang;
}

function set_action() {
   
    var page = (arguments.length >= 1) ? arguments[0] : '';
    var action = (arguments.length >= 2) ? arguments[1] : '';
    var get_params = (arguments.length >= 3) ? arguments[2] : '';
    var script_name = ((arguments.length >= 4) && (arguments[3] != '')) ? arguments[3] : 'index.php';
    var form_name = ((arguments.length >= 5) && (arguments[4] != '')) ? arguments[4] : 'data';
    var target = ((arguments.length >= 6) && (arguments[5] != '')) ? arguments[5] : '_self';
    var method = ((arguments.length >= 7) && (arguments[6] != '')) ? arguments[6] : 'post';
    
    var lang = getLang();
    
    document.getElementById(form_name).action = '';
    document.getElementById(form_name).target = target;
    
    // change ONLY if method is UNDEFINED or if method is specified DIRECTLY
    if((document.getElementById(form_name).method == '') || ((arguments.length >= 7) && (arguments[6] != '')))
        document.getElementById(form_name).method = method;

    if(mod_rewrite)
        document.getElementById(form_name).action = rewrite_base + lang + ((page=='')?"":page+"/"+((action=='')?"":action+"/")) + script_name + (get_params==''?"":"?"+get_params);
    else
        document.getElementById(form_name).action = rewrite_base + lang + script_name + (get_params!='' || page!='' || action !='' ? "?" + get_params + ((page=='')?"":(get_params==''?"":"&")+"pg="+page) + ((action=='')?"":(get_params==''&&page==''?"":"&")+"act="+action) : "");
}

function submit_action() {
   
    var page = (arguments.length >= 1) ? arguments[0] : '';
    var action = (arguments.length >= 2) ? arguments[1] : '';
    var get_params = (arguments.length >= 3) ? arguments[2] : '';
    var script_name = (arguments.length >= 4) ? arguments[3] : 'index.php';
    var form_name = (arguments.length >= 5) ? arguments[4] : 'data';
    var is_parent = (arguments.length >= 6) ? arguments[5] : false;
    
    var lang = getLang();
    
    if(is_parent) {
        window.opener.document.getElementById(form_name).action = '';

        if(mod_rewrite)
            window.opener.document.getElementById(form_name).action = rewrite_base + lang + ((page=='')?"":page+"/"+((action=='')?"":action+"/")) + script_name + (get_params==''?"":"?"+get_params);
        else
            window.opener.document.getElementById(form_name).action = rewrite_base + lang + script_name + (get_params!='' || page!='' || action !='' ? "?" + get_params + ((page=='')?"":(get_params==''?"":"&")+"pg="+page) + ((action=='')?"":(get_params==''&&page==''?"":"&")+"act="+action) : "");

        window.opener.document.getElementById(form_name).submit();

    } else {

        document.getElementById(form_name).action = '';
        if(mod_rewrite)
            document.getElementById(form_name).action = rewrite_base + lang + ((page=='')?"":page+"/"+((action=='')?"":action+"/")) + script_name + (get_params==''?"":"?"+get_params);
        else
            document.getElementById(form_name).action = rewrite_base + lang + script_name + (get_params!='' || page!='' || action !='' ? "?" + get_params + ((page=='')?"":(get_params==''?"":"&")+"pg="+page) + ((action=='')?"":(get_params==''&&page==''?"":"&")+"act="+action) : "");

        document.getElementById(form_name).submit();
   }
}

function set_action_fw(url)
{
	document.getElementById('data').action = url;
}

/*function submit_action() {
   
    var page = (arguments.length >= 1) ? arguments[0] : '';
    var action = (arguments.length >= 2) ? arguments[1] : '';
    var get_params = (arguments.length >= 3) ? arguments[2] : '';
    var script_name = ((arguments.length >= 4) && (arguments[3] != '')) ? arguments[3] : 'index.php';
    var form_name = ((arguments.length >= 5) && (arguments[4] != '')) ? arguments[4] : 'data';
    var target = ((arguments.length >= 6) && (arguments[5] != '')) ? arguments[5] : '_self';
    
    document.getElementById(form_name).action = '';
    document.getElementById(form_name).target = target;

    if(mod_rewrite)
        document.getElementById(form_name).action = rewrite_base + ((page=='')?"":page+"/"+((action=='')?"":action+"/")) + script_name + (get_params==''?"":"?"+get_params);
    else
        document.getElementById(form_name).action = rewrite_base + script_name + (get_params!='' || page!='' || action !='' ? "?" + get_params + ((page=='')?"":(get_params==''?"":"&")+"pg="+page) + ((action=='')?"":(get_params==''&&page==''?"":"&")+"act="+action) : "");

    document.getElementById(form_name).submit();
}*/

function only_one_checked(elem) {
    var num = 0;
    with(document.forms.data) {
        
      if(typeof(elements[elem]) == "object") { // IE, FF
        
        if(!elements[elem].length) num = (elements[elem].checked) ? 1:0;
        else {
            for(var i=0; i<elements[elem].length; i++) {
                num += (elements[elem][i].checked) ? 1:0;
                if(num>1) break;
            }
        }
      
      } else { // Opera
        
        if(!elements.length) return false;
        
        for(var i=0; i<elements.length; i++) {
            if((elements[i].name == elem) && elements[i].checked) 
                num++;
                
            if(num>1) break;
        }
      }
    }

    return num==1;
}

function get_checked_id(elem) {
    
    var form_id = (arguments.length >= 2) ? arguments[1] : 'data';

    with(document.getElementById(form_id)) {

      if(typeof(elements[elem]) == "object") { // IE, FF

        if(!elements[elem].length)
            return elements[elem].checked ? elements[elem].value : 0;
        else 
            for(var i=0; i<elements[elem].length; i++) 
                if(elements[elem][i].checked)
                    return elements[elem][i].value;
      
      } else { // Opera
        
        if(!elements.length) return 0;

        for(var i=0; i<elements.length; i++) 
            if((elements[i].name == elem) && elements[i].checked)
                return elements[i].value;
      }        
    }

    return 0;
}

function get_checked_values(elem) {
    var result = new Array();
    var cur_pos = 0;
    
    var form_id = (arguments.length >= 2) ? arguments[1] : 'data';

    with(document.getElementById(form_id)) {

      if(typeof(elements[elem]) == "object") { // IE, FF

        if(!elements[elem].length) {
            if(elements[elem].checked) 
                result[cur_pos++] = elements[elem].value;
        } else {
            for(var i=0; i<elements[elem].length; i++) 
                if(elements[elem][i].checked)
                    result[cur_pos++] = elements[elem][i].value;
        }
      
      } else { // Opera
        
        if(!elements.length) return result;

        for(var i=0; i<elements.length; i++) 
            if((elements[i].name == elem) && elements[i].checked)
                result[cur_pos++] = elements[i].value;
      }        
    }

    return result;
}

function select_checkboxes(elem, flag) {
    var form_id = (arguments.length >= 3) ? arguments[2] : 'data';

    with(document.getElementById(form_id)) {
        
      if(typeof(elements[elem]) == "object") { // IE, FF
        
        if(!elements[elem].length) elements[elem].checked = flag;
        else for(var i=0; i<elements[elem].length; i++) elements[elem][i].checked = flag;
        
      } else { // Opera
        
        if(!elements.length) return;
        
        for(var i=0; i<elements.length; i++) 
            if(elements[i].name == elem)
                elements[i].checked = flag;
      }
      
    }
}

function redirect(url) {
    //if(typeof(rewrite_base) == "string") url = rewrite_base+pg;
    window.location.href = url;
}

function lredirect() {
    
    var page = (arguments.length >= 1) ? arguments[0] : '';
    var action = (arguments.length >= 2) ? arguments[1] : '';
    var get_params = (arguments.length >= 3) ? arguments[2] : '';
    var script_name = (arguments.length >= 4) ? arguments[3] : 'index.php';
    var is_parent = (arguments.length >= 5) ? arguments[4] : false;
    
    var lang = getLang();
    
    if(page == "error") page = "err";
    
    if(!is_parent) {
        if(mod_rewrite)
            window.location.href = rewrite_base + lang + ((page=='')?"":page+"/"+((action=='')?"":action+"/")) + script_name + (get_params==''?"":"?"+get_params);
        else
            window.location.href = rewrite_base + lang + script_name + (get_params!='' || page!='' || action !='' ? "?" + get_params + ((page=='')?"":(get_params==''?"":"&")+"pg="+page) + ((action=='')?"":(get_params==''&&page==''?"":"&")+"act="+action) : "");
    
    } else {
        if(mod_rewrite)
            window.opener.location.href = rewrite_base + lang + ((page=='')?"":page+"/"+((action=='')?"":action+"/")) + script_name + (get_params==''?"":"?"+get_params);
        else
            window.opener.location.href = rewrite_base + lang + script_name + (get_params!='' || page!='' || action !='' ? "?" + get_params + ((page=='')?"":(get_params==''?"":"&")+"pg="+page) + ((action=='')?"":(get_params==''&&page==''?"":"&")+"act="+action) : "");
    }
}

function gen_local_url() {
    
    var page = (arguments.length >= 1) ? arguments[0] : '';
    var action = (arguments.length >= 2) ? arguments[1] : '';
    var get_params = (arguments.length >= 3) ? arguments[2] : '';
    var script_name = (arguments.length >= 4) ? arguments[3] : 'index.php';
    var url = '';
    
    var lang = getLang();
    
    if(page == "error") page = "err";
    
    if(mod_rewrite)
        url = rewrite_base + lang + ((page=='')?"":page+"/"+((action=='')?"":action+"/")) + script_name + (get_params==''?"":"?"+get_params);
    else
        url = rewrite_base + lang + script_name + (get_params!='' || page!='' || action !='' ? "?" + get_params + ((page=='')?"":(get_params==''?"":"&")+"pg="+page) + ((action=='')?"":(get_params==''&&page==''?"":"&")+"act="+action) : "");

    return url;
}

/*function lredirect() {
    
    var page = (arguments.length >= 1) ? arguments[0] : '';
    var action = (arguments.length >= 2) ? arguments[1] : '';
    var get_params = (arguments.length >= 3) ? arguments[2] : '';
    var script_name = (arguments.length >= 4) ? arguments[3] : 'index.php';
    
    if(mod_rewrite)
        window.location.href = rewrite_base + ((page=='')?"":page+"/"+((action=='')?"":action+"/")) + script_name + (get_params==''?"":"?"+get_params);
    else
        window.location.href = rewrite_base + script_name + (get_params!='' || page!='' || action !='' ? "?" + get_params + ((page=='')?"":(get_params==''?"":"&")+"pg="+page) + ((action=='')?"":(get_params==''&&page==''?"":"&")+"act="+action) : "");
}*/

/**** Binaries processing ****************************/
function set_flags(is_checked, elem, flag) {
    if(is_checked) document.getElementById(elem).value |= flag; 
    else document.getElementById(elem).value &= ~flag;
}

/****************************************************************/

function display_menu() {
   clicked_item = event.srcElement;
   cont_menu.style.leftPos += 10;
   cont_menu.style.posLeft = event.clientX;
   cont_menu.style.posTop = document.body.scrollTop + event.clientY;
   cont_menu.style.display = "block";
   cont_menu.setCapture();
}

function switch_menu() {   
   el = event.srcElement;
   
   if(el.className == "cont_menu_item") el.className = "cont_menu_item_hl";
   
   else if(el.className == "cont_menu_item_hl") el.className = "cont_menu_item";
}

function click_menu() {
   cont_menu.releaseCapture();
   cont_menu.style.display = "none";
   process_menu_action(event.srcElement);
}

/*******************************************************************/

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_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_findObj(n, d) { //v4.0
  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 && document.getElementById) x=document.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 textCounter(field, countfield, maxlimit) {
    if(field.value.length > maxlimit) // if too long...this trims it!
    field.value = field.value.substring(0, maxlimit);
    // otherwise, update 'characters left' counter
    else 
    countfield.value = maxlimit - field.value.length;
}

function svote(survey_id) { 
  var survey = document.forms.survey_data.elements['vote'+survey_id];
  for(var i=0;i<survey.length;i++) 
      if(survey[i].checked) lredirect('surveys', 'results', 'svote['+survey_id+']='+survey[i].value+'&s_id='+survey_id);
}

/*** Right-click protection functions ***/

var isNS = (navigator.appName == "Netscape") ? 1 : 0;

function mischandler() { return false; }

function mousehandler(e){
  var myevent = (isNS) ? e : event;
  var eventbutton = (isNS) ? myevent.which : myevent.button;
  if((eventbutton==2)||(eventbutton==3)) return false;
}

function disable_rclick(target) {
    if(isNS && target.captureEvents) 
        target.captureEvents(Event.MOUSEDOWN||Event.MOUSEUP);
        
    target.oncontextmenu = mischandler;
    target.onmousedown = mousehandler;
    target.onmouseup = mousehandler;
}

/****************************************/

function scb() { 
    for(var i=1; i<arguments.length; i++) {
        if(document.getElementById(arguments[i]) == null)
            break;

        document.getElementById(arguments[i]).checked = true; 
        
        if((arguments[i] == 'pictures_filter_cb') && (document.getElementById('pictures_filter') != null))
            document.getElementById('pictures_filter').value = 1;
        
        else if((arguments[i] == 'reals_filter_cb') && (document.getElementById('reals_filter') != null))
            document.getElementById('reals_filter').value = 1;
    }
    
    if(arguments[0] != 'lovers')
        submit_action('details', 'view', 'search_option='+arguments[0], '', 'filter_data');
    else
        submit_action('lovers', 'default', 'search_option='+arguments[0], '', 'filter_data');
}

function clear_filters() {
    document.getElementById('pictures_filter_cb').checked = false;
    document.getElementById('pictures_filter').value = 0;
    
    document.getElementById('sex_filter0').checked = true;
    document.getElementById('sex_filter1').checked = false;
    document.getElementById('sex_filter2').checked = false;
    
    document.getElementById('age_min_filter').selectedIndex = 0;
    document.getElementById('age_max_filter').selectedIndex = 0;
    
    document.getElementById('location_filter').selectedIndex = 0;
    document.getElementById('city_id_filter').value = 0;
    document.getElementById('country_id_filter').value = 0;
}
/*******************************************/

function open_details(url) { 
    var w_id = window.open(url,'','top=50,left=50,width=550,height=650,toolbar=0,directories=0,status=0,menubar=0,resizable=1,scrollbars=1');
    return w_id;
}

function open_window() { 
    var page = (arguments.length >= 1) ? arguments[0] : '';
    var action = (arguments.length >= 2) ? arguments[1] : '';
    var get_params = (arguments.length >= 3) ? arguments[2] : '';
    var script_name = (arguments.length >= 4) ? arguments[3] : 'index.php';
    var width = (arguments.length >= 5) ? arguments[4] : 550;
    var height = (arguments.length >= 5) ? arguments[5] : 650;
    var is_window = (arguments.length >= 6) ? arguments[6] : false;
    if(mod_rewrite)
        url = rewrite_base + ((page=='')?"":page+"/"+((action=='')?"":action+"/")) + script_name + (get_params==''?"":"?"+get_params);
    else
        url  = rewrite_base + script_name + (get_params!='' || page!='' || action !='' ? "?" + get_params + ((page=='')?"":(get_params==''?"":"&")+"pg="+page) + ((action=='')?"":(get_params==''&&page==''?"":"&")+"act="+action) : "");

    var top = (window.screen.height - height) / 2;
    var left = (window.screen.width - width) / 2;

    var w_id = window.open(url,'','top='+top+',left='+left+',width='+width+',height='+height+',toolbar='+(is_window?"1":"0")+',directories='+(is_window?"1":"0")+',status='+(is_window?"1":"0")+',menubar='+(is_window?"1":"0")+',resizable=1,scrollbars='+(is_window?"1":"0")+'');
}

function display_tip(id, flag) {
    document.getElementById(id).style.display = flag ? 'block' : 'none';
}

/*******************************************/

var last_blink_id = '';

function titleBlink(pos, text, ending, id) {
        
    if(last_blink_id != id) return;
    
    var char1= String.fromCharCode(187);
    var char2= String.fromCharCode(171);
    var space = '-';;

    var msg1 = new Array(char1+space+space+space, space+char1+space+space, space+space+char1+space, space+space+space+char1, space+space+space+char2, space+space+char2+space, space+char2+space+space, char2+space+space+space);
    var msg2 = new Array(space+space+space+char2, space+space+char2+space, space+char2+space+space, char2+space+space+space, char1+space+space+space, space+char1+space+space, space+space+char1+space, space+space+space+char1);

    document.title = msg1[pos] + ending + msg2[pos] + text;

    pos = pos < 7 ? pos+1 : 0;

    timer = window.setTimeout("titleBlink("+pos+",'"+text+"','"+ending+"', "+id+")", 200);
}

/*******************************************/
function hide_it(element){
    if(element){
    element.style.visibility = 'hidden';
    element.style.display = 'none'; 
    }
}

function show(element){
    if(element){
    element.style.display = 'block';
    element.style.visibility = 'visible';
    }
}

function open_chat(url) {
    return window.open(url,'','top=50,left=50,width=800,height=600,toolbar=0,directories=0,status=0,menubar=0,resizable=1,scrollbars=1');
}

/*******************************************/
function js_call(url) {
    var js_object = document.createElement('script'); 
    var cur_date = new Date();
    
    js_object.src = url + (url.indexOf('?')>0?'&':'?') +'tms='+cur_date.getHours()+''+cur_date.getMinutes()+''+cur_date.getSeconds()+''+Math.random();
    
    document.body.appendChild(js_object); 
}

function elem_status(elem_name, status) {
    if(document.getElementById(elem_name)) {
        if(status) {
            document.getElementById(elem_name).style.display = 'block';
            document.getElementById(elem_name).style.visibility = 'visible';
        } else {
            document.getElementById(elem_name).style.display = 'none';
            document.getElementById(elem_name).style.visibility = 'hidden';
        }
    }
}

/*******************************************/

function bind_tooltip (elem_id) {
    TagToTip(
        elem_id, 
        CLICKCLOSE, true, 
        CLICKSTICKY, true, 
        FADEIN, 500, 
        FADEOUT, 500, 
        FOLLOWMOUSE, false, 
        STICKY, (document.getElementById(elem_id).innerHTML.indexOf("href") != -1), 
        DURATION, 0, 
        DELAY, 500
    );
}

function unbind_tooltip() { UnTip(); }

/*******************************************/

function getHex(dec) {

    var hexArray = new Array("0", "1", "2", "3", "4", "5", "6", "7",
                             "8", "9", "A", "B", "C", "D", "E", "F");

    var code = dec - Math.floor(dec / 16) * 16;
    return hexArray[code];
} 

function toHexCode(dec) {

    var hexCode= new Array();
    var i=0;

    while(dec > 15) {
        hexCode[i] = getHex(dec);
        dec = Math.floor(dec / 16);
        i+=1;
    }

    hexCode[i] = getHex(dec);

    var decToHex = "";
    for(i=hexCode.length-1; i>=0; i--) decToHex += hexCode[i];

    return decToHex;

} 

function rgb2hex(color) {
    var rexp = new RegExp('rgb\\s*\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)', "i");
    var parsed = rexp.exec(color);

    if(parsed != null)
        color = '#' + toHexCode(parsed[1]) + toHexCode(parsed[2]) + toHexCode(parsed[3]);

    return color;
}

/*******************************************/

function get_form_values(form_id) {
    var str = '';
    var elem = document.getElementById(form_id).elements;
    for(var i=0; i<elem.length; i++) {
        if((elem[i].type != 'checkbox' && elem[i].type != 'radio') || (elem[i].checked == true)) {
            str += encodeURIComponent(elem[i].name) + "=";
            str += encodeURIComponent(elem[i].value) + (i == elem.length ? '' : "&");
        }
    }

    return str;
}

/**************************************************/

/** Search suggs **/
function lookup() {

           if($('#qs_username').val().length < 3 || $('#qs_username').val().length > 10) {
      $('#suggestions').hide(); // Hide the suggestions box
   } else {

      $.post(gen_local_url('misc', 'suggs'), {queryString: $('#qs_username').val()}, function(data) { // AJAX call
         $('#suggestions').show(); // Show the suggestions box
         $('#suggestions').html(data); // Fill the suggestions box
      });
   }
}
/***********************/

function sprintf( ) {    // Return a formatted string
    // 
    // +   original by: Ash Searle (http://hexmen.com/blog/)
    // + namespaced by: Michael White (http://crestidg.com)
 
    var regex = /%%|%(\d+\$)?([-+#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuidfegEG])/g;
    var a = arguments, i = 0, format = a[i++];
 
    // pad()
    var pad = function(str, len, chr, leftJustify) {
        var padding = (str.length >= len) ? '' : Array(1 + len - str.length >>> 0).join(chr);
        return leftJustify ? str + padding : padding + str;
    };
 
    // justify()
    var justify = function(value, prefix, leftJustify, minWidth, zeroPad) {
        var diff = minWidth - value.length;
        if (diff > 0) {
            if (leftJustify || !zeroPad) {
            value = pad(value, minWidth, ' ', leftJustify);
            } else {
            value = value.slice(0, prefix.length) + pad('', diff, '0', true) + value.slice(prefix.length);
            }
        }
        return value;
    };
 
    // formatBaseX()
    var formatBaseX = function(value, base, prefix, leftJustify, minWidth, precision, zeroPad) {
        // Note: casts negative numbers to positive ones
        var number = value >>> 0;
        prefix = prefix && number && {'2': '0b', '8': '0', '16': '0x'}[base] || '';
        value = prefix + pad(number.toString(base), precision || 0, '0', false);
        return justify(value, prefix, leftJustify, minWidth, zeroPad);
    };
 
    // formatString()
    var formatString = function(value, leftJustify, minWidth, precision, zeroPad) {
        if (precision != null) {
            value = value.slice(0, precision);
        }
        return justify(value, '', leftJustify, minWidth, zeroPad);
    };
 
    // finalFormat()
    var doFormat = function(substring, valueIndex, flags, minWidth, _, precision, type) {
        if (substring == '%%') return '%';
 
        // parse flags
        var leftJustify = false, positivePrefix = '', zeroPad = false, prefixBaseX = false;
        for (var j = 0; flags && j < flags.length; j++) switch (flags.charAt(j)) {
            case ' ': positivePrefix = ' '; break;
            case '+': positivePrefix = '+'; break;
            case '-': leftJustify = true; break;
            case '0': zeroPad = true; break;
            case '#': prefixBaseX = true; break;
        }
 
        // parameters may be null, undefined, empty-string or real valued
        // we want to ignore null, undefined and empty-string values
        if (!minWidth) {
            minWidth = 0;
        } else if (minWidth == '*') {
            minWidth = +a[i++];
        } else if (minWidth.charAt(0) == '*') {
            minWidth = +a[minWidth.slice(1, -1)];
        } else {
            minWidth = +minWidth;
        }
 
        // Note: undocumented perl feature:
        if (minWidth < 0) {
            minWidth = -minWidth;
            leftJustify = true;
        }
 
        if (!isFinite(minWidth)) {
            throw new Error('sprintf: (minimum-)width must be finite');
        }
 
        if (!precision) {
            precision = 'fFeE'.indexOf(type) > -1 ? 6 : (type == 'd') ? 0 : void(0);
        } else if (precision == '*') {
            precision = +a[i++];
        } else if (precision.charAt(0) == '*') {
            precision = +a[precision.slice(1, -1)];
        } else {
            precision = +precision;
        }
 
        // grab value using valueIndex if required?
        var value = valueIndex ? a[valueIndex.slice(0, -1)] : a[i++];
 
        switch (type) {
            case 's': return formatString(String(value), leftJustify, minWidth, precision, zeroPad);
            case 'c': return formatString(String.fromCharCode(+value), leftJustify, minWidth, precision, zeroPad);
            case 'b': return formatBaseX(value, 2, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
            case 'o': return formatBaseX(value, 8, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
            case 'x': return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
            case 'X': return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad).toUpperCase();
            case 'u': return formatBaseX(value, 10, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
            case 'i':
            case 'd': {
                        var number = parseInt(+value);
                        var prefix = number < 0 ? '-' : positivePrefix;
                        value = prefix + pad(String(Math.abs(number)), precision, '0', false);
                        return justify(value, prefix, leftJustify, minWidth, zeroPad);
                    }
            case 'e':
            case 'E':
            case 'f':
            case 'F':
            case 'g':
            case 'G':
                        {
                        var number = +value;
                        var prefix = number < 0 ? '-' : positivePrefix;
                        var method = ['toExponential', 'toFixed', 'toPrecision']['efg'.indexOf(type.toLowerCase())];
                        var textTransform = ['toString', 'toUpperCase']['eEfFgG'.indexOf(type) % 2];
                        value = prefix + Math.abs(number)[method](precision);
                        return justify(value, prefix, leftJustify, minWidth, zeroPad)[textTransform]();
                    }
            default: return substring;
        }
    };
 
    return format.replace(regex, doFormat);
}

/***********************/

function checkRegisterForm()
{
	$('#reg_loading, #register_button').toggle();
	
	var nick = $('#nick');
	var pass1 = $('#pass1');
	var pass2 = $('#pass2');
	var email = $('#email');
	var agree_to_newsletters = $('#agree_to_newsletters');
	var agree_to_terms = $('#agree_to_terms');
	var captcha = $('#captcha'); 
	var retFalse = false;
	var retFalse2 = false;
	
	clearRegisterErrors();
	
	if(nick.val().length<3)
	{
		registerError('nick', strUsernameTooShort);
		retFalse = true;
	}
	
	if(retFalse!=true)
	{
		var re = new RegExp(/[^A-z0-9_]/gi);
		if(nick.val().match(re))
		{
			registerError('nick', strNoticeInvalidUsername);
			retFalse = true;
		}
	}
	
	if(retFalse!=true)
	{
		$.post('/E/Users/checkNickName/'+encoding_id, {'nick':nick.val()}, function(data){
			if(data!='')
			{
				registerError('nick', data);
				retFalse = true;
			} else
			{
				markAsGood('nick');
			}
		});
	}
	
	if(pass1.val().length<6)
	{
		registerError('pass1', strPassTooShort);
		retFalse2 = true;
		retFalse = false;
	} else
	{
		markAsGood('pass1');
	}
	
	if(pass1.val().length<6 || pass2.val().length<6 || pass1.val()!=pass2.val())
	{
		registerError('pass2', strPassDidntMatch);
		retFalse2 = false;
		retFalse = true;
	} else
	{
		markAsGood('pass2');
	}
			
	if(email.val().length<5)
	{
		registerError('email', strEmailTooShort);
		retFalse2 = true;
		retFalse = false;
	}
	
	if(retFalse2!=true)
	{
		if(email.val().indexOf('one.lt')!=-1)
		{
			registerError('email', strBannedEmailDomainsExplanations);
			retFalse2 = true;
			retFalse = false;
		}
		
		if(retFalse2!=true)
		{
			$.post('/E/Users/checkEmail/'+encoding_id, {'email':email.val()}, function(data){
				if(data!='')
				{
					registerError('email', data);
					retFalse2 = true;
					retFalse = false;
				} else
				{
					markAsGood('email');
				}
			});
		}
	}
	
	if(agree_to_terms.attr('checked')=='')
	{
		registerError('agree_to_terms', strErrorCheckTermsAndConditions);
		retFalse2 = false;
		retFalse = true;
	}
					
	if(captcha.val().length<4)
	{
		registerError('captcha', strMustFill);
		retFalse2 = true;
		retFalse = false;
	} else
	{
		markAsGood('captcha', true);
	}
	
	$('#reg_loading, #register_button').toggle();
	
	if(retFalse==true || retFalse2==true)
	{
		return false;
		
	} else
	{
		set_action('register', 'save_new');
		$('#data').submit();
			
		return true;
	}
}

function checkRegisterInput(field)
{
	if(field=='nick')
	{
		var nick = $('#'+field);
		
		if(nick.val().length<3)
		{
			registerError('nick', strUsernameTooShort, true);
		} else
		{
			var re = new RegExp(/[^A-z0-9_]/gi);
			if(nick.val().match(re))
			{
				registerError('nick', strNoticeInvalidUsername, true);
			} else
			{
				$.post('/E/Users/checkNickName/'+encoding_id, {'nick':nick.val()}, function(data){
					if(data!='')
					{
						registerError('nick', data, true);
					} else
					{
						markAsGood('nick');
					}
				});
			}
		}
		
	} else if(field=='pass1')
	{
		var pass1 = $('#'+field);
		
		if(pass1.val().length<6)
		{
			registerError('pass1', strPassTooShort, true);
		} else
		{
			markAsGood('pass1');
		}
		
	} else if(field=='pass2')
	{
		var pass1 = $('#pass1');
		var pass2 = $('#'+field);
		
		if(pass1.val().length<6 || pass2.val().length<6 || pass1.val()!=pass2.val())
		{
			registerError('pass2', strPassDidntMatch, true);
		} else
		{
			markAsGood('pass2')
		}
		
	} else if(field=='email')
	{
		var email = $('#'+field);
		
		if(email.val().length<5)
		{
			registerError('email', strEmailTooShort, true);
		} else
		{
			if(email.val().indexOf('one.lt')!=-1)
			{
				registerError('email', strBannedEmailDomainsExplanations, true);
			} else
			{
				$.post('/E/Users/checkEmail/'+encoding_id, {'email':email.val()}, function(data){
					if(data!='')
					{
						registerError('email', data, true);
					} else
					{
						markAsGood('email');
					}
				});
			}
		}
		
	} else if(field=='captcha')
	{
		var captcha = $('#'+field);
		
		if(captcha.val().length<4)
		{
			registerError('captcha', strMustFill, true);
		} else
		{
			markAsGood('captcha', true);
		}
	}
}

function markAsGood(place, makeEmpty)
{
	$('#err_'+place).show();
	
	if(makeEmpty == true)
		$('#err_'+place).html('');
	else
		$('#err_'+place).html('<span class="registerGood">ok</span>');
	
	$('#err_'+place).parent().parent().find('td:first').removeClass('err_red').addClass('reg_good');
}

var _focused = false;

function registerError(place, err, skipLoading)
{
	$('#err_'+place).html('<span class="registerErrors">'+err+'</span>');
	$('#err_'+place).show();
	$('#err_'+place).parent().parent().find('td:first').removeClass('reg_good').addClass('err_red');
	
	if(_focused!=true)
	{
		$('#err_'+place).parent().parent().find('input').focus();
		_focused = true;
	}
}

function clearRegisterErrors()
{
	$('.registerErrors').remove();
	$('.reg_err').hide();
	$('.err_red').removeClass('err_red');
}

function checkEmptyFieldsByClass(className, checkboxClassName)
{
	if(!className)
		className='NotEmptyInput';
	
	if(!checkboxClassName)
		checkboxClassName = 'NotEmptyCheckboxInput';
	
	var retFalse = false;
	var errors = new Array();
		
	$.each($('.'+className), function(v){
		
		if(this.value.length==0 || this.value==0)
		{
			var err = document.getElementById(this.id+'e');
			
			if(err.className!='')
			{
				var sub = document.getElementById(err.className);
				
				if(sub.value.length!=0 && sub.value!=0)
				{
					return;
				}
			}
			
			errors[errors.length] = err.innerHTML;
			
			retFalse = true;
			return;
		}
	});
	
	var checks = {};
	
	$.each($('.'+checkboxClassName), function(v){
		
		var index = this.id.substr(0, 2);
		
		if(checks[index] != undefined)
		{
			if(this.checked)
				checks[index] = this;
		} else
		{
			checks[index] = this;
		}
	});
	
	$.each(checks, function(v){

		if(!this.checked)
		{
			var err = document.getElementById(this.id.substr(0, 2)+'e');
			
			if(err.className!='')
			{
				var sub = document.getElementById(err.className);
				
				if(sub.value.length!=0 && sub.value!=0)
				{
					return;
				}
			}
			
			errors[errors.length] = err.innerHTML;
			
			retFalse = true;
			return;
		}
	});
	
	if(retFalse)
	{
		var e = $('#terror');
		e.html('<ol><li>'+errors.join('</li><li>')+'</li></ol>');
		e.css('text-align', 'left');
		
		document.location.hash = 'terror';
	}
	
	return !retFalse;
}

