/** GLOBAL VARS **/
var HOME_SERVER = null;
var CONTEST_PARTNERID = 0;
var CONTEST_ID = 0;
var PARTNER_ACTIVE = 0;

var PARTNER_JS_CONFIG_PATH = '/js/photocontest/config/';
// split query string parameters up into an array, bit more to it because it is using a <script> src string
function parseQuery(query) {
	var Params = new Object();
	if (! query) return Params; // return empty object
	var Pairs = query.split(/[;&]/);
	for (var i = 0; i < Pairs.length; i++) {
		var KeyVal = Pairs[i].split('=');
		if (! KeyVal || KeyVal.length != 2) continue;
		var key = decodeURIComponent(KeyVal[0]);
		var val = decodeURIComponent(KeyVal[1]);
		val = val.replace(/\+/g, ' ');
		Params[key] = val;
	}
	return Params;
}

// get script tag object in order to retrieve query string params
var myScript = document.getElementById('bwphotocontest_container');
var queryString = myScript.src.replace(/^[^\?]+\??/, '');
var jsQueryParams = parseQuery(queryString);
queryString = window.location.href.replace(/^[^\?]+\??/, '');
var windowQueryParams = parseQuery(queryString);

if (jsQueryParams['pid'] != undefined) {
	CONTEST_PARTNERID = jsQueryParams['pid'];
} else {
	CONTEST_PARTNERID = -1;
}

if (jsQueryParams['cid'] != undefined) {
	CONTEST_ID = jsQueryParams['cid'];
} else {
	CONTEST_ID = -1;
}

if (jsQueryParams['homeserver'] != undefined) {
	HOME_SERVER = jsQueryParams['homeserver'];
}
else {
	HOME_SERVER = 'http://partner.betawave.com';
}

/** main javascript includes to be loaded DO THIS AFTER THE QUERY STRING IS PARSED **/
var include_counter = 0;
/*****************************************************************************/
/* PNG Fix for IE6 */
var IE6 = navigator.userAgent.toLowerCase().indexOf('msie 6') != -1;

/** Generic JS classes here for contest **/
function ContestEntry(p) {
	this.id = p.id;
	this.partnerUserId = p.partnerUserId;
	this.partnerId = p.partnerId;
	this.partnerPhotoId = p.partnerPhotoId;
	this.thumbUrl = p.thumbUrl;
	this.fullUrl = p.fullUrl;
	this.fullUrlHeight = p.fullHeight;
	this.fullUrlWidth = p.fullWidth;
	this.judgement = p.judgement;
	if (p.firstName) {
		this.firstName = p.firstName;
	} else {
		this.firstName = "";
	}
	this.title = p.title;
	this.getResizedDims = function(maxHeight, maxWidth) {
		var newDimensions = new Object;
		newDimensions.width = 0;
		newDimensions.height = 0;
		if ((this.fullUrlHeight <= maxHeight) && (this.fullUrlWidth <= maxWidth)) {
			newDimensions.width = this.fullUrlWidth;
			newDimensions.height = this.fullUrlHeight;
		} else {
			var heightScale = maxHeight / this.fullUrlHeight;
			var widthScale = maxWidth / this.fullUrlWidth;
			var scaleRatio = Math.min(heightScale, widthScale);
			newDimensions.width = Math.round(this.fullUrlWidth * scaleRatio);
			newDimensions.height = Math.round(this.fullUrlHeight * scaleRatio);
		}

		return newDimensions;
	}
}


/** main javascript includes to be loaded **/
var include_array = [];
include_array[0] = HOME_SERVER + '/js/utilities.js';
include_array[1] = HOME_SERVER + PARTNER_JS_CONFIG_PATH + CONTEST_PARTNERID + '.js';

// Javascript include function which has a cross browser check to see if the javascript is fully loaded
// I have hard coded a check for the config file to assign the tab array to a global variable
function includeJS(file) {
	if (file != undefined) {

		var script = document.createElement('script');
		script.src = file;
		script.type = 'text/javascript';
		script.defer = true;
		if ((typeof script.onreadystatechange) != "undefined") {
			// IE
			script.onreadystatechange = function () {
				// IE randomly returns either complete or loaded so check for both
				if (script.readyState == 'complete' || script.readyState == 'loaded') {
					//				alert("onreadystatechange " + file);
					if (file == HOME_SERVER + PARTNER_JS_CONFIG_PATH + CONTEST_PARTNERID + '.js') {
						initContest();
					} else {
						include_counter++;
						includeJS(include_array[include_counter]);
					}
				}
			}
		} else {
			// Proper browsers
			script.onload = function () {
				if (file == HOME_SERVER + PARTNER_JS_CONFIG_PATH + CONTEST_PARTNERID + '.js') {
					//				alert("onload " + file);
					initContest();
				} else {
					include_counter++;
					includeJS(include_array[include_counter]);
				}
			}
		}


		document.getElementsByTagName("head").item(0).appendChild(script);
	}
	return false;
}

/** get config file settings and set global variables **/
function initContest() {
	if (partnerActive != null || partnerActive == 0) {
		PARTNER_ACTIVE = partnerActive;
	} else {
		PARTNER_ACTIVE = 1;
	}
	if (PARTNER_ACTIVE == 1) {
		if (window.handleContestReady) {
			window.handleContestReady();
		}
	} else {
		if (window.handleInactivePartner) {
			window.handleInactivePartner(CONTEST_PARTNER_ID);
		}
	}
}

includeJS(include_array[0]);
