var JSPopup = {
	dummy : null,
	inc_dec : function(){
		if(document.all)
			return 10;
		else
			return 2.5;
	},
	go : function(a){
		//var a = this;
		var title = a.title;
		var content = a.href;
		var options = {};
		options['height'] = 100;
		if(a.rel){
			var options_list = a.rel.split(",");
			for(var i=0; i<options_list.length; i++){
				if(options_list[i].indexOf(":")){
					var option = options_list[i].substr(0,options_list[i].indexOf(":"));
					var value = options_list[i].substr(options_list[i].indexOf(":")+1);
					options[option] = value;
				}
				else
					options[options_list[i]] = true;
			}
		}

		JSPopup.createOverlay();
		JSPopup.createWindow(title,content,options['height']);

		return false;
	},
	createWindow : function(title,content,h){
		if(document.getElementById("popup"))
			document.body.removeChild(document.getElementById("popup"));

		var w = 380;
		var ptop = JSPopup.getTop();

		// get page w and h
		var pw = document.body.offsetWidth;
		var ph = document.body.offsetHeight;

		// get screen w and h
		var sw = document.body.clientWidth;
		var sh = screen.availHeight;
		
		var x = Math.floor((sw-w)/2);
		var y = Math.floor((sh-h)/3);

		var popup = document.createElement("div");
		popup.id = "popup";
		popup.style.top = (ptop+y)+"px";
		popup.style.left = x+"px";

		var popup_top = document.createElement("div");
		popup_top.id = "popup_top";
		popup.appendChild(popup_top);

		var popup_tile = document.createElement("div");
		popup_tile.id = "popup_tile";
		
			var popup_header = document.createElement("ul");
			popup_header.className = "popup_header";
			
				var popup_logo = document.createElement("li");
				popup_logo.className = "popup_logo";
				popup_logo.innerHTML = " ";
				popup_header.appendChild(popup_logo);
				
				var popup_label = document.createElement("li");
				popup_label.className = "popup_label";
				popup_label.innerHTML = title;
				popup_header.appendChild(popup_label);
				
				var popup_close = document.createElement("li");
				popup_close.className = "popup_close";
				
					var close = document.createElement("a");
					close.title = "close";
					close.href = "#";
					close.onclick = function(){
						clearTimeout(JSPopup.dummy);
						JSPopup.resizeDown("popup_frame",'JSPopup.fadeOut("popup","JSPopup.close();");');
						return false;
					}
					
					var span = document.createElement("span");
					span.innerHTML = "x";
					close.appendChild(span);
				
				popup_close.appendChild(close);
				
				popup_header.appendChild(popup_close);

			popup_tile.appendChild(popup_header);

			var popup_form_container = document.createElement("div");
			popup_form_container.className = "popup_form_container";
			
				var popup_form = document.createElement("div");
				popup_form.className = "popup_form";

					var iframe = document.createElement("iframe");
					iframe.frameBorder = 0;
					iframe.width = 360;
					iframe.height = 0;
					iframe.id = "popup_frame";
					iframe.src = content;
					popup_form.appendChild(iframe);
				
				popup_form_container.appendChild(popup_form);

			popup_tile.appendChild(popup_form_container);
			

		popup.appendChild(popup_tile);

		var popup_bottom = document.createElement("div");
		popup_bottom.id = "popup_bottom";
		popup.appendChild(popup_bottom);
		
		Opacity.set(popup, 0);

		document.body.appendChild(popup);

		window.onscroll = function(e){
			JSPopup.movePopup(e);
		}
		JSPopup.fadeIn("popup",'JSPopup.resizeUp("popup_frame", '+h+');');
	},
	createOverlay : function(){
		if(document.getElementById("popup_overlay"))
			document.body.removeChild(document.getElementById("popup_overlay"));
		var div = document.createElement("div");
		div.id = "popup_overlay";
		div.style.top = JSPopup.getTop()+"px";
		if(document.all)
			div.style.height = screen.availHeight+"px";
		document.body.appendChild(div);
	},
	getTop : function(){
		return window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;
	},
	close : function(){
		if(document.getElementById("popup_overlay"))
			document.body.removeChild(document.getElementById("popup_overlay"));
		if(document.getElementById("popup"))
			document.body.removeChild(document.getElementById("popup"));
	},
	movePopup : function(e){
		var top = JSPopup.getTop();
		if(document.getElementById("popup_overlay"))
			document.getElementById("popup_overlay").style.top = top+"px";
		
		if(document.getElementById("popup")){
			var popup = document.getElementById("popup");
			var sh = screen.availHeight;
			var ph = popup.offsetHeight;
			var h = Math.floor((sh-ph)/3);

			popup.style.top = (top+h)+"px";
		}
	},
	fadeIn : function(id, actionAfter){
		actionAfter = actionAfter?actionAfter:'';
		var elem = document.getElementById(id);
		if (elem) {
			var opacity = 0;
			if (!Opacity.check(elem)) 
				Opacity.set(elem, 0);
			else 
				opacity = Opacity.get(elem);
			
			var new_opacity = Math.round(opacity + JSPopup.inc_dec());
			Opacity.set(elem, new_opacity);
			if (new_opacity <= 100) 
				JSPopup.dummy = setTimeout("JSPopup.fadeIn('" + id + "','" + actionAfter + "')", 5);
			else {
				clearTimeout(JSPopup.dummy);
				eval(actionAfter);
			}
		}
		else
			eval(actionAfter);
	},
	fadeOut : function(id, actionAfter){
		actionAfter = actionAfter?actionAfter:'';
		var elem = document.getElementById(id);
		if (elem) {
			var opacity = 100;
			if (!Opacity.check(elem)) 
				Opacity.set(elem, 100);
			else 
				opacity = Opacity.get(elem);
			
			var new_opacity = Math.round(opacity - JSPopup.inc_dec());
			Opacity.set(elem, new_opacity);
			if (new_opacity > 0) 
				JSPopup.dummy = setTimeout("JSPopup.fadeOut('" + id + "','" + actionAfter + "')", 5);
			else {
				clearTimeout(JSPopup.dummy);
				eval(actionAfter);
			}
		}
		else
			eval(actionAfter);
	},
	resizeUp : function(id, height, actionAfter){
		actionAfter = actionAfter?actionAfter:'';
		var elem = document.getElementById(id);
		if (elem) {
			var currentH = elem.offsetHeight;
			var newHeight = Math.round(currentH + JSPopup.inc_dec());
			elem.style.height = newHeight + "px";
			if (newHeight <= height) 
				JSPopup.dummy = setTimeout("JSPopup.resizeUp('" + id + "'," + height + ", '" + actionAfter + "')", 5);
			else {
				clearTimeout(JSPopup.dummy);
				eval(actionAfter);
			}
		}
		else
			eval(actionAfter);
	},
	resizeDown : function(id, actionAfter){
		actionAfter = actionAfter?actionAfter:'';
		var elem = document.getElementById(id);
		if(elem){
			var currentH = elem.offsetHeight;
			var newHeight = Math.floor(currentH-JSPopup.inc_dec());
			elem.style.height = newHeight+"px";
			if(newHeight > 0)
				JSPopup.dummy = setTimeout("JSPopup.resizeDown('"+id+"','"+actionAfter+"')", 5);
			else{
				clearTimeout(JSPopup.dummy);
				eval(actionAfter);
			}
		}
		else
			eval(actionAfter);
	},
	init : function(){
		var elementArray = [];
		if (document.all)
			elementArray = document.all;
		else
			elementArray = document.getElementsByTagName("*");
		
		var matchedArray 	= [];
	
		for (var i=0; i < elementArray.length; i++){
			var pattern = new RegExp("(^| )mb( |$)");
			if (pattern.test(elementArray[i].className))
				matchedArray[matchedArray.length] = elementArray[i];
		}

		for(var i=0; i<matchedArray.length; i++){/*
			matchedArray[i].addEvent('click', function(){
				return JSPopup.go(this);
				//return false;
			});*/
			matchedArray[i].onclick = function(){
				return JSPopup.go(this);
			}
		}
	}
};

var Opacity = {
	check : function(elem){
		if(document.all){
			if(elem.style.filter){
				var rx = /opacity\=([0-9])+/img;
				return rx.test(elem.style.filter)?true:false;
			}
			else
				return false;
		}
		else 
			return elem.style.opacity ? true : false;
	},
	set : function(elem, opacity){
		if(document.all)
			elem.style.filter = "alpha(opacity="+opacity+")";
		else
			elem.style.opacity = opacity/100;
	},
	get : function(elem){
		if(document.all){
			var rx = /opacity\=([0-9])+/img;
			var opacitymatch = elem.style.filter.match(rx);
			var opacity = opacitymatch[0].replace("opacity=","");

			var rx = /opacity\=([0-9])+/img;
			var opacityVal = rx.test(elem.style.filter)?opacity:0;
			return parseInt(opacityVal, 10);
		}
		else
			return parseInt(Opacity.check(elem)?elem.style.opacity*100:0, 10);
	}
};