/*====================================================================
		投票コンテンツ専用JS CREATE:2010/10/20 AUTHOR:metaphase@ihara

		特定の要素内の内容をPOST送信し、他の要素に表示を切り替える

		※下記プラグインを設置してから使用してください
		jquery.js , jquery.cookie.js
====================================================================*/

var votingObj = {

	// 設定
	conf : {
		//	POST送信先のURL
		actionUrl : 'http://vote.ci-labo.jp/vote_9/form.php',

		//	cookieによるページ切り替え処理の有無	0:無し	1:有り
		cookieFlg : 1,

		//	cookieフラグの名前
		cookieName : 'ciLaboVoteFlg9',

		//	投票ページ要素のID名
		entryBoxID : 'entry',

		//	投票完了ページ要素のID名
		thanksBoxID : 'thanks',

		//	項目フィールド名
		questionName : 'question',

		//	回答フィールド名
		answerName : 'answer',

		//	E-mailフィールド名
		emailName : 'email',

		//	会員IDフィールド名
		memberIdName : 'member_id'
	},

	init : function(){

		if( votingObj.conf.cookieFlg ){
			// cookieがあれば完了画面に切り替える
			if( votingObj.ReadCookie(votingObj.conf.cookieName) == 1 ){
				jQuery('#'+ votingObj.conf.entryBoxID).hide();
				jQuery('#'+ votingObj.conf.thanksBoxID).show();
			}
		}

	},

	//	投票結果をPOSTして完了画面に切り替える
	main : function( id ){ 

		var queVals = {};

		var obj = jQuery("#"+ id);
		var questionObj = obj.find('input[name='+ votingObj.conf.questionName +']');
		var questionArrayObj = obj.find('input[name='+ votingObj.conf.questionName +'[]]');
		var answerObj   = obj.find('[name='+ votingObj.conf.answerName +']');
		var emailObj    = obj.find('input[name='+ votingObj.conf.emailName +']');
		var memberIdObj = obj.find('input[name='+ votingObj.conf.memberIdName +']');


		//	◎項目

		//ボタン
		if( questionObj.attr('type') == "hidden" ){

			if( questionObj.val() != "" ){
				queVals[votingObj.conf.questionName] = questionObj.val();
			}

		//ラジオボタン
		}else if( questionObj.attr('type') == "radio" ){

			if( questionObj.filter(':checked').val() != undefined ){
				queVals[votingObj.conf.questionName] = questionObj.filter(':checked').val();
			}

		//チェックボックス
		}else if( questionArrayObj.attr('type') == "checkbox" ){

			if( questionArrayObj.filter(':checked').val() != undefined ){

				var i = 0;
				questionArrayObj.filter(':checked').each(function(){
					queVals[votingObj.conf.questionName +'['+ i +']'] = jQuery(this).val();
					i++;
				});
			}
		}

		//	◎回答
		if( answerObj.val() != "" && answerObj.val() != undefined ){
			queVals[votingObj.conf.answerName] = answerObj.val();
		}

		//	◎E-mail
		if( emailObj.val() != "" && emailObj.val() != undefined ){
			queVals[votingObj.conf.emailName] = emailObj.val();
		}

		//	◎会員ID
		if( memberIdObj.val() != "" && memberIdObj.val() != undefined ){
			queVals[votingObj.conf.memberIdName] = memberIdObj.val();
		}

		var postFlg = 0;
		for( var i in queVals ){
			postFlg = 1;
			break;
		}

		//送信内容があれば、POST送信する
		if( postFlg ){

			//クロスドメイン対策にiframeを動的に生成してPOSTする。
			var ifm = obj.append('<iframe style="display:none;" />').find('> :last-child');
			var idoc = ifm.contents();
			idoc[0].open();
			idoc[0].close();
			var ibody = idoc.find('body');

			var buff = '<form action="'+ votingObj.conf.actionUrl +'" method="post">';

			for(key in queVals){
				buff += '<input type="hidden" name="'+ key +'" value="'+ queVals[key] +'" />';
			}

			buff += '</form>';

			ibody.html(buff);
			ibody.find('form').submit();

			jQuery('#'+ votingObj.conf.entryBoxID).hide();
			jQuery('#'+ votingObj.conf.thanksBoxID).show();

			if( votingObj.conf.cookieFlg ){
				votingObj.WriteCookie(votingObj.conf.cookieName,'1',365);
			}
		}
	},

	WriteCookie : function ( name,value,expires ) {

		var str = name + "=" + escape(value) + ";";
		var dt = new Date();
		dt.setDate(dt.getDate() + expires );
		str += "expires=" + dt.toGMTString() + ";";
		document.cookie = str;
	},

	ReadCookie : function (key) {

		var sCookie = document.cookie;
		var aData = sCookie.split(";");
		var oExp = new RegExp(" ", "g");
		key = key.replace(oExp, "");

		var i = 0;
		while (aData[i]) {
			var aWord = aData[i].split("=");
			aWord[0] = aWord[0].replace(oExp, "");
			if (key == aWord[0]) return unescape(aWord[1]);
			if (++i >= aData.length) break;
		}
		return "";
	}

}

jQuery(function(){
	votingObj.init();
});

function voting(id){
	votingObj.main(id);
}

