
/**********************************************************
* select code
*/

function SelectCode(){}


SelectCode.prototype = {

	initialize:function(){

		this.isMac = navigator.userAgent.indexOf("Mac") != -1;
		this.isSafari  = navigator.userAgent.indexOf("Safari") != -1;
		this.isSafari2 = navigator.userAgent.indexOf("Safari/4") != -1;
		this.isSafari3 = navigator.userAgent.indexOf("Safari/5") != -1;
		this.isSafari1 = (this.isSafari && !this.isSafari2 && !this.isSafari3)?true:false,
		this.isOpera = window.opera;

		var ids = arguments;
		var len = ids.length;
		this.targetElements = [];
		for(var i = 0; i < len; i++) {
			var triggerElements = document.getElementById(ids[i]).getElementsByTagName('INPUT');
			this.targetElements[i] = document.getElementById(ids[i]).getElementsByTagName('TEXTAREA')[0];
			var len02 = triggerElements.length;
			for(var ii = 0; ii < len02; ii++) {
				if(triggerElements[ii].checked){
					this.targetElements[i].value = triggerElements[ii].value;
					this.targetElements[i].onfocus = function() {
						this.select();
					}
				}
				triggerElements[ii].target = i;
				triggerElements[ii].onclick = this.clickEvent;
			}
			
		}
		if(this.isMac && (this.isSafari1 || this.isSafari2)) {
			var len = this.targetElements.length;
			for(var i = 0; i < len; i++) {
				this.safariBorderClear(this.targetElements[i]);
			}
		}

	},
	clickEvent:function(){
		selectCode.targetElements[this.target].value = this.value;
	},
	safariBorderClear:function(obj){

		var parentObj = obj.parentNode;
		var parentObjPos = {x:this.getPos(parentObj).x,y:this.getPos(parentObj).y }
		var targetObj = obj;
		parentObj.style.position = "relative";

		targetObj.A = {x:(this.getObjCorner(targetObj).A.x - parentObjPos.x) , y:(this.getObjCorner(targetObj).A.y - parentObjPos.y)};
		var borderObj = [];

		for(var i = 0; i < 4; i++){
			borderObj[i] = document.createElement("div");
			parentObj.appendChild(borderObj[i]);
			borderObj[i].style.backgroundColor = "#FFF";
			borderObj[i].style.position = "absolute";
		}

		borderObj[0].style.top    = targetObj.A.y + "px";
		borderObj[0].style.left   = (targetObj.A.x - 2) + "px";
		borderObj[0].style.width  = targetObj.offsetWidth + "px";
		borderObj[0].style.height = 1 + "px";

		borderObj[1].style.top    = targetObj.A.y + "px";
		borderObj[1].style.left   = (targetObj.A.x - 3) + targetObj.offsetWidth + "px";
		borderObj[1].style.width  = 1 + "px";
		borderObj[1].style.height = targetObj.offsetHeight + "px";

		borderObj[2].style.top    = (targetObj.A.y - 1) + targetObj.offsetHeight + "px";
		borderObj[2].style.left   = (targetObj.A.x - 2) + "px";
		borderObj[2].style.width  = targetObj.offsetWidth + "px";
		borderObj[2].style.height = 1 + "px";

		borderObj[3].style.top    = targetObj.A.y + "px";
		borderObj[3].style.left   = (targetObj.A.x - 2) + "px";
		borderObj[3].style.width  = 1 + "px";
		borderObj[3].style.height = targetObj.offsetHeight + "px";
	},
	getPos:function(elem) {
		var obj = new Object();
		do {
			obj.x = (!obj.x) ? elem.offsetLeft : obj.x + elem.offsetLeft;
			obj.y = (!obj.y) ? elem.offsetTop : obj.y + elem.offsetTop;
		} while((elem = elem.offsetParent) != null);
		return {x:obj.x < 0 ? 0 : obj.x, y:obj.y };
	},
	getObjCorner:function(elem) {
		var cnrA = new Object();
		var cnrB = new Object();
		cnrA.x = this.getPos(elem).x;
		cnrA.y = this.getPos(elem).y;
		cnrB.x = cnrA.x + elem.offsetWidth;
		cnrB.y = cnrA.y + elem.offsetHeight;
		return {A:cnrA, B:cnrB};
	}
}

var selectCode = new SelectCode();