/**
 * Smartphone 
 * 2009.02.18
 */
var Smartphone = {
	// public String - name of this script
	scriptName: "Smartphone",

	// private String - name of useragent of navigator instance
	userAgent : "",

	// private String - regular expression for specify windows mobile (especially touch diamond)
	expression : "(HT01A|HT02A|X04HT|X05HT)",

	// private boolean - is this useragent is smartphone?
	smartphone: false,

	// private String - target element name to optimize
	targetElement: "div",

	// private String - delimiter if optimize() method need
	delimiter: "_",

	// private String - position to place smartphone flag
	flagPlacingMethod: "prefix",

	// private String[] - methods to place smartphone flag
	flagPlacingMethods: ["prefix", "suffix"],

	// public void initialize(String targetElement, String delimiter, String fpm)
	initialize: function(targetElement, delimiter, fpm){
		if (targetElement != "") this.targetElement = targetElement;
		if (delimiter != "")this.delimiter = delimiter;
		this.setUserAgent();
		this.defineMethod(fpm);
		if (this.smartphone) {
			this.optimize();
		}
	},

	// private void setUserAgent()
	setUserAgent: function(){
		this.userAgent = navigator.userAgent;
		this.smartphone = this.isSmartphone();
	},

	// public String getUserAgent()
	getUserAgent: function(){		return this.userAgent;

	},

	// public boolean isSmartphone()
	isSmartphone: function(){
		// User agent is defferent on each terminations
	//	if (this.userAgent.match(/Windows CE/i)){
		if (this.userAgent.match(new RegExp(this.expression))){
			return true;
		}
		return false;
	},

	// private void defineMethod(String fpm)
	defineMethod: function(fpm){
		for (var i = 0; i < this.flagPlacingMethods.length; i++){
			if (this.flagPlacingMethods[i] == fpm){
				this.flagPlacingMethod = fpm;
			}
		}
	},

	// private void optimize()
	optimize: function(){
		var nodes  = window.document.getElementsByTagName(this.targetElement);
		var name   = this.scriptName.toLowerCase();
		var regexp = new RegExp(name);
		for (var i = 0; i < nodes.length; i++){
			if (nodes[i].id && nodes[i].className){
				if (nodes[i].className.match(regexp)){
					switch (this.flagPlacingMethod){
						case "suffix":
							nodes[i].id = nodes[i].id + this.delimiter + name;
							break;
						case "prefix":
						default:
							nodes[i].id = name + this.delimiter + nodes[i].id;
							break;
					}
				}
			}
		}

		// For body
		var bodyObj = window.document.body;
		if (bodyObj.id && bodyObj.className){
			if (bodyObj.className.match(regexp)){
				switch (this.flagPlacingMethod){
					case "suffix":
						bodyObj.id = bodyObj.id + this.delimiter + name;
						break;
					case "prefix":
					default:
						bodyObj.id = name + this.delimiter + bodyObj.id;
						break;
				}
			}
		}
	}
	
}


/**
 * GalleryScreens
 * 2009.02.19
 */
var GalleryScreens = {
	// public String - name of this script
	scriptName: "GalleryScreens",

	// private String - must be a className
	targtElements: "gallery-screens",

	// private String
	replacement: "large",

	// private HTMLImageElement[]
	largeImages: new Array(),

	// public void initialize()
	initialize: function(targetElements, replacement){
		if (targetElements != "") this.targetElements = targetElements;
		if (replacement != "") this.replacement = replacement;

		var imgElements = window.document.getElementsByTagName("img");
		for (var i = 0; i < imgElements.length; i++){
			if (imgElements[i].className){
				if (imgElements[i].className.match(new RegExp(this.targetElements))){
					this.largeImages[imgElements[i].src] = new Image();
					this.largeImages[imgElements[i].src].src = imgElements[i].src.replace(new RegExp(this.replacement), "");
					this.setEvent(imgElements[i]);
				}
			}
		}
	},

	// private void setEvent()
	setEvent: function(element){
		if (window.attachEvent){
			element.attachEvent("onmouseover", function(){GalleryScreens.changeImage(this);});
		}else{
			element.addEventListener("mouseover", function(){GalleryScreens.changeImage(this);}, false);
		}
	},

	// public void changeImage()
	changeImage: function(eventElement){
		var zoomedElement = document.getElementById("magnifiedImage");
		if (zoomedElement.tagName == "IMG"){
			zoomedElement.src = this.largeImages[eventElement.src].src;
		}
	}
}


