
var images = new Array(
        ["http://service.trustclick.ne.jp/optout/setoptout.php", "http://service.trustclick.ne.jp/optout/getoptout.php", "http://service.trustclick.ne.jp/optout/checkcookie.php", "frame_tclk"],
        ["http://service-servlet.ladsp.com/optout", "http://service.ladsp.com/optout/getoptout.php", "http://service.ladsp.com/optout/checkcookie.php", "frame_dsp"],
        ["http://service.ladmp.com/optout/setoptout.php", "http://service.ladmp.com/optout/getoptout.php", "http://service.ladmp.com/optout/checkcookie.php", "frame_dmp"],
        null
);

//optout cookie 設定
function checkStatus(isSafari) {

    // initialize display
	changeDisplay('設定確認中');

	if (isSafari) {
	    // Safariの場合はCookieの有効性確認
		__checkCookie(0, 1);
	} else {
		__checkStatus(0, '');
	}
}

function __checkCookie(n, button_no) {

	if (images[n] == null) {
		__checkStatus(0, '');
		return;
	}

    url = images[n][2] + '?callback=?';
    frame_name = images[n][3];
    $.getJSON(url, function(data){
    	cookie = data['status'];

    	if ('1' == cookie) {
    	    document.getElementById(frame_name).style.display = 'none';
    	}

		__checkCookie(n + 1);
    });
}

/**
 * 全てのサーバの設定状態を確認し、確認後の結果を用いてOptoutの設定を行う。
 *
 * @param n
 * @param status サーバに設定されているステータス
 * （0:オプトアウトオン, 1:オプトアウトオフ, -1:サーバ間設定相違, 初回呼び出し時は''）
 */
function __checkStatus(n, status) {

    url = images[n][1] + '?status=' + status + '&callback=?';

    // 再帰
    $.getJSON(url, function(data){
    	status = data['status'];

        if(images[n + 1] == null) {
        	if ('1' === status) {
        		changeDisplay('有効');
        	} else if ('0' === status) {
        		changeDisplay('無効');
        	} else {
        		changeDisplay('一部有効');
        	}
        } else {
            __checkStatus(n + 1, status);
        }
    });
}


/**
 * ステータスの変更処理を行う。
 */
function changeStatus() {

	changeDisplay('設定変更中');

	__checkAndChangeStatus(0, '');
}


/**
 * 全てのサーバの設定状態を確認し、確認後の結果を用いてOptoutの設定を行う。
 *
 * @param n
 * @param status サーバに設定されているステータス
 * （0:オプトアウトオン, 1:オプトアウトオフ, -1:サーバ間設定不整合, 初回呼び出し時は''）
 */
function __checkAndChangeStatus(n, status) {

    url = images[n][1] + '?status=' + status + '&callback=?';

    // 現状の設定を確認し、設定内容に応じて変更を行う
    $.getJSON(url, function(data){
    	status = data['status'];
        if(images[n + 1] == null) {
        	var toStatus;
        	if ('1' === status) {
        		toStatus = false;
        	} else if ('0' === status) {
        		toStatus = true;
        	} else {
        		// サーバ間の設定不整合がある場合はボタン押下時に無効に設定する
        		toStatus = false;
        	}
        	__changeStatus(0, toStatus);
        } else {
        	__checkAndChangeStatus(n + 1, status);
        }
    });
}




/**
 * 全てのサーバの設定を変更
 */
function __changeStatus(n, status) {

    // 再帰的に変更
    $.getJSON(images[n][0]+'?optout=' + status + '&callback=?', function(data){

        // go next optout
        if(images[n + 1]  == null) {
        	checkStatus();
        } else {
        	__changeStatus(n + 1, status);
        }
    });
}


/**
 * 画面上のステータス状態を変更する。
 *
 * @param status
 */
function changeDisplay(status) {
    document.getElementById('current-status').innerHTML = status;
}

