﻿function killErrors() {
    return true;
}
window.onerror = killErrors;

var ImageObj=new Image();
var Lat={
	Data:{"0":null},
	Cache:{},
	_Data:null,
	DefaultDesk:0,
	State:0,
	DragState:0,
	User:{},
	PosData:{},
	ContainerPos:{},
	Draging:false,
	DragElement:0,
	TargetElement:null,
	TempElement:null,
	AddSiteId:null,
	SiteFormData:{},
	ShowAction:false,
	ActionName:null,
	init:function(data){
		jQuery.extend(this.Data,this._Data[this.DefaultDesk].data);
		this.ContainerPos=$('#site-container').position();
		$("#dropBox").easydrag(true);
		$("#dropBox").ondrop(function(e,element){
			if(Lat.ActionName){
				Lat.cmd(Lat.ActionName);
			}else{
				Lat._drag(element);
			}
			setTimeout(function(){$('#search-box').show();},300);
			return false;
		}).mouseover(function(e){
			if($.browser.msie)window.status=Lat.Data[Lat.DragElement][2];
			return false;
		}).mouseout(function(e){
			Lat.mouseOutBox();
			return false;
		}).ondrag(function(e){
			Lat.Draging=true;
			if(!Lat.ShowAction)Lat._dragShowAction();
			Lat._getTarget(e);
			return false;
		}).click(function(e){
			Lat.clickBox(Lat.DragElement);
			return false;
		});

		$('#site-container .site-box').mouseover(function(e){
			Lat.mouseOverBox(this);
			return false;
		});

		$('.dialogCancel').click(function(e){
			fb_remove();
			return false;
		});

		$("#addIcon").click(function(e){
			Lat.addSite();
		}).mouseout(function(e){
			$(this).css({left:-5000});
			return false;
		});
		this.initDesk();
		this.initDeskTab();
        this.initDeskTab();
		if(this.State==2){
		this.initAddSite();
		this.initSetDeskBg();
		}
		if(this.State>0){
			this.initSetting();
			this.initCopySite();
			this.initAddDesk();
		}
		setInterval('Lat.resize()',1000);
	},

	resize:function(){
			var temp=$H(Lat.ContainerPos);
			this.ContainerPos=$('#site-container').position();
			if(this.ContainerPos.left!=temp.left){
			$('#dropBox').hide();
			$H(this.PosData).each(function(p,index){
			Lat.PosData[index][0]=p.value[0]-(temp.left-Lat.ContainerPos.left);
			Lat.PosData[index][3]=p.value[3]-(temp.left-Lat.ContainerPos.left);
			});
		}
	},

	showMessage:function(msg,closeDialog,showTime){
		var m=$('#systemMessage');
		var w=$(window);
		var l=(w.width()-m.outerWidth(true))/2;
		var t=$(document).scrollTop()+(w.height()-m.outerHeight(true))/2;
		m.html(msg).css({left:l,top:t}).show().fadeOut(showTime||2000);
		if(closeDialog)fb_remove();
		return false;
	},

	initSetting:function(){
		$('#settingOk').click(function(e){
		var data=$('#settingForm').serialize();
		jQuery.post('?action=userSetting',data,function(result){
		if(result.err){
		$('#settingErr').html(result.err);
		}else{
		Lat.showMessage('设置成功',true);
		location.reload();
		}
		},'json');
	return false;
	});
	},



    initCopySite: function() {
        $('#copySiteOk').click(function(e) {
            var dataStr = $('#copySiteForm').serialize();
            jQuery.post('user/ajax.asp?todo=copySite', dataStr,
            function(result) {
                if (result.err) {
                    Lat.showMessage(result.err);
                } else {
                    var pram = dataStr.toQueryParams();
                    for (var i = 0; i < 52; i++) {

			if(Lat.State==2){
                            if (!Lat._Data[pram.targetDeskId].data[i]) {
                            Lat._Data[pram.targetDeskId].data[i] = Lat.Data[pram.siteIndex];
                            break;
				}else{
					
				}
                    }
                    }
                    Lat.showMessage('成功复制到目标桌面', true);
                }
            });
            return false;
        });
    },





	initDeskTab:function(){
		$('#desk-bar a').click(function(e){
			var id=$(this).blur().attr('rel');
			if(id!=Lat.DefaultDesk)Lat.initDesk(id);
			return false;
		}).mouseover(function(e){
			var element=$(this);
			var deskId=element.attr('rel');
			if(Lat.DefaultDesk==deskId){
				if(Lat._Data[Lat.DefaultDesk].defaultDesk==1) return false;/*系统默认分类品格的不出现下拉菜单*/
				Lat.Cache.showDeskOpt=true;
				var pos=element.position();
				$('#deskOpt').css({left:pos.left+1,top:pos.top+element.outerHeight()}).show();
			}
			return false;
		}).mouseout(function(e){
			var element=$(this);
			var deskId=element.attr('rel');
			if(Lat.DefaultDesk==deskId){
				Lat.Cache.showDeskOpt=false;
				setTimeout(function(){if(!Lat.Cache.showDeskOpt)$('#deskOpt').hide();},100);
			}
			return false;
		});
		$('#deskOpt a').mouseover(function(e){
			Lat.Cache.showDeskOpt=true;
			return false;
		}).mouseout(function(){
			Lat.Cache.showDeskOpt=false;
			setTimeout(function(){if(!Lat.Cache.showDeskOpt)$('#deskOpt').hide();},100);
			return false;
		});
		$('#search-box img').click(function(e){
			$('#search-box img').show();
			var target=$(this).hide().attr('alt');
			$('#search-box').attr('class','search-box '+target);
			$('#search-iframe').attr('src',$('#search-iframe').attr('src').replace(/[^_]*\.html/,target+'.html'));
			return false;
		});
	},
	initDesk:function(id){
		id=id||this.DefaultDesk;
		if(id){
			this.DefaultDesk=id;
			this.Data=this._Data[id].data;
			$('#desk-bar a').each(function(){
				var e=$(this);
				if(e.attr('rel')==id){
					e.parent().addClass('on');
				}else{
					e.parent().removeClass('on');
				}
			});
			$("#dropBox").hide();
			$("#addIcon").hide();
		}else{
			id=this.DefaultDesk;
		}
		$('#site-container .site-box').each(function(index){
			Lat.initBox(index);
			if(Lat.PosData['51'])return;
			var pos=$(this).position();
			Lat.PosData[index]=[pos.left,pos.top+10,pos.left+80,pos.top+90];
		})
	},
	initBox:function(id){
		var data=this.Data[id];
		if(data){
			ImageObj.src=data[4];
			/*[0=id,1=title,2=url,3=bgColor,4=icon,5=titleColor,6=sort]*/
			$('#'+id).html('<div class="icon '+data[3]+'"><div class="icon-content" style="background-image:url('+data[4]+');'+(data[5]?' color:'+data[5]:'')+'" tpy="'+data[6]+'" rel="'+data[2]+'"><div class="icon-inner">'+data[1]+'</div></div></div>');
		}else{
			$('#'+id).empty();
		}
	},

	initAddDesk:function(){

		$('#addDeskOk').click(function(e){
			fb_remove();
			var data=$('#eaddDeskForm').serialize().toQueryParams();
			jQuery.post('?action=addDesk',$('#addDeskForm').serialize());
                        parent.fb_remove();
                        parent.showInfo('添加成功',true);
                        parent.location.href='';
			return false;
		});


		$('#editDeskOk').click(function(e){
			fb_remove();
			var data=$('#editDeskForm').serialize().toQueryParams();
			data.IsActive=data.IsActive||0;
			data.noShare=data.noShare||0;
			$('#desk-bar .on a').html(data.title);
			Object.extend(Lat._Data[Lat.DefaultDesk],data);
			jQuery.post('user/ajax.asp?todo=updateDesk',$H(data).toQueryString());
			return false;
		});
		$('#delDeskOk').click(function(e){
			if($H(Lat._Data).size()==1){
				Lat.showMessage('您已经只有一个品格了，不能被删除！');
			}else{
				$('#desk-bar li.on').remove();
				var deskId=$C(Lat.DefaultDesk);
				Lat._Data=$H(Lat._Data).lost(deskId);
				Lat.initDesk(Lat._Data.keys()[0]);
				fb_remove();
				jQuery.post('user/ajax.asp?todo=delDesk','id='+deskId);
				fb_remove();
                        parent.showInfo('删除成功',true);
			}
			return false;
		});
		$('#copyDeskOk').click(function(e){

jQuery.post('user/ajax.asp?todo=copyDesk','sourceId='+Lat.DefaultDesk+'&'+$('#copyDeskForm').serialize(),function(){

				if(Lat.State==2){
					location.reload();
				}else{
					Lat.showMessage('品格复制成功',true);
				}
			});
			return false;
		});

		$('#deskOpt .edit').click(function(e){
			if(Lat._Data[Lat.DefaultDesk].defaultDesk==1){
				fb_remove()
			}else{
				initForm(Lat._Data[Lat.DefaultDesk],'editDeskForm');
			}
		});
	},
	initAddSite:function(){
		var demo=$('#site-icon-demo');
		$('#site-name').keyup(function(e){
			$('.icon-inner',demo).html($(this).val());
		});
		$('#icon-bg-selete a').click(function(e){
			var color=$(this).attr('color');
			Lat.SiteFormData.bgColor=color;
			demo.attr('class','icon '+color);
			return false;
		});
		$('#addSiteOk').click(function(e){
			Lat.SiteFormData.url=$('#site-url').val();
			Lat.SiteFormData.title=$('#site-name').val();
			Lat.SiteFormData.sort=$('#site-sort').attr("checked")==true?1:0;
			Lat.updateSite(Lat.UpdateSiteId,Lat.SiteFormData);
			Lat.showMessage('网站设置成功',true);
			return false;
		});
		$("#icon-type-default, #icon-type-upload").click(function(e){
			$("#icon-upload, #icon-default").hide();
			$('#'+$(this).attr('id').replace('-type','')).show();
			});
			$('#uploadForm .submit').click(function(e){
			if($("#uploadForm input[name='file']").val()){
			$('#uploadForm').submit();
			}
			return false;
		});
		$('#showRecommendSiteDialog').click(function(e){
			Lat.Cache.DragElement=Lat.DragElement;
			fb_remove();
			setTimeout(function(){$('#recommendSiteDialog').click();},300);
			return false;
		});
		$('#showAddSiteDialog').click(function(e){
			fb_remove();
			setTimeout(function(){$('#addIconDialog').click();},300);
			return false;
		});
		$('#recommendSite .icon').click(function(e){
			var site=$(this);
			var data=site.attr('data').split('^');
			Lat.SiteFormData.title=data[0];
			Lat.SiteFormData.url=data[1];
			Lat.SiteFormData.bgColor=data[2];
			Lat.SiteFormData.icon=data[3];
			Lat.SiteFormData.titleUrl=data[4];
			Lat.updateSite(Lat.UpdateSiteId,Lat.SiteFormData);
			Lat.showMessage('添加成功',true);
			return false;
		});
	},
	initAddSiteData:function(o){
		var demo=$('#site-icon-demo');
		if(o){
			o={
				id:o[0],
				title:o[1],
				url:o[2],
				bgColor:o[3],
				icon:o[4],
				titleColor:o[5],
				sort:o[6]
			};
		}
		var data={
			url:'http://',
			title:'',
			bgColor:'white',
			icon:'',
			titleColor:'',
			sort:0
		}
		jQuery.extend(data,o);
		this.SiteFormData=data;
		$('#site-name').val(data.title);
		$('#site-url').val(data.url);
		demo.attr('class','icon '+data.bgColor);
		$('.icon-content',demo).css({'background-image':'url('+data.icon+')','color':data.titleColor});
		$('.icon-inner',demo).html(data.title);
		if (data.sort==1)$('#site-sort').checked==true;

		if($('#default-icon-selete').html()==''){
			var str=$R(1,76).map(function(n){
				ImageObj.src='upfile/Icon/'+n+'.gif';
				return'<a href="#" id="default-icon-'+n+'" style="background-image:url(upfile/Icon/'+n+'.gif);" icon="upfile/Icon/'+n+'.gif"></a>';
			}).join('');
			$('#default-icon-selete').html(str);
			$('#default-icon-selete a').click(function(e){
				var icon=$(this).attr('icon');
				Lat.SiteFormData.icon=icon;
				$('.icon-content',demo).css('background-image','url('+icon+')');
				return false;
			});
		}
		if($('#color-picker').html()==''){
			$('#color-picker').html(colorPicker());
			$('#color-seleter').click(function(e){
				$('#color-picker').toggle();
				return false;
			});
			$(document).click(function(){
				if($('#color-picker').css('display')!='none')$('#color-picker').hide();
			});
			$('#color-picker td').click(function(e){
				var color=$(this).attr('bgcolor');
				Lat.SiteFormData.titleColor=color;
				$('#color-picker').hide();
				$('.icon-content',demo).css({'color':color});
				return false;
			});
		}
		$("#icon-type-default").click();
	},

	iconUpload:function(result){
		var errMark='err:';
		if(result.indexOf(errMark)==0){
		return this.showMessage('上传失败：'+result.replace(errMark,''));
		}
		this.SiteFormData.icon=result;
		$('#site-icon-demo .icon-content').css('background-image','url('+result+')');
	},
	initSetDeskBg:function(){
		$('#setDeskBgOk').click(function(){
		$('#setDeskBgForm').attr('action','/?action=deskBgUpload&deskId='+Lat.DefaultDesk+'&bgType='+($('#bgType').attr('checked')?1:0)).submit();
		$('#setDeskBgPress').html('上传中，请稍候...');
		return false;
		});
	},
	deskBgUpload:function(result){
		$('#setDeskBgPress').html('整图上传成功，现在转入品格...');
		setTimeout(function(){
		location.href='?'+Lat.DefaultDesk;
		},500);
	},
	exchange:function(sourceId,targetId){
		Lat.DragElement=Lat.TargetElement;
		var sourceElement=$('#'+sourceId);
		var targetElement=$('#'+targetId);
		targetElement.removeClass('dragOver');
		var _html=targetElement.html();
		targetElement.html(sourceElement.html());
		sourceElement.html(_html);
		var _data=Lat.Data[sourceId];
		Lat.Data[sourceId]=Lat.Data[targetId];
		Lat.Data[targetId]=_data;
		if(this.State!=2)return;
		if(Lat._Data[Lat.DefaultDesk].defaultDesk==1)return;
		var data=$R(0,51).map(function(id){
		return Lat.Data[id]?Lat.Data[id][0]:0;
		}).join(',');
		jQuery.post('user/ajax.asp?todo=editDesk','id='+this.DefaultDesk+'&data='+data);
	},
	updateSite:function(id,data){
		data.id=data.id||0;
		this.updateSiteData(id,data);
		Lat.initBox(id);/*id=所处格子*/
		var queryStr='deskId='+this.DefaultDesk+'&index='+id+'&data='+this.Data[id].join('$@$');
		jQuery.post('user/ajax.asp?todo=updateDeskSite',queryStr,function(result){
			if(result){
				data.id=parseInt(result);
				if(!data.id)return false;
				Lat.updateSiteData(id,data);
			}
		});
	},
	updateSiteData:function(id,data){
		if(data)data=[data.id,data.title,data.url,data.bgColor,data.icon,data.titleColor,data.sort];
		this.Data[id]=data;
		this._Data[this.DefaultDesk].data[id]=data;
	},
	addSite:function(id){
		if(this.State==0)return $('#loginDialog').click();
		if(Lat._Data[Lat.DefaultDesk].defaultDesk==1)return;/*起始品格用户不能操作*/
		Lat.initAddSiteData();
		$('#addIconDialog').click();
	},
	editSite:function(id){
		this.UpdateSiteId=id;
		this.initAddSiteData(this.Data[id]);
		$('#addIconDialog').click();
	},
	delSite:function(id){
		this.updateSiteData(id,null);
		Lat.initBox(id);
		jQuery.post('user/ajax.asp?todo=delDeskSite','deskId='+this.DefaultDesk+'&index='+id);
	},

	copySite:function(id){
		$("#copySiteIndex").val(id);
		$("#copySiteId").val(this.Data[id][0]);
		var html='';
		if(this.State==2){
		this._Data.each(function(desk){
		var data=desk.value;
		if(data.id!=Lat.DefaultDesk){
		html+='<option value="'+data.id+'">'+data.title+'</option>';
		}
		});
		}else if(this.State==1){
		this.MyDesks.each(function(data){
		html+='<option value="'+data.id+'">'+data.title+'</option>';
		});
		}
		$('#copySiteForm select').html(html);
		$('#copySiteDialog').click();
	},
	_dragAction:function(action){
		if(action==this.ActionName)return;
		$('#'+this.TempElement).removeClass('dragOver');
		this.TempElement=null;
		this.ActionName=action;
		$('#'+action).addClass('hover');
	},
	cmd:function(action){
		var id=this.DragElement;
		if(this.State==0){
			$('#loginDialog').click();
		}else{
			this[action.split('-')[1]+'Site'](id);
		}
		this.ShowAction=false;
		this.ActionName=null;
		setTimeout(function(){
			$('#'+action).removeClass('hover');
			$("#dropBox").hide();
			$('#'+(Lat.State==2?'opt-mine':'opt-common')).hide();
			$('#'+(Lat.State==1?'opt-mine':'opt-common')).hide();
			$('#'+(Lat._Data[Lat.DefaultDesk].defaultDesk==0?'opt-mine':'opt-common')).hide();
			Lat.Draging=false;
		},action=='mine-del'?0:500);
	},
	_dragShowAction:function(){
		this.ShowAction=this.Draging;
		$('#search-box').hide();
		if(this.Draging){
			if(this.State==2 && Lat._Data[Lat.DefaultDesk].defaultDesk==0){
				$('#opt-mine').show();
			}else{
				$('#opt-common').show();
			}
		}else{
			if(this.State==2 && Lat._Data[Lat.DefaultDesk].defaultDesk==0){
				$('#opt-mine').hide();
			}else{
				$('#opt-common').hide();
			}
		}
	},
	_getTarget:function(e){
		var pos=$.getMousePosition(e);
		var x=pos.x-this.ContainerPos.left;
		var y=pos.y-this.ContainerPos.top;
		var id=this._getTargetId(x,y);/*所拖动的格子*/
		if(id==null)return;
		this.DragState=1;
		if(typeof id=='string'){
			if(id!=this.ActionName)$('#'+this.ActionName).removeClass('hover');
			
			this._dragAction(id);
			return false;
		}
		if(this.ActionName){
			$('#'+this.ActionName).removeClass('hover');
			this.ActionName=null;
		}	
		id=id-1;
		Lat.TargetElement=id;
		if(Lat.TargetElement==this.TempElement)return;
		this.dragOverBox(Lat.TargetElement);
		this.TempElement=Lat.TargetElement;
	},
	_getTargetId:function(x,y){
		var _x=x%90;
		var _y=y%90;
		var xn=Math.ceil(x/90);
		var yn=Math.ceil(y/90);
		if(yn>=3&&yn<=4&&xn>=4&&xn<=7){
			if(y<90*2+10||x>90*7)return null;
			if(this.State==2 && Lat._Data[Lat.DefaultDesk].defaultDesk==0){
				if(x<=90*3+116)return'mine-edit';
				if(x<=90*3+116+118)return'mine-del';
				return'mine-copy';
			}else{
				return'common-copy';
			}
		}
		if(_x<10||_y>80)return null;
		if(yn<=2)return 10*(yn-1)+xn;
		if(yn>=5)return 32+10*(yn-5)+xn;
		if(xn<=3)return 20+3*(yn-3)+xn;
		if(xn>=8)return 26+3*(yn-3)+(xn-7);
		return null;
	},
	_drag:function(e){
		var id=Lat.TargetElement;
		if(id<0||id>51){
			id=Lat.TargetElement=Lat.DragElement;
		}
		$('#dropBox').animate({
			left:Lat.PosData[id][0],
			top:Lat.PosData[id][1]
		},200,function(){
			Lat.Draging=false;
			if(Lat.TargetElement!=Lat.DragElement){
				Lat.exchange(Lat.DragElement,Lat.TargetElement);
			}else{
				$('#'+id).removeClass('dragOver');
			}
		Lat._dragShowAction();
		});
	},
	mouseOverBox:function(e){
		if(this.Draging)return;
		if(!this.MouseOut)this.mouseOutBox();
		this.MouseOut=false;
		var id=e.id;
		if(!this.Data[id]){
			this.UpdateSiteId=id;
			$("#addIcon").css({left:this.PosData[id][0],top:this.PosData[id][1]}).show();
		}else{
			$("#addIcon").css({left:-5000});
			this.DragElement=this.TempElement=this.TargetElement=id;
			var dragHTML=$(e).html().replace(/id=[^> ]*/img,'');
			$('.icon-inner',e).addClass('on');
			$("#dropBox").html(dragHTML).css({left:this.PosData[id][0],top:this.PosData[id][1]}).show();
		}
	},
	mouseOutBox:function(e){
		if(this.Draging)return;
		$("#dropBox").hide();
		if($.browser.msie)window.status='';
		$('#'+this.DragElement+' .icon-inner').removeClass('on');
		this.MouseOut=true;
	},
	clickBox:function(id){
		if(this.Draging)return;
		var url=$('#'+id+' .icon-content').attr('rel');
		var tpy=$('#'+id+' .icon-content').attr('tpy');
		if (tpy==1){
			if (url.indexOf('?') !=-1){
				url+="&KeepThis=true&FB_iframe=true";
			}else{
				url+="?KeepThis=true&FB_iframe=true";
			}
			fb_show('品格网 - xx113.com',url);

		}else window.open(url,'');
		
	},
	dragOverBox:function(id){
		$('#'+this.TempElement).removeClass('dragOver');
		$('#'+id).addClass('dragOver');
	}
};

function initForm(data,form){
	form=$E(form);
	for(var key in data){
		if(!form[key])continue;
		var value=data[key];
		if(value===null)continue;
		if(typeof(value)!='array')value=[$C(value)];
		$(form[key]).val(value);
	}
}

function colorPicker(){
	var arr_color1=['00','33','66'];
	var arr_color2=['00','33','66','99','cc','ff'];
	var arr_color3=['000000','333333','666666','999999','cccccc','ffffff','ff0000','00ff00','0000ff','ffff00','ff00ff','00ffff'];
	var html='<table cellpadding="0" cellspacing="1" border="0" bgcolor="#000000">';
	var idx=0;
	for(var k=0;k<arr_color2.length;k++){
		html+='<tr>';
		html+='<td bgcolor="#'+arr_color3[idx]+'"></td>';
		idx++;
		for(i=0;i<arr_color1.length;i++){
			for(j=0;j<arr_color2.length;j++){
				html+='<td bgcolor="#'+arr_color1[i]+arr_color2[j]+arr_color2[k]+'"></td>';
			}
		}
		html+='</tr>';
	}
	var arr_color1=['99','cc','ff'];
	for(k=0;k<arr_color2.length;k++){
		html+='<tr>';
		html+='<td bgcolor="#'+arr_color3[idx]+'"></td>';
		idx++;
		for(i=0;i<arr_color1.length;i++){
			for(j=0;j<arr_color2.length;j++){
				html+='<td bgcolor="#'+arr_color1[i]+arr_color2[j]+arr_color2[k]+'"></td>';
			}
		}
		html+='</tr>';
	}
	html+='</table>';
	return html;
}

$(document).ready(function(){
		setTimeout(function(){
			if(location.href.include('?')){
				var deskId=location.href.split('?')[1];
				if(deskId&&　Lat._Data[deskId])Lat.DefaultDesk=deskId;
			}
			Lat.init();
		},1000);
		setInterval('AutoScroll("#scrollDiv")',5000);
});


