function init() {
	document.getElementById( "send" ).href += ' ' + location.href;
	activateTab('description');
}

function validate( form ) {
    try {
        checkEmpty( form.size, 'Please choose the desired size' );
        checkEmpty( form.color, 'Please choose the preferred colour' );
        return true;
    } catch( e ) {
        e.field.focus();
        showError( e.msg );
        return false;
    }
}

function validateAdmin( form ) {
    try {
        if( form.description.value.length > 65535 ) {
			throw { field: form.description, msg: "Please enter a shorter description" };
        }
        return true;
    } catch( e ) {
        e.field.focus();
        showError( e.msg );
        return false;
    }
}

function showThumb( index ) {
	unloadSpycam();
    var thumbs = document.getElementById( "imgThumbs" ).getElementsByTagName( "img" );
    if( !thumbs.length && !index ) {
        showError( "This product has no picture" );
        if( document.forms.addImage ) {
            document.forms.addImage.addImage.focus();
        }
        return;
    }
    var url = thumbs[index].src;
    var end = url.lastIndexOf( '/' );
    var start = url.lastIndexOf( '/', end - 1 ) + 1;
    
    var largePic = url.substr( 0, start ) + 'large' + url.substr( end );
	document.getElementById( 'mainPicture' ).style.backgroundImage = 'url(' + largePic + ')';

    img = document.getElementById( 'fullPicture' );
    img.src = url.substr( 0, start ) + 'full' + url.substr( end );
    
    var frmUpdate = document.forms.updateImage;
    if( frmUpdate ) {
        var name = url.substring( end + 1, url.indexOf( '?' ) );
        var frmDelete = document.forms.deleteImage;
        frmDelete.elements['name'].value =
            frmUpdate.elements['name'].value = name;
        frmUpdate.thumbIndex.value = index;
        frmDelete.deleteImage.disabled = !index;
        frmDelete.deleteImage.title = index ? "" : "The main picture cannot be deleted";
    }
}

function showTab( id ) {
    if( id == activeTab ) {
        return;
    }
    document.getElementById( activeTab + "Tab" ).className = "tab";
    document.getElementById( id + "Tab" ).className = "tab selected";
    activateTab( id );
}

var activeTab;
function activateTab( id ) {
    if( id == activeTab ) {
        return;
    }
    if( activeTab ) {
        document.getElementById( activeTab + "Data" ).style.display = "none";
    }
    document.getElementById( (activeTab = id) + "Data" ).style.display = "block";
}

var lastTab;
var zoom, cutX, cutY, maxX, maxY, offsetX, offsetY;
var ready, started;
function startSpycam() {
	started = true;
	if( !ready ) {
		return;
	}
    var img = document.getElementById( 'fullPicture' );
    document.getElementById( "spyCam" ).style.backgroundImage = 'url(' + img.src + ')';
    var spyCam = document.getElementById( 'spyCam' );
    var spyImg = document.getElementById( 'mainPicture' );

    lastTab = activeTab;
    document.getElementById( 'details' ).style.display = 'none';
    document.getElementById( 'spyCam' ).style.display = 'block'; // before spyCam.offset
    
    offsetX = spyCam.offsetWidth / 2;
    offsetY = spyCam.offsetHeight / 2;
    zoom = Math.min(img.width / spyImg.offsetWidth, img.height / spyImg.offsetHeight);
    cutX = (img.width - spyImg.offsetWidth * zoom) / 2;
    cutY = (img.height - spyImg.offsetHeight * zoom) / 2;
    maxX = img.width - spyCam.offsetWidth;
    maxY = img.height - spyCam.offsetHeight;
}

function stopSpycam() {
	started = false;
	if( !ready ) {
		return;
	}
    document.getElementById( 'spyCam' ).style.display = 'none';
    document.getElementById( 'details' ).style.display = 'block';
    lastTab = null;
}

function moveSpycam( e ) {
	if( !ready ) {
		return;
	}
	if( !lastTab ) {
		return; // erratic IE mousemove event before mouseover
	}
    e = e || window.event;
    var x = (e.offsetX !== undefined ? e.offsetX : e.layerX) * zoom + cutX;
    x -= offsetX;
    x = Math.max( 0, Math.min( maxX, x ) );
    x = Math.round( -x );
    
    var y = (e.offsetY !== undefined ? e.offsetY : e.layerY) * zoom + cutY;
    y -= offsetY;
    y = Math.max( 0, Math.min( maxY, y ) );
    y = Math.round( -y );

    document.getElementById( "spyCam" ).style.backgroundPosition = x + "px " + y + "px";
}

function unloadSpycam() {
	document.getElementById( "mainPicture" ).style.cursor = "wait";
	ready = false;
}

function loadSpycam() {
	ready = true;
	document.getElementById( "mainPicture" ).style.cursor = "crosshair";
	if( started ) {
		startSpycam();
	}
}

function toggleFeatured( chk ) {
    var form = chk.form;
    form.featuredImage.disabled = !chk.checked;
    form.submit();
}

function loadSizes( cmbColor ) {
	var form = cmbColor.form;
	var cmbSize = form.size;
	cmbSize.disabled = true;
	var color = cmbColor.value;
	if( !color ) {
		cmbSize.value = "";
	} else {
		document.getElementById( "response" ).src = "getSizes.php?sku=" + form.sku.value + "&color=" + color;
	}
}