﻿
// HeroCard JavaScript
// Copyright 2005-2007 David M Cilley
// http://flashxsfx.blogspot.com/

// Tab Thumbs
var Tabs_ImageCropper;
var Tabs_ImageTouchUp;
var Tabs_CardDetails;
var Tabs_ColorSelector;

// Tab Content
var Tab_ImageCropper;
var Tab_ImageTouchUp;
var Tab_CardDetails;
var Tab_ColorSelector;
var Tab_FrameBlocker;

// Frames
var Frame_CardDetails;
var Frame_ColorPicker;
var Frame_ImageDownloader;
var Frame_ImageTouchUp;

var highlightedZoom = 10;
var loadingMember = false;
var submittingCard = false;
var savingCard = false;
var gettingColors = false;

var _name = '';
var _colors = null;

function getObj(id){
	return document.getElementById(id);
}

function onPageLoad(){
	Tabs_ImageCropper	= getObj("Tabs_ImageCropper");
	Tabs_ImageTouchUp	= getObj("Tabs_ImageTouchUp");
	Tabs_CardDetails	= getObj("Tabs_CardDetails");
	Tabs_ColorSelector	= getObj("Tabs_ColorSelector");
	Tab_ImageCropper	= getObj("Tab_ImageCropper");
	Tab_ImageTouchUp	= getObj("Tab_ImageTouchUp");
	Tab_CardDetails		= getObj("Tab_CardDetails");
	Tab_ColorSelector	= getObj("Tab_ColorSelector");
	Tab_FrameBlocker	= getObj("Tab_FrameBlocker");

	Frame_CardDetails	= getObj("Frame_CardDetails");
	Frame_ColorPicker	= getObj("Frame_ColorPicker");
	Frame_ImageDownloader = getObj("Frame_ImageDownloader");
	Frame_ImageTouchUp	= getObj("Frame_ImageTouchUp");
	
	WebImageViewer2.ImageChanged = onSelectedIndexChanged;
	WebImageViewer1.RemoteInvoked = onRemoteInvoke;
	WebThumbnailViewer1.SelectedIndexChanged = OpenExistingCard;
	
	HighlightZoom(WebImageViewer2.getZoom());
}

function OpenExistingCard(){
	var a = new Array();
	a.push(WebThumbnailViewer1.getSelectedIndex());
	a.push(WebThumbnailViewer1.getSearchPattern());

	loadingMember = true;
	WebImageViewer1.RemoteInvoke('OpenMember', a);
}

function SubmitCard(){
	submittingCard = true;
	WebImageViewer1.RemoteInvoke('SubmitCard');
}

function SaveCard(ext){
	Frame_ImageDownloader.src = 'ImageDownloader.aspx?format=' + ext + '&name=' + _name + '&rnd=' + Math.round(Math.random()*100000000);
}

function onRemoteInvoke(){
	if (loadingMember == true){
		LoadDetails(WebImageViewer1.getReturnValue());
		loadingMember = false;
		RemoteGetColors();
	}
	else if (submittingCard == true){
		alert("Card Successfully Submitted!");
		submittingCard = false;
	}
	else if (savingCard == true){
		var win = window.open(WebImageViewer1.getReturnValue(), "save");
		
		if (win == null){
			alert("Popup Window Blocked, save failed.");
		}
		
		savingCard == false;
	}
	else if (gettingColors == true){
		_colors = WebImageViewer1.getReturnValue().parseJSON();
		gettingColors = false;
		
		ResetColors();
	}
}

function LoadDetails(name){
	Frame_CardDetails.src = "CardDetails.aspx?name=" + name + "&rnd=" + Math.random() * 100000;
}

function RemoteGetColors(){
	gettingColors = true;
	WebImageViewer1.RemoteInvoke('GetColors', null);
}

function ResetColors(){
	if (Frame_ColorPicker.setColors && _colors){
		Frame_ColorPicker.setColors(_colors);
	}
}

function onSelectedIndexChanged(){
	WebImageViewer2.setAutoZoom(1);
	HighlightZoom(WebImageViewer2.getZoom());
	WebImageViewer2.getSelection().setVisibility('visible');
	WebImageViewer2.getSelection().setPosition(new atalaPoint(0, 0));
	WebImageViewer2.getSelection().setSize(new atalaSize(200, 280));
}

function Zoom(z){
	setAutoZoom(0);
	WebImageViewer2.setZoom(z);
	HighlightZoom(z);
}

function HighlightZoom(z){
	var n = Math.round(z * 10);

	if (n <= 0)
		n = 1;
	else if (n > 10)
		n = 10;
	
	getObj('Z' + highlightedZoom).style.backgroundColor = '#F5F5F5';
	getObj('Z' + n).style.backgroundColor = 'DarkOrange';
	
	highlightedZoom = n;
}

// integer expected: 0:None 1:BestFit 2:BestFitShrinkOnly 3:FitToWidth 4:FitToHeight 5:FitToImage
function setAutoZoom(zoomMode){
	if (zoomMode != WebImageViewer2.getAutoZoom())
		WebImageViewer2.setAutoZoom(zoomMode);
}

function cropRegion(val){
	var a = new Array();
	a.push(val);

	WebImageViewer2.RemoteInvoked = onCropRegion;
	WebImageViewer2.RemoteInvoke('CropRegion', a);
}

function onCropRegion(){
	var retVal = WebImageViewer2.getReturnValue();
	var id = retVal.substring(0, retVal.indexOf('='));
	
	updateCard();
}

function updateCard(){
	WebImageViewer1.RemoteInvoke('BuildImage');
}

function updateColors(aura, name, alts, fame, back){
	var a = new Array();
	a.push(aura);
	a.push(name);
	a.push(alts);
	a.push(fame);
	a.push(back);

	WebImageViewer1.RemoteInvoke('UpdateColors', a);
}

function getHiddenValue(id){
	return getObj(id).value;
}

function setHiddenValue(id, val){
	getObj(id).value = val;
}

function setName(s){
	_name = s;
}

function setColorPickerFrame(f){
	if (atalaCheckBrowser() == 0){
		Frame_ColorPicker = f;
	}
	else{
		Frame_ColorPicker = Frame_ColorPicker.contentWindow;
	}
	
	ResetColors();
}

function selectTab(o){
	switch (o){
		case 'Tabs_ImageCropper':
			Tab_FrameBlocker.style.zIndex = 2;
			Tab_ImageCropper.style.zIndex = 3;
			Tab_ImageTouchUp.style.zIndex = 1;
			Tab_CardDetails.style.zIndex = 1;
			Tab_ColorSelector.style.zIndex = 1;
			Tabs_ImageCropper.className = 'tabThumbSelected';
			Tabs_ImageTouchUp.className = 'tabThumb';
			Tabs_CardDetails.className = 'tabThumb';
			Tabs_ColorSelector.className = 'tabThumb';
		break;
		case 'Tabs_ImageTouchUp':
			Tab_FrameBlocker.style.zIndex = 2;
			Tab_ImageCropper.style.zIndex = 1;
			Tab_ImageTouchUp.style.zIndex = 3;
			Tab_CardDetails.style.zIndex = 1;
			Tab_ColorSelector.style.zIndex = 1;
			Tabs_ImageCropper.className = 'tabThumb';
			Tabs_ImageTouchUp.className = 'tabThumbSelected';
			Tabs_CardDetails.className = 'tabThumb';
			Tabs_ColorSelector.className = 'tabThumb';
			Frame_ImageTouchUp.src = 'ImageAdjuster.aspx?img=' + WebImageViewer2.getImageUrl() + '&rnd=' + Math.round(Math.random()*100000000);
		break;
		case 'Tabs_CardDetails':
			Tab_FrameBlocker.style.zIndex = 2;
			Tab_ImageCropper.style.zIndex = 1;
			Tab_ImageTouchUp.style.zIndex = 1;
			Tab_CardDetails.style.zIndex = 3;
			Tab_ColorSelector.style.zIndex = 1;
			Tabs_ImageCropper.className = 'tabThumb';
			Tabs_ImageTouchUp.className = 'tabThumb';
			Tabs_CardDetails.className = 'tabThumbSelected';
			Tabs_ColorSelector.className = 'tabThumb';
			if (Frame_CardDetails.src.indexOf('CardDetails.aspx') < 0){
				Frame_CardDetails.src = 'CardDetails.aspx';
			}
		break;
		case 'Tabs_ColorSelector':
			Tab_FrameBlocker.style.zIndex = 2;
			Tab_ImageCropper.style.zIndex = 1;
			Tab_ImageTouchUp.style.zIndex = 1;
			Tab_CardDetails.style.zIndex = 1;
			Tab_ColorSelector.style.zIndex = 3;
			Tabs_ImageCropper.className = 'tabThumb';
			Tabs_ImageTouchUp.className = 'tabThumb';
			Tabs_CardDetails.className = 'tabThumb';
			Tabs_ColorSelector.className = 'tabThumbSelected';
			if (Frame_ColorPicker.src && Frame_ColorPicker.src.indexOf('ColorPicker/ColorPicker.aspx') < 0){
				Frame_ColorPicker.src = 'ColorPicker/ColorPicker.aspx';
			}
		break;
	}
}
