var ROOT = '../WebRoot/';

ROOT = CTX+'/';

;(function($) {
	
	$.fn.extend({	
		loadshow: function() {	//loading效果
			var width = this.innerWidth(),
				height = this.innerHeight();
			if($.InSightCN.IECheck.IE6 || $.InSightCN.IECheck.IE7) {
				width -= 2;
				height -= 2; 
			};
			$loading = $('<div class="loading"></div>');
			this.css({'position': 'relative'}).prepend($loading);
			$loading.addClass('loading').css({
				'position': 'absolute',
				'top': '0',
				'left': '0',
				'z-index': '10',
				'opacity': '0.5',
				'width': width,
				'height': height
			});
		},
		
		loadhide: function() {	//loading消失
			var _this = this;
			_this.find('.loading').hide().remove();
			_this.css({'position': 'static'});
		},
		
		quicksubmit : function(btnObj) { //Ctrl+Enter快速发布
			this.onkeydown(function(event) {
				if(event.ctrlKey && event.keyCode==13){
					btnObj.trigger('click');
				};
			});
		},
		
		copyText : function(textObj, areaId) { //修复IE以外浏览器的复制功能
			var clip = new ZeroClipboard.Client();
			ZeroClipboard.setMoviePath( ROOT + 'js/zeroclipboard/ZeroClipboard.swf' );
			clip.setText(textObj.val());
			var id = this.attr('id');
			clip.glue(id, areaId);
			clip.reposition(id);
			if($.InSightCN.userAgent.indexOf('chrome') == -1) {  //safari
				this.css({'background': 'none'});
			};
			$('#container_'+id).live('click', function() {
				textObj.select();
				alert('复制成功!');
			});
		},
		
		imgPlay : function(options) {
			return this.each(function() {
				var _this = this;
				var firstImg = new Image();
				firstImg.src = $('img:first', _this).attr('src');
				if($.InSightCN.IECheck.IE) {
					//firstImg.onreadystatechange = function () {
						if (firstImg.readyState == "complete") {
							initFlash();
						};
					//};
				} else {
					firstImg.onload = function () {
						if (firstImg.complete == true) {
							initFlash();
						};
					};
				};
				function initFlash() {
					var defaults = $.extend({
						width : $('img:first', _this).width(),
						height : $('img:first', _this).height(),
						btn_pos : 3,
						stop_time : 5000,
						show_text : 0,
						txtcolor : '000000',
						bgcolor : 'dddddd',
						flash_src : ROOT + 'js/focus.swf'
					}, options);
					
					var images = {
						imgs : [],
						links : [],
						texts : []
					};
					
					$('a', _this).each(function() {
						images.imgs.push($('img', this).attr('src'));
						images.links.push($(this).attr('href'));
						images.texts.push($('img', this).attr('alt'));
					});
										
					var swf_height = (defaults.show_text == 1) ? (defaults.height + 20) : defaults.height,
						pics = '', links = '', texts = '';
					
					for(var i = 0, length = images.imgs.length; i < length; i++) {
						pics += '|' + images.imgs[i];
						links += '|' + images.links[i];
						texts += '|' + images.texts[i];
					};
					pics = pics.substring(1),
					links = links.substring(1),
					texts = texts.substring(1);
					
					$(_this).parent().html(
						'<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cabversion=6,0,0,0" width="'+ defaults.width +'" height="'+ swf_height +'">' +
							'<param name="movie" value="'+defaults.flash_src+'">' +
							'<param name="quality" value="high"><param name="wmode" value="Transparent">' +
							'<param name="FlashVars" value="pics='+pics+'&links='+links+'&texts='+texts+'&pic_width='+defaults.width+'&pic_height='+defaults.height+'&show_text='+defaults.show_text+'&txtcolor='+defaults.txtcolor+'&bgcolor='+defaults.bgcolor+'&button_pos='+defaults.btn_pos+'&stop_time='+defaults.stop_time+'">' +
							'<embed wmode="Transparent" src="'+defaults.flash_src+'" FlashVars="pics='+pics+'&links='+links+'&texts='+texts+'&pic_width='+defaults.width+'&pic_height='+defaults.height+'&show_text='+defaults.show_text+'&txtcolor='+defaults.txtcolor+'&bgcolor='+defaults.bgcolor+'&button_pos='+defaults.btn_pos+'&stop_time='+defaults.stop_time+'" quality="high" width="'+ defaults.width +'" height="'+ swf_height +'" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />' +
						'</object>'
					);
				};
			});
		}
	});
	
	$.InSightCN =  { 
		//START 浏览器检测
		userAgent : navigator.userAgent.toLowerCase(),
		
		Mozilla : $.browser.mozilla,	//判断是否Mozilla浏览器
		
		Safari : $.browser.safari,		//判断是否Safari浏览器
		
		Opera : $.browser.opera,		//判断是否Opera浏览器
		
		IECheck: {		//判断IE版本
			IE : $.browser.msie,
			IE8 : $.browser.msie && /MSIE\s(8\.)/.test(navigator.userAgent),
			IE7 : $.browser.msie && /MSIE\s(7\.)/.test(navigator.userAgent),
			IE6 : $.browser.msie && /MSIE\s(5\.5|6\.)/.test(navigator.userAgent)
		},
		
		
		getVersion: function() {		//获得浏览器版本信息
			return $.browser.version;
		}, //END 浏览器检测
		
		/*
		 *	@param domObj, 需要背景透明的DOM对象
		 *	@param isBG, true 表示该DOM对象中有需要执行其他操作的元素，将添加一个背景的DOM对象
		 *	@param isScroll, true 新生产的背景需要跟随domObj滚动
		 *
		*/
		fixPNG: function(domObj, isBG, isScroll) {		//修复IE6PNG图片不透明问题，不支持position、repeat
			if(!$.InSightCN.IECheck.IE6) {
				return false;
			};
			domObj.each(function() {
				var _this = $(this);
				var image = _this.css('background-image').match(/^url\(["']?(.*\.png)["']?\)$/i);
				
				var bg_img = RegExp.$1;
				
				//domObj对象中有需要执行其他操作的元素
				if(isBG)  {
					_this.css({'background': 'none', 'z-index': 10});
					$('<div class="pngFix-bg"></div>').insertAfter(_this)
						.css({
							'position': 'absolute',
							'z-index': 9,
							'width' : domObj.outerWidth()+'px',
							'height' : domObj.outerHeight()+'px',
							'top' : domObj.css('top'),
							'left' : domObj.css('left'),
							'right' : domObj.css('right'),
							'background' : 'url('+bg_img+') no-repeat'
						});
					_this = _this.next('.pngFix-bg');
					if(isScroll) {
						$.InSightCN.boxScroll(_this, true);
					};
				};
				
				if (image) {
					_this.css({
						'background-image': 'none',
						'filter': 'progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled="true", sizingMethod="crop", src="' + bg_img + '")'
					});
				};
			});
		},
		
		x_center : function() {		//页面的中心点--x
			var x = ($.InSightCN.getPageWidth() - $.InSightCN.getPageScroll()[0])/2;
			return x > 0 ? x : 0;
		},
		
		y_center : function() {		//页面的中心点--y
			var y = ($.InSightCN.getPageHeight() - $.InSightCN.getPageScroll()[1])/2;
			return y > 0 ? y : 0;
		},
		
		getPageScroll : function() {	//获得浏览器滚动条的宽和高
			return [
				self.pageXOffset || (document.documentElement && document.documentElement.scrollLeft) || document.body.scrollLeft,
				self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop
			];
		},
		
		getPageWidth : function() {	//获得浏览器的页面宽度
			return self.innerWidth || (document.documentElement && document.documentElement.clientWidth) || document.body.clientWidth;
		},
		
		getPageHeight : function() {	//获得浏览器的页面高度
			return self.innerHeight ||  (document.documentElement && document.documentElement.clientHeight) || document.body.clientHeight;
		},
		
		/*
		 *	@param boxObj, 滚动的盒子对象
		 *	@param duration, true则平滑滑动，false则直接设置css
		 *
		*/
		boxScroll : function(boxObj, duration) {		//盒子随滚动条上下滚动
			boxObj.each(function() {
				var box = $(this);
				//若该盒子是在有上下滑动后出现的，则top应先减去滚动条的高度
				var top = box.offset().top - $.InSightCN.getPageScroll()[1] >= 0 ? box.offset().top - $.InSightCN.getPageScroll()[1] : 0;
			
				$(window).scroll(function (){
					var offsetTop = top + $(window).scrollTop();
					if(duration) {
						box.animate({'top' : offsetTop}, {duration:500, queue:false});
					} else {
						box.css({'top' : offsetTop});
					};
				}); 
			});
		},
		
		/*
		 *	@param duration, 是否平滑效果滑动 true为平滑|false则直接调到顶端
		 *
		*/
		scrollTop : function(duration) {
			if(duration) {
				$('body, html').animate({scrollTop:0},{duration:500})
			} else {
				window.scrollTo(0, 0);
			};
		},
		
		/*
		 *	@param boxObj, 待关闭的盒子对象
		 *	@param clickObj, 关闭按钮对象
		 *	@param duration, 是否渐隐关闭 true|false
		 *
		*/
		close : function(boxObj, clickObj, duration) {		//关闭盒子对象
			clickObj.click(function() {  
				boxObj.each(function() {					
					if(duration) {
						//IE6特殊情况，若存在.pngFix-bg
						if(boxObj.next('.pngFix-bg').is(':visible')) {
							boxObj.next('.pngFix-bg').fadeOut(function() {
								$(this).remove();
							});
						};
						$(this).fadeOut(function() {
							$(this).remove();
						});
					} else {
						//IE6特殊情况，若存在.pngFix-bg
						if(boxObj.next('.pngFix-bg').is(':visible')) {
							boxObj.next('.pngFix-bg').remove();
						};
						//背景shadow
						if($('#shadow:visible')) {
							$.InSightCN.shadow.close();
						};
						$(this).remove();
					};
				});
				
				return false;
			});
		},
		
		/*
		 *	@param domObj, 待去除的domObj对象
		 */
		remove: function(domObj) {	//从html中去除domObj对象
			domObj.remove();
		},
		
		/*
		 *	@param email, 待验证的Email地址
		 */
		validateMail : function(email) {	//验证邮件格式
			return (email.match(/^([a-zA-Z0-9_\.-]+)@([\da-zA-Z\.-]+)\.([a-zA-Z\.]{2,6})$/) == null ? false: true); 
		},
		
		/*
		 *	@param text, 待判断的变量
		 */
		isNull : function(text) {
			return text == '' ? true : false;
		},
		
		/*
		 *	@param filename, 文件名
		 */
		isImage : function(filename) {
			if(filename.lastIndexOf('.') != -1) {
				var format = filename.substr(filename.lastIndexOf('.')).toLowerCase();
				return '.gif,.png,.jpg,.jpeg'.indexOf(format) != -1 ? true : false;
			} else {
				return false;
			};
		},

		/*
		 *	@param timerElem, 存放倒计时文字的DOM对象
		 *	@param callback, 回调函数
		 */	
		timer : function(timerElem, callback) {		//倒计时

			var oldTimer = timerElem.text();
			setTimeout(function() {
				if($('#floatbox').is(':visible')) {
					closeFloatBox(500);	//关闭浮动框
				};
				
				if(callback) {
					callback();
				};
			}, oldTimer*1000);
			
			
			var timer = oldTimer;
			var id = setInterval(function() {
				timer--;
				if(timer == 0) {
					clearInterval(id);
				};
				timerElem.text(timer);
			}, 1000);
		},
		
		/*
		 *	@param opacity, 背景shadow的透明度
		 */
		shadow: {	//背景shadow
			create : function(opacity) {	//背景shadow
				var $shadow = $('<div id="shadow"></div>')
				$shadow.css({
					'position': $.InSightCN.IECheck.IE6 ? 'absolute' : 'fixed',
					'top': $.InSightCN.IECheck.IE6 ? $.InSightCN.getPageScroll()[1] : 0,
					'left': $.InSightCN.IECheck.IE6 ? $.InSightCN.getPageScroll()[0] : 0,
					'width': $.InSightCN.getPageWidth(),
					'height': $.InSightCN.getPageHeight(),
					'z-index': 5,
					'background': '#000',
					'opacity': opacity ? opacity : 0
				}).appendTo('body');		
				$.InSightCN.IECheck.IE6 ? $.InSightCN.boxScroll($shadow) : false;
			},
			
			close : function(timer) { 
				if(!timer) {
					timer = 500;
				};
				$('#shadow').fadeOut(timer, function() {
					$(this).remove();
				});
			}
		},
		
		/*
		 *	@param text, 弹框提示信息
		 *	@param callback, 回调函数
		 */
		alert: function(text, callback) {	//自定义alert弹框
			var isComfirmed = false;
			
			$.InSightCN.shadow.create(0);
			
			var $alertBox = $('<div id="alert"></div>');
			$alertBox.appendTo('body').css({
				'position': $.InSightCN.IECheck.IE6 ? 'absolute' : 'fixed'				
			}).append('<h3>提示信息</h3>').find('h3')
			.append('<a href="#close">关闭</a>').find('a')
			.end().end().append('<div id="content"></div>').find('#content').text(text)
			.end().append('<button>确认</button>');
			
			$('#alert').css({
				'top': ($.InSightCN.getPageHeight() - $alertBox.outerHeight())/2,
				'left': ($.InSightCN.getPageWidth() - $alertBox.outerWidth())/2
			});
			$.InSightCN.IECheck.IE6 ? $.InSightCN.boxScroll($alertBox) : false;
			
			$('#alert button, #alert h3 a').click(function() {
				isComfirmed = true;
				$('#alert').remove();
				$.InSightCN.shadow.close();
				if(callback) callback();
				return false;
			});
		},
		
		/*
		 *	@param txtArr, 长度为4，依次为title, content, okBtn的text, cancleBtn的text
		 *	@param callbackArr, 长度为2，分别为两个btn的回调函数回调函数
		 */
		confirmBox: function(txtArr, callbackArr) {
			$.InSightCN.shadow.create(0.3);
			
			var $confirmBox =  $('<div id="confirmBox"></div>');
			
			$confirmBox.appendTo('body').css({
				'position': $.InSightCN.IECheck.IE6 ? 'absolute' : 'fixed'				
			}).append('<h3></h3>').find('h3').text(txtArr[0])
			.end().append('<div id="content"></div>').find('#content').text(txtArr[1])
			.end().append('<button id="okBtn">'+txtArr[2]+'</button>');
			
			if(txtArr[3]) {
				$confirmBox.append('<button id="cancleBtn">'+txtArr[3]+'</button>');
			};
			var top = ($.InSightCN.getPageHeight() - $confirmBox.outerHeight())/2,
				left = ($.InSightCN.getPageWidth() - $confirmBox.outerWidth())/2;
			
			$confirmBox.css({
				'top': $.InSightCN.IECheck.IE6 ? $.InSightCN.getPageScroll()[1] + top : top,
				'left': $.InSightCN.IECheck.IE6 ? $.InSightCN.getPageScroll()[0] + left : left
			});
			
			$.InSightCN.IECheck.IE6 ? $.InSightCN.boxScroll($confirmBox) : false;
			
			$('#confirmBox').find('#okBtn').click(function() {																 
				confirmClose();
				if(callbackArr[0]) callbackArr[0]();
			}).end().find('#cancleBtn').click(function() {
				confirmClose();
				if(callbackArr[1]) callbackArr[1]();
			});
			
			var confirmClose = function() {
				$('#confirmBox').remove();
				$.InSightCN.shadow.close();
			};
		},
		
		isLeftClick : function(e) {		//判断是否左键点击
			return ($.InSightCN.IECheck.IE && e.button == 1) || e.button == 0;
		},
				
		getDateArr : function() {		//获得日期、时间相关的信息
			var date = new Date(),
				year = date.getFullYear(),
				month = date.getMonth() + 1,
				day = date.getDate()
				week = date.getDay(),
				hours = date.getHours(),
				minutes = date.getMinutes(),
				seconds = date.getSeconds();
				
			switch (week) {
				case 0:
					week = '星期日';
					break;
				case 1:
					week = '星期一';
					break;
				case 2:
					week = '星期二';
					break;
				case 3:
					week = '星期三';
					break;
				case 4:
					week = '星期四';
					break;
				case 5:
					week = '星期五';
					break;
				case 6:
					week = '星期六';
					break;
			};
			
			date = date.toString();
			month = month < 10 ? '0' + month : month;
			day = day < 10 ? '0' + day : day;
			hours = hours < 10 ? '0' + hours : hours;
			minutes = minutes < 10 ? '0' + minutes : minutes;
			seconds = seconds < 10 ? '0' + seconds : seconds;
				
			var today = year + '-' + month + '-' + day;
			return [date, today, year, month, day, week, hours, minutes, seconds];
		},
		
		/**
		 * 调用方法： var timerArr = $.InSightCN.blinkNews.show();
		 *			$.InSightCN.blinkNews.clear(timerArr);
		 */
		blinkNews : {
			show : function() {	//有新消息时在title处闪烁提示
				var step=0, _title = document.title;
	
				var timer = setInterval(function() {
					step++;
					if (step==3) {step=1};
					if (step==1) {document.title='【　　　】'+_title};
					if (step==2) {document.title='【新消息】'+_title};
				}, 500);
				
				return [timer, _title];
			},
			
			/**
			 * @param timerArr[0], timer标记
			 * @param timerArr[1], 初始的title文本内容
			 */
			clear : function(timerArr) {	//去除闪烁提示，恢复初始title文本
				if(timerArr) {
					clearInterval(timerArr[0]);	
					document.title = timerArr[1];
				};
			}
		}
		
				
	};
	
	/*
	 *	对$.InSightCN扩展
	 *
	 */
	$.InSightCN.isLogin = function() { 	//true 登录 false 未登录
		return USER_ID != '';
	};
		
	$.InSightCN.errorMsg = function(obj, pos, text, floatPos) { 	//输出提示信息
		$.InSightCN.removeError(obj, pos);
		if(pos == 'before') {
			obj.before('<span class="error' + (floatPos ? ' '+floatPos : '') +'">' + text + '</span>');
		} else if(pos == 'after') {
			obj.after('<span class="error' + (floatPos ? ' '+floatPos : '') +'">' + text + '</span>');
		} else {
		};
		return false;
	};
	
	$.InSightCN.removeError = function(obj) { 	//去除提示信息
		obj.offsetParent().find('span.error').remove();
	};
})(jQuery);