﻿var ImagePreloader = Class.create();

ImagePreloader.prototype = {
	initialize: function(images, callBack, observe) {
		this.dict = [];
		$A(images).each(function(img) {
			this.dict[img] = '';
		}.bind(this));
		this.callBack = callBack;
		this.nLoaded = 0;
		this.nProcessed = 0;
		this.aImages = new Array;
		this.nImages = images.length;
		$H(this.dict).keys().each(function (img) {
			this.preload(img);
		}.bind(this));
		if (observe) {
			window.setInterval(this.checkLoading.bind(this), 5000);
		}
	},
	
	checkLoading: function() {
	},

	preload: function(image) {
		var oImage = new Image();
		this.aImages.push(oImage);
		//$('debug').innerHTML += this.aImages.length + ':';
		oImage.onload = ImagePreloader.prototype.onload;
		oImage.onerror = ImagePreloader.prototype.onerror;
		oImage.onabort = ImagePreloader.prototype.onabort;
		oImage.oImagePreloader = this;
		oImage.bLoaded = false;
		oImage.src = image;
	},

	onComplete: function() {
		this.nProcessed++;
		//$('debug').innerHTML += '(' + this.nProcessed + ' ' +  $H(this.dict).keys().length+ ')';
		if(this.nProcessed == $H(this.dict).keys().length) {
			this.callBack(this.aImages, this.nLoaded);
		}
	},

	onload : function() {
		this.bLoaded = true;
		this.oImagePreloader.nLoaded++;
		var newKey = this.src.replace(/.+(images.*)/, '$1');
		this.oImagePreloader.dict[newKey] = 'Ni';
		this.oImagePreloader.onComplete();
	},

	onerror : function() {
		this.bError = true;
		this.oImagePreloader.onComplete();
	},
	
	onabort : function() {
		this.bAbort = true;
		this.oImagePreloader.onComplete();
	}
}

var LanguageRotator = Class.create();
LanguageRotator.prototype = {
	chooseVerbiage: [ 'Deutsch','简体中文','English','Español','Français','Italiano','日本語','العربيه','Português' ],

	initialize: function(divObj) {
		this.index = 0;
		this.divObj = divObj;
	},

	rotate: function() {
		if (this.index >= this.chooseVerbiage.length) {
			this.index = 0;
		}
		this.divObj.innerHTML = this.chooseVerbiage[this.index++];
	}
};

function languageOptionMouseOver(evt) {
	el = Event.element(evt);
	el.style.backgroundColor = 'yellow';
}

function languageOptionMouseOut(evt) {
	el = Event.element(evt);
	el.style.backgroundColor = 'white';

}



function languageOptionClick() {
//$('languageexpanded').style.visibility = 'hidden';
	 el = document.languageForm.languageSelect.options[document.languageForm.languageSelect.selectedIndex].value;
	if (el == 'lang_de') {
		window.location = '../de/home.html';
	}
	if (el == 'lang_cn') {
		window.location = '../cn/home.html';
	}
	if (el == 'lang_es') {
		window.location = '../es/home.html';
	}
	if (el == 'lang_fr') {
		window.location = '../fr/home.html';
	}
	if (el == 'lang_it') {
		window.location = '../it/home.html';
	}
	if (el == 'lang_jp') {
		window.location = '../jp/home.html';
	}
	if (el == 'lang_ar') {
		window.location = '../ar/home.html';
	}
	if (el == 'lang_pt') {
		window.location = '../pt/home.html';
	}

	}

function parentMouseOut(evt) {
	el = Event.element(evt);
	related = evt.relatedTarget || evt.toElement;
	if (related.tagName != 'TABLE' && related.tagName != 'TD') {
		$('languageexpanded').style.visibility = 'hidden';
	}
}

function expandLanguageSelector() {
	expandElement = $('languageexpanded');
	Element.update(expandElement, '');
	Element.update(expandElement, '<table id="selectParent"><tbody>' +
	'<tr><td id="lang_de" class="langOpt">Deutsch</td></tr>' +
	'<tr><td id="lang_cn" class="langOpt">中国</td></tr>' +
		'<tr><td id="lang_en" class="langOpt">English</td></tr>' +
		'<tr><td id="lang_es" class="langOpt">Espanol</td></tr>' +
		'<tr><td id="lang_fr" class="langOpt">Francais</td></tr>' +
		'<tr><td id="lang_it" class="langOpt">Italiano</td></tr>' +
		'<tr><td id="lang_jp" class="langOpt">日本語</td></tr>' +
		'<tr><td id="lang_ar" class="langOpt">العربيه</td></tr>' +
		'<tr><td id="lang_pt" class="langOpt">Portugues</td></tr>' +
		'</tbody></table>');
	expandElement.style.visibility = 'visible';
	//Rico.Corner.round(expandElement);
	document.getElementsByClassName('langOpt').each (function(element) {
		Event.observe(element, 'mouseover', languageOptionMouseOver.bindAsEventListener());
		Event.observe(element, 'mouseout', languageOptionMouseOut.bindAsEventListener());
		Event.observe(element, 'click', languageOptionClick.bindAsEventListener());
	});
	Event.observe($('selectParent'), 'mouseout', parentMouseOut.bindAsEventListener());
}


