NamePros
Welcome, Guest! Ready to make a name for yourself in the domain business? We welcome both the hobbyist and professional domainer to join the discussion as part of the NamePros community.

Click here to create your profile to start earning reputation for posting, and trader ratings for buying & selling in our free e-marketplace. Build your trader rating with each successful sale. Our system has tracked over 100,000 sales and counting!
FAQ & TOS Register Search Today's Posts Mark Forums Read

Go Back   NamePros.com > Website Development Discussion Forums > Programming > CODE
Reload this Page Bulk pagerank datacenter check script.

CODE This forum is for posting code snippets and example scripts that aren't quite tutorials, but could be useful for others. You may post code snippets and/or completed scripts that you've written and want to share here.

Advanced Search


Closed Thread
 
LinkBack Thread Tools
Old 04-18-2007, 02:24 AM THREAD STARTER               #1 (permalink)
NamePros Regular
 
bliss's Avatar
Join Date: Dec 2005
Posts: 951
bliss is a name known to allbliss is a name known to allbliss is a name known to allbliss is a name known to allbliss is a name known to allbliss is a name known to allbliss is a name known to allbliss is a name known to all
 



Bulk pagerank datacenter check script.


This is not a public domain script. You may not sell, resell it. You can not publish it on other forums, websites, and etc without the copyright notice in place. You may not claim the work as you own. All rights remain with AllStar of Onic Designs.

Ever want to find out if a pagerank is the same pagerank of other google datacenters. These scirpts will help you find that out. They require curl, a server that can do correct hex calcuations, and ajax enabled browser.

Upload everything in the same directory, load dc.html in the browser, and then input only www.domain.com or domain.com and press the submit. Now, I could only get the ajax to work in firefox. I could not get it to work in IE.


dc.html
Code:
<html>
<head><title>Bulk data center check</title>
<script type='text/javascript'>
    var dc = new Array('64.233.161.18','64.233.161.81','64.233.161.84','64.233.161.147','64.233.161.184','64.233.171.44','64.233.171.133','64.233.179.93','64.233.179.184','64.233.185.101','64.233.187.84','64.233.189.161','66.102.1.44','66.102.7.83','66.102.9.147','66.102.11.115','66.249.81.80','66.249.81.184','66.249.83.19','66.249.83.107','66.249.89.133','66.249.89.184','66.249.91.44','66.249.91.80','66.249.93.81','66.249.93.83','72.14.205.99','72.14.207.100','72.14.207.184','72.14.209.19','72.14.209.84','72.14.211.44','72.14.211.83','72.14.217.104','72.14.219.80','72.14.221.99','72.14.235.83','72.14.247.133','72.14.253.80','72.14.255.80','209.85.129.99','209.85.135.102','209.85.143.19','216.239.39.104','216.239.51.19','216.239.59.147','64.233.171.18','64.233.171.19','64.233.171.44','64.233.171.80','64.233.171.81','64.233.171.83','64.233.171.84','64.233.171.99','64.233.171.100','64.233.171.101','64.233.171.102','64.233.171.104','64.233.171.107','64.233.171.115','64.233.171.133','64.233.171.147','64.233.171.184','64.233.179.19','64.233.179.44','64.233.179.80','64.233.179.81','64.233.179.83','64.233.179.84','64.233.179.91','64.233.179.93','64.233.179.99','64.233.179.100','64.233.179.101','64.233.179.104','64.233.179.107','64.233.179.115','64.233.179.133','64.233.179.184','66.249.81.18','66.249.81.19','66.249.81.44','66.249.81.80','66.249.81.81','66.249.81.83','66.249.81.84','66.249.81.99','66.249.81.100','66.249.81.101','66.249.81.102','66.249.81.104','66.249.81.107','66.249.81.115','66.249.81.133','66.249.81.147','66.249.89.161','66.249.89.162','66.249.81.184','66.249.83.19','66.249.83.44','66.249.83.80','66.249.83.81','66.249.83.83','66.249.83.84','66.249.83.99','66.249.83.100','66.249.83.101','66.249.83.104','66.249.83.107','66.249.83.115','66.249.83.133','66.249.83.184','66.249.83.214','66.249.89.19','66.249.89.44','66.249.89.80','66.249.89.81','66.249.89.83','66.249.89.84','66.249.89.99','66.249.89.104','66.249.89.107','66.249.89.115','66.249.89.133','66.249.89.184','72.14.211.19','72.14.211.44','72.14.211.80','72.14.211.81','72.14.211.83','72.14.211.84','72.14.211.99','72.14.211.100','72.14.211.101','72.14.211.104','72.14.211.107','72.14.211.115','72.14.211.133','72.14.211.184','72.14.215.19','72.14.215.44','72.14.215.80','72.14.215.81','72.14.215.83','72.14.215.84','72.14.215.99','72.14.215.101','72.14.215.104','72.14.215.107','72.14.215.115','72.14.215.133','72.14.215.184','72.14.217.19','72.14.217.44','72.14.217.80','72.14.217.81','72.14.217.83','72.14.217.84','72.14.217.99','72.14.217.101','72.14.217.104','72.14.217.107','72.14.217.115','72.14.217.133','72.14.217.184','72.14.219.18','72.14.219.19','72.14.219.44','72.14.219.80','72.14.219.81','72.14.219.83','72.14.219.84','72.14.219.99','72.14.219.100','72.14.219.101','72.14.219.102','72.14.219.104','72.14.219.107','72.14.219.115','72.14.219.133','72.14.219.147','72.14.219.184','72.14.247.18','72.14.247.19','72.14.247.44','72.14.247.80','72.14.247.81','72.14.247.83','72.14.247.84','72.14.247.99','72.14.247.100','72.14.247.101','72.14.247.102','72.14.247.104','72.14.247.107','72.14.247.115','72.14.247.133','72.14.247.147','72.14.247.184','216.239.37.19','216.239.37.44','216.239.37.80','216.239.37.83','216.239.37.84','216.239.37.91','216.239.37.99','216.239.37.101','216.239.37.104','216.239.37.107','216.239.37.115','216.239.37.184','216.239.39.19','216.239.39.44','216.239.39.80','216.239.39.81','216.239.39.99','216.239.39.101','216.239.39.104','216.239.39.107','216.239.39.115','216.239.39.133','216.239.39.184','64.233.183.17','64.233.183.18','64.233.183.19','64.233.183.44','64.233.183.80','64.233.183.81','64.233.183.83','64.233.183.84','64.233.183.91','64.233.183.93','64.233.183.99','64.233.183.103','64.233.183.104','64.233.183.107','64.233.183.115','64.233.183.133','64.233.183.147','64.233.183.184','64.233.185.19','64.233.185.44','64.233.185.80','64.233.185.81','64.233.185.83','64.233.185.84','64.233.185.99','64.233.185.100','64.233.185.101','64.233.185.104','64.233.185.107','64.233.185.115','64.233.185.133','64.233.185.184','64.233.185.189','64.233.187.19','64.233.187.44','64.233.187.80','64.233.187.81','64.233.187.83','64.233.187.84','64.233.187.91','64.233.187.93','64.233.187.99','64.233.187.104','64.233.187.107','64.233.187.115','64.233.187.133','64.233.187.184','64.233.189.44','64.233.189.80','64.233.189.81','64.233.189.83','64.233.189.84','64.233.189.104','64.233.189.107','64.233.189.115','64.233.189.133','64.233.189.161','64.233.189.162','64.233.189.184','66.249.91.18','66.249.91.19','66.249.91.44','66.249.91.80','66.249.91.81','66.249.91.83','66.249.91.84','66.249.91.91','66.249.91.93','66.249.91.99','66.249.91.104','66.249.91.107','66.249.91.115','66.249.91.133','66.249.91.147','66.249.91.184','66.249.93.19','66.249.93.44','66.249.93.80','66.249.93.81','66.249.93.83','66.249.93.84','66.249.93.91','66.249.93.93','66.249.93.99','66.249.93.100','66.249.93.101','66.249.93.104','66.249.93.107','66.249.93.115','66.249.93.133','66.249.93.184','72.14.221.18','72.14.221.19','72.14.221.44','72.14.221.80','72.14.221.81','72.14.221.83','72.14.221.84','72.14.221.91','72.14.221.93','72.14.221.99','72.14.221.101','72.14.221.102','72.14.221.104','72.14.221.107','72.14.221.115','72.14.221.133','72.14.221.147','72.14.221.184','72.14.223.18','72.14.223.19','72.14.223.44','72.14.223.80','72.14.223.81','72.14.223.83','72.14.223.84','72.14.223.99','72.14.223.100','72.14.223.101','72.14.223.102','72.14.223.104','72.14.223.107','72.14.223.115','72.14.223.147','72.14.223.133','72.14.223.184','72.14.253.18','72.14.253.19','72.14.253.44','72.14.253.80','72.14.253.81','72.14.253.83','72.14.253.84','72.14.253.99','72.14.253.100','72.14.253.101','72.14.253.102','72.14.253.104','72.14.253.107','72.14.253.115','72.14.253.133','72.14.253.147','72.14.253.184','72.14.255.17','72.14.255.18','72.14.255.19','72.14.255.44','72.14.255.80','72.14.255.81','72.14.255.83','72.14.255.84','72.14.255.91','72.14.255.99','72.14.255.100','72.14.255.101','72.14.255.102','72.14.255.103','72.14.255.104','72.14.255.107','72.14.255.115','72.14.255.133','72.14.255.147','72.14.255.184','216.239.51.19','216.239.51.44','216.239.51.80','216.239.51.81','216.239.51.83','216.239.51.84','216.239.51.99','216.239.51.104','216.239.51.107','216.239.51.115','216.239.51.184','216.239.53.19','216.239.53.44','216.239.53.80','216.239.53.81','216.239.53.83','216.239.53.84','216.239.53.99','216.239.53.101','216.239.53.102','216.239.53.104','216.239.53.107','216.239.53.115','216.239.53.133','216.239.53.147','216.239.53.184','216.239.57.17','216.239.57.18','216.239.57.19','216.239.57.44','216.239.57.80','216.239.57.81','216.239.57.83','216.239.57.84','216.239.57.99','216.239.57.103','216.239.57.104','216.239.57.107','216.239.57.115','216.239.57.133','216.239.57.147','216.239.57.184','216.239.59.17','216.239.59.18','216.239.59.19','216.239.59.44','216.239.59.80','216.239.59.81','216.239.59.83','216.239.59.84','216.239.59.99','216.239.59.101','216.239.59.102','216.239.59.103','216.239.59.104','216.239.59.107','216.239.59.115','216.239.59.133','216.239.59.147','216.239.59.184','64.233.161.18','64.233.161.19','64.233.161.44','64.233.161.80','64.233.161.81','64.233.161.83','64.233.161.84','64.233.161.91','64.233.161.93','64.233.161.95','64.233.161.99','64.233.161.100','64.233.161.101','64.233.161.102','64.233.161.104','64.233.161.107','64.233.161.115','64.233.161.133','64.233.161.147','64.233.161.184','64.233.163.19','64.233.163.44','64.233.163.80','64.233.163.83','64.233.163.84','64.233.163.99','64.233.163.100','64.233.163.101','64.233.163.104','64.233.163.107','64.233.163.115','64.233.163.133','64.233.163.184','64.233.163.189','64.233.167.18','64.233.167.19','64.233.167.44','64.233.167.80','64.233.167.81','64.233.167.83','64.233.167.84','64.233.167.91','64.233.167.93','64.233.167.99','64.233.167.104','64.233.167.107','64.233.167.115','64.233.167.133','64.233.167.147','64.233.167.184','66.102.1.44','66.102.1.80','66.102.1.81','66.102.1.83','66.102.1.84','66.102.1.91','66.102.1.93','66.102.1.104','66.102.1.107','66.102.1.115','66.102.1.133','66.102.1.184','66.102.7.18','66.102.7.19','66.102.7.44','66.102.7.80','66.102.7.81','66.102.7.83','66.102.7.84','66.102.7.99','66.102.7.100','66.102.7.101','66.102.7.102','66.102.7.104','66.102.7.107','66.102.7.115','66.102.7.133','66.102.7.147','66.102.7.161','66.102.7.162','66.102.7.184','66.102.9.18','66.102.9.80','66.102.9.81','66.102.9.83','66.102.9.84','66.102.9.99','66.102.9.100','66.102.9.101','66.102.9.102','66.102.9.104','66.102.9.107','66.102.9.115','66.102.9.133','66.102.9.147','66.102.9.184','66.102.11.19','66.102.11.44','66.102.11.80','66.102.11.81','66.102.11.83','66.102.11.84','66.102.11.99','66.102.11.100','66.102.11.101','66.102.11.104','66.102.11.107','66.102.11.115','66.102.11.133','66.102.11.184','72.14.203.19','72.14.203.44','72.14.203.80','72.14.203.81','72.14.203.83','72.14.203.84','72.14.203.91','72.14.203.93','72.14.203.99','72.14.203.100','72.14.203.101','72.14.203.104','72.14.203.107','72.14.203.115','72.14.203.133','72.14.203.161','72.14.203.162','72.14.203.184','72.14.205.19','72.14.205.44','72.14.205.80','72.14.205.81','72.14.205.83','72.14.205.84','72.14.205.99','72.14.205.100','72.14.205.101','72.14.205.104','72.14.205.107','72.14.205.115','72.14.205.133','72.14.205.184','72.14.205.189','72.14.207.19','72.14.207.44','72.14.207.80','72.14.207.81','72.14.207.83','72.14.207.84','72.14.207.91','72.14.207.93','72.14.207.99','72.14.207.100','72.14.207.101','72.14.207.104','72.14.207.107','72.14.207.115','72.14.207.133','72.14.207.184','72.14.209.19','72.14.209.44','72.14.209.80','72.14.209.81','72.14.209.83','72.14.209.84','72.14.209.99','72.14.209.101','72.14.209.104','72.14.209.107','72.14.209.115','72.14.209.133','72.14.209.184','72.14.235.18','72.14.235.19','72.14.235.44','72.14.235.80','72.14.235.81','72.14.235.83','72.14.235.84','72.14.235.99','72.14.235.100','72.14.235.101','72.14.235.102','72.14.235.104','72.14.235.107','72.14.235.115','72.14.235.133','72.14.235.147','72.14.235.184','209.85.129.18','209.85.129.19','209.85.129.44','209.85.129.80','209.85.129.81','209.85.129.83','209.85.129.84','209.85.129.99','209.85.129.100','209.85.129.101','209.85.129.102','209.85.129.104','209.85.129.107','209.85.129.115','209.85.129.133','209.85.129.147','209.85.129.184','209.85.135.17','209.85.135.18','209.85.135.19','209.85.135.44','209.85.135.80','209.85.135.81','209.85.135.83','209.85.135.84','209.85.135.99','209.85.135.100','209.85.135.101','209.85.135.102','209.85.135.103','209.85.135.104','209.85.135.107','209.85.135.115','209.85.135.133','209.85.135.147','209.85.135.184','209.85.143.18','209.85.143.19','209.85.143.44','209.85.143.80','209.85.143.81','209.85.143.83','209.85.143.84','209.85.143.99','209.85.143.100','209.85.143.101','209.85.143.102','209.85.143.104','209.85.143.107','209.85.143.115','209.85.143.133','209.85.143.147','209.85.143.184','216.239.63.19','216.239.63.44','216.239.63.80','216.239.63.83','216.239.63.84','216.239.63.91','216.239.63.93','216.239.63.99','216.239.63.101','216.239.63.104','216.239.63.107','216.239.63.115','216.239.63.133','216.239.63.184','216.239.63.189');    
</script>

<script type='text/javascript'>
var dc_count = 1;
var http_request = new Array();
var handled = new Array();

function makeRequest(url, i) 
{
    http_request[i] = new XMLHttpRequest();
    if (!http_request[i]) { return false; }
    http_request[i].onreadystatechange = handleResponse;
    http_request[i].open('GET', url, true);
    http_request[i].send(null);
    return true;
}

function handleResponse() 
{
   
    var nr = -1;
    for (var i = 0; i < dc_count; ++i) 
    {
        if ( (handled[i] != true) && http_request[i])  
        {
          switch(http_request[i].readyState) {
          case 1,2,3: return false; break;
          case 4:  
            if(http_request[i].status == 200) {
              if(http_request[i].responseText != '') 
              { 
                 var pr = http_request[i].responseText;
                 handled[i] = true;
                 document.getElementById('count').innerHTML = parseInt(document.getElementById('count').innerHTML) + 1;
                 document.getElementById('pr'+pr).innerHTML = parseInt(document.getElementById('pr'+pr).innerHTML) + 1;
                 if(pr == '0') 
                 { 
                   var divs = document.getElementById('logdc').innerHTML;
                   document.getElementById('logdc').innerHTML = divs + '<br>' + dc[i] + ': '+pr;   
                 }
              } 
            } 
          break;
          }        
        }
    }
}


</script>
</head>
<body>
<h1>Live Pagerank</h1>
<br><br>

<input type="text" name="url" id="url" size="20">
<input type="submit" value="Submit" onclick="javascript:timer = setInterval('starter()', 2000);">
<table width='100' border='0' cellspacing='0' cellpadding='0'>
<tr>
  <td id="count">0</td>
  <td>of</td>
  <td>702</td>
<tr>
</table>
        <table width='500' border='1' cellspacing='0' cellpadding='0'>
        <tr>
          <td align='center'>-1</td>
          <td align='center'>0</td>
          <td align='center'>1</td>
          <td align='center'>2</td>
          <td align='center'>3</td>
          <td align='center'>4</td>
          <td align='center'>5</td>
          <td align='center'>6</td>
          <td align='center'>7</td>
          <td align='center'>8</td>
          <td align='center'>9</td>
          <td align='center'>10</td>
        </tr>
        <tr>
          <td id="pr-1" align='center'>0</td>
          <td id="pr0" align='center'>0</td>
          <td id="pr1" align='center'>0</td>
          <td id="pr2" align='center'>0</td>
          <td id="pr3" align='center'>0</td>
          <td id="pr4" align='center'>0</td>
          <td id="pr5" align='center'>0</td>
          <td id="pr6" align='center'>0</td>
          <td id="pr7" align='center'>0</td>
          <td id="pr8" align='center'>0</td>
          <td id="pr9" align='center'>0</td>
          <td id="pr10" align='center'>0</td>        
        </tr>
        </table>
<script type='text/javascript'>
var x = 0;
var upto = 20;
var dc_count = dc.length;

function starter() 
{
    url = document.getElementById('url').value;
    if(x <= dc_count) 
    {
      for (var i = x; i < x+upto; i++) 
      {
           if(i == dc_count) { break; clearInterval(timer); }
           makeRequest('dc.php?url='+url+'&dc='+dc[i], i);       
      }
      x = i;
    }
}
</script>
<div id="logdc"></div>   
</body></html>
dc.php
????: NamePros.com http://www.namepros.com/code/318051-bulk-pagerank-datacenter-check-script.html
????: NamePros.com http://www.namepros.com/showthread.php?t=318051
Code:
<?
  include_once('dc_check_pr.php');
  $google = new google_pr();
  $dc = $_GET['dc'];
  $domain = 'http://'.$_GET['url'];
  $pr = $google->get_page_rank($domain,$dc);
  echo $pr;
?>
dc_check_pr.php
Code:
<?php

define('GOOGLE_MAGIC', 0x00000000E6359A60); // CHANGED (64Bit)

class google_pr
{

var $checksum;

function google_pr(){
    $this->checksum='';
}

function zeroFill($a, $b){
    $z = hexdec(80000000);
    if ($z & $a)
    {
        $a = ($a>>1);
        $a &= (~$z);
        $a |= 0x40000000;
        $a = ($a>>($b-1));
    } else {
        $a = ($a>>$b);
    }
    return $a;
}


function mix($a,$b,$c) {
    $a -= $b; $a -= $c; $this->toInt32($a); $a = (int)($a ^ ($this->zeroFill($c,13)));
    $b -= $c; $b -= $a; $this->toInt32($b); $b = (int)($b ^ ($a<<8));
    $c -= $a; $c -= $b; $this->toInt32($c); $c = (int)($c ^ ($this->zeroFill($b,13)));
    $a -= $b; $a -= $c; $this->toInt32($a); $a = (int)($a ^ ($this->zeroFill($c,12)));
    $b -= $c; $b -= $a; $this->toInt32($b); $b = (int)($b ^ ($a<<16));
    $c -= $a; $c -= $b; $this->toInt32($c); $c = (int)($c ^ ($this->zeroFill($b,5)));
    $a -= $b; $a -= $c; $this->toInt32($a); $a = (int)($a ^ ($this->zeroFill($c,3)));
    $b -= $c; $b -= $a; $this->toInt32($b); $b = (int)($b ^ ($a<<10));
    $c -= $a; $c -= $b; $this->toInt32($c); $c = (int)($c ^ ($this->zeroFill($b,15)));
    return array($a,$b,$c);
}

function strord($string) {
    for($i=0;$i<strlen($string);$i++) {
        $result[$i] = ord($string{$i});
    }
    return $result;
}

function GoogleCH($url, $length=null, $init=GOOGLE_MAGIC) {
    if(is_null($length)) {
        $length = sizeof($url);
    }
    $a = $b = 0x9E3779B9;
    $c = $init;
    $k = 0;
    $len = $length;
    while($len >= 12) {
        $a += ($url[$k+0] +($url[$k+1]<<8) +($url[$k+2]<<16) +($url[$k+3]<<24));
        $b += ($url[$k+4] +($url[$k+5]<<8) +($url[$k+6]<<16) +($url[$k+7]<<24));
        $c += ($url[$k+8] +($url[$k+9]<<8) +($url[$k+10]<<16)+($url[$k+11]<<24));
        $mix = $this->mix($a,$b,$c);
        $a = $mix[0]; $b = $mix[1]; $c = $mix[2];
        $k += 12;
        $len -= 12;
    }

    $c += $length;
    switch($len)
    {
        case 11: $c+=($url[$k+10]<<24);
        case 10: $c+=($url[$k+9]<<16);
        case 9 : $c+=($url[$k+8]<<8);
        case 8 : $b+=($url[$k+7]<<24);
        case 7 : $b+=($url[$k+6]<<16);
        case 6 : $b+=($url[$k+5]<<8);
        case 5 : $b+=($url[$k+4]);
        case 4 : $a+=($url[$k+3]<<24);
        case 3 : $a+=($url[$k+2]<<16);
        case 2 : $a+=($url[$k+1]<<8);
        case 1 : $a+=($url[$k+0]);
    }
    $mix = $this->mix($a,$b,$c);

    return $mix[2];
}


function getGoogleChecksum($url) {
    $url="info:"."http://".str_replace('http://','',$url);
    $tmp_ch=$this->strord($url);
    $this->checksum=sprintf("%u", $this->GoogleCH($tmp_ch));
    return $this->checksum;
}

function toInt32(& $x) {
    $z = hexdec(80000000);
    $y = (int)$x;
    if($y==-$z&&$x<-$z){
        $y = (int)((-1)*$x);
        $y = (-1)*$y;
    }
    $x = $y;
}

function get_page_rank($url,$dc){
    $dc = trim($dc);
    $reqgr = "info:".$url;
    $reqgre = "info:".urlencode($url);
    $gch="6".$this->getGoogleChecksum($url);
    $patern = '/^http:/';
    $patern2 = '/^http:\/\/.*google\..*\/(search|images|groups|news).*/';
    $patern3 = '/^http:\/\/localhost.*/';
    $patern4 = '/^http:\/\/(127\.|10\.|172\.16|192\.168).*/'; //local ip
    if(!preg_match($patern, $url) || preg_match($patern2, $url) || preg_match($patern3, $url) || preg_match($patern4, $url))
    { return -1; }
    else
    {

      $website = "http://".$dc."/search?client=navclient-auto&ch=".$gch."&ie=UTF-8&oe=UTF-8&features=Rank&q=".$reqgre;
      
      if(!$ch = curl_init($website)) { return 'Count not connect.';  }
       curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
       curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; GoogleToolbar 3.0.114-big; Windows XP 5.1)');
       curl_setopt ($ch, CURLOPT_HEADER, 0);
       curl_setopt($ch, CURLOPT_TIMEOUT, 10);
       $res['content'] = curl_exec($ch);
      curl_close ($ch);
   
      if(preg_match('/Rank_.*?:.*?:(\d+)/i', $res['content'], $m)) { return $m[1]; }
      else { return -1; }
    }
}
}

?>
bliss is offline  
Closed Thread


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools


Liquid Web Smart Servers  
All times are GMT -7. The time now is 06:03 AM.

Managed Web Hosting by Liquid Web
Domain name forum recommended by Domaining.com Powered by: vBulletin® Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.6.0 Ad Management plugin by RedTyger