//============================== Utility Related Section ==============================
/* Create a new XMLHttpRequest object to talk to the Web server */
var intTotal_XMLHttpRequest_Call = 0;
function createRequestObject()
{
	var req;

	if(window.XMLHttpRequest)		// Firefox, Safari, Opera...
	{
		req = new XMLHttpRequest();
	}
	else if(window.ActiveXObject) 
	{
		try 
		{
			req = new ActiveXObject("Msxml2.XMLHTTP");	// Try load newer XML engine first
		}
		catch (e) 
		{
			try 
			{
				req = new ActiveXObject("Microsoft.XMLHTTP");	// Try load old XML engine
			}
			catch (e2) 
			{
				alert_box('Problem creating the XMLHttpRequest object in IE');
			}
		}
	}
	else 
	{
		// There is an error creating the object, probably an old browser is used!
		alert_box('Problem creating the XMLHttpRequest object');
	}

   return req;
}

// Create time stamp (to avoid server cache... =_=a)
function getTimeStamp()
{
	today = new Date();
	return today.getTime();
}

function Show_Form_Error(objField, strMsg)
{
	if(alert_box)
	{
		alert_box(strMsg);
	}
	else
	{
		alert(strMsg);
	}
	objField.focus();

	return false;
}

function show_debug(strMessage)
{
	$("divDebug_List").innerHTML += strMessage + "<br>";
	
	if($("divDebug_List").scrollHeight > $("divDebug_Area").offsetHeight)
	{
		$("divDebug_List").style.top = ($("divDebug_Area").offsetHeight-$("divDebug_List").scrollHeight);
	}
}

function ygp_compile(strSource, strKeyword, strValue)
{
	var return_data = strSource;
	while(return_data.indexOf("%3C%5B"+strKeyword+"%5D%3E") != -1)	return_data = return_data.replace("%3C%5B"+strKeyword+"%5D%3E", strValue);
	while(return_data.indexOf("&lt;["+strKeyword+"]&gt;") != -1)	return_data = return_data.replace("&lt;["+strKeyword+"]&gt;", strValue);
	while(return_data.indexOf("<["+strKeyword+"]>") != -1)	return_data = return_data.replace("<["+strKeyword+"]>", strValue);
	return return_data;
}

function limitStringTo(strWord, intEnglish, intChinese)
{
//	if (strWord != "")	strWord = (isChinese(strWord))?strWord.substr(0,intChinese):strWord.substr(0,intEnglish);
	if (strWord != "")
	{
		if ((intEnglish>3)&&(intChinese>3))
		{
			if(isChinese(strWord))
			{
				if(strWord.length > intChinese)		strWord = strWord.substr(0, intChinese-2) + "..";
			}
			else
			{
				if(strWord.length > intEnglish)		strWord = strWord.substr(0, intEnglish-2) + "..";
			}
		}
	}
	return strWord;
}


// Make navigation link html
function make_nav_string(intPage_Total, intPage_Now, strFunction_Name, strFunction_Parameter)
{
	if((strFunction_Name == "load_live_photo_search") || (strFunction_Name == "load_yahoo_photo_search") || (strFunction_Name == "load_google_image_search"))
	{
		if(intPage_Total > 50){intPage_Total = 50;}
	}
	var strHTML_Return = "";
	if(intPage_Total>1)
	{
		var	intPage_Min = intPage_Now - 4;
		if (intPage_Min < 1) intPage_Min = 1;
		
		var	intPage_Max = intPage_Min + 9;
		if (intPage_Max > intPage_Total) intPage_Max = intPage_Total;
		
		if(intPage_Now > 1)	strHTML_Return += "&nbsp;&nbsp;<a href=\"javascript:"+strFunction_Name+"("+strFunction_Parameter+",1);\">|&lt;</a>&nbsp;";
		if((intPage_Total > 10)&&(intPage_Now > 10))	strHTML_Return += "&nbsp;&nbsp;<a href=\"javascript:"+strFunction_Name+"("+strFunction_Parameter+","+(intPage_Now-10)+");\">&lt;&lt;</a>&nbsp;";
		for(intCount_Page = intPage_Min; intCount_Page <= intPage_Max; intCount_Page++)
		{
			if(intCount_Page == intPage_Now)
			{
				strHTML_Return += "&nbsp;<b><font size=3>" + intCount_Page+"</font></b>";
			}
			else
			{
				strHTML_Return += "&nbsp;<a href=\"javascript:"+strFunction_Name+"("+strFunction_Parameter+","+intCount_Page+");\">" + intCount_Page+"</a>";
			}
		}
		
		if((strFunction_Name != "load_live_photo_search") && (strFunction_Name != "load_yahoo_photo_search") && (strFunction_Name != "load_google_image_search"))
		{
			if((intPage_Total > 10)&&(intPage_Max < (intPage_Total-10)))	strHTML_Return += "&nbsp;&nbsp;<a href=\"javascript:"+strFunction_Name+"("+strFunction_Parameter+","+(intPage_Now+10)+");\">&gt;&gt;</a>&nbsp;";
			if(intPage_Now < intPage_Total)	strHTML_Return += "&nbsp;&nbsp;<a href=\"javascript:"+strFunction_Name+"("+strFunction_Parameter+","+intPage_Total+");\">&gt;|</a>&nbsp;";
			strHTML_Return += "&nbsp;";
			strHTML_Return += "<br><font color='silver'>Total: "+intPage_Total+" pages</font>";
		}
		else
		{
			var intNext_Ten = intPage_Now+10;
			if(intNext_Ten > intPage_Total){intNext_Ten = intPage_Total;}
			if((intPage_Total > 10)&&(intPage_Max < intPage_Total))	strHTML_Return += "&nbsp;&nbsp;<a href=\"javascript:"+strFunction_Name+"("+strFunction_Parameter+","+intNext_Ten+");\">&gt;&gt;</a>&nbsp;";
			if(intPage_Now < intPage_Total)	strHTML_Return += "&nbsp;&nbsp;<a href=\"javascript:"+strFunction_Name+"("+strFunction_Parameter+","+intPage_Total+");\">&gt;|</a>&nbsp;";
			strHTML_Return += "&nbsp;";
			strHTML_Return += "<br><font color='silver'>Total: "+intPage_Total+" pages</font>";
		}
	}
	
	return strHTML_Return;
}


function resize_image_to(element, resize_size)
{
	if (element)
	{
		strResult = element.id+") B: "+element.width+" x "+element.height;
		var intRatio = 1;
		if(element.width > element.height)
		{
			intRatio = (resize_size/element.width);
			element.width = Math.round(element.width * intRatio);
			
			// Use padding to make it a square!
			intDiff_Top = Math.round((resize_size - element.height)/2);
			intDiff_Bottom = (resize_size - element.height)-intDiff_Top;
			element.paddingTop = intDiff_Top+"px";
			element.paddingBottom = intDiff_Bottom+"px";
		}
		else
		{
			intRatio = (resize_size/element.height);
			element.height = Math.round(element.height * intRatio);
			
			// Use padding to make it a square!
			intDiff_Left = Math.round((resize_size - element.width)/2);
			intDiff_Right = (resize_size - element.width)-intDiff_Left;
			element.paddingLeft = intDiff_Left+"px";
			element.paddingRight = intDiff_Right+"px";
		}
		strResult += " => A: "+element.width+" x "+element.height;
//		show_debug(strResult);
	}
}

function resize_all(strPrefix, intSize)
{
	intTotal_Item = 0;
	for (i=0; i<document.images.length; i++)
	{
		if (document.images[i].id.indexOf(strPrefix) ==0)
		{
			resize_image_to(document.images[i], intSize);
		}
	}
}

function resetDiv(strDiv)
{
	if($(strDiv))
	{
		$(strDiv).innerHTML = "";
		if(strDiv != "divAlbum_Photo_List")	$(strDiv).style.top = 0;
		$(strDiv).scrollTop = 0;
		if(strDiv != "divAlbum_Photo_List")$(strDiv).style.left = 0;
		$(strDiv).scrollLeft = 0;
		check_scroller();
	}
}

function change_layer(strLayer_Tag, strVisibility)
{
	if($("divCarot_"+strLayer_Tag)) $("divCarot_"+strLayer_Tag).style.visibility = strVisibility;
	if($("divScroller_"+strLayer_Tag)) $("divScroller_"+strLayer_Tag).style.visibility = strVisibility;
	if($("div"+strLayer_Tag+"_List")) $("div"+strLayer_Tag+"_List").style.visibility = strVisibility;
	if($("div"+strLayer_Tag)) $("div"+strLayer_Tag).style.visibility = strVisibility;
	if($("div"+strLayer_Tag+"_Nav")) $("div"+strLayer_Tag+"_Nav").style.visibility = strVisibility;
}

function lightup(imageobject, opacity, intDuration)
{
	var	current_opacity = 1;
	var new_opacity = 1;
	if (navigator.appName.indexOf("Netscape")!=-1 &&parseInt(navigator.appVersion)>=5)
	{
		current_opacity = $(imageobject).style.MozOpacity;
		new_opacity = opacity/100;
	}
	else if (navigator.appName.indexOf("Microsoft")!= -1 && parseInt(navigator.appVersion)>=4)
	{
		current_opacity = $(imageobject).filters.alpha.opacity;
		new_opacity = opacity;
	}

	eval("new Effect.Opacity(imageobject, {duration:"+intDuration+", from:"+current_opacity+", to:"+new_opacity+"})");
	 
/*
	 if (navigator.appName.indexOf("Netscape")!=-1
	  &&parseInt(navigator.appVersion)>=5)
		$(imageobject).style.MozOpacity=opacity/100
	 else if (navigator.appName.indexOf("Microsoft")!= -1 
	  &&parseInt(navigator.appVersion)>=4)
		$(imageobject).filters.alpha.opacity=opacity
*/
}

// Choose page language
function choose_language(strLanguage)
{
	// Write our new language setting in cookie..
	var today = new Date();
	var expire = new Date();
	expire.setTime(today.getTime() + (1000*60*24*3));
	document.cookie = "site_lang="+strLanguage+";expires="+expire.toGMTString();

	// Clear all existing language related querystring variable
	var strURL = location.href;
	strURL = strURL.replace(/#/gi, "");
	strURL = strURL.replace(/&lang=tc/gi, "");
	strURL = strURL.replace(/&lang=en/gi, "");
	strURL = strURL.replace(/\?lang=tc/gi, "");
	strURL = strURL.replace(/\?lang=en/gi, "");

	// Append new language status to querystring..
	strURL = (strURL.indexOf("?") > 0) ? strURL + "&" : strURL + "?";
	strURL = strURL + "lang=" + strLanguage;
	location.href = strURL;
}

function reportPos(mydraggable, event)
{
	show_debug(event.type + ": " + mouseCoords(event).x+  "," + mouseCoords(event).y);
}

function mouseCoords(ev){
	if(ev.pageX || ev.pageY){
		return {x:ev.pageX, y:ev.pageY};
	}
	return {
		x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
}

// Add event listener
function addEvent(obj,evType,fn,useCapture)
{
	var ret=false;
	if(obj!=null)
	{
		if(obj.addEventListener)
		{
			obj.addEventListener(evType,fn,useCapture);
			ret=true;
		}
		else if(obj.attachEvent)
		{
			obj.attachEvent("on"+evType,fn);ret=true;
		}
	}
	return ret;
}

// Add Load Event Listener
function addLoadEvent(func)
{
   var oldonload = window.onload;
   if (typeof window.onload != 'function')
   {
       window.onload = func;
   }
   else
   {
       window.onload = function()
	   {
           oldonload();
           func();
       }
   }
}

function isChinese(strTest_Data){
    if (strTest_Data == "") return true;
	if (escape(strTest_Data).indexOf("%u")!=-1) return true;
	return (/[^\x00-\xff]/g.test(strTest_Data));
}

function isArray(obj) {
   if (obj.constructor.toString().indexOf("Array") == -1)
      return false;
   else
      return true;
}

function isObject(obj) {
   if (obj.constructor.toString().indexOf("Object") == -1)
      return false;
   else
      return true;
}

// Redirect to specify URL
function Redirect(strURL)
{
	var arrURL_Part = strURL.split("?");
	switch(arrURL_Part.length)
	{
		case 1:
			break;
			
		case 2:
			var strURL_New = "";
			var arrQuery_Part = arrURL_Part[1].split("&");
			var intQuery_Part = arrQuery_Part.length;
			var arrQuery_Couple = "";
			for(var intLoop = 0; intLoop < intQuery_Part; intLoop++)
			{
				arrQuery_Couple = arrQuery_Part[intLoop].split("=");
				if(arrQuery_Couple.length == 2)
				{
					strURL_New += (strURL_New == "") ? "?" : "&";
					strURL_New +=  encodeURIComponent(arrQuery_Couple[0]) + "=" + encodeURIComponent(arrQuery_Couple[1]);
				}
			}
			strURL = arrURL_Part[0]+strURL_New;
			break;
			
		default:
			alert("Too many ?");
			return false;
	}

	location.href = strURL;
}
