/* (C) kaizu */
/*@cc_on _d=document;eval('var document=_d')@*/


function portopladiana() {
	this.env = {};
	this.env.ua       = navigator.userAgent;
	this.env.isMac    = this.env.ua.match(/Mac/);
	this.env.isWin    = this.env.ua.match(/Win/);
	this.env.isNN     = document.layers;
	this.env.isGecko  = this.env.ua.match(/Gecko\//);
	this.env.isSafari = this.env.ua.match(/AppleWebKit/);
	this.env.isOpera  = window.opera;
	this.env.isIE     = (document.all && !this.env.isOpera);
	this.env.isIE4    = this.env.ua.match(/MSIE 4\./);
	this.env.isIE5    = this.env.ua.match(/MSIE 5\./);
	this.env.isIE6    = this.env.ua.match(/MSIE 6\.0/);
	this.env.isMacIE  = (this.env.isMac && this.env.isIE);
	this.env.isOldIE  = (this.env.isIE4 || this.env.isIE5 || this.env.isIE6 || this.env.isMacIE);
	this.env.DOMok    = (document.documentElement && document.getElementsByTagName);
	this.conf = {};
	this.conf.mouseOverSuffix = '_o';
	this.conf.mouseDownSuffix = '_s';
	this.preloadImages = {};
	this.preloadImages = {};
	if (this.env.isIE6) {
		try {
			document.execCommand("BackgroundImageCache", false, true);
		} catch(err) {
		}
	}
}


portopladiana.prototype = {
	
	addEvent : function (o, e, f, c) {
		if (o.addEventListener) {
			o.addEventListener(e, f, c);
		} else {
			o.attachEvent('on' + e, f);
		}
	},

	removeEvent : function (o, e, f, c) {
		if (o.removeEventListener) {
			o.removeEventListener(e, f, c);
		} else {
			o.detachEvent('on' + e, f);
		}
	},
	
	getElementsByClassName : function(tagName, className) {
		var results  = new Array();
		var elements = document.getElementsByTagName(tagName);
		for (var i = 0, elmLength = elements.length; i < elmLength; i++) {
			if (!elements[i].className) continue;
			var classes = elements[i].className.split(' ');
			for (var j = 0, clsLength = classes.length; j < clsLength; j++) {
				if (classes[j] == className) {
					results[results.length] = elements[i];
					break;
				}
			}
		}
		return results;
	},

	setupRollOverImage : function() {
		var isOldIE = PP.env.isOldIE;
		var imgs = document.getElementsByTagName('img');
		if (!imgs) return;
		for (var i = 0, imgLength = imgs.length; i < imgLength; i++) {
			var img = imgs[i];
			if (img.parentNode.tagName.toLowerCase() == 'a') {
				var alphaImgLoader = (isOldIE && img.src.match(/.png/));
				img._alphaImgLoader = alphaImgLoader;
				img._originalSrc  = img.src;
				img._mouseoverSrc = img.src.replace(/(\.gif|\.jpg|\.png)/, PP.conf.mouseOverSuffix + '$1');
				img._mousedownSrc = img.src.replace(/(\.gif|\.jpg|\.png)/, PP.conf.mouseDownSuffix + '$1');
				PP.addEvent(img, 'mouseover', PP.swapOverImage);
				PP.addEvent(img, 'mousedown', PP.swapDownImage);
				PP.addEvent(img, 'mouseout',  PP.swapOriginalImage);
				PP.preloadImage(img, 'mouseover');				
				PP.preloadImage(img, 'mousedown');
				if (alphaImgLoader) PP.replaceBackgroundImage(img);
			} else if (isOldIE && imgs[i].src.match(/.png/)) {
				PP.replaceBackgroundImage(imgs[i]);
			}
		}
	},
	
	swapOverImage : function(e) {
		var o = (document.addEventListener) ? this : e.srcElement;
		if (o._alphaImgLoader) {
			PP.replaceBackgroundImage(o, 'mouseover');
		} else {
			o.src = o._mouseoverSrc;
		}
	},
	
	swapDownImage : function(e) {
		var o = (document.addEventListener) ? this : e.srcElement;
		if (o._alphaImgLoader) {
			PP.replaceBackgroundImage(o, 'mousedown');
		} else {
			o.src = o._mousedownSrc;
		}
	},
	
	swapOriginalImage : function(e) {
		var o = (document.addEventListener) ? this : e.srcElement;
		if (o._alphaImgLoader) {
			PP.replaceBackgroundImage(o);
		} else {
			o.src = o._originalSrc;
		}
	},	
		
	preloadImage : function(img, type) {
		var i = PP.preloadImages.length;
		PP.preloadImages[i] = new Image();
		var g = PP.preloadImages[i];
		var handler = (type == 'mouseover') ? PP.swapOverImage : PP.swapDownImage;
		var preloadSrc = (type == 'mouseover') ? img._mouseoverSrc : img._mousedownSrc;
		g.onerror = function() {
			PP.removeEvent(img, type, handler);
		};
		g.src = preloadSrc;
	},

	replaceBackgroundImage : function(img, type) {
		var imageHref = img.href;
		if (!imageHref) return;
		var imageWidth = img.width;
		var imageHeight = img.height;
		img.src = '/share/images/png.gif';
		img.width = imageWidth;
		img.height = imageHeight;
		var src = (!type) ? (img._originalSrc ? img._originalSrc : imageHref) : (type == 'mouseover') ? img._mouseoverSrc : img._mousedownSrc;
		img.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + src + '", sizingMethod="scale")';
	},
	
	createCookie : function(cookieName, value, days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime() + (24 * 60 * 60 * 1000 * days));
			var expires = ';expires=' + date.toGMTString();
		} else {
			expires = '';
		}
		document.cookie = cookieName + '=' + value + expires + '; path=/';
	},
	
	readCookie : function(cookieName) {
		var c = document.cookie.split(';');
		for (var i = 0, cookieLength = c.length; i < cookieLength; i++) {
			if (c[i].indexOf(cookieName) > -1) {
				var v = c[i].split('=');
				return v[1];
			}
		}
		return null;
	},

	addStyleRule : function(selector, property) {
		if (document.styleSheets[0].addRule) {
			document.styleSheets[0].addRule(selector, "{" + property + "}");
		} else if (document.styleSheets[0].insertRule) {
			document.styleSheets[0].insertRule(selector + "{" + property + "}", document.styleSheets[0].cssRules.length);
		} else {
			return false;
		}
	},

	createObjectElement : function(src, width, height, param) {
		document.write('\n<object data="' + src + '" width="' + width + '" height="' + height + '" type="application/x-shockwave-flash">\n');
		document.write('<param name="movie" value="' + src + '" />\n');
		if (param) for (var key in param) document.write('<param name="' + key + '" value="' + param[key] + '" />\n');
		document.write('</object>\n');
	},
	
	getGoogleMap : function(lat, lng, zoom, type) {
		if (GBrowserIsCompatible()) {
			var map = new GMap2(document.getElementById('GoogleMap'));
			var mark = new GMarker(new GLatLng(lat, lng));
			map.setCenter(new GLatLng(lat, lng), (zoom) ? zoom : 15);
			map.addOverlay(mark);
			map.addControl(new GLargeMapControl());
		}
	},
	
	setCopyright : function() {
		var address = document.getElementsByTagName('address')[0];
		if (!address) return false;
		var date = new Date(); 
		address.firstChild.nodeValue = address.firstChild.nodeValue.replace('2007', '2007-' + date.getFullYear());
	}

}

var PP = new portopladiana();

window.onload = function() {
	PP.setCopyright();
	PP.setupRollOverImage();
	if (document.getElementById('GoogleMap')) {
		PP.getGoogleMap(37.916411, 139.044852, 14);
		document.onunload = GUnload;
	}
}

