private static function calculateChecksum( $url )
	{ 
		$length	= sizeof( $url );
		$a		= $b = 0x9E3779B9;
		$c		= GOOGLE_MAGIC;
		$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	= self::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 );
			/* the first byte of c is reserved for the length */
			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	= self::mix( $a, $b, $c );
		return	$mix[2];
	}