// JavaScript for 特色闪字 
// by 孙红军 (ircman@163.com qq:16414766) @ 01/22/2009 10:11

$shj = jQuery.noConflict(true);

// 全局文字对象变量
gts = {"p":[], "imgsrc":"", "avatar":{'show':'0', 'width':'73', 'height':'85', 'x':'0', 'y':'0'}};

// 默认文字对象
dt = function(_txtid, _cnname) {
	this.txtid = _txtid;
	this.cnname = _cnname;
	
	this.fontface		= "fzzhiyi.ttf";
	this.fontsize		= "14";
	this.fontcolor		= "#FF0099";
	this.altercolor		= "#ffffff";
	this.x				= "0";
	this.y				= "0";
	this.wordlimit		= "10";
	this.textdirection	= "0";
	this.effect			= "0";
	this.jump			= "0";
	this.txt			= "示范文字";
	this.isstroke		= "0";
	this.strokecolor	= "#ff0000";
	this.borderx		= "1";
	this.bordery		= "1";
	this.angle			= "0"
}

// 文字对象数组中添加一个默认文字对象
gts.p.push(new dt('txt1', '文字1'));


/**
 * 初始化工作区
 */
function init_workarea() {
	dWidth = $shj('#backImage')[0].width;
	dHeight = $shj('#backImage')[0].height;
	$shj('#backImage').wrap('<div id="workarea"></div>');
	$shj('#workarea').css({'position':'relative'})
					 .css({'width':dWidth})
					 .css({'height':dHeight})
					 .css({'border':'1px dotted #ff0000'});

	dd('txt1', 'workarea', '示范文字', '0', '0');
	$shj('#txt1').css({'color':'#FF0066'}).css({'fontSize':'14px'});
}

/**
 * 删除文字对象
 */
function delTxtObj(o) {
	if ($shj('#sltTxtObj option').length <= 1)
	{
		alert('只剩下一个文字对象了,无法删除!');
		return false;
	}

	$shj('#sltTxtObj option').each(function(){
		if ($shj(this).val() == o)
		{
			$shj(this).remove();
		}
	});

	$shj('#'+o).remove();

	for(i=0; i<gts.p.length; i++) {
		if (gts.p[i].txtid == o)
		{
			gts.p = gts.p.removeAt(i);
		}
	}

	chgTxtObj();
}

/**
 * 添加文字对象
 */
function createTxtObj() {
	id = $shj('#txtObjID').val();
	cname = $shj('#txtObjCnname').val();
	if (id.length <= 0 || cname.length <= 0)
	{
		alert('ID和中文名都不能为空!');
		return false;
	}
	
	isExist = false;
	$shj('#sltTxtObj option').each(function(){
		if ($shj(this).val() == id)
		{
			isExist = true;
		}
	});

	if (isExist)
	{
		alert('ID已经存在, 请重新填写!');
		return false;
	}
	
	newDt = new dt(id, cname);
	gts.p.push(newDt);
	$shj('#sltTxtObj').append('<option value="'+id+'">'+cname+'</option>');

	dd(id, 'workarea', cname, '0', '0');
	$shj('#'+id).css({'fontSize':'14px'});

	chgTxtObj();
}

/**
 * 切换文字对象, HTML表单值要对应改变
 */
function chgTxtObj() {
	o = $shj('#sltTxtObj').val();
	for(i=0; i<gts.p.length; i++) {
		if (gts.p[i].txtid == o) {
			$shj('#sltFontFamily').val(gts.p[i].fontface); // 字体
			$shj('#sltFontsize').val(gts.p[i].fontsize);  // 大小
			$shj('#effect').val(gts.p[i].effect); // 颜色切换
			// 颜色
			colortype = $shj('#sltColorType').val();
			switch (colortype)
			{
				case '1': // 文字颜色
					 $shj('#alterColor').val(gts.p[i].fontcolor);
					break;
				case '2': // 切换颜色
					 $shj('#alterColor').val(gts.p[i].altercolor);
					break;
				default: // 描边颜色
					 $shj('#alterColor').val(gts.p[i].strokecolor);
					break;
			}
			
			// 描边
			gts.p[i].isstroke == '1' ? $shj('#cbxIsStroke').attr('checked', 'checked') : $shj('#cbxIsStroke').removeAttr('checked'); 
			$shj('#jump').val(gts.p[i].jump); // 闪动效果

			// 示范文字
			$shj('#txtContent').val(gts.p[i].txt);

			// 文字方向
			gts.p[i].textdirection == '0' ? $shj('input[@name=rdDirection][@value=0]').attr('checked', 'checked') : $shj('input[@name=rdDirection][@value=1]').attr('checked', 'checked');
			
			// 字数限制
			$shj('#wordlimit').val(gts.p[i].wordlimit);
			gts.p[i].textdirection = $shj('input[@name=rdDirection][@checked]').val();

			gts.p[i].borderx == '1' ? $shj('#chxLockX').attr('checked', 'checked') : $shj('#chxLockX').removeAttr('checked');
			gts.p[i].bordery == '1' ? $shj('#chxLockY').attr('checked', 'checked') : $shj('#chxLockY').removeAttr('checked');

			// 文字旋转角度
			$shj('#txtAngle').val(gts.p[i].angle);
		}
	}	
}

/**
 * 设置文字对象属性
 */
function setTxtObj() {
	o = $shj('#sltTxtObj').val();

	
	for(i=0; i<gts.p.length; i++) {
		if (gts.p[i].txtid == o)
		{
			gts.p[i].fontface = $shj('#sltFontFamily').val(); // 字体
			gts.p[i].fontsize = $shj('#sltFontsize').val();  // 大小
			$shj('#'+o).css({'fontSize':$shj('#sltFontsize').val()+'px'}); // 页面设置字体大小

			// 颜色特效切换
			gts.p[i].effect = $shj('#effect').val();

			// 颜色
			colortype = $shj('#sltColorType').val();
			switch (colortype)
			{
				case '1': // 文字颜色
					gts.p[i].fontcolor = $shj('#alterColor').val();
					//$shj('#'+o).css({'fontColor':$shj('#alterColor').val()});
					break;
				case '2': // 切换颜色
					gts.p[i].altercolor = $shj('#alterColor').val();
					break;
				default: // 描边颜色
					gts.p[i].strokecolor = $shj('#alterColor').val();
					break;
			}
			
			// 是否需要描边
			$shj('#cbxIsStroke').attr('checked') ? gts.p[i].isstroke = '1' : gts.p[i].isstroke = '0';

			// 闪动效果
			gts.p[i].jump = $shj('#jump').val();

			// 示范文字内容
			gts.p[i].txt = $shj('#txtContent').val();
			$shj('#'+gts.p[i].txtid).text($shj('#txtContent').val());
			
			// 字数限制
			gts.p[i].wordlimit = $shj('#wordlimit').val();
			gts.p[i].textdirection = $shj('input[@name=rdDirection][@checked]').val();

			$shj('#chxLockX').attr('checked') ? gts.p[i].borderx = '1' : gts.p[i].borderx = '0';
			$shj('#chxLockY').attr('checked') ? gts.p[i].bordery = '1' : gts.p[i].bordery = '0';
			
			// 用户头像
			if ($shj('#cbxIsAvatar').attr('checked') && $shj('#userAvatar').attr('id') == undefined )
			{
				dd('userAvatar', 'workarea', '<img src="/images/touxiang.jpg" />', 0, 0);
				gts.avatar.show = '1';
			}
			else if (!$shj('#cbxIsAvatar').attr('checked'))
			{
				$shj('#userAvatar').remove();
				gts.avatar.show = '0';
			}

			// 文字旋转角度
			gts.p[i].angle = $shj('#txtAngle').val();

		}
	}
}

/**
 * 设置文字对象值
 * k为变量赋值存在问题
 */
function setGTSVal(id, k, v) {
	for(i=0; i<gts.p.length; i++) {
		if (gts.p[i].txtid == id)
		{
			gts.p[i].k = v;
		}
	}
}

function fontPreview(v)
{
	document.getElementById('fontImg').src = "/images/" + v + ".jpg";
}

/**
 * debug information
 */
function printvar() {
	for(i=0; i<gts.p.length; i++) {
		alert('id:' + gts.p[i].txtid + '\n中文名:' + gts.p[i].cnname + '\n字体:' + gts.p[i].fontface + '\n字体颜色:' + gts.p[i].fontcolor + '\n切换颜色:' + gts.p[i].altercolor + '\n描边颜色:' + gts.p[i].strokecolor + '\n文字大小:' + gts.p[i].fontsize + '\n颜色切换:' + gts.p[i].effect + '\n描边:' + gts.p[i].isstroke + '\n闪动效果:' + gts.p[i].jump + '\n字符限制:' + gts.p[i].wordlimit + '\n文字方向:' + gts.p[i].textdirection + '\n边界X:' + gts.p[i].borderx + '\n边界Y:' + gts.p[i].bordery + '\n头像:' + gts.avatar.show + '\n头像宽度:' + gts.avatar.width + '\n头像高度:' + gts.avatar.height + '\n文字旋转角度:' + gts.p[i].angle);
	}
}

/**
 * 数组原型函数扩展
 * 根据索引删除其中的一个元素
 */
Array.prototype.removeAt = function(index) {
	if (index < 0)
	{
		return this;
	}
	return this.slice(0, index).concat(this.slice(index+1, this.length));
}

/**
 * 显示头像的宽高设置框
 */
function showWHDialog() {
	$shj('#cbxIsAvatar').attr('checked') ? $shj('#avatarWH').show() : $shj('#avatarWH').hide();
}

/**
 * 图片效果预览
 */
function previewImg() {
	gts.imgsrc = $shj('#hdnBackImage').val();
	for (i=0; i<gts.p.length; i++) {
		gts.p[i].x = $shj('#'+gts.p[i].txtid+'X').val();
		gts.p[i].y = $shj('#'+gts.p[i].txtid+'Y').val();
	}

	if (gts.avatar.show == '1')
	{
		gts.avatar.x = $shj('#userAvatarX').val();
		gts.avatar.y = $shj('#userAvatarY').val();
	}

	$shj.post('previewtssz.php', {'action':'preview', 'p':$shj.toJSON(gts)}, function(res){
		$shj('#previmg').html('<img src="'+res+'" />');
	});
}

/**
 * 保存
 */
function saveImg() {
	title = $shj('#title').val();
	if ($shj.trim(title).length <= 0)
	{
		alert('标题不能为空!');
		return false;
	}

	gts.imgsrc = $shj('#hdnBackImage').val();
	for (i=0; i<gts.p.length; i++) {
		gts.p[i].x = $shj('#'+gts.p[i].txtid+'X').val();
		gts.p[i].y = $shj('#'+gts.p[i].txtid+'Y').val();
	}
	
	if (gts.avatar.show == '1')
	{
		gts.avatar.x = $shj('#userAvatarX').val();
		gts.avatar.y = $shj('#userAvatarY').val();
	}

	$shj.post('savetssz.php', {'action':'save', 'p':$shj.toJSON(gts), 'cid':$shj('#sltCategory').val(), 'title':title}, function(res){
		if (res == 'OK')
		{
			alert('保存成功!');
			location.href = '/secure20081207/uploadtsshanzi.php?categoryid=' + $shj('#sltCategory').val();
		}
	});
}


// 保存到服务器 预保存
function PreSave2Serv() {
	// 先判断是否已经生成了临时图片
	var genimg = $shj('#genimg').val();
	if (genimg.length <= 0)
	{
		alert('请先生成图片.');
		return false;
	}

	$shj('#liWatermark').show();
}

function Save2Serv() {
	var genimg = $shj('#genimg').val();
	if (genimg.length <= 0)
	{
		alert('请先生成图片.');
		return false;
	}

	var authcode = $shj('#tbxAuthcode').val();
	if (authcode.length <= 0)
	{
		alert('请输入验证码.');
		return false;
	}
	
//	var text = $shj('#txtContent').val();
	var text = $shj('#txt1').val();

	$shj('#btnSaveServ').attr('disabled', 'disabled');
	$shj.post('/ajax/generate_tssz.php', {'action':'save', 'genimg':genimg, 't':text, 'authcode':authcode, 'gid':$shj('#tid').val()}, function(res){
		if (res == 'error code')
		{
			alert('验证码不正确, 请重新输入验证码');
			return false;
		}
		else {
			eval('var o='+res);
			alert('保存到服务器成功!');
			enable_btn(10, 'btnSaveServ', '保存到服务器');
			$shj('#genimg').val('');
			$shj('#myspanBlogCopy').text('[img]'+o.imgsrc+'[/img]');
			$shj('#myspanPicCopy').text(o.imgsrc);
			$shj('#myspanPicHtml').text('<img src="'+o.imgsrc+'" />');
			$shj('#myspanUrl').text(o.pagepath);
			$shj('#liSpanUrl').show().css({'cursor':'pointer'}).click(function() {window.location.href = o.pagepath; });
			$shj('#copymisc').show('slow');	
			gen_auth_img();
			$shj('#liWatermark').hide();
		}
	})
}

function gen_auth_img()
{
	$shj('#authimg').attr('src', '../authcode.php');
}

function copymisc()
{
  $shj('span[@id*=myspan]').each(function(){
  	$shj(this).mouseover(function(){$shj(this).css({'color':'#0000ff', 'cursor':'pointer'})}).mouseout(function(){$shj(this).css({'color':'#ff0000', 'cursor':'pointer'})}).click(function(){copyToClipboard($shj(this).text())});
  });	
}

function copyToClipboard(meintext) 
{
	if (window.clipboardData)
	{
		window.clipboardData.setData("Text", meintext);
		alert('地址复制成功,现在就通过QQ或MSN发送给你的好友,\n或者粘贴到您的博客空间一起分享快乐吧. ^_^');
	}
	else 
	{
		alert('对不起,浏览器不支持直接复制.\n请选择地址,然后右键点击复制,然后发送给您的好友. ^_^');
	}
}

function addqq()
{
	d=document;
	t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');
	void(vkey=window.open('http://shuqian.qq.com/post?title='+encodeURIComponent(d.title)+'&uri='+encodeURIComponent(d.location.href)+'&jumpback=2&noui=1','favit','width=930,height=470,left=50,top=50,toolbar=no,menubar=no,location=no,scrollbars=yes,status=yes,resizable=yes'));
	vkey.focus();
}

function CopyImage(img)
{
 if (img.tagName != 'IMG') return;
 var imgsrc = img.src;
 if(imgsrc.indexOf('wait.gif')>0){
 alert('请稍等，图片还没有生成');
 return;
 }
 if (typeof img.contentEditable == 'undefined' || !document.body.createControlRange){
 alert('抱歉，浏览器不支持直接复制图片！\n请将鼠标移到图片上方，单击鼠标右键在弹出菜单中选择“复制”');
 }else{
 var ctrl = document.body.createControlRange();
 img.contentEditable = true;
 ctrl.addElement(img);
 ctrl.execCommand('Copy');
 img.contentEditable = false;
 alert('复制完成，到QQ对话框里按Ctrl-V就可以啦！\n\n若不能粘贴请重复尝试或用鼠标右键选复制');
 }
}

function SaveImage(img){
 if (typeof img == 'object')
 	img = img.src;
 window.win = open(img);
 setTimeout(function() {win.document.execCommand('SaveAs')}, 200);
}
