/*-------------------------------------------------------------------------------------------------------------------
 Script Name: functions.js
 Author: Tony Wei (魏志國)  tonywei123_at_gmail.com
 Description: JavaScript 共用函式庫
 Revision History:
   1.0: original version 2011/5/30
-------------------------------------------------------------------------------------------------------------------*/


// 取得主網域名稱
var sDomain = "21housebook.com.tw";

// 伺服器名稱
var sServerName = "http://www.21housebook.com.tw/";
if ( location.href.indexOf( ":8080" ) > -1 ) {
	sServerName = "http://www.21housebook.com.tw:8080/";
}


//----------------------------------------------------------------------
// 頁面載入執行
//----------------------------------------------------------------------
if ( typeof( jQuery ) != "undefined" ) {

	$( function() {

		if ( typeof( jQuery.fancybox ) != "undefined" ) {
			// 訊息小視窗用
			$("#a_msgBox").fancybox({
				'transitionIn'		: 'none',
				'transitionOut'		: 'none'
			});
		}

		if ( document.getElementById( "keyword" ) != null ) {

			// 預設值
			$( "#keyword" ).defaultValue();

			// 經紀人員搜尋
			$( "#a_search" ).bind( "click", function() {
				if ( ! check_required( 'keyword', '要搜尋的文字' ) ) return;

				/*
				var sHtml = "<form id='form_search' method='get' action='" + sServerName + "'>"
								   + "<input type='hidden' name='k' value='" + $( "#keyword" ).val() + "' />"
								   + "</form>";
				$( "BODY" ).append( sHtml );
				$( "#form_search" ).submit();		
				*/
				location.href = sServerName + "?kt=" + $( "#ktype" ).val() + "&k=" + encodeURI( $( "#keyword" ).val() );
				//location.href = sServerName + "?k=" + $( "#keyword" ).val();
			} );

			// 關鍵字輸入 Enter
			$( "#keyword" ).bind( "keypress", function( e ) {
				var code = ( e.keyCode ? e.keyCode : e.which );
				if( code == 13 ) {
					$( "#a_search" ).trigger( "click" );
				}
			} );
		}

	} );	// End of 頁面載入執行

}
//----------------------------------------------------------------------


// 預先檢查驗證碼
function check_code()
{
	var url = "index.aspx?fn=check_code&rand=" + Math.random() + "&code=" + document.getElementById( "code" ).value;
	var objTag = ccioo_ajax_getXmlData( url ).getElementsByTagName("item");
	var sReturn = objTag[0].firstChild.nodeValue;
	if ( parseInt( sReturn ) > 0 ) {
		alert( "請輸入正確的驗證碼!" );
		return false;
	}
	return true;
}

/*-------------------------------------------------------------------------------------------------------------------
 Function: check_required()
 Description: 檢查表單欄位是否有填寫
 Input: 物件ID, 訊息
 Output: 是否驗證通過 true or false
 Example: 
	check_required( "username", "姓名" );
Revision History:
   1.0: original version 2007/1/5
-------------------------------------------------------------------------------------------------------------------*/
function check_required( objID, sMessage )
{
	var objField = document.getElementById( objID );
	if ( objField.value.replace( /\s/g, "" ).length == 0 ) {
		alert( "請填寫" + sMessage + "!" );
		objField.focus();
		return false;
	}
	return true;
}

 /*-------------------------------------------------------------------------------------------------------------------
 Function: check_numeric()
 Description: 檢查表單欄位是否是數字
 Input: 物件ID, 訊息
 Output: 是否驗證通過 true or false
 Example: 
	check_numeric( "amount", "數量" );
Revision History:
   1.0: original version 2007/1/8
-------------------------------------------------------------------------------------------------------------------*/
function check_numeric( objID, sMessage )
{
	var objField = document.getElementById( objID );
	if ( isNaN( parseInt( objField.value ) ) || parseInt( objField.value ) != objField.value || parseInt( objField.value ) < 0 ) {
		alert( sMessage + "必須是正整數!" );
		objField.select();
		objField.focus();
		return false;
	}
	return true;
}

 /*-------------------------------------------------------------------------------------------------------------------
 Function: check_float()
 Description: 檢查表單欄位是否是數字
 Input: 物件ID, 訊息
 Output: 是否驗證通過 true or false
 Example: 
	check_float( "price", "價格" );
Revision History:
   1.0: original version 2010/10/3
-------------------------------------------------------------------------------------------------------------------*/
function check_float( objID, sMessage )
{
	var objField = document.getElementById( objID );
	if ( isNaN( parseFloat( objField.value ) ) || parseFloat( objField.value ) != objField.value ) {
		alert( sMessage + "必須是數字!" );
		objField.select();
		objField.focus();
		return false;
	}
	if ( parseFloat( objField.value ) < 0 ) {
		alert( sMessage + "必須是正數!" );
		objField.select();
		objField.focus();
		return false;
	}
	return true;
}

 /*-------------------------------------------------------------------------------------------------------------------
 Function: check_numeric2()
 Description: 檢查表單欄位是否是數字
 Input: 物件ID, 訊息
 Output: 是否驗證通過 true or false
 Example: 
	check_numeric2( 'mobile', '手機或聯絡電話' );
Revision History:
   1.0: original version 2007/1/8
   1.1: c21 專用 2010/10/3
-------------------------------------------------------------------------------------------------------------------*/
function check_numeric2( objID, sMessage )
{
	var objField = document.getElementById( objID );
	var filter= /^([0-9#\-]+)$/i;
	if ( ! filter.test( objField.value ) ) {
		alert( sMessage + "必須是阿拉伯數字!" );
		objField.select();
		objField.focus();
		return false;
	}
	return true;
}

 /*-------------------------------------------------------------------------------------------------------------------
 Function: check_numeric3()
-------------------------------------------------------------------------------------------------------------------*/
function check_numeric3( objID, sMessage )
{
	var objField = document.getElementById( objID );
	var filter= /[\-0-9]+/i;
	if ( ! filter.test( objField.value ) ) {
		alert( sMessage + "必須是整數數字!" );
		objField.select();
		objField.focus();
		return false;
	}
	return true;
}

 /*-------------------------------------------------------------------------------------------------------------------
 Function: check_address()
 Description: 檢查表單欄位是否是數字
 Input: 物件ID, 訊息
 Output: 是否驗證通過 true or false
 Example: 
	check_address( 'no', '號' );
Revision History:
   1.0: c21 專用 2010/10/3
-------------------------------------------------------------------------------------------------------------------*/
function check_address( objID, sMessage )
{
	var objField = document.getElementById( objID );
	var filter= /^([0-9\-]+)$/i;
	if ( ! filter.test( objField.value ) ) {
		alert( sMessage + "必須是數字或-號!" );
		objField.select();
		objField.focus();
		return false;
	}
	return true;
}

 /*-------------------------------------------------------------------------------------------------------------------
 Function: check_range()
 Description: 檢查表單欄位值是否介於最小值與最大值之間, 並轉換為整數
 Input: 物件ID, 最小值, 最大值, 訊息
 Output: 是否驗證通過 true or false
 Example: 
	check_range( "amount", 1, 100, "數量" );
Revision History:
   1.0: original version 2007/1/8
-------------------------------------------------------------------------------------------------------------------*/
function check_range( objID, iMin, iMax, sMessage )
{
	var objField = document.getElementById( objID );
	objField.value = parseInt( objField.value );
	iMin  = parseInt( iMin );
	iMax = parseInt( iMax );
	if ( objField.value < iMin || objField.value > iMax ) {
		alert( sMessage + "必須介於 " + iMin + " 與 " + iMax + " 之間!" );
		objField.select();
		objField.focus();
		return false;
	}
	return true;
}

 /*-------------------------------------------------------------------------------------------------------------------
 Function: check_email()
 Description: 檢查表單欄位是否是合法 Email 帳號
 Input: 物件ID, 訊息
 Output: 是否驗證通過 true or false
 Example: 
	check_email( "email" );
Revision History:
   1.0: original version 2007/1/8
-------------------------------------------------------------------------------------------------------------------*/
function check_email( objID, sMessage )
{
	var objField = document.getElementById( objID );
	var filter= /^([\w-]+(?:\.\w+)*)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	if ( ! filter.test( objField.value ) ) {
		if ( objID == "MI_ID" ) {
			alert( "您必須使用E-Mail當成帳號，請於帳號欄位中填入正確的E-Mail資訊!" );
		} else {
			alert( "請填寫正確的Email信箱!" );
		}
		objField.select();
		objField.focus();
		return false;
	}
	return true;
}

/*-------------------------------------------------------------------------------------------------------------------
 Function: jump_get()
 Description: 換頁, 使用 GET
 Input: 新頁碼
 Output: N/A
 Example: 
	jump_get(2);
Revision History:
   1.0: original version 2007/1/10
   2.0: fn 參數版 2007/6/23
   3.0: c21 專用 2010/1/13
   3.1: 第二參數改為特殊用途 2010/10/14
-------------------------------------------------------------------------------------------------------------------*/
function jump_get( p, special ) {
	var qs = new Querystring();
	var tail = "";
	if ( qs.get("no") != null ) {
		tail += "&no=" + qs.get("no");
	}
	if ( qs.get("city") != null ) {
		tail += "&city=" + qs.get("city");
	}
	if ( qs.get("cityarea") != null ) {
		tail += "&cityarea=" + qs.get("cityarea");
	}
	if ( qs.get("k") != null && document.getElementById('aspx_keyword').value != "" ) {
		tail += "&k=" + encodeURI( document.getElementById('aspx_keyword').value );
	}
	if ( document.getElementById( "aspx_sort" ) != null && document.getElementById( "aspx_sort" ).value != "" ) {
		tail += "&sort=" + document.getElementById( "aspx_sort" ).value;
	}
	switch ( special )
	{
		case 0:   tail += "#anchor";     break;
		case 1:   tail += "#anchor1";   break;
	}
	location.href = "index.aspx?fn=" + qs.get("fn") + "&page=" + p + tail;
}


/*-------------------------------------------------------------------------------------------------------------------
 Function: prepare_form()
 Description: 準備待傳送表單
 Input: 參數 hash
 Output: N/A
 Example: 
	prepare_form( { "a":1, "b":"Tony" } );
	alert( $( "#_form1" ).html() );
Revision History:
   1.0: original version 2011/6/4
-------------------------------------------------------------------------------------------------------------------*/
function prepare_form( parameters_hash )
{
	$( "#_form1" ).remove();
	var sForm = "<form id='_form1'>\n";
	for ( var key in parameters_hash )
	{
		sForm += "<input type='hidden' name='" + key + "' value='" + parameters_hash[ key ] + "' />\n";
	}
	sForm += "</form>";
	$( "BODY" ).append( sForm );
}


/*-------------------------------------------------------------------------------------------------------------------
 Function: prepare_data()
 Description: 準備要 POST 的內容
 Input: 參數 hash
 Output: N/A
 Example: 
	alert( prepare_data( { "a":1, "b":"Tony" } ) );
Revision History:
   1.0: original version 2011/6/9
-------------------------------------------------------------------------------------------------------------------*/
function prepare_data( parameters_hash )
{
	var sPostData = "";
	if ( typeof( main_mobile ) != "undefined" ) {
		sPostData += "main_mobile=" + main_mobile + "&";
	}
	if ( typeof( LT_Token ) != "undefined" && LT_Token != "" ) {
		sPostData += "LT_Token=" + LT_Token + "&";
		sPostData += "LT_Identity=" + LT_Identity + "&";
		sPostData += "LT_FKV=" + LT_FKV + "&";
		sPostData += "LT_Name=" + encodeURI( LT_Name ) + "&";
	}
	for ( var key in parameters_hash )
	{
		//sPostData += key + "=" + parameters_hash[ key ] + "&";
		sPostData += key + "=" + encodeURIComponent( parameters_hash[ key ] ) + "&";		// 2011/11/8 因分享官網物件，無法帶入正確之參數，故修正之
	}
	sPostData = sPostData.replace( /&$/, "" );
	return sPostData;
}

/*-------------------------------------------------------------------------------------------------------------------
 數字三位一逗號 2011/6/4
http://stackoverflow.com/questions/1990512/add-comma-to-numbers-every-three-digits-using-jquery
-------------------------------------------------------------------------------------------------------------------*/
function comma( str ) {
	return str.replace( /(\d)(?=(\d\d\d)+(?!\d))/g, "$1," );
}

//----------------------------------------------------------------------
// 取得連結的標題等資訊 2011/6/11
//----------------------------------------------------------------------
function get_title( sText )
{

	if ( sText == "" || sText.length < 12 ) {
		return;
	}
	if ( sText.indexOf( "http" ) == -1 ) {
		return;
	}
	if ( sText.indexOf( "www.youtube.com" ) > -1 || sText.indexOf( "youtu.be" ) > -1 ) {
		get_youtube( sText );
		return;
	}

	// 取出第一個網址
	var sUrl = sText.substr( sText.indexOf( "http" ) );
	if ( sUrl.indexOf( " " ) > -1 ) {
		sUrl = sUrl.substr( 0, sUrl.indexOf( " " ) );
	} else {
		if ( sUrl.indexOf( "," ) > -1 ) {
			sUrl = sUrl.substr( 0, sUrl.indexOf( "," ) );
		} else {
			if ( sUrl.indexOf( "，" ) > -1 ) {
				sUrl = sUrl.substr( 0, sUrl.indexOf( "，" ) );
			}
		}
	}
	$( "#BO_LinkUrl" ).val( sUrl );

	// 取回標題
	$.post( "/index.aspx?fn=get_title&rand=" + Math.random(), prepare_data( { "BO_LinkUrl":sUrl } ), function( data ) {
		if ( data == null ) {
			alert( "JSON Error!" );
		} else {
			if ( typeof( data.objlist[ 0 ].msg ) != "undefined" ) {
				alert( data.objlist[ 0 ].msg );
			} else {
				var d = data.objlist[ 0 ];
				if ( d.BO_LinkTitle != "" ) {
					$( "#span_BO_LinkPic" ).html( "<img src='" + d.BO_LinkPic + "' width='178' />" );
					$( "#span_BO_LinkUrl" ).text( sUrl );
					$( "#span_BO_LinkTitle" ).text( d.BO_LinkTitle );
					$( "#span_BO_LinkDescription" ).text( d.BO_LinkDescription );

					$( "#BO_LinkPic" ).val( d.BO_LinkPic );
					$( "#BO_LinkTitle" ).val( d.BO_LinkTitle );
					$( "#BO_LinkDescription" ).val( d.BO_LinkDescription );
				}
			}
		}
		is_submitting = false;
	}, "json" );

}


//----------------------------------------------------------------------
// 取得 YouTube 標題等資訊 2011/6/13
//----------------------------------------------------------------------
function get_youtube( sText )
{

	if ( sText == "" || sText.length < 12 ) {
		return;
	}
	if ( sText.indexOf( "http" ) == -1 ) {
		return;
	}
	if ( sText.indexOf( "www.youtube.com" ) == -1 && sText.indexOf( "youtu.be" ) == -1 ) {
		return;
	}

	// 取出第一個網址
	var sUrl = sText.substr( sText.indexOf( "http" ) );
	if ( sUrl.indexOf( " " ) > -1 ) {
		sUrl = sUrl.substr( 0, sUrl.indexOf( " " ) );
	} else {
		if ( sUrl.indexOf( "," ) > -1 ) {
			sUrl = sUrl.substr( 0, sUrl.indexOf( "," ) );
		} else {
			if ( sUrl.indexOf( "，" ) > -1 ) {
				sUrl = sUrl.substr( 0, sUrl.indexOf( "，" ) );
			}
		}
	}
	$( "#BO_LinkUrl" ).val( sUrl );

	// 取回標題
	$.post( "/index.aspx?fn=get_youtube&rand=" + Math.random(), prepare_data( { "BO_LinkUrl":sUrl } ), function( data ) {
		if ( data == null ) {
			alert( "JSON Error!" );
		} else {
			if ( typeof( data.objlist[ 0 ].msg ) != "undefined" ) {
				alert( data.objlist[ 0 ].msg );
			} else {
				var d = data.objlist[ 0 ];
				if ( d.BO_YoutubeTag != "" ) {

					$( "#span_BO_LinkPic" ).html( "<img src='" + d.BO_YoutubeThumb + "' width='178' />" );
					$( "#span_BO_LinkUrl" ).text( "http://www.youtube.com/watch?v=" + d.BO_YoutubeTag );
					$( "#span_BO_LinkTitle" ).text( d.BO_YoutubeTitle );
					$( "#span_BO_LinkDescription" ).text( d.BO_YoutubeDescription );
					$( "#BO_LinkUrl" ).val( "http://www.youtube.com/watch?v=" + d.BO_YoutubeTag );

					$( "#BO_YoutubeTag" ).val( d.BO_YoutubeTag );
					$( "#BO_YoutubeThumb" ).val( d.BO_YoutubeThumb );
					$( "#BO_YoutubeTitle" ).val( d.BO_YoutubeTitle );
					$( "#BO_YoutubeDescription" ).val( d.BO_YoutubeDescription );
				}
			}
		}
		is_submitting = false;
	}, "json" );

}

/*-------------------------------------------------------------------------------------------------------------------
 Function: show_msgBox()
 Description: 秀出 fancybox 訊息小視窗
 Input: 標題, 內文, 按鈕圖示, 按下按鈕後的程式碼
 Output: N/A
 Example: 
	show_msgBox( "訊息", "新增完成!", "/__images/cancel.gif", "alert(1)" );
Revision History:
   1.0: original version 2010/10/12 ( Copy from 官網 2011/6/23 )
-------------------------------------------------------------------------------------------------------------------*/
var msgDoneScript = "";
function show_msgBox( sTitle, sBody, sButton, sScript )
{
	sTitle = ( sTitle == "" ) ? "訊息" : sTitle;
	$( "#msgTitle" ).html( sTitle );
	$( "#msgBody" ).html( sBody );
	if ( sButton != "" ) {
		$( "#msgButton" ).attr( "src", sButton );
	}
	msgDoneScript = sScript;
	$( "#a_msgBox" ).click();
}

// msgBox 按下確定
function msgDone()
{
	$.fancybox.close();
	if ( msgDoneScript.indexOf( "/" ) == 0 || msgDoneScript.indexOf( "index.aspx" ) == 0 || msgDoneScript.indexOf( ".html" ) > -1 ) {
		$( "#hidden_form" ).attr( "action", msgDoneScript );	// 自動轉址
		$( "#hidden_form" ).attr( "method", "post" );
		$( "#hidden_form" ).attr( "target", "_self" );
		$( "#hidden_form" ).submit();
	} else {
		eval( msgDoneScript );
	}
}
