function loadStates()
{
    var c = document.getElementById("countrySelect");
    var s = document.getElementById("stateSelect");
    for(var i = s.options.length ; i >= 0 ; i--)
    {
        s.options[i] = null;
    }
    if(c.selectedIndex >= 0)
    {
        var cid = c.options[c.selectedIndex].value;
		if(cache["country"][cid] == null)
		{
		    s.disabled = false;
		    var states = loadEntities("/async/states/" + cid)
		    cache["country"][cid] = states["state"];
		}
		s.options[s.options.length] = new Option("-------",'');
		var st = cache["country"][cid];
		var re = new RegExp('^\\d+$');
	    for(var o in st)
		{
			if (o.match(re))
			{
			    s.options[s.options.length] = new Option(st[o].name, st[o].id);
			}
		}
    }
}

function checkMail(obj,err_id)
{
    var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return checkFilter(obj,err_id,filter);    
}
function checkMailRepeatExt(obj,err_id,field)
{
    var f = document.getElementById(field).value;
    return checkFilter(obj,err_id,new RegExp("^"+f+"$"));        
}

function checkMailRepeat(obj,err_id)
{
    return checkPasswordRepeatExt(obj,err_id,"emailField");
}

function checkPassword(obj,err_id)
{
    var filter  = /^[-_\w\d]{5,20}$/;
    return checkFilter(obj,err_id,filter);        
}

function checkAddress(obj,err_id)
{
    var filter  = /^.{5,96}$/;
    return checkFilter(obj,err_id,filter);
}

function checkAddress2(obj,err_id)
{
    var filter  = /^.{0,96}$/;
    return checkFilter(obj,err_id,filter);        
}

function checkCity(obj,err_id)
{
    var filter  = /^.{3,64}$/;
    return checkFilter(obj,err_id,filter);        
}


function checkCompany(obj,err_id) 
{
    var filter  = /^.{0,96}$/;
    return checkFilter(obj,err_id,filter);        
}

function checkUrl(obj,err_id)
{
    var filter = obj.value ? /^\s*(https?:\/\/)?([a-z0-9]([-a-z0-9]*[a-z0-9])?\.)+([a-z]+)\S*\s*$/ : /.*/;
    return checkFilter(obj,err_id,filter);
}

function checkPhone(obj,err_id)
{
    var filter  = /^\+?[-\s\(\)\d]{5,20}$/;
    return checkFilter(obj,err_id,filter);        
}

function checkZip(obj,err_id)
{
    var filter  = /^[\d\w]{3,10}$/;
    return obj.value ? checkFilter(obj,err_id,filter) : 0;        
}


function checkName(obj,err_id)
{
    var filter  = /^[-\w]{2,64}$/;
    return checkFilter(obj,err_id,filter);        
}

function checkPasswordRepeatExt(obj,err_id,field)
{
    var f = document.getElementById(field).value;
    return checkFilter(obj,err_id,new RegExp("^"+f+"$"));        
}

function checkPasswordRepeat(obj,err_id)
{
    return checkPasswordRepeatExt(obj,err_id,"passwd1Field");
}



function checkCardNumber(obj,err_id)
{
    var filter  = /^[\d]{16,20}$/;
    return checkFilter(obj,err_id,filter);            
}

function checkCardCVV2(obj,err_id)
{
    var filter  = /^[\d]{3,4}$/;
    return checkFilter(obj,err_id,filter);            
}

function checkCardHolder(obj,err_id)
{
    if (obj.value.length >= 96 || obj.value.length < 4)
        return 1;
    var filter  = /^\w+\s\w+$/;
    return checkFilter(obj,err_id,filter);                
}
