﻿/*************************************************************
filename: chinsof.js
version : 1.0.0
author  : 2008/11/28 lin@chinsoft 
Copyright (c) 2008, skyfa.com All rights reserved.
**************************************************************/
var CS = new Class({
	Implements: [Events, Options],

	initialize: function() {
		this.setOptions({
			onAfterLogin: this.afterLogin
		});
	},

	getDomain: function() {
		var domain = document.location.hostname;
		if(domain.lastIndexOf('.') != domain.indexOf('.')) {
			domain = domain.substring(domain.indexOf('.') + 1, domain.length);
		}
		return domain;
	},

	afterLogin: function() {
		if($('hiddenLogin').value != '1') {
			this.refreshPage();
		}
	},

	refreshPage: function() {
		var redirect = $('hiddenCurrentUrl').value;
		if($('redirecturl')) {
			redirect = $('redirecturl').value;
		}

		top.location.href = redirect;
	},

	//打开地图选择页面
	openCoordinatePage : function(
		latitudeControlID, 
		longitudeControlID, 
		coordinateControlID) {
		var width = 650;
		var height = 600;
		var left = (window.getWidth() - width) / 2;
		var top = (window.getHeight() - height) / 2;
		
		var url = '/web/system/coordinate.aspx?ctllat={1}&ctllng={2}&ctlcoordinate={3}&lat={4}&lng={5}';
		url = url.replace('{1}', latitudeControlID);
		url = url.replace('{2}', longitudeControlID);
		url = url.replace('{3}', coordinateControlID);
		url = url.replace('{4}', $(latitudeControlID).value);
		url = url.replace('{5}', $(longitudeControlID).value);
		
		window.open(url, '', 'scrollbars=yes,width=' + width + ', height=' + height + ', left=' + left + ', top=' + top + '');

		return false;
	},

	changeVersion : function(versionID, url)
	{
		ChinSoftProject.Ajax.AjaxServer.ChangeVersion(versionID, function(data){
			var resp = data.value;

			if(resp.Code == resp.SUCCESS)
			{
				top.location.href = url;
			}
		});

		return false;
	},

	//退出
	signOut : function(btnSignOut) {
		//设置退出按钮不可用
		if(btnSignOut) {
			btnSignOut.disabled = true;
		}

		ChinSoftProject.Ajax.AjaxServer.SignOut(function(data){
			var resp = data.value;

			if(resp.Code == resp.SUCCESS)
			{
				top.location.href = '/';
			}
			else
			{
				//设置退出按钮可用
				if(btnSignOut) {
					btnSignOut.disabled = false;
				}

				alert(resp.Message);
			}
		});

		return false;
	},

	init : function(login) {
		window.addEvent('domready', function() {
			var funRefresh = function() {
				if(login) {
					//刷新访问时间
					ChinSoftProject.Ajax.AjaxServer.RefreshLastVisitTime();
					//弹出消息
					ChinSoftProject.Ajax.AjaxServer.GetCurrentMessageInfo(function(data){
						var resp = data.value;

						//如果有新消息
						if(resp.Code == '6666') {
							//显示消息
							var message = {
								messagetip: resp.Pros.getValue('messagetip'),
								messagecount: resp.Pros.getValue('messagecount')
							};

							var html = '<a href="/web/message/inbox.aspx">{messagetip}&nbsp;{messagecount}</a>'.substitute(message);
							showNotice('', html);
						}
					});
				}
			};
			funRefresh();//立即执行
			funRefresh.periodical(120 * 1000);//每隔两分钟执行一次
		});
	},

	uploadprogress : function(uniqueID) {
		$('progress_all').setStyle('display', 'block');//显示进度条

		var timer = (function() {
			//更新进度条
			var ajaxOptions = {
				url: '/neatupload/progress.aspx?barID=progressBar&postBackID=' + uniqueID, 
				method: 'get', 
				onComplete : function(responseTree, responseElements, responseHTML, responseJavaScript) {
					var percent = responseHTML.toFloat();
					
					$('progress_fraction').setStyle('width', (percent * 100) + '%');
					
					if(responseHTML.toFloat() >= 1) {
						$clear(timer);
						$('progress_all').setStyle('display', 'none');//隐藏进度条
					}
				}
			};

			new Request.HTML(ajaxOptions).get();
		}).periodical(1000);//隔一秒执行
	},

	//检测坐标
	checkCoordinate : function(latitude, longitude) {
		var lat = -91;
		var lng = -181;
		try
		{
			if(latitude.trim() != '')
			{
				lat = parseFloat(latitude.trim());
			}
			
			if(longitude.trim() != '')
			{
				lng = parseFloat(longitude.trim());
			}
		}
		catch(e)
		{
		}

		return (lat >= -90 && lat <= 90 && lng >= -180 && lng <= 180);
	},

	//获取选中的复选框列表值
	getCheckedValue : function(element_name) {
		//获取选中的
		var checkList = $$('input[name=' + element_name + ']').filter(function(item) {
			return item.checked;
		}).map(function (item) {
			return item.value;
		});

		return checkList;
	},

	//预览图片
	preview : function(file_element, container) {
		var file_element = $(file_element);
		var container = $(container);
		
		file_element.addEvent('change', function(){
			var file = file_element.value;

			//判断是否是图片
			if(!/(\.jpeg|\.jpg|\.gif|\.bmp|\.png)$/i.test(file)) {
				file = '';
			}

			if(file != '') {
				container.set('src', 'file:///' + file);
				container.setStyle('display', 'block');
			}
			else {
				container.setStyle('display', 'none');
			}
		});
	},

	//缩小图片
	zoomImage : function(container) {
		var container = $(container);
		if(!container) {
			return;
		}

		//先隐藏:不能用display:none，这样无法取得正确宽度
		//container.setStyle('visibility', 'hidden');

		//处理图片
		var width = container.getWidth();
		container.getElements('img').each(function(img){
			if(img.getWidth() > width)
			{
				img.setStyles({
					width : width,
					height: img.getHeight() * width / img.getWidth()
				});
			}
		});
		
		//显示
		//container.setStyle('visibility', 'visible');
	},

	//处理媒体信息：视频，音频，flash:每个元素格式{element:承载媒体的元素, src:承载的媒体, type:类型}
	displayMedia : function(mediaList) {
		mediaList.each(function (media){
			media.src = decodeURIComponent(media.src);

			var destHtml = null;
			if(media.type.contains('video')) {//显示视频
				destHtml = this.getVideo(media);
			}
			else if(media.type.contains('audio')) {//显示音频
				destHtml = this.getAudioPlayer(media);
			}
			else if(media.type.contains('flash')) {//显示flash
				destHtml = new Element('div').grab(this.getFlash(media)).get('html');
			}
			
			if(destHtml != null && destHtml.trim() != '') {
				new Element('div').set('html', destHtml).injectAfter(media.element);//插入媒体
			}
			
			media.element.dispose();//删除元素
			
		}, this);
	},

	//处理视频
	getVideo : function(media) {
		//解决遮挡层的问题
		if(!media.src.contains('transparent')) {
			media.src = media.src.replace('<embed ', '<embed wmode="transparent" ');
		}
		
		//IE特殊处理
		if(Browser.Engine.trident && media.src.contains('<embed')) {
			media.src = media.src.replace('<object', '<object1');
			media.src = media.src.replace('</object', '</object1');
		}

		return media.src;
	},

	//处理音频:仅支持mp3和wma
	getAudioPlayer : function(media) {
		var html = '';
		var obj = {};
		if(/(\.mp3)$/i.test(media.src)) {
			html = '<embed src="/controls/mp3player.swf?soundfile={src}&bg=0xcddff3&leftbg=0x357dce&lefticon=0xf2f2f2&rightbg=0x357dce&rightbghover=0x4499ee&righticon=0xf2f2f2&righticonhover=0xffffff&text=0x357dce&slider=0x357dce&track=0xffffff&border=0x357dce&loader=0x8ec2f4&loop=no&autostart=false" type="application/x-shockwave-flash" wmode="transparent" width="{width}" height="{height}"></embed>';

			obj = {
				src : media.src,
				width : 290,
				height : 24
			};
		}
		else if(/(\.wma)$/i.test(media.src)) {
			html = '<object classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="{width}" height="{height}" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,7,1112" type="application/x-oleobject">\
	<param name="url" value="{src}"/>\
	<param name="wmode" value="transparent"/>\
	<param name="AutoStart" value="0"/>\
	<param name="showstatusbar" value="1"/>\
	<embed wmode="transparent" src="{src}" width="{width}" height="{height}" autostart="0" showstatusbar="1" type="application/x-mplayer2"></embed>\
</object>';

			obj = {
				src : media.src,
				width : 290,
				height : 64
			};
		}
		
		return html.substitute(obj);
	},
	
	getFlash : function(media) {
		var flash = new Swiff(media.src, {
			width: 480,
			height: 400,
			params: {
				wmode: 'transparent',
				bgcolor: '#ffffff'
			}
		});
		
		return flash;
	},
	
	cancelDoublebSubmit : function(event) {
		var event = event || window.event;
		if ((typeof(event.returnValue) == "undefined" || event.returnValue == true) && !document.isPosted) {
			document.isPosted = true;
			event.returnValue = true;
		}
		else {
			event.returnValue = false;
		}
	},

	storeSearchParameters : function(cookie_key, json) {
		Cookie.write(cookie_key, json, {domain: chinsoft.getDomain(), path: '/', duration: 365});
	},

	retrieveSearchParameters : function(cookie_key) {
		var cookieParam = JSON.decode(Cookie.read(cookie_key));
		if(cookieParam) {
			new Hash(cookieParam).each(function(value, key){
				var controls = document.getElements('input[name=' + key + ']').combine(document.getElements('select[name=' + key + ']'));
				if(controls) {
					controls.each(function(elem) {
						if(elem.get('tag').toLowerCase() == 'input' && (elem.get('type').toLowerCase() == 'checkbox' || elem.get('type').toLowerCase() == 'radio')) {
							elem.checked = (elem.get('value') == value);
						}
						else if(elem.get('tag').toLowerCase() == 'select') {
							for(var i=0;i<elem.options.length;i++) {
								var option = elem.options[i];
								if(option.value == value) {
									option.selected = true;
								}
							}
						}
						else {
							elem.value = value;
						}
					});
				}
			});
		}
	}
});

document.isPosted = false;
var chinsoft = new CS();

//扩展Element,增加警告功能
Element.implement({
	warning: function() {
		//首先显示
		this.removeClass('hide').addClass('warning').tween('opacity', 1);

		//5秒钟后自动隐藏
		var hide = function () {
			new Fx.Tween(this).start('opacity', 0).onComplete = function() {
				this.addClass('hide');
			}.bind(this);
		};

		hide.delay(5000, this);
	},

	//图片剪裁
	crop : function(options) {
		if(this.get('tag') != 'img') {
			return false;
		}

		if(!this.retrieve('cropper')) {
			this.addEvent('load', function() {//保证在图片load后调用
				this.store('trueSize', this.getSize());
				this.store('cropper', new moocrop(this, options));
			});
		}
	}
});

window.addEvent('domready', function() {
	$$('#themes ul li').addEvent('click', function(){
		//清除所有on
		$$('#themes ul li').removeClass('on');
		//当前设为on
		this.addClass('on');
		//写入themeCookie
		var id = this.get('id');
		var themeCookie = JSON.decode(Cookie.read('COOKIE_KEY_FOREVER')) || {};
		themeCookie.ThemeID = id;
		Cookie.write('COOKIE_KEY_FOREVER', JSON.encode(themeCookie), {domain: chinsoft.getDomain(), path: '/', duration: 365});
		//切换皮肤
		var skyfa_theme = $('skyfa_theme');
		if(skyfa_theme) {
			skyfa_theme.destroy();
		}
		new Asset.css('/themes/' + id + '/style.css', {id: 'skyfa_theme'});
	});
});
