<?
$disableTemplate = true;
require "inc/content.inc.php";

$_imagePath  = "images/products/";
$_defaultImg = "images/products/default.jpg";

$product    = $_GET['p'];
$width      = $_GET['w'];
$height     = $_GET['h'];
$pInfo      = mysql_fetch_row(mysql_query("SELECT * FROM `products` WHERE `p_id`='$product'"));
$pImg       = $pInfo[3];
$useDefault = false;

if(empty($pImg)) {
	$useDefault = true;
}

$doResize = false;

if(!empty($width) && !empty($height)) {
	$doResize = true;
}

if($useDefault) {
	$imagePath = $_defaultImg;
} else {
	$imagePath = $_imagePath . $pInfo[0] . ".jpg";
}

if(!file_exists($imagePath) && !$useDefault) {
	$numTries  = 0;
	$dlSuccess = false;
	while($dlSuccess == false) {
		$numTries ++;
		$dlSuccess = downloadImage($pImg, $imagePath);	
	
		if($numTries == 3) {
			$useDefault = true;
			break;	
		}
	}
}

if($doResize) {
	if($useDefault) {
		$imagePath       = $_defaultImg;
		$imagePathResize = $_imagePath . "default" . "_" . $width . "_" . $height . ".jpg";
	} else {
		$imagePathResize = $_imagePath . $pInfo[0] . "_" . $width . "_" . $height . ".jpg";
	}
} 

if(!$doResize) {
	header("location: $imagePath");
	exit;
}

if(file_exists($imagePathResize)) {
	header("location: $imagePathResize");
	exit;
} else {	
	if(@copy($imagePath, $imagePathResize)) {
		makeThumb($imagePathResize, $width, $height);
	} else {
		header("location: $_defaultImg");
		exit;	
	}
}

header("location: $imagePathResize");
?>