function ims(box_id) {
	this.size = {'width':600, 'height':400 };
	this.video_size = {'width':600, 'height':469 };
	this.video_size_youtube = {'width':600, 'height':476 };

	var _self = this;
	var box_id = box_id?box_id:'';
	var obj_id = box_id?('ims_'+box_id):'';

	if(box_id) this.init();

	this.init = function(new_box_id){
		if(new_box_id) { 
			box_id = new_box_id;
			obj_id = ('ims_'+box_id);
		}

		var obj = document.getElementById(obj_id);
		if (!obj) {
			obj = document.createElement('div');
			obj.id = obj_id;
			obj.className = 'ims_box '+obj_id;

			var HTML = ''
				+ '<div class="ims_img_wrapper_x" id="' + obj_id + '_iw" style="width:'+_self.size.width+'px; height:'+_self.size.height+'px;">'
					+ '<div class="ims_img_wrapper"></div>'
					+ '<div class="ims_img_cover"></div>'
					+ '<div class="ims_loading">Loading...</div>'
				+ '</div>'
				+ '<a href="javascript:;" class="btn_close"></a>'
				+ '<div class="ims_text_button">'
				+ '<a href="javascript:;" class="btn_prev"></a>'
				+ '<a href="javascript:;" class="btn_next"></a>'
				+ '<div class="ims_text"></div>'
				+ '</div>';

			obj.innerHTML = '<iframe class="ims_scr_back" name="ims_scr_back" frameborder="0" allowTransparency="true" src="" ></iframe>'
				+ '<div class="ims_scr"></div>'
				+ '<div class="ims_center"><div class="ims_content_wrapper"><div class="ims_content">'
				+ '<div id="' + obj_id + '_inner" class="ims_content_inner">' + HTML + '</div>'
				+ '</div></div></div>';

			obj.style.visibility = 'hidden'; /*IE patch*/
			document.body.appendChild(obj);
			obj.style.display = 'none'; /*IE patch*/
			obj.style.visibility = 'visible';/*IE patch*/
		}
		return obj;
	};

	this.show = function(obj, new_box_id){
		var obj_ims = _self.init(new_box_id);
		var obj_box = document.getElementById(box_id);
		var items = obj_box.getElementsByTagName('A');
		var obj_found = null;
		var obj_prev = null;
		var obj_next = null;
		var obj_media = null;
		for(var i=0; i<items.length; i++){
			var item = items[i];
			if(obj==item) { 
				obj_found = item;
			} else if (item.className =='img_show') {
				if(obj_found){
					obj_next = item;
					break;
				} else {
					obj_prev = item;
				}
			}
		}
		
		if(obj_found) {
			//src_org, title, desc
			var obj_ims_inner =  document.getElementById(obj_id + '_inner');
			var obj_ims_iw =  document.getElementById(obj_id + '_iw');
			var old_size = findPosSize(obj_ims_iw); //	return [curleft,curtop,width,height];

			var HTML_media = '';
			var use_loader = true;
			var vsize = null;
			var obj_LKU = obj_found.getAttribute('src_LKU');
			if (obj_LKU){
				vsize = _self.video_size_youtube;
				HTML_media = obj_LKU;
				use_loader = false;
			} else if (obj_found.getAttribute('src_type')=='V'){
				vsize = _self.video_size;
				HTML_media = '<object id="player" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" name="player" width="100%" height="100%">'
					+'<param name="movie" value="/swf/player.swf" />'
					+'<param name="allowfullscreen" value="true" />'
					+'<param name="wmode" value="opaque" />'
					+'<param name="allowscriptaccess" value="always" />'
					+'<param name="flashvars" value="file='+obj_found.getAttribute('src_org')+'&amp;image='+obj_found.getAttribute('src_preview')+'" />'
					+'<object type="application/x-shockwave-flash" data="player.swf" width="100%" height="100%">'
						+'<param name="movie" value="/swf/player.swf" />'
						+'<param name="allowfullscreen" value="true" />'
						+'<param name="wmode" value="opaque" />'
						+'<param name="allowscriptaccess" value="always" />'
						+'<param name="flashvars" value="file='+obj_found.getAttribute('src_org')+'&amp;image='+obj_found.getAttribute('src_preview')+'" />'
						+'<p><a href="http://get.adobe.com/flashplayer">Get Flash</a> to see this player.</p>'
					+'</object>'
				+'</object>';
				use_loader =false;
			} else {
				HTML_media = '<img src="'+obj_found.getAttribute('src_org')+'" alt="'+HTMLEncode(obj_found.getAttribute('title'))+'" onload="ims_img_loaded(this, \''+obj_id+'\', '+old_size[2]+', '+old_size[3]+');" />';
			}
			var items = obj_ims_inner.getElementsByTagName('DIV');
			for(var i=0; i<items.length; i++){
				var item = items[i];
				switch(item.className){
					case 'ims_img_wrapper_x':  break;
					case 'ims_img_wrapper':	item.innerHTML = HTML_media; 
						obj_media = item.childNodes[0];
						break;
					case 'ims_img_cover':	item.style.display=use_loader?'block':'none'; set_style_opacity(item, 1); break;
					case 'ims_text':	item.innerHTML = HTMLEncode(obj_found.getAttribute('title')); break;
					case 'ims_loading':	item.style.display = (use_loader?'block':'none');
					case 'ims_text_button': if(!item.style.width) item.style.width = (ims_default.size.width)+'px'; //IE7 patch
				}
			}

			var items = obj_ims_inner.getElementsByTagName('A');
			for(var i=0; i<items.length; i++){
				var item = items[i];
				switch(item.className){
					case 'btn_close':	item.onclick = function(){ _self.close(); }; ; break;
					case 'btn_prev':	
						item.onclick = function(){ _self.show(obj_prev); }; 
						item.style.visibility = (obj_prev?'visible':'hidden');
						break;
					case 'btn_next':	
						item.onclick = function(){ _self.show(obj_next); }; 
						item.style.visibility = (obj_next?'visible':'hidden');
						break;
				}
			}

			if(use_loader){
				clear_class(obj_ims, 'loaded');
				update_class(obj_ims, 'loading');
			} else {
				clear_class(obj_ims, 'loading');
				update_class(obj_ims, 'loaded');
			}
			obj_ims.style.display = 'block';

			if (obj_found.getAttribute('src_type')=='V'){
				//swfobject.registerObject("player","9.0.98","/swf/expressInstall.swf");
				if(!obj_media) obj_media = document.getElementById('player');
				ims_img_loaded(obj_media, obj_id, old_size[2], old_size[3], vsize.width, vsize.height);
			}
			/*alert(obj_ims_inner.parentNode.parentNode.parentNode.className);
			alert(get_viewport_height() + ' ' +obj_ims_inner.parentNode.offsetHeight);
			obj_ims_inner.parentNode.parentNode.parentNode.style.top = ((get_viewport_height()-obj_ims_inner.parentNode.offsetHeight)/2) +'px';*/
		} else {
			alert("bug #1122");
		}
	};

	
	this.close = function(){
		var obj = document.getElementById(obj_id);
		if(obj) {
			var obj_ims_iw =  document.getElementById(obj_id + '_iw');
			var obj_ims_text_button = get_specTagChildEx(obj, 'DIV', 'ims_text_button');
			obj_ims_text_button.style.width = _self.size.width+'px';
			obj_ims_iw.style.width = _self.size.width+'px';
			obj_ims_iw.style.height = _self.size.height+'px';
			var items = obj_ims_iw.getElementsByTagName('DIV');
			for(var i=0; i<items.length; i++){
				var item = items[i];
				switch(item.className){
					case 'ims_img_wrapper':	item.innerHTML = ''; break;
					case 'ims_img_cover':	set_style_opacity(item, 1); break;
				}
			}

			obj.style.display = 'none';	
		}
	};

	return this;
}

var ims_default = null;

function ims_show(obj, box_id){
	if(!ims_default) ims_default = new ims();
	ims_default.show(obj, box_id);
}

function ims_img_loaded(obj, obj_id, oldsize_w, oldsize_h, newsize_w, newsize_h){
	if(ims_default){
		var obj_ims =  document.getElementById(obj_id);
		var obj_ims_loading = get_specTagChildEx(obj_ims, 'DIV', 'ims_loading');
		var obj_ims_text_button = get_specTagChildEx(obj_ims, 'DIV', 'ims_text_button');
		var obj_ims_iw =  document.getElementById(obj_id + '_iw');
		var obj_ims_cover = get_specTagChild(obj_ims_iw, 'DIV', 'ims_img_cover');

		var obj_media = document.getElementById('player');
		var media_type = obj_media?1:0;
		if(!obj_media) { 
			var tmps = document.getElementsByTagName('object');
			if (tmps.length){
				obj_media = tmps[0]; 
				media_type = 2;
			}
		}
		var old_size = {'width':(oldsize_w?oldsize_w:ims_default.size.width), 'height':(oldsize_h?oldsize_h:ims_default.size.height) }; 
		var new_size;
		if(newsize_w && newsize_h){
			new_size = {'width':newsize_w, 'height':newsize_h }; 
		} else {
			new_size = {'width':obj.width, 'height':obj.height }; 
		}
		var animators = [];
		var idx = 0;
		if (old_size.width!=new_size.width || old_size.height!=new_size.height){
			animators[idx++] = new Animator( {'onComplete':function(){obj.style.visibility='visible'; obj_ims_loading.style.display='none';  /*obj.style.display='inline';*/} } )
				.addSubject(new NumericalStyleSubject(obj_ims_text_button, 'width', old_size.width, new_size.width)) /*ie7 patch*/
				.addSubject(new NumericalStyleSubject(obj_ims_iw, 'width', old_size.width, new_size.width))
				.addSubject(new NumericalStyleSubject(obj_ims_iw, 'height', old_size.height, new_size.height));
		} else {
			//obj.style.display='inline';
			obj_ims_loading.style.display='none';
			obj.style.visibility='visible';
		}
		animators[idx++] = new Animator( {'onComplete':function(){ 
			clear_class(obj_ims, 'loading'); 
			update_class(obj_ims, 'loaded'); 
			if(newsize_w && newsize_h) { 
				switch(media_type){
					case 1: obj_media.sendEvent('PLAY'); break;
					case 2: /*obj_media.playVideo();*/ break;
				}
			} } } )
			.addSubject(new NumericalStyleSubject(obj_ims_cover, 'opacity', 1, 0));
		obj_ims.animation = new AnimatorChain(animators);
		obj_ims.animation.seekTo(1);
	}
}