var SitesList = {

	defaultClass : 'site',

	init  : function()
	{
		if (document.getElementById('sites') && document.getElementById('sites').getElementsByTagName('LI')){
			var childs = document.getElementById('sites').getElementsByTagName('LI');
			var classN = SitesList.defaultClass + 'close';
			for (var i = 0; i < childs.length; i++){
				if (childs[i].className == classN) childs[i].onclick = function(){ SitesList.click(this);  };
			}
		}
	},

	click : function(li)
	{
		li.className = SitesList.defaultClass + ((li.className == SitesList.defaultClass) ? 'close' : '');
	}

};

var RelatedSitesList = {

	defaultClass : 'site',

	init  : function()
	{
		if (document.getElementById('related-sites') && document.getElementById('related-sites').getElementsByTagName('LI')){
            var childs = document.getElementById('related-sites').getElementsByTagName('LI');
			var classN = RelatedSitesList.defaultClass + 'close';
            for (var i = 0; i < childs.length; i++){
				if (childs[i].className == classN) childs[i].onclick = function(){ RelatedSitesList.click(this);  };
			}
		}
	},

	click : function(li)
	{
        li.className = RelatedSitesList.defaultClass + ((li.className == RelatedSitesList.defaultClass) ? 'close' : '');
	}

};

var formLiveReverseIP = {

	box  : false,

	div  : false,

	init : function()
	{
		formLiveReverseIP.box = document.getElementById('form-ip');
		formLiveReverseIP.div = formLiveReverseIP.box.parentNode;
		formLiveReverseIP.box.onkeyup = formLiveReverseIP.check;
		formLiveReverseIP.box.focus();
		formLiveReverseIP.check();
		document.getElementById('search').onsubmit = function(){ return formLiveReverseIP.valid(); };
	},

	valid       : function()
    {
		if (/^[.0-9]+$/.test(formLiveReverseIP.box.value)){
			if (!formLiveReverseIP.validIp()){
				formLiveReverseIP.error('Incorrect IP-address.');
				return false;
			}
		}
		else if (!formLiveReverseIP.validDomain()){
			formLiveReverseIP.error('Incorrect Domain Name or IP-address.');
			return false;
		}
		return true;
	},

	error       : function(msg)
	{
		if (msg){
			document.getElementById('msg').innerHTML = msg;
			document.getElementById('msg').style.display = 'block';
		}
		else
			document.getElementById('msg').style.display = 'none';
	},

	color       : function(color)
	{
		formLiveReverseIP.div.style.backgroundColor = color;
	},

	validIp     : function()
	{
		var arr = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/.exec(formLiveReverseIP.box.value);
		if (arr){
			for (var i = 1; i < 5; i++) if (parseInt(arr[i]) < 0 || parseInt(arr[i]) > 255) return false;
			return true;
		}
		return false;
	},

    validDomain : function()
	{
		if (/^[0-9a-z]{1}[-.0-9a-z]*?\.[a-z]{2,6}$/i.test(formLiveReverseIP.box.value)){
			var arr = formLiveReverseIP.box.value.split('.');
			for (var i = 0; i < arr.length; i++) if (!arr[i].length) return false;
			return true;
		}
		return false;
	},

	check       : function()
	{
		if (formLiveReverseIP.validIp()){
			formLiveReverseIP.color('rgb(246,156,41)');
		}
		else if (formLiveReverseIP.validDomain()){
			formLiveReverseIP.color('rgb(70,184,229)');
		}
		else{
			formLiveReverseIP.color('rgb(236,71,17)');
		}
	}

};

var formLiveWhoIs = {

	box  : false,

	div  : false,

	init : function()
	{
		formLiveWhoIs.box = document.getElementById('form-domain');
		formLiveWhoIs.div = formLiveWhoIs.box.parentNode;
		formLiveWhoIs.box.onkeyup = formLiveWhoIs.check;
		formLiveWhoIs.box.focus();
		formLiveWhoIs.check();
		document.getElementById('search').onsubmit = function(){ return formLiveWhoIs.valid(); };
	},

	valid       : function()
    {
		if (!formLiveWhoIs.validDomain()){
			formLiveWhoIs.error('Incorrect Domain Name.');
			return false;
		}
		return true;
	},

	error       : function(msg)
	{
		if (msg){
			document.getElementById('msg').innerHTML = msg;
			document.getElementById('msg').style.display = 'block';
		}
		else
			document.getElementById('msg').style.display = 'none';
	},

	color       : function(color)
	{
		formLiveWhoIs.div.style.backgroundColor = color;
	},

	validDomain : function()
	{
		if (/^[0-9a-z]{1}[-0-9.a-z]*?\.[a-z]{2,}$/i.test(formLiveWhoIs.box.value)){
			return true;
		}
		return false;
	},

	check       : function()
	{
		if (formLiveWhoIs.validDomain()){
			formLiveWhoIs.color('rgb(70,184,229)');
		}
		else{
			formLiveWhoIs.color('rgb(236,71,17)');
		}
	}

};

var LoadBox = {
    
    init : function(){
        if (window.jQuery){
            $('div.load-box').each(function(){
                if (!$(this).hasClass('no-display'))
                    $('<div class="loader"></div>').insertBefore(this);
            });
            setTimeout(function(){
                $('div.loader').remove();
                $('div.load-box').show();
            }, 8000);
        }
    }
    
};

window.onload = function(){
	SitesList.init();
    RelatedSitesList.init();
    LoadBox.init();
    if (document.getElementById('form-ip')){
        if (location.hash) document.getElementById('form-ip').value = location.hash.substr(1);
        formLiveReverseIP.init();
    }
	if (document.getElementById('form-domain')) formLiveWhoIs.init();
    if (window.jQuery){
        var twitter = {
            next : function(type){
                if (typeof type == 'undefined') type = true;
                if ($('#twitter ol li').length > 3){
                    var nodes = $('#twitter ol li.active');
                    if (nodes.length){
                        for (var i = 0; i < nodes.length; i++)
                            nodes[i].className = '';
                        if (type){
                            var node = $(nodes[ nodes.length-1 ]);
                            var limit = 3;
                            if (!node.next().length){
                                node = $('#twitter ol li:first').addClass('active');
                                limit = 2;
                            }
                            for (var i = 0; i < limit; i++){
                                if (node.next()){
                                    node = node.next();
                                    node.addClass('active');
                                }
                            }
                        }
                        else{
                            var node = $(nodes[0]);
                            var limit = 3;
                            if (!node.prev().length){
                                var list = $('#twitter ol li');
                                node = $(list[ list.length-1 ]);
                                node.addClass('active');
                                limit = list.length % 3 - 1;
                            }
                            for (var i = 0; i < limit; i++){
                                if (node.prev()){
                                    node = node.prev();
                                    node.addClass('active');
                                }
                            }
                        }
                    }
                }
            },
            prev : function(){
                twitter.next(false);
            }
        };
        $('#twitter ul.nav .prev').click(function(){
            twitter.prev();
            return false;
        });
        $('#twitter ul.nav .next').click(function(){
            twitter.next();
            return false;
        });
    }
};

