/*-------------------------------------------------------------------------------------------------------------------
 Script Name: functions.js
 Author: Tony Wei (魏志國)  tonywei123_at_gmail.com
 Description: JavaScript 共用函式庫
 Revision History:
   1.0: original version 2011/4/8
   2.0: 新增「簡易訂單」功能 2011/11/12
-------------------------------------------------------------------------------------------------------------------*/


// 預先檢查驗證碼
function check_code()
{
	var url = "/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_contact( fm )
{
	if ( ! check_required( 'CU_Name', '姓名' ) ) return false;
	if ( ! ( fm.CU_Gender1.checked || fm.CU_Gender2.checked ) ) {
		alert( "請勾選您的性別!" );
		return false;
	}
	var yyyy	= fm.yyyy.options[ fm.yyyy.selectedIndex ].text;
	var mm	= fm.mm.options[ fm.mm.selectedIndex ].text;
	var dd		= fm.dd.options[ fm.dd.selectedIndex ].text;
	if ( ! check_date( yyyy, mm, dd ) ) return false;
	if ( ! ( fm.CU_Class1.checked || fm.CU_Class2.checked || fm.CU_Class3.checked || fm.CU_Class4.checked || fm.CU_Class5.checked ) ) {
		alert( "請勾選您的消費類別!" );
		return false;
	}
	if ( ! check_required( 'CU_Tel', '電話' ) ) return false;
	if ( ! check_numeric2( 'CU_Tel', '電話' )     ) return false;
	if ( ! check_required( 'CU_Email', '電子郵件' ) ) return false;
	if ( ! check_email( 'CU_Email' ) ) return false;
	if ( ! check_required( 'CU_Content', '意見內容' ) ) return false;
	if ( ! check_required( 'code', '驗證碼' )     ) return false;
	if ( ! check_numeric2( 'code', '驗證碼' )     ) return false;
	if ( ! check_code() ) return false;
}

// 訂購人資料 2011/11/12
function check_order( fm )
{
	if ( ! check_required( 'OD_Name', '姓名' ) ) return false;
	if ( ! ( fm.OD_Gender1.checked || fm.OD_Gender2.checked ) ) {
		alert( "請勾選您的性別!" );
		return false;
	}
	if ( fm.yyyy.value == "" || fm.mm.value == "" || fm.dd.value == "" ) {
		alert( "請輸入您的出生日期!" );
		return false;
	}
	var yyyy	= parseInt( fm.yyyy.value );
	var mm	= parseInt( fm.mm.value );
	var dd		= parseInt( fm.dd.value );
	if ( yyyy < 1900 || yyyy > 2011 ) {
		alert( "請輸入正確的出生年!" );
		return false;
	}
	if ( mm < 1 || mm > 12 ) {
		alert( "請輸入正確的出生月!" );
		return false;
	}
	if ( dd < 1 || dd > 31 ) {
		alert( "請輸入正確的出生日!" );
		return false;
	}
	if ( ! check_date( yyyy, mm, dd ) ) return false;
	if ( ! check_required( 'OD_Address', '聯絡地址' ) ) return false;
	if ( fm.OD_Address.value.length > 99 ) {
		alert( "您輸入的聯絡地址超過字數限制!" );
		return false;
	}
	if ( ! check_required( 'OD_Tel', ' 聯絡電話' ) ) return false;
	if ( ! check_numeric2( 'OD_Tel', ' 聯絡電話' )     ) return false;
	if ( ! check_required( 'OD_Email', '電子郵件' ) ) return false;
	if ( ! check_email( 'OD_Email' ) ) return false;
}



/*-------------------------------------------------------------------------------------------------------------------
 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;
}

 /*-------------------------------------------------------------------------------------------------------------------
 Function: check_numeric2()
 Description: 檢查表單欄位是否是數字
 Input: 物件ID, 訊息
 Output: 是否驗證通過 true or false
 Example: 
	check_numeric2( 'mobile', '手機或聯絡電話' );
Revision History:
   1.0: original version 2007/1/8
-------------------------------------------------------------------------------------------------------------------*/
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_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 ) ) {
		alert( "請填寫正確的Email信箱!" );
		objField.select();
		objField.focus();
		return false;
	}
	return true;
}

/*-------------------------------------------------------------------------------------------------------------------
 Function: check_date()
 Description: 檢查日期格式是否正確
 Input: 年, 月, 日
 Output: 是否驗證通過 true or false
 Example: 
	check_date( 2008, 1, 29 );
Revision History:
   1.0: original version 2008/3/7
-------------------------------------------------------------------------------------------------------------------*/
function check_date( yyyy, mm, dd )
{
	mm = parseInt( mm ) - 1;
	var day = ( new Date( yyyy, mm, dd ) ).getDate();
	if ( day != dd ) {
		if ( mm == 1 && dd == 29 ) {
			alert( yyyy + " 年不是閏年，2 月沒有 29 天喔!" );
		} else {
			alert( ( mm + 1 ) + " 月沒有 " + dd + " 天喔!" );
		}
		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 2008/5/30
   3.0: rewrite 版 2009/5/16
   4.0: SEO 網址版 2009/8/27
-------------------------------------------------------------------------------------------------------------------*/
function jump_get( p ) {

	var qs = new Querystring();

	var fn = "", no = "";
	var head = location.href.substr( location.href.indexOf( "//" ) + 2 );
	head = head.substr( head.indexOf( "/" ) + 1 );
	if ( head.indexOf( "/" ) > -1 ) {
		fn = head.substr( 0, head.indexOf( "/" ) );
		head = head.substr( head.indexOf( "/" ) + 1 );
	}
	if ( head.indexOf( "/" ) > -1 ) {
		no = head.substr( 0, head.indexOf( "/" ) );
	} else {
		no = "0";
	}
	var tail = "";

	var url = "/" + fn + "/" + no + "/" + p + "/" + tail;
	//alert( url );
	location.href = url;
}

