﻿/* messages */
//------------------------------
var errAjax = "對不起，您的瀏覽不支援AJAX功能";
var errBookmark = "對不起，您的瀏覽器不支援此操作";
var isIE = (navigator.appName == "Microsoft Internet Explorer");
var FontCookieName = "PTHWebFont";
var FONT_COOKIE_EXPIRE = 3600000*24*100;

/* dreamweaver functions */
//------------------------------
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


/* Custom Functions */
//------------------------------
function srandom(seed, num)
{
	var a = ((num ^ 1837413) + seed);
	var b = ((num * seed) ^ 357) + 11;
 	return (a % b + 1) / (b + 1);
}

function ShowHideTable(tablename)
{
    if (document.getElementById(tablename).style.display == "block")
    {
        document.getElementById(tablename).style.display = "none";
    }
    else
    {
        document.getElementById(tablename).style.display = "block";
    }
}


function AddBookmark()
{
    if (window.external)
	{
		window.external.AddFavorite('http://www.putonghuaweb.com/', '網通話網');
	}
	else
	{ 
		alert(errBookmark);
	}
}

function CopyToClipboard(txt)
{
	var copied = false;
	if (window.clipboardData && clipboardData.setData)
	{
		try
		{
			copied = clipboardData.setData("text", txt);
			if (copied)
			{
				ShowSlideMessage(0, 0);
			}
			else
			{
				ShowSlideMessage(0, 1);
			}
		}
		catch (e)
		{
			ShowSlideMessage(0, 1);
		}
	}
	else
	{
		try
		{
			netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
	
			var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
			var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
		
			trans.addDataFlavor('text/unicode');
		
			var str = new Object();
			var len = new Object();
			var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
		   
			var copytext = txt;
   			str.data = copytext;
		   
			trans.setTransferData("text/unicode",str,copytext.length*2);
			var clipid=Components.interfaces.nsIClipboard;
		   
			if (!clip) return false;
		  
			clip.setData(trans,null,clipid.kGlobalClipboard);
			ShowSlideMessage(0, 0);
		}
		catch (e)
		{
			ShowSlideMessage(0, 2);
		}
	}
}

function GShow(divName, opacity)
{
	if (opacity >= 100)
	{
		opacity = 100;
	}
	
	var deltaOpa = 0;
	var thisDiv = document.getElementById(divName);
	if (isIE)
	{
		deltaOpa += 30;
		thisDiv.style.filter = "Alpha(Opacity=" + opacity + ")";
	}
	else
	{
		thisDiv.style.MozOpacity = opacity/100;
	}
	
	if (opacity != 100)
	{
		setTimeout("GShow(\"" + divName + "\", " + (opacity + 12 + deltaOpa) + ")", 50);
	}
}

function GHide(divName, opacity)
{
	var thisDiv = document.getElementById(divName);
	var stop = false;
	
	if (opacity <= 0)
	{
		thisDiv.style.display = "none";
		thisDiv.style.visibility = "hidden";
		opacity = 100;
		stop = true;
	}
	
	if (isIE)
	{
		thisDiv.style.filter = "Alpha(Opacity=" + opacity + ")";
	}
	else
	{
		thisDiv.style.MozOpacity = opacity/100;
	}
	
	if (!stop)
	{
		setTimeout("GHide(\"" + divName + "\", " + (opacity - 5) + ")", 50);
	}
}

function Zoom(val)
{
	SetZoomStyle(val);
	SetZoomCookie(FontCookieName, val, FONT_COOKIE_EXPIRE);
}

function GetZoomCookie()
{
	var nameEQ = FontCookieName + "=";
	var cvalue = "1";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) cvalue = c.substring(nameEQ.length,c.length);
	}

	return cvalue;
}

function SetZoomCookie(CName, CValue, CExpire)
{
	var today = new Date();
	var expire = new Date();
	expire.setTime(today.getTime() + CExpire);

 	document.cookie = CName + "=" + CValue + ";path=/;expires="+expire.toGMTString();
}

function SetZoomStyle(val)
{
	document.body.style.zoom = 1+(val-1)*0.25;
	for (var i = 1; i < 4; ++i)
	{
		var curImg = document.getElementById("imgFont"+i).src;
		document.getElementById("imgFont"+i).src = (i == val) ? curImg.replace("_off", "_on") : curImg.replace("_on", "_off");
	}
}

function RenderZoomSelection(relPath)
{
	var retVal = '<td width="135">';
	retVal += '<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr>';
	retVal += '<td width="9" align="center"><img src="'+relPath+'images/spacer.gif" width="8" height="0"></td>';
	retVal += '<td align="center">|</td>';
	retVal += '<td width="9" align="center"><img src="'+relPath+'images/spacer.gif" width="8" height="0"></td>';
	retVal += '<td>網頁縮放&nbsp;</td><td>';
	retVal += '<a href="#" onclick="Zoom(1);return false"><img id="imgFont1" title="原設定" src="'+relPath+'images/font_small_off.gif" valign="bottom" width="18" height="18" border="0"></a>';
	retVal += '&nbsp;';
	retVal += '<a href="#" onclick="Zoom(2);return false"><img id="imgFont2" title="較大" src="'+relPath+'images/font_med_off.gif" valign="bottom" width="18" height="18" border="0"></a>';
	retVal += '&nbsp;';
	retVal += '<a href="#" onclick="Zoom(3);return false"><img id="imgFont3" title="最大" src="'+relPath+'images/font_large_off.gif" valign="bottom" width="18" height="18" border="0"></a>';
	retVal += '</td></tr></table>';
	retVal += '</td>';
	
	return retVal;
}

String.prototype.Left = function(n)
{
	if (n <= 0)
	    return "";
	else if (n > this.length)
	    return this;
	else	
	    return this.substring(0, n);
}

String.prototype.Right = function(n)
{
	if (n <= 0)
	    return "";
	else if (n > this.length)
	    return this;
	else
	    return this.substring(this.length-n, this.length);
}

String.prototype.PadLeft = function(len, ch)
{
	var temp = this;
	for (var i = this.length; i < len; ++i)
	{
		temp = ch + temp;
	}
    return temp;
}

String.prototype.PadRight = function(len, ch)
{
	var temp = this;
	for (var i = this.length; i < len; ++i)
	{
		temp = temp + ch;
	}
    return temp;
}

String.prototype.Trim = function()
{
	return this.replace(/^\s+|\s+$/g, "");
}

String.prototype.LTrim = function()
{
	return this.replace(/^\s+/, "");
}

String.prototype.RTrim = function()
{
	return this.replace(/\s+$/, "");
}

String.prototype.NormalizeInput = function()
{
	return this.replace(/\|/g, "｜").replace(/\&/g, "%26").replace(/\?/g, "？");
}

String.prototype.RemoveExtraSpace = function()
{
	return this.replace(/\t/g, "").replace(/\r/g, "");
}

String.prototype.RemoveAllWhiteSpace = function()
{
	return this.replace(/\t/g, "").replace(/\r/g, "").replace(/\n/g, "").replace(/ /g, "");
}

Array.prototype.shuffle = function (a, b)
{ 
	var min = a ? (a < 0 ? 0 : a) : 0;
	var max = b ? (b > this.length - 1 ? this.length - 1 : b) : this.length - 1;
	
	for (var i = min; i < max; ++i)
	{
		var rnd = parseInt(Math.random() * (max-min+1)) + min;
		var tmp = this[i];
		this[i] = this[rnd];
		this[rnd] = tmp;
	}
}

Array.prototype.sShuffle = function (seed, a, b)
{ 
	var min = a ? (a < 0 ? 0 : a) : 0;
	var max = b ? (b > this.length - 1 ? this.length - 1 : b) : this.length - 1;
	
	for (var i = min; i < max; ++i)
	{
		var rnd = parseInt(srandom(seed, i) * (max-min+1)) + min;
		var tmp = this[i];
		this[i] = this[rnd];
		this[rnd] = tmp;
	}
}
