// ZSite CMS
// JavaScript HTTP URL validator
// variable name must begin with a "http://..."
// can contain latin letters, numbers, and underscore symbol
// must also contain at least one dot
// valid entries can contain domains, with some paths and some filenames
// http://xxx.xxx.xxx/xxx/xxx/xxx -- file
// http://xxx.xxx -- domain
// http://xxx.xxx/xxx/ -- directory
// (c) Zagorodnikov Anton 2007

function zsite_validate_httpurl(text)
{
    //must begin with http://
    if(text.substr(0,7) != "http://")
    {
	zsite_validation_error = ZLOCALE("this field must begin with http://");
	return false;
    }
    //remove that http:// beginning
    text = text.substr(7,text.length);

    var charpos = text.search("[\.]");
    if(charpos < 0)
    {
	zsite_validation_error = ZLOCALE("domain name must contain dot");
	return false;
    }
    
    //now get first path of string, before http parameters, following after '?'
    charpos = text.search("[\?]");
    var beforetext = "";
    if(charpos > 0)
    {
	berforetext = text.substr(0,charpos);
    }
    else
    {
	beforetext = text;
    }
    
    charpos = beforetext.search("[/]");
    var domainname = "";
    var serverpath = "";
    
    if(charpos > 0)
    {
	domainname = beforetext.substr(0,charpos);
	serverpath = beforetext.substr(charpos,beforetext.length);
    }
    else
    {
	domainname = beforetext; //suppose that no server path
    }
    
    if(((!zsite_validate_domainname(domainname))&&(!zsite_validate_ipadress(domainname)))||(!zsite_validate_nonempty(domainname)))
    {
	zsite_validation_error = ZLOCALE("domain name or ip adress must be present in URL");
	return false;
    }

    if(serverpath != "")
    {
	if((!zsite_validate_path(serverpath))&&(!zsite_validate_filename(serverpath)))
	{
	    zsite_validation_error = ZLOCALE("server path is invalid");
	    return false;
	}
    }
    
    return true;
}

