/*-------------------------------------------------------------------------------------------------------------------
 Script Name: functions.js
 Author: Tony Wei (魏志國)  tonywei123_at_gmail.com
 Description: JavaScript 共用函式庫
 Revision History:
   1.0: original version 2010/6/19
-------------------------------------------------------------------------------------------------------------------*/


// 篩選條件
var filter = new Array();
for ( var i=0 ; i < 300 ; i++ )
{
	filter[ i ] = "";
}

// 關鍵字輸入框流水號
var vSerial = 200;

//-------------------------------------------------------------------------------------
// 進行篩選
function filterk( k )
{
	if ( k.length < 2 ) {
		alert( "關鍵字請輸入至少兩個字以上!" );
		return;
	}
	fid = vSerial;
	if ( filter[ fid ] == "" ) {
		filter[ fid ] = "f" + fid + "=" + encodeURIComponent( k );
		append_label( fid, k );
	}
	vSerial++;
}

function filter0( fid )
{
	var city, cityarea;
	if ( fid == 1 ) {
		city			= document.getElementById( "city1" );
		cityarea	= document.getElementById( "cityarea1" );
	} else {
		city			= document.getElementById( "city2" );
		cityarea	= document.getElementById( "cityarea2" );
	}

	var cityname	= city.options[ city.selectedIndex ].value;
	var areaname	= cityarea.options[ cityarea.selectedIndex ].value;
	var ftitle	= cityname + "-" + areaname;

	if ( filter[ fid ] != "" ) {
		c( fid );
	}
	filter[ fid ] = "f" + fid + "s=" + encodeURIComponent( cityname ) + "&f" + fid + "e=" + encodeURIComponent( areaname );
	append_label( fid, ftitle );
}

function filter1( fid, ftitle, no )
{
	for ( var i=11 ; i <= 16  ; i++ )
	{
		if ( i != fid ) {
			c( i );
		}
	}
	c( 19 );
	if ( filter[ fid ] == "" ) {
		filter[ fid ] = "f" + fid + "=" + no;
		append_label( fid, ftitle );
		document.getElementById( "l" + fid ).style.color = "#0044dd";
		document.getElementById( "l" + fid ).style.fontWeight = "bold";
	}
}

function price_range()
{
	for ( var i=11 ; i <= 16  ; i++ )
	{
		c( i );
	}
	if ( ! check_required( 'price1', '價格區間' ) ) return;
	if ( ! check_numeric( 'price1', '價格區間' ) ) return;
	if ( ! check_required( 'price2', '價格區間' ) ) return;
	if ( ! check_numeric( 'price2', '價格區間' ) ) return;
	var price1 = parseInt( document.getElementById( "price1" ).value );
	var price2 = parseInt( document.getElementById( "price2" ).value );
	if ( price1 > price2 ) {
		var ptemp = price1;
		price1 = price2;
		price2 = ptemp;
	}
	if ( filter[ 19 ] != "" ) {
		c( 19 );
	}
	filter[ 19 ] = "f19s=" + price1 + "&f19e=" + price2;
	append_label( 19, price1 + "-" + price2 + "萬" );
	document.getElementById( "price1" ).value = price1;
	document.getElementById( "price2" ).value = price2;
}

function filter2( fid, ftitle, no )
{
	for ( var i=21 ; i <= 25  ; i++ )
	{
		if ( i != fid ) {
			c( i );
		}
	}
	if ( filter[ fid ] == "" ) {
		filter[ fid ] = "f" + fid + "=" + no;
		append_label( fid, ftitle );
		document.getElementById( "l" + fid ).style.color = "#0044dd";
		document.getElementById( "l" + fid ).style.fontWeight = "bold";
	}
}

function filter3( fid, ftitle, no )
{
	for ( var i=31 ; i <= 35  ; i++ )
	{
		if ( i != fid ) {
			c( i );
		}
	}
	if ( filter[ fid ] == "" ) {
		filter[ fid ] = "f" + fid + "=" + no;
		append_label( fid, ftitle );
		document.getElementById( "l" + fid ).style.color = "#0044dd";
		document.getElementById( "l" + fid ).style.fontWeight = "bold";
	}
}

function filter4( fid, ftitle, no )
{
	for ( var i=41 ; i <= 49  ; i++ )
	{
		if ( i != fid ) {
			c( i );
		}
	}
	for ( var i=91 ; i <= 95  ; i++ )
	{
		if ( i != fid ) {
			c( i );
		}
	}
	if ( filter[ fid ] == "" ) {
		filter[ fid ] = "f" + fid + "=" + no;
		append_label( fid, ftitle );
		document.getElementById( "l" + fid ).style.color = "#0044dd";
		document.getElementById( "l" + fid ).style.fontWeight = "bold";
	}
}

function filter5( fid, ftitle, no )
{
	for ( var i=51 ; i <= 56  ; i++ )
	{
		if ( i != fid ) {
			c( i );
		}
	}
	if ( filter[ fid ] == "" ) {
		filter[ fid ] = "f" + fid + "=" + no;
		append_label( fid, ftitle );
		document.getElementById( "l" + fid ).style.color = "#0044dd";
		document.getElementById( "l" + fid ).style.fontWeight = "bold";
	}
}

function filter7( fid, ftitle, kid )
{
	var chkBox = document.getElementById( "c" + fid );
	if ( chkBox.checked ) {
		if ( filter[ fid ] == "" ) {
			filter[ fid ] = "f" + fid + "=" + kid;
			append_label( fid, ftitle );
		}
	} else {
		c( fid );
	}
}

function clear7()
{
	for ( var i=100 ; i < 200  ; i++ )
	{
		var chkBox = document.getElementById( "c" + i );
		if ( chkBox == null ) {
			break;
		}
		if ( chkBox.checked ) {
			chkBox.checked = false;
			c( i );
		}
	}
}

// 換頁
function page0( p )
{
	filter[ 0 ] = "f0=" + p;
	set_timer();
}

// 排序
function sort0( fid )
{
	for ( var i=3 ; i <= 7  ; i++ )
	{
		if ( i != fid ) {
			filter[ i ] = "";		// 先清除其他條件
		}
		document.getElementById( "li" + i ).className = "TITLE_0" + ( i - 2 );
	}
	if ( filter[ fid ] == "f" + fid + "=1" ) {
		filter[ fid ] = "f" + fid + "=2";
	} else {
		filter[ fid ] = "f" + fid + "=1";
		document.getElementById( "li" + fid ).className = "TITLE_0" + ( fid - 2 ) + " CHOISE";
	}
	filter[ 0 ] = "f0=1";	// 從第 1 頁開始
	set_timer();
}

// 北中南東
function part0( part )
{
	filter[ 9 ] = "f9=" + part;
	filter[ 0 ] = "f0=1";	// 從第 1 頁開始
	set_timer();
}

//-------------------------------------------------------------------------------------
// 增加標籤
function append_label( fid, ftitle )
{
	filter[ 0 ] = "f0=1";	// 從第 1 頁開始
	set_timer();
	document.getElementById( "ul1" ).innerHTML += "<li id='li" + fid + "'>" + ftitle + " <a href='javascript:c( " + fid + " );'><img src='images/classfy_04.gif' width='8' height='8' /></a></li>";
}

// 移除標籤
function c( fid )
{
	if ( filter[ fid ] != "" ) {
		filter[ fid ] = "";
	}
	filter[ 0 ] = "f0=1";	// 從第 1 頁開始
	set_timer();
	var e = document.getElementById( "li" + fid );
	if ( e != null ) {
		document.getElementById( "ul1" ).removeChild( e );
	}
	if ( fid >= 100 && fid < 200 ) {
		var chkBox = document.getElementById( "c" + fid );
		if ( chkBox.checked ) {
			chkBox.checked = false;
		}
	}
	if ( fid != 19 && ( ( fid >= 11 && fid <= 59 ) || ( fid >= 91 && fid <= 99 ) ) ) {
		document.getElementById( "l" + fid ).style.color = "#000000";
		document.getElementById( "l" + fid ).style.fontWeight = "";
	}
	if ( fid == 19 ) {
		document.getElementById( "price1" ).value = "";
		document.getElementById( "price2" ).value = "";
	}
}

//-------------------------------------------------------------------------------------
// 計時緩衝器，避免連續增減條件而頻增傳輸
var timerID = 0;
function set_timer()
{
	loading_show();
	clearTimeout( timerID );
	timerID = setTimeout( "refresh_table()", 600 );	 // 600 毫秒 = 0.6 秒
}

function loading_show()
{
	var scrollY = document.documentElement.scrollTop;
	scrollY += document.body.scrollTop;
	scrollY = ( scrollY > 100 ) ? ( scrollY - 100 ) : scrollY;
	document.getElementById( "loading" ).style.left			= ( ( screen.width - 32 ) / 2 + 60 ) + "px";
	document.getElementById( "loading" ).style.top			= ( ( screen.height - 32 ) / 2 + scrollY ) + "px";
	document.getElementById( "loading" ).style.display	= "block";
}

function loading_hide()
{
	document.getElementById( "loading" ).style.display	= "none";
}

//-------------------------------------------------------------------------------------
// 動態查詢
function refresh_table()
{

	var iFilterCount = 0;
	var sFilter = "";
	for ( var i=0 ; i < 300 ; i++ )
	{
		if ( filter[ i ] != "" ) {
			sFilter += "&" + filter[ i ];
			iFilterCount++;
		}
	}

	// 至少需有一組條件
	if ( iFilterCount < 2 ) {
		location.reload();
	}

	// for debug
	/*
	var winA = window.open();
	winA.document.write( sFilter );
	winA.document.close();
	*/

	// 取回物件資料
	$.getJSON( "index.aspx?fn=list" + sFilter + "&rand=" + Math.random(),
		function( data ) {
			document.getElementById( "table1" ).innerHTML = data.object_table;
			document.getElementById( "object_count" ).innerHTML = data.object_count;
			document.getElementById( "count0" ).innerHTML = data.count0;
			document.getElementById( "count1" ).innerHTML = data.count1;
			document.getElementById( "count2" ).innerHTML = data.count2;
			document.getElementById( "count3" ).innerHTML = data.count3;
			document.getElementById( "count4" ).innerHTML = data.count4;
			document.getElementById( "count5" ).innerHTML = data.count5;
			
			$(".STREET").fancybox({
				'width'					: 700,
				'height'					: 430,
				'autoScale'			: false,
			    'transitionIn'			: 'none',
				'transitionOut'		: 'none',
				'type'						: 'iframe'
			});
			$(".MAP").fancybox({
				'width'					: 700,
				'height'					: 430,
				'autoScale'			: false,
		     	'transitionIn'			: 'none',
				'transitionOut'		: 'none',
				'type'						: 'iframe'
			});
			$(".PLAYER").fancybox({
				'width'					: 525,
				'height'					: 525,
				'autoScale'			: false,
		     	'transitionIn'			: 'none',
				'transitionOut'		: 'none',
				'type'						: 'iframe'
			});

			loading_hide();
	} );

}


/*-------------------------------------------------------------------------------------------------------------------
 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 ) {
		alert( sMessage + "必須是數字!" );
		objField.select();
		objField.focus();
		return false;
	}
	return true;
}

