/*----------------------------------------------------------------------

                                 設定項目

----------------------------------------------------------------------*/
// フォーム送信先
var actionUrl = 'https://www.mtvjapan.com/vmaj2007/check.php';

// ノミネートリスト
var nominees = [
	{
		'award' : [
			'最優秀男性アーティストビデオ賞',
			'Best Male Video',
			'male'
		],
		'artist' : [
			'DANIEL POWTER/Bad Day〜ついてない日の応援歌',
			'DJ OZMA/アゲ♂アゲ♂EVERY☆騎士',
			'JUSTIN TIMBERLAKE/Sexy Back',
			'平井堅/バイマイメロディー',
			'KREVA/THE SHOW'
		],
		'movie' : [
			'http://www.myflux.jp/video/pv/VCAgNzY0NDA3NA..html',
			'http://www.myflux.jp/vmaj/player.html?movie_type=mov&movie_id=786',
			'http://www.bmgjapan.com/justintimberlake/',
			'http://vmaj2007.com/awards/comingsoon.html',
			'http://www.myflux.jp/vmaj/player.html?movie_type=mov&movie_id=760'
		]
	},
	{
		'award' : [
			'最優秀女性アーティストビデオ賞',
			'Best Female Video',
			'female'
		],
		'artist' : [
			'絢香/三日月',
			'FERGIE/London Bridge',
			'GWEN STEFANI/Wind it Up',
			'倖田來未/夢のうた',
			'REIRA starring YUNA ITO/Truth'
		],
		'movie' : [
			'http://jp.wmiadmin.com/meta/dyn.boa/75573.asx',
			'http://www.universal-music.co.jp/u-pop/artist/fergie/uica9013.html',
			'http://www.universal-music.co.jp/u-pop/artist/gwen_stefani/uics9055.html',
			'http://vmaj2007.com/awards/comingsoon.html',
			'http://www.sonymusic.co.jp/Music/Arch/SR/REIRAstarringYUNAITO/SRCL-6451/1/movie_h.asx'
		]
	},
	{
		'award' : [
			'最優秀グループビデオ賞',
			'Best Group Video',
			'group'
		],
		'artist' : [
			'EXILE/Lovers Again',
			'GLAY/100万回のKISS',
			'MY CHEMICAL ROMANCE/Welcome to the Black Parade',
			'RED HOT CHILI PEPPERS/Dani California',
			'レミオロメン/スタンドバイミー'
		],
		'movie' : [
			'http://vmaj2007.com/awards/comingsoon.html',
			'http://www.myflux.jp/vmaj/player.html?movie_type=mov&movie_id=787',
			'http://www.myflux.jp/video/pv/VCAgOTc5MTI2MA..html',
			'http://www.myflux.jp/video/pv/VCAgODgwOTM4Mg..html',
			'http://www.jvcmusic.co.jp/asx2006/remioromen/VICL-62100-01SB.asx?MTV'
		]
	},
	{
		'award' : [
			'最優秀新人アーティストビデオ賞',
			'Best New Artist Video',
			'artist'
		],
		'artist' : [
			'アンジェラ・アキ/This Love',
			'ジン/雷音',
			'LILY ALLEN/Smile',
			'NE-YO/So Sick',
			'THE VIEW/Wasted Little DJ\'s'
		],
		'movie' : [
			'http://www.sonymusic.co.jp/Music/Info/AngelaAki/movie/mtv_this_love.asx',
			'http://www.sonymusic.co.jp/Music/Arch/PB/Jinn/QQCL-23/10/movie_h.asx',
			'http://www.myflux.jp/video/pv/VCAgODk3Mzk2OQ..html',
			'http://www.universal-music.co.jp/u-pop/artist/ne-yo/uicd9024.html',
			'http://www.bmgjapan.com/theview/'
		]
	},
	{
		'award' : [
			'最優秀ビデオ賞',
			'Best Video of the Year',
			'year'
		],
		'artist' : [
			'FERGIE/London Bridge',
			'倖田來未/夢のうた',
			'Mr.Children/しるし',
			'RED HOT CHILI PEPPERS/Dani California',
			'湘南乃風/純恋歌'
		],
		'movie' : [
			'http://www.universal-music.co.jp/u-pop/artist/fergie/uica9013.html',
			'http://vmaj2007.com/awards/comingsoon.html',
			'http://vmaj2007.com/awards/comingsoon.html',
			'http://www.myflux.jp/video/pv/VCAgODgwOTM4Mg..html',
			'http://www.myflux.jp/vmaj/player.html?movie_type=mov&movie_id=763'
		]
	},
	{
		'award' : [
			'最優秀ロックビデオ賞',
			'Best Rock Video',
			'rock'
		],
		'artist' : [
			'ASIAN KUNG-FU GENERATION/或る街の群青',
			'ELLEGARDEN/Salamander',
			'FALL OUT BOY/This Ain\'t a Scene, It\'s an Arms Race',
			'MY CHEMICAL ROMANCE/Welcome to the Black Parade',
			'RADWIMPS/セツナレンサ'
		],
		'movie' : [
			'http://www.sonymusic.co.jp/Music/Arch/KS/ASIANKUNG-FU/KSCL-1068/1/movie_h.asx',
			'http://www.myflux.jp/vmaj/player.html?movie_type=mov&movie_id=765',
			'http://www.universal-music.co.jp/u-pop/artist/fall_out_boy/uicl1065.html',
			'http://www.myflux.jp/video/pv/VCAgOTc5MTI2MA..html',
			'http://vmaj2007.com/awards/comingsoon.html'
		]
	},
	{
		'award' : [
			'最優秀ポップビデオ賞',
			'Best Pop Video',
			'pop'
		],
		'artist' : [
			'大塚 愛/恋愛写真',
			'CHEMISTRY/約束の場所',
			'CHRISTINA AGUILERA/Ain\'t No Other Man',
			'RIHANNA/S.O.S.',
			'SEAMO/マタアイマショウ'
		],
		'movie' : [
			'http://vmaj2007.com/awards/comingsoon.html',
			'http://vmaj2007.com/awards/comingsoon.html',
			'http://www.bmgjapan.com/christinaaguilera/',
			'http://www.universal-music.co.jp/u-pop/artist/rihanna/',
			'http://www.bmgjapan.com/seamo/'
		]
	},
	{
		'award' : [
			'最優秀R&Bビデオ賞',
			'Best R&B Video',
			'rb'
		],
		'artist' : [
			'AI/Believe',
			'CIARA/Promise ',
			'JOHN LEGEND/Save Room',
			'加藤ミリヤ/このままずっと朝まで',
			'NE-YO/So Sick'
		],
		'movie' : [
			'http://www.universal-music.co.jp/ai/',
			'http://www.bmgjapan.com/ciara/',
			'http://www.sonymusic.co.jp/Music/International/Arch/SR/JohnLegend/SICP-1183/1/movie_h.asx',
			'http://www.sonymusic.co.jp/Music/Arch/SR/Miliyah/SRCL-6494/4/movie_h.asx',
			'http://www.universal-music.co.jp/u-pop/artist/ne-yo/uicd9024.html'
		]
	},
	{
		'award' : [
			'最優秀ヒップホップビデオ賞',
			'Best Hip Hop Video',
			'hip'
		],
		'artist' : [
			'JAY-Z/Show Me What You Got ',
			'KREVA/THE SHOW',
			'NAS/Hip Hop is Dead',
			'T.I./What You Know?',
			'TERIYAKI BOYZ&reg;/I still love H.E.R feat.KANYE WEST'
		],
		'movie' : [
			'http://www.universal-music.co.jp/u-pop/artist/jay-z/uicd6129.html',
			'http://www.myflux.jp/vmaj/player.html?movie_type=mov&movie_id=760',
			'http://www.universal-music.co.jp/u-pop/artist/nas/uicd6130.html',
			'http://www.myflux.jp/video/pv/VCAgODc0MTk4OA..html',
			'http://teriyakiboyz.com/index2.html'
		]
	},
	{
		'award' : [
			'最優秀レゲエビデオ賞',
			'Best Reggae Video',
			'reggae'
		],
		'artist' : [
			'LILY ALLEN/Smile',
			'MATISYAHU/King without a Crown ',
			'RYO the SKYWALKER/晴れわたる丘',
			'SEAN PAUL/Temperature',
			'湘南乃風/純恋歌'
		],
		'movie' : [
			'http://www.myflux.jp/video/pv/VCAgODk3Mzk2OQ..html',
			'http://www.sonymusic.co.jp/Music/International/Arch/ES/Matisyahu/EICP-697/16/movie_h.asx',
			'http://vmaj2007.com/awards/comingsoon.html',
			'http://vmaj2007.com/awards/comingsoon.html',
			'http://www.myflux.jp/vmaj/player.html?movie_type=mov&movie_id=763'
		]
	},
	{
		'award' : [
			'最優秀ダンスビデオ賞',
			'Best Dance Video',
			'dance'
		],
		'artist' : [
			'DJ OZMA/アゲ♂アゲ♂EVERY☆騎士',
			'FERGIE/London Bridge',
			'GNARLS BARKLEY/Crazy  ',
			'JUSTIN TIMBERLAKE/Sexy Back',
			'm-flo loves MINMI/Lotta Love m&M mix'
		],
		'movie' : [
			'http://www.myflux.jp/vmaj/player.html?movie_type=mov&movie_id=786',
			'http://www.universal-music.co.jp/u-pop/artist/fergie/uica9013.html',
			'http://www.myflux.jp/video/pv/VCAgODgxMDg4MQ..html',
			'http://www.bmgjapan.com/justintimberlake/',
			'http://vmaj2007.com/awards/comingsoon.html'
		]
	},
	{
		'award' : [
			'最優秀映画ビデオ賞',
			'Best Video from a Film',
			'film'
		],
		'artist' : [
			'50CENT/"Window Shopper" from 「GET RICH OR DIE TRYIN\'」',
			'大塚 愛/"恋愛写真" from 「ただ、君を愛してる」',
			'BEYONCE/"Listen" from 「DREAMGIRLS」',
			'BONNIE PINK/"LOVE IS BUBBLE" from 「嫌われ松子の一生」',
			'YUI for 雨音薫/"Good-bye days" from 「タイヨウのうた」'
		],
		'movie' : [
			'http://www.universal-music.co.jp/u-pop/artist/50cent/',
			'http://vmaj2007.com/awards/comingsoon.html',
			'http://www.sonymusic.co.jp/Music/International/Arch/ST/SoundTrackInt/SICP-1195/13/movie_h.asx',
			'http://jp.wmiadmin.com/meta/dyn.boa/68400.asx ',
			'http://www.sonymusic.co.jp/Music/Arch/SR/YuiForKaoruAmane/SRCL-6278/1/movie_h.asx'
		]
	},
	{
		'award' : [
			'最優秀コラボレーションビデオ賞',
			'Best Collaboration Video',
			'collabo'
		],
		'artist' : [
			'AKON feat. EMINEM/Smack That',
			'くるりとリップスライム/Juice',
			'椎名林檎×斉藤ネコ+椎名純平/この世の限り',
			'SERGIO MENDES feat. THE BLACK EYED PEAS/Mas Que Nada',
			'U2 AND GREEN DAY/The Saints are Coming'
		],
		'movie' : [
			'http://www.universal-music.co.jp/u-pop/artist/akon/uicu9031.html',
			'http://www.jvcmusic.co.jp/asx2006/quruli/VICL-36079-01SB.asx?MTV',
			'http://vmaj2007.com/awards/comingsoon.html',
			'http://www.jvcmusic.co.jp/asx2006/sergiomendes/VICP-63281-01SB.asx?MTV',
			'http://www.universal-music.co.jp/u-pop/artist/u2/'
		]
	},
	{
		'award' : [
			'最優秀アルバム賞',
			'Best Album of the Year',
			'album'
		],
		'artist' : [
			'絢香/『First Message』',
			'DANIEL POWTER/『DANIEL POWTER』',
			'Def Tech/『Catch The Wave』',
			'倖田來未/『Black Cherry』',
			'RED HOT CHILI PEPPERS/『STADIUM ARCADIUM』'
		],
		'movie' : [
			'http://jp.wmiadmin.com/meta/dyn.boa/75573.asx',
			'http://www.myflux.jp/video/pv/VCAgNzY0NDA3NA..html',
			'http://www.myflux.jp/vmaj/player.html?movie_type=mov&movie_id=785',
			'http://vmaj2007.com/awards/comingsoon.html',
			'http://www.myflux.jp/video/pv/VCAgODgwOTM4Mg..html'
		]
	},
	{
		'award' : [
			'最優秀buzz Asia賞',
			'Best buzz Asia from Japan',
			'japan'
		],
		'artist' : [
			'BONNIE PINK/A Perfect Sky',
			'DJ OZMA/アゲ♂アゲ♂EVERY☆騎士',
			'Dragon Ash/Ivory',
			'RIZE/ピンク スパイダー',
			'伊藤由奈/Precious'
		],
		'movie' : [
			'http://jp.wmiadmin.com/meta/dyn.boa/69485.asx ',
			'http://vmaj2007.com/awards/comingsoon.html',
			'http://www.jvcmusic.co.jp/asx2006/dragonash/VICL-36142-01SB.asx?MTV',
			'http://www.universal-music.co.jp/rize/',
			'http://www.sonymusic.co.jp/Music/Arch/SR/YunaIto/SRCL-6270/1/movie_h.asx'
		]
	},
	{
		'award' : [
			'最優秀buzz Asia賞',
			'Best buzz Asia from Korea',
			'korea'
		],
		'artist' : [
			'Brian/Living a Year in Winter',
			'Loveholic/Chara\'s Forest',
			'SS501/Unlock',
			'Super Junior/U',
			'TVXQ/O-Jung Ban Hop'
		],
		'movie' : [
			'http://www.myflux.jp/vmaj/player.html?movie_type=mov&movie_id=767',
			'http://www.myflux.jp/vmaj/player.html?movie_type=mov&movie_id=768',
			'http://www.myflux.jp/vmaj/player.html?movie_type=mov&movie_id=769',
			'http://www.myflux.jp/vmaj/player.html?movie_type=mov&movie_id=770',
			'http://www.myflux.jp/vmaj/player.html?movie_type=mov&movie_id=771'
		]
	},
	{
		'award' : [
			'最優秀buzz Asia賞',
			'Best buzz Asia from Taiwan',
			'taiwan'
		],
		'artist' : [
			'A-Mei/I want happiness?',
			'David Tao/Too beautiful ',
			'Faith Yang/Faith Continuation ',
			'Mayday/Born to love',
			'Show Lo/Jin Wu Men'
		],
		'movie' : [
			'http://www.myflux.jp/vmaj/player.html?movie_type=mov&movie_id=772',
			'http://vmaj2007.com/awards/comingsoon.html',
			'http://www.myflux.jp/vmaj/player.html?movie_type=mov&movie_id=773',
			'http://www.myflux.jp/vmaj/player.html?movie_type=mov&movie_id=774',
			'http://www.myflux.jp/vmaj/player.html?movie_type=mov&movie_id=775'
		]
	}
];


var courses = [
	'MTVのオンエア',
	'MTVJAPAN.COM（PC)',
	'MTV Mobile(ケータイ）',
	'MTV PAPER',
	'FLUX (PC)',
	'MTV FLUX（ケータイ）',
	'インターネット（ポータルサイト）',
	'インターネット（企業サイト）',
	'インターネット（個人サイト）',
	'リアクションダンス',
	'フライヤー',
	'雑誌',
	'テレビ',
	'ラジオ',
	'友人・知人の紹介',
	'その他'
];


var areas = [
	'シーティング',
	'スタンディング'
];
/*----------------------------------------------------------------------

                              Vmajクラス

----------------------------------------------------------------------*/
/**
 * コンストラクタ
 */
function Vmaj() {
}


/**
 * 初期化
 */
Vmaj.prototype.init = function () {

	//フォーム作成
	this.createForm();
	
	//被せレイヤー作成
	this.createBg();
	
	//開くクリックイベント
	this.open();

	//select状態を強制で実行
	this.select();

}


/**
 * 開くクリックイベント
 */
Vmaj.prototype.open = function () {
	var docRoot = document.getElementsByTagName('a');

	for (var i=0; i<docRoot.length; i++) {
		var e = docRoot[i];
		if (e.getAttribute('rel') && e.getAttribute('rel').indexOf('vmaj') != -1) {
			e.onclick = function() {
				var vmaj = new Vmaj();
				
				var q = vmaj.parseQuery(this.getAttribute('rel'));

				vmaj.showBg();
				vmaj.showContent(parseInt(q.type), parseInt(q.nomination));
				
				
				window.onscroll = function() {
					var vmaj = new Vmaj();
					vmaj.maintPos();
				}
				window.onresize = function() {
					var vmaj = new Vmaj();
					vmaj.maintPos();
				}
				
				//閉じるクリックイベント
				vmaj.close();
				
				return false;
			};
		}
	}
}


/**
 * 閉じるクリックイベント
 */
Vmaj.prototype.close = function () {
	var docRoot = document.getElementById("vmaj_w").getElementsByTagName('a');

	for (var i=0; i<docRoot.length; i++) {
		var e = docRoot[i];
		if (e.getAttribute('rel') && e.getAttribute('rel').indexOf('vmaj_close') != -1) {
			e.onclick = function() {
				var vmaj = new Vmaj();
				
				vmaj.hideContent();
				vmaj.hideBg();
				
/*
				var q = vmaj.parseQuery(this.getAttribute('rel'));
				
				window.onscroll = null;
				window.onresize = null;
				
				var num1 = parseInt(q.nomination);
				var num2 = parseInt(q.select);
				var flg1 = eval(q.cancel);
				
				if (num1) {
					var eId = nominees[num1-1].award[2]+'Btn_'+num1;
					var cName = nominees[num1-1].award[2]+'Select_'+num1;
					
					
					if (flg1) {
						selectedNominee[num1-1] = null;
						document.getElementById(eId).setAttribute('class', cName);
						document.getElementById(eId).setAttribute('className', cName);
					} else if (num2 != null) {
						selectedNominee[num1-1] = num2;
						cName += '_'+num2;
						document.getElementById(eId).setAttribute('class', cName);
						document.getElementById(eId).setAttribute('className', cName);
					}
					
					
					for (var i=0; i<document.forms[0].elements.length; i++) {
						var element = document.forms[0].elements[i];
						if (element.name == 'nomination'+num1) {
							if (flg1) {
								element.value = '';
							} else if (num2 != null) {
								element.value = nominees[num1-1].artist[num2];
							}
						}
					}
				}
				
				
				var flgXorErr = false;
				var flgMinCtErr = false;
				
				
				var intEntryCt = 0;
				var intXorCt = 0;
				for (var i=14; i<17; i++) {
					if (selectedNominee[i] != null) intXorCt++
				}
				if (intXorCt == 0) intEntryCt = 0;
				else if (intXorCt == 3) intEntryCt ++;
				else flgXorErr = true;
				
				for (var i=0; i<14; i++) {
					if (selectedNominee[i] != null) intEntryCt++;
				}
				if (intEntryCt < 5) flgMinCtErr = true;
				
				if (!flgXorErr && !flgMinCtErr) {
					cName = 'deciBtnon';
				} else {
					cName = 'deciBtnoff';
				}
				
				document.getElementById('deciBtn').setAttribute('class', cName);
				document.getElementById('deciBtn').setAttribute('className', cName);
				*/
				return false;
			};
		}
	}
}


/**
 * フォーム作成
 */
Vmaj.prototype.createForm = function () {
	var strHTML = '';
	for (var i=0; i<nominees.length; i++) {
		strHTML += '<input type="text" name="nomination'+(i+1)+'" value="">';
	}
	strHTML += '<input type="text" name="course" value="">';
	strHTML += '<input type="text" name="course_free" value="">';
	strHTML += '<input type="text" name="area" value="'+areas[0]+'">';
	
	var objBody = document.getElementsByTagName("body")[0];
	var form = document.createElement("form");
	form.setAttribute("method","post");
	form.setAttribute("action",actionUrl);
	form.style.display = 'none';
	form.innerHTML = strHTML;
	objBody.appendChild(form);
}

/**
 * selct強制変更
 */
Vmaj.prototype.select = function () {

/*selectをXMLファイルから見込んで変更*/
    var url = './js/nominees.xml';
    var http = new Vmaj.ParseXML( url );
    var data = http.parse();
    var select = data["nominees"]["select"];

/* // */
var len = select.length+1;
for (var i=1; i<len; i++) {
    num1 = i;
    num2 = data["nominees"]["select"][i-1]-1;
	var eId = nominees[num1-1].award[2]+'Btn_'+num1;
	var cName = nominees[num1-1].award[2]+'Select_'+num1;
	
    if (num2 >= 0) {
		selectedNominee[num1-1] = num2;
		cName += '_'+num2;
		document.getElementById(eId).setAttribute('class', cName);
		document.getElementById(eId).setAttribute('className', cName);
	}
}
document.getElementById("wrapper").style.visibility = 'visible' 

}



/**
 * 被せレイヤー作成
 */
Vmaj.prototype.createBg = function () {
	var objBody = document.getElementsByTagName("body")[0];
	var vmaj_bg = document.createElement("div");
	vmaj_bg.setAttribute("id","vmaj_bg");
	vmaj_bg.style.display = 'none';
	vmaj_bg.style.position = 'absolute';
	vmaj_bg.style.top = '0px';
	vmaj_bg.style.left = '0px';
	vmaj_bg.style.zIndex = '100';
	vmaj_bg.style.width = '100%';
	vmaj_bg.style.height = '100%';
	vmaj_bg.style.backgroundColor = '#000000';
	vmaj_bg.style.margin = '0';
	vmaj_bg.style.padding = '0';
	vmaj_bg.style.filter = 'alpha(opacity=0)';
	vmaj_bg.style.mozOpacity = '0.0';
	vmaj_bg.style.opacity = '0.0';
	objBody.appendChild(vmaj_bg);
	
	var vmaj_w = document.createElement("div");
	vmaj_w.setAttribute("id","vmaj_w");
	vmaj_w.style.display = 'none';
	vmaj_w.style.position = 'absolute';
	vmaj_w.style.zIndex = '1000';
	
	var vmaj_container = document.createElement("div");
	vmaj_container.setAttribute("id","vmaj_container");
	vmaj_container.style.width = '0';
	vmaj_container.style.height = '0';
	vmaj_container.style.border = '1px solid #7d5d5d';
	vmaj_container.style.overflow = 'hidden';
	vmaj_w.appendChild(vmaj_container);
	objBody.appendChild(vmaj_w);
	
	// 画像プリローダ
	for (var i=0; i<17; i++) {
		for (var j=0; j<5; j++) {
			var preloadedImages = document.createElement('img');
			preloadedImages.setAttribute('src','images/'+nominees[i].award[2]+'_'+(i+1)+'/'+nominees[i].award[2]+'_'+(i+1)+'_'+j+'.jpg');
			preloadedImages.setAttribute('width',"0");
			preloadedImages.setAttribute('height',"0");
			preloadedImages.style.display = 'none';
			objBody.appendChild(preloadedImages);
			
			var preloadedImages = document.createElement('img');
			preloadedImages.setAttribute('src','images/'+nominees[i].award[2]+'_'+(i+1)+'/'+nominees[i].award[2]+'_on_'+(i+1)+'_'+j+'.jpg');
			preloadedImages.setAttribute('width',"0");
			preloadedImages.setAttribute('height',"0");
			preloadedImages.style.display = 'none';
			objBody.appendChild(preloadedImages);
			
			var preloadedImages = document.createElement('img');
			preloadedImages.setAttribute('src','images/'+nominees[i].award[2]+'_'+(i+1)+'/select_'+nominees[i].award[2]+'_'+(i+1)+'_'+j+'.gif');
			preloadedImages.setAttribute('width',"0");
			preloadedImages.setAttribute('height',"0");
			preloadedImages.style.display = 'none';
			objBody.appendChild(preloadedImages);
		}
		
		var preloadedImages = document.createElement('img');
		preloadedImages.setAttribute('src','images/'+nominees[i].award[2]+'_'+(i+1)+'/copy_'+nominees[i].award[2]+'_'+(i+1)+'.gif');
		preloadedImages.setAttribute('width',"0");
		preloadedImages.setAttribute('height',"0");
		preloadedImages.style.display = 'none';
		objBody.appendChild(preloadedImages);
		
		var preloadedImages = document.createElement('img');
		preloadedImages.setAttribute('src','images/'+nominees[i].award[2]+'_'+(i+1)+'/ttl_'+nominees[i].award[2]+'_'+(i+1)+'.gif');
		preloadedImages.setAttribute('width',"0");
		preloadedImages.setAttribute('height',"0");
		preloadedImages.style.display = 'none';
		objBody.appendChild(preloadedImages);
	}
}



/**
 * 被せレイヤーフェードイン
 */
Vmaj.prototype.showBg = function () {
	var e = document.getElementById('vmaj_bg');
	e.style.display = '';
	this.maintPos();
	
	setVmajOpacity = this.setOpacity;
	for (var i=0;i<=8;i++) {setTimeout("setVmajOpacity('vmaj_bg',"+i+")", 20*i+200);}
}



/**
 * 被せレイヤーフェードアウト
 */
Vmaj.prototype.hideBg = function () {
	var e = document.getElementById('vmaj_bg');
	
	setVmajOpacity = this.setOpacity;
	for (var i=0;i<=8;i++) {setTimeout("setVmajOpacity('vmaj_bg',"+i+")", 20*(8-i)+700);}
	
	setTimeout(function() {e.style.display = 'none';}, 860);
}



/**
 * コンテンツ表示
 */
Vmaj.prototype.showContent = function (type, nomination) {
	var e = document.getElementById('vmaj_w');
	
	var w;
	var h;
	switch (type) {
		case 1:
			w = 439;
			h = 403;
			
			var strHTML = '<div id="smallWin">';
			
			strHTML += '<div id="aboutBox">';
			strHTML += '<div style="margin: 21px 0 0 18px;"><img src="images/about_ttl.gif" alt="" /></div>';
			strHTML += '<div style="margin: 20px 0 0 18px;"><img src="images/about_subttl.gif" alt="" /></div>';
			strHTML += '<p style="margin: 10px 0 0 18px;">';
			strHTML += '<strong>まず、</strong><br />';
			strHTML += '全15カテゴリの中からお好きな部門ボタンをクリックして、ノミネート5作品のビデオをチェック！<br /><br />';
			strHTML += '<strong>次に、</strong><br />';
			strHTML += 'ノミネート5作品の中からひとつを選び、「投票する」ボタンをクリックするとその部門の投票を完了し、カテゴリ一覧ページに戻ります。投票した作品が表示されているかご確認ください。<br />';
			strHTML += '※投票をやりなおす場合は「投票をクリア」ボタンをクリックします。<br /><br />';
			strHTML += '<strong>さらに、</strong><br />';
			strHTML += '同様の手順で5部門以上に投票して、カテゴリ一覧ページの中央下にある「投票内容を確定する」ボタンをクリック！<br /><br />';
			strHTML += '<strong>そして、</strong><br />';
			strHTML += '「認知経路について」および「授賞式会場のエリア希望」のアンケートにお答えください。<br /><br />';
			strHTML += '<strong>すると、</strong><br />';
			strHTML += '入力いただいた情報（投票とアンケート）が表示されますので、内容をご確認ください。<br /><br />';
			strHTML += '<strong>最後に、</strong><br />';
			strHTML += 'CLUB MTV会員のユーザーIDとパスワードを入力すれば、投票＆応募は完了です！<br /><br />';
			strHTML += '※CLUB MTV会員(完全無料)に登録していない方は<a href="https://www.mtvjapan.com/vmaj2007/vmaj_member.php" target="_blank">こちら</a>で登録を完了し、IDとパスワードを取得する必要があります。</p>';
			
			strHTML += '</div>';
			
			strHTML += '<div style="margin-top:17px; text-align:center;" id="btnClose"><a href="#" rel="vmaj_close">閉じる</a></div>';
			
			
			strHTML += '</div><!-- //#smallWin -->';
			break;
		
		
		case 3:
			w = 439;
			h = 403;
			
			var check1 = new Array('','');
			check1[formContent[0]] = ' checked="checked"';
			var check2 = new Array('','');
			check2[formContent[3]] = ' checked="checked"';
			
			var select1 = new Array(17);
			for (var i=0; i<17; i++) {select1[i] = '';}
			select1[formContent[1]] = ' selected="selected"';
			
			var strOption1 = '<option value=""'+select1[0]+'>';
			strOption1 += '▼この中から選択してください</option>';
			strOption1 += '<option value="1"'+select1[1]+'>';
			strOption1 += 'MTVのオンエア</option>';
			strOption1 += '<option value="2"'+select1[2]+'>';
			strOption1 += 'MTVJAPAN.COM（PC)</option>';
			strOption1 += '<option value="3"'+select1[3]+'>';
			strOption1 += 'MTV Mobile(ケータイ）</option>';
			strOption1 += '<option value="4"'+select1[4]+'>';
			strOption1 += 'MTV PAPER</option>';
			strOption1 += '<option value="5"'+select1[5]+'>';
			strOption1 += 'FLUX (PC)</option>';
			strOption1 += '<option value="6"'+select1[6]+'>';
			strOption1 += 'MTV FLUX（ケータイ）</option>';
			
			var strOption2 = '<option value=""'+select1[0]+'>';
			strOption2 += '▼この中から選択してください</option>';
			strOption2 += '<option value="7"'+select1[7]+'>';
			strOption2 += 'インターネット（ポータルサイト）</option>';
			strOption2 += '<option value="8"'+select1[8]+'>';
			strOption2 += 'インターネット（企業サイト）</option>';
			strOption2 += '<option value="9"'+select1[9]+'>';
			strOption2 += 'インターネット（個人サイト）</option>';
			strOption2 += '<option value="10"'+select1[10]+'>';
			strOption2 += 'リアクションダンス</option>';
			strOption2 += '<option value="11"'+select1[11]+'>';
			strOption2 += 'フライヤー</option>';
			strOption2 += '<option value="12"'+select1[12]+'>';
			strOption2 += '雑誌</option>';
			strOption2 += '<option value="13"'+select1[13]+'>';
			strOption2 += 'テレビ</option>';
			strOption2 += '<option value="14"'+select1[14]+'>';
			strOption2 += 'ラジオ</option>';
			strOption2 += '<option value="15"'+select1[15]+'>';
			strOption2 += '友人・知人の紹介</option>';
			strOption2 += '<option value="16"'+select1[16]+'>';
			strOption2 += 'その他</option>';
			
			
			if (formContent[0] == 0) {
				var strDisplay1 = 'inline';
				var strDisplay2 = 'none';
			}
			if (formContent[0] == 1) {
				var strDisplay1 = 'none';
				var strDisplay2 = 'inline';
			}
			
			if (formContent[1] == 7 || formContent[1] == 8 || formContent[1] == 9) {
				var strDisplay = 'block';
			} else {
				var strDisplay = 'none';
			}
			
			
			var strHTML = '<div id="smallWin">';
			
			strHTML += '<div id="formBox">';
			strHTML += '<div style="padding: 21px 0 0 18px;"><img src="images/form_ttl_01.gif" alt="" /></div>';
			strHTML += '<table width="305" border="0" cellspacing="0" cellpadding="0" style="margin-left: 62px; margin-top: 15px;">';
			strHTML += '	<tr>';
			strHTML += '		<td width="153"><table border="0" cellspacing="0" cellpadding="0">';
			strHTML += '	<tr>';
			strHTML += '		<td width="16"><input type="radio" name="course_category" value="0" id="s1" onClick="setFormContent(this)"'+check1[0]+' /></td>';
			strHTML += '		<td valign="middle"><label for="s1">MTV・FLUXのメディア</label></td>';
			strHTML += '	</tr>';
			strHTML += '</table>';
			strHTML += '</td>';
			strHTML += '		<td width="152"><table border="0" cellspacing="0" cellpadding="0">';
			strHTML += '	<tr>';
			strHTML += '		<td width="16"><input type="radio" name="course_category" value="1" id="s2" onClick="setFormContent(this)"'+check1[1]+' /></td>';
			strHTML += '		<td valign="middle"><label for="s2">MTV以外のメディア</label></td>';
			strHTML += '	</tr>';
			strHTML += '</table>';
			strHTML += '</td>';
			strHTML += '	</tr>';
			strHTML += '</table>';
			
			strHTML += '<div id="course">';
			strHTML += '<select class="formSelect" name="course" id="s31" onChange="setFormContent(this)" style="display:'+strDisplay1+';">';
			strHTML += strOption1;
			strHTML += '</select>';
			strHTML += '<select class="formSelect" name="course" id="s32" onChange="setFormContent(this)" style="display:'+strDisplay2+';">';
			strHTML += strOption2;
			strHTML += '</select>';
			strHTML += '</div>';
			
			strHTML += '<div id="course-free" style="display:'+strDisplay+';">';
			strHTML += '<p style="font-size: 10px; line-height:120%; width: 305px;margin-left: 62px;margin-top: 12px;">※インターネット「ポータル」「企業サイト」「個人サイト」を選んだ方は、';
			strHTML += 'サイト名を教えてください（<span style="color:#ff0000;">任意回答</span>）。</p>';
			strHTML += '<textarea cols="45" rows="5" class="formComent" name="course_free" id="s4" onChange="setFormContent(this)">';
			strHTML += formContent[2];
			strHTML += '</textarea>';
			strHTML += '</div>';
			
			strHTML += '<div style="margin: 40px 0 0 18px;"><img src="images/form_ttl_02.gif" alt="" /></div>';
			strHTML += '<table width="305" border="0" cellspacing="0" cellpadding="0" style="margin-left: 62px; margin-top: 15px;">';
			strHTML += '	<tr>';
			strHTML += '		<td width="153"><table border="0" cellspacing="0" cellpadding="0">';
			strHTML += '	<tr>';
			strHTML += '		<td width="16"><input type="radio" name="area" value="0" id="s5" onClick="setFormContent(this)"'+check2[0]+' /></td>';
			strHTML += '		<td valign="middle"><label for="s3">シーティング</label></td>';
			strHTML += '	</tr>';
			strHTML += '</table>';
			strHTML += '</td>';
			strHTML += '		<td width="152"><table border="0" cellspacing="0" cellpadding="0">';
			strHTML += '	<tr>';
			strHTML += '		<td width="16"><input type="radio" name="area" value="1" id="s6" onClick="setFormContent(this)"'+check2[1]+' /></td>';
			strHTML += '		<td valign="middle"><label for="s4">スタンディング</label></td>';
			strHTML += '	</tr>';
			strHTML += '</table>';
			strHTML += '</td>';
			strHTML += '	</tr>';
			strHTML += '</table>';
			
			strHTML += '</div><!-- //#formBox -->';
			
			strHTML += '<div class="clearfix" style="margin-top:17px; padding-left: 72px">';
			strHTML += '<div id="backBtn"><a href="#" rel="vmaj_close">戻る</a></div>';
			strHTML += '<div id="nextBtn"><a href="#" onClick="changeConfirm()">次へ</a></div>';
			strHTML += '</div>';
			
			strHTML += '</div><!-- //#smallWin -->';
			
			
			
			setFormContent = function(e) {
				switch (e.id) {
					case 's1':
						formContent[0] = parseInt(e.value);
						formContent[1] = 0;
						document.getElementById('s32').style.display = 'none';
						document.getElementById('s31').style.display = 'inline';
						document.getElementById('s31').options[0].selected = true;
						document.getElementById('course-free').style.display = 'none';
						break;
					case 's2':
						formContent[0] = parseInt(e.value);
						formContent[1] = 0;
						document.getElementById('s31').style.display = 'none';
						document.getElementById('s32').style.display = 'inline';
						document.getElementById('s32').options[0].selected = true;
						break;
					case 's31':
					case 's32':
						formContent[1] = parseInt(e.value);
						document.forms[0].course.value = courses[formContent[1]-1];
						if (formContent[1] == 7 || formContent[1] == 8 || formContent[1] == 9) {
							document.getElementById('course-free').style.display = 'block';
						} else {
							document.getElementById('course-free').style.display = 'none';
							formContent[2] = '';
							document.forms[0].course_free.value = '';
						}
						break;
					case 's4':
						formContent[2] = e.value;
						document.forms[0].course_free.value = e.value;
						break;
					case 's5':
					case 's6':
						formContent[3] = parseInt(e.value);
						document.forms[0].area.value = areas[formContent[3]];
						break;
				}
			}
			
			
			changeConfirm = function() {
				if (!formContent[1]) {
					alert('プルダウンを選択してください');
					return;
				}
				
				var strHTML = '<div id="confBox">';
				
				strHTML += '<div style="padding: 21px 0 0 18px;"><img src="images/confirm_ttl.gif" alt="" width="306" height="14" /></div>';
				
				strHTML += '<div style="margin: 18px 0 0 18px;"><img src="images/confirm_subttl_01.gif" alt="" /></div>';
				strHTML += '<div id="confText">';
				
				for (var i=0; i<17; i++) {
					if (selectedNominee[i] != null) {
						var m = nominees[i].artist[selectedNominee[i]].split('/');
						strHTML += '<div class="classBox">';
						strHTML += '<h2>'+nominees[i].award[0]+'</h2>';
						strHTML += '<p>'+m[0]+'</p>';
						strHTML += '<p>「'+m[1]+'」</p>';
						strHTML += '</div>';
					}
				}
				
				strHTML += '</div>';
				
				strHTML += '<div style="margin: 10px 0 0 18px;"><img src="images/confirm_subttl_02.gif" alt="" /></div>';
				
				strHTML += '<div id="confText_2">';
				
				strHTML += '<p>'+courses[formContent[1]-1]+'</p>';
				if (formContent[1] == 7 || formContent[1] == 8 || formContent[1] == 9) {
					strHTML += '<p>'+formContent[2]+'</p>';
				}
				
				strHTML += '</div>';
				
				strHTML += '<div style="margin: 10px 0 0 18px;"><img src="images/confirm_subttl_03.gif" alt="" /></div>';
				
				strHTML += '<p style="text-align: center; margin-top:10px;">'+areas[formContent[3]]+'</p>';
				
				
				strHTML += '</div><!-- //#formBox -->';
				
				strHTML += '<div class="clearfix" style="margin-top:17px; padding-left: 72px">';
				strHTML += '<div id="backBtn"><a href="#" onClick="changeBack()">戻る</a></div>';
				strHTML += '<div id="nextBtn"><a href="#" onClick="changeSubmit()">次へ</a></div>';
				strHTML += '</div>';
				
				document.getElementById('smallWin').innerHTML = strHTML;
			}
			
			changeBack = function() {
				var check1 = new Array(2);
				check1[formContent[0]] = ' checked="checked"';
				var check2 = new Array(2);
				check2[formContent[3]] = ' checked="checked"';
				
				var select1 = new Array(17);
				select1[formContent[1]] = ' selected="selected"';
				
				var strOption1 = '<option value=""'+select1[0]+'>';
				strOption1 += '▼選択してください</option>';
				strOption1 += '<option value="1"'+select1[1]+'>';
				strOption1 += 'MTVのオンエア</option>';
				strOption1 += '<option value="2"'+select1[2]+'>';
				strOption1 += 'MTVJAPAN.COM（PC)</option>';
				strOption1 += '<option value="3"'+select1[3]+'>';
				strOption1 += 'MTV Mobile(ケータイ）</option>';
				strOption1 += '<option value="4"'+select1[4]+'>';
				strOption1 += 'MTV PAPER</option>';
				strOption1 += '<option value="5"'+select1[5]+'>';
				strOption1 += 'FLUX (PC)</option>';
				strOption1 += '<option value="6"'+select1[6]+'>';
				strOption1 += 'MTV FLUX（ケータイ）</option>';
				
				var strOption2 = '<option value=""'+select1[0]+'>';
				strOption2 += '▼選択してください</option>';
				strOption2 += '<option value="7"'+select1[7]+'>';
				strOption2 += 'インターネット（ポータルサイト）</option>';
				strOption2 += '<option value="8"'+select1[8]+'>';
				strOption2 += 'インターネット（企業サイト）</option>';
				strOption2 += '<option value="9"'+select1[9]+'>';
				strOption2 += 'インターネット（個人サイト）</option>';
				strOption2 += '<option value="10"'+select1[10]+'>';
				strOption2 += 'リアクションダンス</option>';
				strOption2 += '<option value="11"'+select1[11]+'>';
				strOption2 += 'フライヤー</option>';
				strOption2 += '<option value="12"'+select1[12]+'>';
				strOption2 += '雑誌</option>';
				strOption2 += '<option value="13"'+select1[13]+'>';
				strOption2 += 'テレビ</option>';
				strOption2 += '<option value="14"'+select1[14]+'>';
				strOption2 += 'ラジオ</option>';
				strOption2 += '<option value="15"'+select1[15]+'>';
				strOption2 += '友人・知人の紹介</option>';
				strOption2 += '<option value="16"'+select1[16]+'>';
				strOption2 += 'その他</option>';
				
				if (formContent[0] == 0) {
					var strDisplay1 = 'inline';
					var strDisplay2 = 'none';
				}
				if (formContent[0] == 1) {
					var strDisplay1 = 'none';
					var strDisplay2 = 'inline';
				}
				if (formContent[1] == 7 || formContent[1] == 8 || formContent[1] == 9) {
					var strDisplay = 'block';
				} else {
					var strDisplay = 'none';
				}
				
				
				var strHTML = '<div id="formBox">';
				strHTML += '<div style="padding: 21px 0 0 18px;"><img src="images/form_ttl_01.gif" alt="" /></div>';
				strHTML += '<table width="305" border="0" cellspacing="0" cellpadding="0" style="margin-left: 62px; margin-top: 15px;">';
				strHTML += '	<tr>';
				strHTML += '		<td width="153"><table border="0" cellspacing="0" cellpadding="0">';
				strHTML += '	<tr>';
				strHTML += '		<td width="16"><input type="radio" name="course_category" value="0" id="s1" onClick="setFormContent(this)"'+check1[0]+' /></td>';
				strHTML += '		<td valign="middle"><label for="s1">MTV・FLUXのメディア</label></td>';
				strHTML += '	</tr>';
				strHTML += '</table>';
				strHTML += '</td>';
				strHTML += '		<td width="152"><table border="0" cellspacing="0" cellpadding="0">';
				strHTML += '	<tr>';
				strHTML += '		<td width="16"><input type="radio" name="course_category" value="1" id="s2" onClick="setFormContent(this)"'+check1[1]+' /></td>';
				strHTML += '		<td valign="middle"><label for="s2">MTV以外のメディア</label></td>';
				strHTML += '	</tr>';
				strHTML += '</table>';
				strHTML += '</td>';
				strHTML += '	</tr>';
				strHTML += '</table>';
				
				strHTML += '<div id="course">';
				strHTML += '<select class="formSelect" name="course" id="s31" onChange="setFormContent(this)" style="display:'+strDisplay1+';">';
				strHTML += strOption1;
				strHTML += '</select>';
				strHTML += '<select class="formSelect" name="course" id="s32" onChange="setFormContent(this)" style="display:'+strDisplay2+';">';
				strHTML += strOption2;
				strHTML += '</select>';
				strHTML += '</div>';
				
				strHTML += '<div id="course-free" style="display:'+strDisplay+';">';
				strHTML += '<p style="font-size: 10px; line-height:120%; width: 305px;margin-left: 62px;margin-top: 12px;">※インターネット「ポータル」「企業サイト」「個人サイト」を選んだ方は、';
				strHTML += 'サイト名を教えてください（<span style="color:#ff0000;">任意回答</span>）。</p>';
				strHTML += '<textarea cols="45" rows="5" class="formComent" name="course_free" id="s4" onChange="setFormContent(this)">';
				strHTML += formContent[2];
				strHTML += '</textarea>';
				strHTML += '</div>';
				
				strHTML += '<div style="margin: 40px 0 0 18px;"><img src="images/form_ttl_02.gif" alt="" /></div>';
				strHTML += '<table width="305" border="0" cellspacing="0" cellpadding="0" style="margin-left: 62px; margin-top: 15px;">';
				strHTML += '	<tr>';
				strHTML += '		<td width="153"><table border="0" cellspacing="0" cellpadding="0">';
				strHTML += '	<tr>';
				strHTML += '		<td width="16"><input type="radio" name="area" value="0" id="s5" onClick="setFormContent(this)"'+check2[0]+' /></td>';
				strHTML += '		<td valign="middle"><label for="s3">シーティング</label></td>';
				strHTML += '	</tr>';
				strHTML += '</table>';
				strHTML += '</td>';
				strHTML += '		<td width="152"><table border="0" cellspacing="0" cellpadding="0">';
				strHTML += '	<tr>';
				strHTML += '		<td width="16"><input type="radio" name="area" value="1" id="s6" onClick="setFormContent(this)"'+check2[1]+' /></td>';
				strHTML += '		<td valign="middle"><label for="s4">スタンディング</label></td>';
				strHTML += '	</tr>';
				strHTML += '</table>';
				strHTML += '</td>';
				strHTML += '	</tr>';
				strHTML += '</table>';
				
				strHTML += '</div><!-- //#formBox -->';
				
				strHTML += '<div class="clearfix" style="margin-top:17px; padding-left: 72px">';
				strHTML += '<div id="backBtn"><a href="#" onClick="changeClose()">戻る</a></div>';
				strHTML += '<div id="nextBtn"><a href="#" onClick="changeConfirm()">次へ</a></div>';
				strHTML += '</div>';
				
				document.getElementById('smallWin').innerHTML = strHTML;


			}
			
			
			changeSubmit = function() {
				document.forms[0].submit();
			}
			
			
			changeClose = function() {
				var vmaj = new Vmaj();
				vmaj.hideContent();
				vmaj.hideBg();
				
				window.onscroll = null;
				window.onresize = null;
				
				return false;
			}
			break;
		
		
		case 4:
		default:
			w = 661;
			h = 462;
			
			var award = nominees[nomination-1].award;
			var artist = nominees[nomination-1].artist;
			var movie = nominees[nomination-1].movie;

        		
/*selectをXMLファイルから見込んで変更*/
    		var url = './js/nominees.xml';
            var http = new Vmaj.ParseXML( url );
            var data = http.parse();
			var select = data["nominees"]["select"][nomination-1]-1;
/* // */

//戻したかったらここをコメント解除
//			var select = selectedNominee[nomination-1];
			
			var strHTML = '<div id="window">';
			strHTML += '<div id="winHeader" class="clearfix">';
			strHTML += '<p id="closeBtn"><a href="#" rel="vmaj_close">close</a></p>';
			
			strHTML += '<br class="clear" />';			
			strHTML += '<div id="winTtl"><img src="images/'+award[2]+'_'+nomination+'/ttl_'+award[2]+'_'+nomination+'.gif" alt="" /></div>';
			strHTML += '<div id="winCopy"><img src="images/'+award[2]+'_'+nomination+'/copy_'+award[2]+'_'+nomination+'.gif" alt="" /></div>';

			
			strHTML += '</div><!-- //#winHeader -->';
			

			strHTML += '<div id="selectBox" class="clearfix">';
			
			
			for (var i=0; i<5; i++) {
    			strHTML += '<div id="selectWin'+(i+1)+'">';
				if (i == select) {
                    strHTML += '<div id="select'+(i+1)+'" style="background-image: url(images/'+award[2]+'_'+nomination+'/'+award[2]+'_on_'+nomination+'_'+i+'.jpg)">';
                } else {
                    strHTML += '<div id="select'+(i+1)+'" style="background-image: url(images/'+award[2]+'_'+nomination+'/'+award[2]+'_'+nomination+'_'+i+'.jpg)">';
				}
				strHTML += '<div class="videoBtn"><a href="'+movie[i]+'" target="_blank"><img src="images/btn_video.gif" alt="" width="102" height="25" border="0" /></a></div>';
				
				strHTML += '</div><!-- //#select'+(i+1)+' -->';
    			strHTML += '</div><!-- //#selectWin'+(i+1)+' -->'
			}
			
			
			
			strHTML += '</div><!-- //#selectBox -->';
			
			
			strHTML += '<div id="winFooter">';
			strHTML += '<div id="listBtn"><a href="#" rel="vmaj_close">一覧に戻る</a></div>';
			
			
			strHTML += '</div><!-- //#winFooter -->';
			
			
			strHTML += '</div><!-- //#window -->';
			
			break;
	}
	
	e.style.width = w + 'px';
	e.style.height = h + 'px';
	e.style.display = '';
	
	this.posToCenter();
	
	document.getElementById('vmaj_container').innerHTML = strHTML;
	
	setVmajWidth = this.setWidth;
	for (var i=1;i<=20;i++) {setTimeout("setVmajWidth('vmaj_container',"+w*i/20+")", 20*i+360);}
	setVmajHeight = this.setHeight;
	for (var i=1;i<=15;i++) {setTimeout("setVmajHeight('vmaj_container',"+h*i/15+")", 20*i+760);}
}


/**
 * コンテンツ非表示
 */
Vmaj.prototype.hideContent = function () {
	var e = document.getElementById('vmaj_container');
	var emSize = new this.getElementSize(e);
	var w = emSize.width;
	var h = emSize.height;
	
	setVmajHeight = this.setHeight;
	for (var i=1;i<=15;i++) {setTimeout("setVmajHeight('vmaj_container',"+(h-h/15*i)+")", 20*i);}
	setVmajWidth = this.setWidth;
	for (var i=1;i<=20;i++) {setTimeout("setVmajWidth('vmaj_container',"+(w-w/20*i)+")", 20*i+300);}
	
	setTimeout(function() {document.getElementById('vmaj_w').style.display = 'none';}, 700);
}



/**
 * common functions from ibox, Thanks Cody!
 */
Vmaj.prototype.setWidth = function (elemid,w) {
	var e = document.getElementById(elemid);
	e.style.width = w + 'px';
}
Vmaj.prototype.setHeight = function (elemid,h) {
	var e = document.getElementById(elemid);
	e.style.height = h + 'px';
}
Vmaj.prototype.setOpacity = function (elemid,value) {
	var e = document.getElementById(elemid);
	e.style.mozOpacity = value/10;
	e.style.opacity = value/10;
	e.style.filter = 'alpha(opacity=' + value*10 + ')';
}
Vmaj.prototype.maintPos = function() {
	var e = document.getElementById('vmaj_bg');
	var pageSize = new this.getPageSize();
	var scrollPos = new this.getScrollPos();
	var ua = navigator.userAgent;
	
	if(ua.indexOf("MSIE ") != -1) {e.style.width = pageSize.width+'px';}
	if(ua.indexOf("Opera/9") != -1) {e.style.height = document.body.scrollHeight+'px';}
	else {e.style.height = pageSize.height+scrollPos.scrollY+'px';}
	
	this.posToCenter();
}
Vmaj.prototype.posToCenter = function() {
	var e = document.getElementById('vmaj_w');
	var scrollPos = new this.getScrollPos();
	var pageSize = new this.getPageSize();
	var emSize = new this.getElementSize(e);
	
	var x = Math.round(pageSize.width/2) - (emSize.width /2) + scrollPos.scrollX;
	var y = Math.round(pageSize.height/2) - (emSize.height /2) + scrollPos.scrollY;
	e.style.left = x+'px';
	e.style.top = y+'px';
}
Vmaj.prototype.getPageSize = function() {
	var docElem = document.documentElement
	this.width = self.innerWidth || (docElem&&docElem.clientWidth) || document.body.clientWidth;
	this.height = self.innerHeight || (docElem&&docElem.clientHeight) || document.body.clientHeight;
}
Vmaj.prototype.getScrollPos = function() {
	var docElem = document.documentElement;
	this.scrollX = self.pageXOffset || (docElem&&docElem.scrollLeft) || document.body.scrollLeft;
	this.scrollY = self.pageYOffset || (docElem&&docElem.scrollTop) || document.body.scrollTop;
}
Vmaj.prototype.getElementSize = function(e) {
	this.width = e.offsetWidth ||  e.style.pixelWidth;
	this.height = e.offsetHeight || e.style.pixelHeight;
}
// parseQuery code borrowed from thickbox, Thanks Cody!
Vmaj.prototype.parseQuery = function(query) {
	var Params = new Object ();
	if (!query) return Params;
	var Pairs = query.split(/[;&]/);
	for ( var i = 0; i < Pairs.length; i++ ) {
		var KeyVal = Pairs[i].split('=');
		if ( ! KeyVal || KeyVal.length != 2 ) continue;
		var key = unescape( KeyVal[0] );
		var val = unescape( KeyVal[1] );
		val = val.replace(/\+/g, ' ');
		Params[key] = val;
	}
	return Params;
}
// parseQuery code borrowed from thickbox, Thanks Cody!



/*----------------------------------------------------------------------

                              処理

----------------------------------------------------------------------*/
/*
var nomineeImg = new Array(17);
for (var i=0; i<17; i++) {
	nomineeImg[i] = new Array(5);
	for (var j=0; j<5; j++) {
		nomineeImg[i][j] = new Array(new Image(), new Image());
		nomineeImg[i][j][0].src = '../images/'+nominees[i].award[2]+'_'+i+'/'+nominees[i].award[2]+'_'+i+'_'+j+'.jpg';
		nomineeImg[i][j][1].src = '../images/'+nominees[i].award[2]+'_'+i+'/'+nominees[i].award[2]+'_on_'+i+'_'+j+'.jpg';
	}
}
*/

// 選択されたノミネート初期化
var selectedNominee = new Array(17);

// 認知経路内容初期化
var formContent = new Array(0, 0, '', 0);

/**
 * ウインドウロードイベント
 */
if (window.addEventListener) {
	window.addEventListener('load', function() {
		var vmaj = new Vmaj();
		vmaj.init();
	}, false);
} else if (window.attachEvent) {
	var r = window.attachEvent('onload', function() {
		var vmaj = new Vmaj();
		vmaj.init();
	});
}
//ParseXML code borrowed from jkl-parsexml.js
// ================================================================
//  jkl-parsexml.js ---- JavaScript Kantan Library for Parsing XML
//  Copyright 2005-2007 Kawasaki Yusuke <u-suke@kawa.net>
//  http://www.kawa.net/works/js/jkl/parsexml.html
// ================================================================
//  v0.01  2005/05/18  first release
//  v0.02  2005/05/20  Opera 8.0beta may be abailable but somtimes crashed
//  v0.03  2005/05/20  overrideMimeType( "text/xml" );
//  v0.04  2005/05/21  class variables: REQUEST_TYPE, RESPONSE_TYPE
//  v0.05  2005/05/22  use Msxml2.DOMDocument.5.0 for GET method on IE6
//  v0.06  2005/05/22  CDATA_SECTION_NODE
//  v0.07  2005/05/23  use Microsoft.XMLDOM for GET method on IE6
//  v0.10  2005/10/11  new function: JKL.ParseXML.HTTP.responseText()
//  v0.11  2005/10/13  new sub class: JKL.ParseXML.Text, JSON and DOM.
//  v0.12  2005/10/14  new sub class: JKL.ParseXML.CSV and CSVmap.
//  v0.13  2005/10/28  bug fixed: TEXT_NODE regexp for white spaces
//  v0.14  2005/11/06  bug fixed: TEXT_NODE regexp at Safari
//  v0.15  2005/11/08  bug fixed: JKL.ParseXML.CSV.async() method
//  v0.16  2005/11/15  new sub class: LoadVars, and UTF-8 text on Safari
//  v0.18  2005/11/16  improve: UTF-8 text file on Safari
//  v0.19  2006/02/03  use XMLHTTPRequest instead of ActiveX on IE7,iCab
//  v0.20  2006/03/22  (skipped)
//  v0.21  2006/11/30  use ActiveX again on IE7
//  v0.22  2007/01/04  JKL.ParseXML.JSON.parseResponse() updated
// ================================================================

if ( typeof(JKL) == 'undefined' ) JKL = function() {};

// ================================================================
//  class: JKL.ParseXML 

Vmaj.ParseXML = function ( url, query, method ) {
    // debug.print( "new Vmaj.ParseXML( '"+url+"', '"+query+"', '"+method+"' );" );
    this.http = new Vmaj.ParseXML.HTTP( url, query, method, false );
    return this;
};

// ================================================================
//  class variables

Vmaj.ParseXML.VERSION = "0.22";
Vmaj.ParseXML.MIME_TYPE_XML  = "text/xml";
Vmaj.ParseXML.MAP_NODETYPE = [
    "",
    "ELEMENT_NODE",                 // 1
    "ATTRIBUTE_NODE",               // 2
    "TEXT_NODE",                    // 3
    "CDATA_SECTION_NODE",           // 4
    "ENTITY_REFERENCE_NODE",        // 5
    "ENTITY_NODE",                  // 6
    "PROCESSING_INSTRUCTION_NODE",  // 7
    "COMMENT_NODE",                 // 8
    "DOCUMENT_NODE",                // 9
    "DOCUMENT_TYPE_NODE",           // 10
    "DOCUMENT_FRAGMENT_NODE",       // 11
    "NOTATION_NODE"                 // 12
];

// ================================================================
//  define callback function (ajax)

Vmaj.ParseXML.prototype.async = function ( func, args ) {
    this.callback_func = func;      // callback function
    this.callback_arg  = args;      // first argument
};

Vmaj.ParseXML.prototype.onerror = function ( func, args ) {
    this.onerror_func = func;       // callback function
};

// ================================================================
//  method: parse()
//  return: parsed object
//  Download a file from remote server and parse it.

Vmaj.ParseXML.prototype.parse = function () {
    if ( ! this.http ) return;

    // set onerror call back 
    if ( this.onerror_func ) {
        this.http.onerror( this.onerror_func );
    }

    if ( this.callback_func ) {                             // async mode
        var copy = this;
        var proc = function() {
            if ( ! copy.http ) return;
            var data = copy.parseResponse();
            copy.callback_func( data, copy.callback_arg );  // call back
        };
        this.http.async( proc );
    }

    this.http.load();

    if ( ! this.callback_func ) {                           // sync mode
        var data = this.parseResponse();
        return data;
    }
};

// ================================================================
//  every child/children into array
Vmaj.ParseXML.prototype.setOutputArrayAll = function () {
    this.setOutputArray( true );
}
//  a child into scalar, children into array
Vmaj.ParseXML.prototype.setOutputArrayAuto = function () {
    this.setOutputArray( null );
}
//  every child/children into scalar (first sibiling only)
Vmaj.ParseXML.prototype.setOutputArrayNever = function () {
    this.setOutputArray( false );
}
//  specified child/children into array, other child/children into scalar
Vmaj.ParseXML.prototype.setOutputArrayElements = function ( list ) {
    this.setOutputArray( list );
}
//  specify how to treate child/children into scalar/array
Vmaj.ParseXML.prototype.setOutputArray = function ( mode ) {
    if ( typeof(mode) == "string" ) {
        mode = [ mode ];                // string into array
    }
    if ( mode && typeof(mode) == "object" ) {
        if ( mode.length < 0 ) {
            mode = false;               // false when array == [] 
        } else {
            var hash = {};
            for( var i=0; i<mode.length; i++ ) {
                hash[mode[i]] = true;
            }
            mode = hash;                // array into hashed array
            if ( mode["*"] ) {
                mode = true;            // true when includes "*"
            }
        } 
    } 
    this.usearray = mode;
}

// ================================================================
//  method: parseResponse()

Vmaj.ParseXML.prototype.parseResponse = function () {
    var root = this.http.documentElement();
    var data = this.parseDocument( root );
    return data;
}

// ================================================================
//  convert from DOM root node to JavaScript Object 
//  method: parseElement( rootElement )

Vmaj.ParseXML.prototype.parseDocument = function ( root ) {
    // debug.print( "parseDocument: "+root );
    if ( ! root ) return;

    var ret = this.parseElement( root );            // parse root node
    // debug.print( "parsed: "+ret );

    if ( this.usearray == true ) {                  // always into array
        ret = [ ret ];
    } else if ( this.usearray == false ) {          // always into scalar
        //
    } else if ( this.usearray == null ) {           // automatic
        //
    } else if ( this.usearray[root.nodeName] ) {    // specified tag
        ret = [ ret ];
    }

    var json = {};
    json[root.nodeName] = ret;                      // root nodeName
    return json;
};

// ================================================================
//  convert from DOM Element to JavaScript Object 
//  method: parseElement( element )

Vmaj.ParseXML.prototype.parseElement = function ( elem ) {
    // debug.print( "nodeType: "+Vmaj.ParseXML.MAP_NODETYPE[elem.nodeType]+" <"+elem.nodeName+">" );

    //  COMMENT_NODE

    if ( elem.nodeType == 7 ) {
        return;
    }

    //  TEXT_NODE CDATA_SECTION_NODE

    if ( elem.nodeType == 3 || elem.nodeType == 4 ) {
        // var bool = elem.nodeValue.match( /[^\u0000-\u0020]/ );
        var bool = elem.nodeValue.match( /[^\x00-\x20]/ ); // for Safari
        if ( bool == null ) return;     // ignore white spaces
        // debug.print( "TEXT_NODE: "+elem.nodeValue.length+ " "+bool );
        return elem.nodeValue;
    }

    var retval;
    var cnt = {};

    //  parse attributes

    if ( elem.attributes && elem.attributes.length ) {
        retval = {};
        for ( var i=0; i<elem.attributes.length; i++ ) {
            var key = elem.attributes[i].nodeName;
            if ( typeof(key) != "string" ) continue;
            var val = elem.attributes[i].nodeValue;
            if ( ! val ) continue;
            if ( typeof(cnt[key]) == "undefined" ) cnt[key] = 0;
            cnt[key] ++;
            this.addNode( retval, key, cnt[key], val );
        }
    }

    //  parse child nodes (recursive)

    if ( elem.childNodes && elem.childNodes.length ) {
        var textonly = true;
        if ( retval ) textonly = false;        // some attributes exists
        for ( var i=0; i<elem.childNodes.length && textonly; i++ ) {
            var ntype = elem.childNodes[i].nodeType;
            if ( ntype == 3 || ntype == 4 ) continue;
            textonly = false;
        }
        if ( textonly ) {
            if ( ! retval ) retval = "";
            for ( var i=0; i<elem.childNodes.length; i++ ) {
                retval += elem.childNodes[i].nodeValue;
            }
        } else {
            if ( ! retval ) retval = {};
            for ( var i=0; i<elem.childNodes.length; i++ ) {
                var key = elem.childNodes[i].nodeName;
                if ( typeof(key) != "string" ) continue;
                var val = this.parseElement( elem.childNodes[i] );
                if ( ! val ) continue;
                if ( typeof(cnt[key]) == "undefined" ) cnt[key] = 0;
                cnt[key] ++;
                this.addNode( retval, key, cnt[key], val );
            }
        }
    }
    return retval;
};

// ================================================================
//  method: addNode( hash, key, count, value )

Vmaj.ParseXML.prototype.addNode = function ( hash, key, cnts, val ) {
    if ( this.usearray == true ) {              // into array
        if ( cnts == 1 ) hash[key] = [];
        hash[key][hash[key].length] = val;      // push
    } else if ( this.usearray == false ) {      // into scalar
        if ( cnts == 1 ) hash[key] = val;       // only 1st sibling
    } else if ( this.usearray == null ) {
        if ( cnts == 1 ) {                      // 1st sibling
            hash[key] = val;
        } else if ( cnts == 2 ) {               // 2nd sibling
            hash[key] = [ hash[key], val ];
        } else {                                // 3rd sibling and more
            hash[key][hash[key].length] = val;
        }
    } else if ( this.usearray[key] ) {
        if ( cnts == 1 ) hash[key] = [];
        hash[key][hash[key].length] = val;      // push
    } else {
        if ( cnts == 1 ) hash[key] = val;       // only 1st sibling
    }
};

// ================================================================
//  class: Vmaj.ParseXML.Text 

Vmaj.ParseXML.Text = function ( url, query, method ) {
    // debug.print( "new Vmaj.ParseXML.Text( '"+url+"', '"+query+"', '"+method+"' );" );
    this.http = new Vmaj.ParseXML.HTTP( url, query, method, true );
    return this;
};

Vmaj.ParseXML.Text.prototype.parse = Vmaj.ParseXML.prototype.parse;
Vmaj.ParseXML.Text.prototype.async = Vmaj.ParseXML.prototype.async;
Vmaj.ParseXML.Text.prototype.onerror = Vmaj.ParseXML.prototype.onerror;

Vmaj.ParseXML.Text.prototype.parseResponse = function () {
    var data = this.http.responseText();
    return data;
}

// ================================================================
//  class: Vmaj.ParseXML.JSON

Vmaj.ParseXML.JSON = function ( url, query, method ) {
    // debug.print( "new Vmaj.ParseXML.JSON( '"+url+"', '"+query+"', '"+method+"' );" );
    this.http = new Vmaj.ParseXML.HTTP( url, query, method, true );
    return this;
};

Vmaj.ParseXML.JSON.prototype.parse = Vmaj.ParseXML.prototype.parse;
Vmaj.ParseXML.JSON.prototype.async = Vmaj.ParseXML.prototype.async;
Vmaj.ParseXML.JSON.prototype.onerror = Vmaj.ParseXML.prototype.onerror;

Vmaj.ParseXML.JSON.prototype.parseResponse = function () {
    var text = this.http.responseText();
    // http://www.antimon2.atnifty.com/2007/01/jklparsexmljson.html
    if ( typeof(text) == 'undefined' ) return;
    if ( ! text.length ) return;
    var data = eval( "("+text+")" );
    return data;
}

// ================================================================
//  class: Vmaj.ParseXML.DOM

Vmaj.ParseXML.DOM = function ( url, query, method ) {
    // debug.print( "new Vmaj.ParseXML.DOM( '"+url+"', '"+query+"', '"+method+"' );" );
    this.http = new Vmaj.ParseXML.HTTP( url, query, method, false );
    return this;
};

Vmaj.ParseXML.DOM.prototype.parse = Vmaj.ParseXML.prototype.parse;
Vmaj.ParseXML.DOM.prototype.async = Vmaj.ParseXML.prototype.async;
Vmaj.ParseXML.DOM.prototype.onerror = Vmaj.ParseXML.prototype.onerror;

Vmaj.ParseXML.DOM.prototype.parseResponse = function () {
    var data = this.http.documentElement();
    return data;
}

// ================================================================
//  class: Vmaj.ParseXML.CSV

Vmaj.ParseXML.CSV = function ( url, query, method ) {
    // debug.print( "new Vmaj.ParseXML.CSV( '"+url+"', '"+query+"', '"+method+"' );" );
    this.http = new Vmaj.ParseXML.HTTP( url, query, method, true );
    return this;
};

Vmaj.ParseXML.CSV.prototype.parse = Vmaj.ParseXML.prototype.parse;
Vmaj.ParseXML.CSV.prototype.async = Vmaj.ParseXML.prototype.async;
Vmaj.ParseXML.CSV.prototype.onerror = Vmaj.ParseXML.prototype.onerror;

Vmaj.ParseXML.CSV.prototype.parseResponse = function () {
    var text = this.http.responseText();
    var data = this.parseCSV( text );
    return data;
}

Vmaj.ParseXML.CSV.prototype.parseCSV = function ( text ) {
    text = text.replace( /\r\n?/g, "\n" );              // new line character
    var pos = 0;
    var len = text.length;
    var table = [];
    while( pos<len ) {
        var line = [];
        while( pos<len ) {
            if ( text.charAt(pos) == '"' ) {            // "..." quoted column
                var nextquote = text.indexOf( '"', pos+1 );
                while ( nextquote<len && nextquote > -1 ) {
                    if ( text.charAt(nextquote+1) != '"' ) {
                        break;                          // end of column
                    }
                    nextquote = text.indexOf( '"', nextquote+2 );
                }
                if ( nextquote < 0 ) {
                    // unclosed quote
                } else if ( text.charAt(nextquote+1) == "," ) { // end of column
                    var quoted = text.substr( pos+1, nextquote-pos-1 );
                    quoted = quoted.replace(/""/g,'"');
                    line[line.length] = quoted;
                    pos = nextquote+2;
                    continue;
                } else if ( text.charAt(nextquote+1) == "\n" || // end of line
                            len==nextquote+1 ) {                // end of file
                    var quoted = text.substr( pos+1, nextquote-pos-1 );
                    quoted = quoted.replace(/""/g,'"');
                    line[line.length] = quoted;
                    pos = nextquote+2;
                    break;
                } else {
                    // invalid column
                }
            }
            var nextcomma = text.indexOf( ",", pos );
            var nextnline = text.indexOf( "\n", pos );
            if ( nextnline < 0 ) nextnline = len;
            if ( nextcomma > -1 && nextcomma < nextnline ) {
                line[line.length] = text.substr( pos, nextcomma-pos );
                pos = nextcomma+1;
            } else {                                    // end of line
                line[line.length] = text.substr( pos, nextnline-pos );
                pos = nextnline+1;
                break;
            }
        }
        if ( line.length >= 0 ) {
            table[table.length] = line;                 // push line
        }
    }
    if ( table.length < 0 ) return;                     // null data
    return table;
};

// ================================================================
//  class: Vmaj.ParseXML.CSVmap

Vmaj.ParseXML.CSVmap = function ( url, query, method ) {
    // debug.print( "new Vmaj.ParseXML.CSVmap( '"+url+"', '"+query+"', '"+method+"' );" );
    this.http = new Vmaj.ParseXML.HTTP( url, query, method, true );
    return this;
};

Vmaj.ParseXML.CSVmap.prototype.parse = Vmaj.ParseXML.prototype.parse;
Vmaj.ParseXML.CSVmap.prototype.async = Vmaj.ParseXML.prototype.async;
Vmaj.ParseXML.CSVmap.prototype.onerror = Vmaj.ParseXML.prototype.onerror;
Vmaj.ParseXML.CSVmap.prototype.parseCSV = Vmaj.ParseXML.CSV.prototype.parseCSV;

Vmaj.ParseXML.CSVmap.prototype.parseResponse = function () {
    var text = this.http.responseText();
    var source = this.parseCSV( text );
    if ( ! source ) return;
    if ( source.length < 0 ) return;

    var title = source.shift();                 // first line as title
    var data = [];
    for( var i=0; i<source.length; i++ ) {
        var hash = {};
        for( var j=0; j<title.length && j<source[i].length; j++ ) {
            hash[title[j]] = source[i][j];      // array to map
        }
        data[data.length] = hash;               // push line
    }
    return data;
}

// ================================================================
//  class: Vmaj.ParseXML.LoadVars

Vmaj.ParseXML.LoadVars = function ( url, query, method ) {
    // debug.print( "new Vmaj.ParseXML.LoadVars( '"+url+"', '"+query+"', '"+method+"' );" );
    this.http = new Vmaj.ParseXML.HTTP( url, query, method, true );
    return this;
};

Vmaj.ParseXML.LoadVars.prototype.parse = Vmaj.ParseXML.prototype.parse;
Vmaj.ParseXML.LoadVars.prototype.async = Vmaj.ParseXML.prototype.async;
Vmaj.ParseXML.LoadVars.prototype.onerror = Vmaj.ParseXML.prototype.onerror;

Vmaj.ParseXML.LoadVars.prototype.parseResponse = function () {
    var text = this.http.responseText();
    text = text.replace( /\r\n?/g, "\n" );              // new line character
    var hash = {};
    var list = text.split( "&" );
    for( var i=0; i<list.length; i++ ) {
        var eq = list[i].indexOf( "=" );
        if ( eq > -1 ) {
            var key = decodeURIComponent(list[i].substr(0,eq).replace("+","%20"));
            var val = decodeURIComponent(list[i].substr(eq+1).replace("+","%20"));
            hash[key] = val;
        } else {
            hash[list[i]] = "";
        }
    }
    return hash;
};

// ================================================================
//  class: Vmaj.ParseXML.HTTP
//  constructer: new Vmaj.ParseXML.HTTP()

Vmaj.ParseXML.HTTP = function( url, query, method, textmode ) {
    // debug.print( "new Vmaj.ParseXML.HTTP( '"+url+"', '"+query+"', '"+method+"', '"+textmode+"' );" );
    this.url = url;
    if ( typeof(query) == "string" ) {
        this.query = query;
    } else {
        this.query = "";
    }
    if ( method ) {
        this.method = method;
    } else if ( typeof(query) == "string" ) {
        this.method = "POST";
    } else {
        this.method = "GET";
    }
    this.textmode = textmode ? true : false;
    this.req = null;
    this.xmldom_flag = false;
    this.onerror_func  = null;
    this.callback_func = null;
    this.already_done = null;
    return this;
};

// ================================================================
//  class variables

Vmaj.ParseXML.HTTP.REQUEST_TYPE  = "application/x-www-form-urlencoded";
Vmaj.ParseXML.HTTP.ACTIVEX_XMLDOM  = "Microsoft.XMLDOM";  // Msxml2.DOMDocument.5.0
Vmaj.ParseXML.HTTP.ACTIVEX_XMLHTTP = "Microsoft.XMLHTTP"; // Msxml2.XMLHTTP.3.0
Vmaj.ParseXML.HTTP.EPOCH_TIMESTAMP = "Thu, 01 Jun 1970 00:00:00 GMT"

// ================================================================

Vmaj.ParseXML.HTTP.prototype.onerror = Vmaj.ParseXML.prototype.onerror;
Vmaj.ParseXML.HTTP.prototype.async = function( func ) {
    this.async_func = func;
}

// ================================================================
//  [IE+IXMLDOMElement]
//      XML     text/xml            OK
//      XML     application/rdf+xml OK
//      TEXT    text/plain          NG
//      TEXT    others              NG
//  [IE+IXMLHttpRequest]
//      XML     text/xml            OK
//      XML     application/rdf+xml NG
//      TEXT    text/plain          OK
//      TEXT    others              OK
//  [Firefox+XMLHttpRequest]
//      XML     text/xml            OK
//      XML     application/rdf+xml OK (overrideMimeType)
//      TEXT    text/plain          OK
//      TEXT    others              OK (overrideMimeType)
//  [Opera+XMLHttpRequest]
//      XML     text/xml            OK
//      XML     application/rdf+xml OK
//      TEXT    text/plain          OK
//      TEXT    others              OK
// ================================================================

Vmaj.ParseXML.HTTP.prototype.load = function() {
    // create XMLHttpRequest object
    if ( window.ActiveXObject ) {                           // IE5.5,6,7
        var activex = Vmaj.ParseXML.HTTP.ACTIVEX_XMLHTTP;    // IXMLHttpRequest
        if ( this.method == "GET" && ! this.textmode ) {
            // use IXMLDOMElement to accept any mime types
            // because overrideMimeType() is not available on IE6
            activex = Vmaj.ParseXML.HTTP.ACTIVEX_XMLDOM;     // IXMLDOMElement
        }
        // debug.print( "new ActiveXObject( '"+activex+"' )" );
        this.req = new ActiveXObject( activex );
    } else if ( window.XMLHttpRequest ) {                   // Firefox, Opera, iCab
        // debug.print( "new XMLHttpRequest()" );
        this.req = new XMLHttpRequest();
    }

    // async mode when call back function is specified
    var async_flag = this.async_func ? true : false;
    // debug.print( "async: "+ async_flag );

    // open for XMLHTTPRequest (not for IXMLDOMElement)
    if ( typeof(this.req.send) != "undefined" ) {
        // debug.print( "open( '"+this.method+"', '"+this.url+"', "+async_flag+" );" );
        this.req.open( this.method, this.url, async_flag );
    }

//  // If-Modified-Since: Thu, 01 Jun 1970 00:00:00 GMT
//  if ( typeof(this.req.setRequestHeader) != "undefined" ) {
//      // debug.print( "If-Modified-Since"+Vmaj.ParseXML.HTTP.EPOCH_TIMESTAMP );
//      this.req.setRequestHeader( "If-Modified-Since", Vmaj.ParseXML.HTTP.EPOCH_TIMESTAMP );
//  }

    // Content-Type: application/x-www-form-urlencoded (request header)
    // Some server does not accept without request content-type.
    if ( typeof(this.req.setRequestHeader) != "undefined" ) {
        // debug.print( "Content-Type: "+Vmaj.ParseXML.HTTP.REQUEST_TYPE+" (request)" );
        this.req.setRequestHeader( "Content-Type", Vmaj.ParseXML.HTTP.REQUEST_TYPE );
    }

    // Content-Type: text/xml (response header)
    // FireFox does not accept other mime types like application/rdf+xml etc.
    if ( typeof(this.req.overrideMimeType) != "undefined" && ! this.textmode ) {
        // debug.print( "Content-Type: "+Vmaj.ParseXML.MIME_TYPE_XML+" (response)" );
        this.req.overrideMimeType( Vmaj.ParseXML.MIME_TYPE_XML );
    }

    // set call back handler when async mode
    if ( async_flag ) {
        var copy = this;
        copy.already_done = false;                  // not parsed yet
        var check_func = function () {
            if ( copy.req.readyState != 4 ) return;
            // debug.print( "readyState(async): "+copy.req.readyState );
            var succeed = copy.checkResponse();
            // debug.print( "checkResponse(async): "+succeed );
            if ( ! succeed ) return;                // failed
            if ( copy.already_done ) return;        // parse only once
            copy.already_done = true;               // already parsed
            copy.async_func();                      // call back async
        };
        this.req.onreadystatechange = check_func;
        // for document.implementation.createDocument
        // this.req.onload = check_func;
    }

    // send the request and query string
    if ( typeof(this.req.send) != "undefined" ) {
        // debug.print( "XMLHTTPRequest: send( '"+this.query+"' );" );
        this.req.send( this.query );                        // XMLHTTPRequest
    } else if ( typeof(this.req.load) != "undefined" ) {
        // debug.print( "IXMLDOMElement: load( '"+this.url+"' );" );
        this.req.async = async_flag;
        this.req.load( this.url );                          // IXMLDOMElement
    }

    // just return when async mode
    if ( async_flag ) return;

    var succeed = this.checkResponse();
    // debug.print( "checkResponse(sync): "+succeed );
}

// ================================================================
//  method: checkResponse()

Vmaj.ParseXML.HTTP.prototype.checkResponse = function() {
    // parseError on IXMLDOMElement
    if ( this.req.parseError && this.req.parseError.errorCode != 0 ) {
        // debug.print( "parseError: "+this.req.parseError.reason );
        if ( this.onerror_func ) this.onerror_func( this.req.parseError.reason );
        return false;                       // failed
    }

    // HTTP response code
    if ( this.req.status-0 > 0 &&
         this.req.status != 200 &&          // OK
         this.req.status != 206 &&          // Partial Content
         this.req.status != 304 ) {         // Not Modified
        // debug.print( "status: "+this.req.status );
        if ( this.onerror_func ) this.onerror_func( this.req.status );
        return false;                       // failed
    }

    return true;                            // succeed
}

// ================================================================
//  method: documentElement()
//  return: XML DOM in response body

Vmaj.ParseXML.HTTP.prototype.documentElement = function() {
    // debug.print( "documentElement: "+this.req );
    if ( ! this.req ) return;
    if ( this.req.responseXML ) {
        return this.req.responseXML.documentElement;    // XMLHTTPRequest
    } else {
        return this.req.documentElement;                // IXMLDOMDocument
    }
}

// ================================================================
//  method: responseText()
//  return: text string in response body

Vmaj.ParseXML.HTTP.prototype.responseText = function() {
    // debug.print( "responseText: "+this.req );
    if ( ! this.req ) return;

    //  Safari and Konqueror cannot understand the encoding of text files.
    if ( navigator.appVersion.match( "KHTML" ) ) {
        var esc = escape( this.req.responseText );
//        debug.print( "escape: "+esc );
        if ( ! esc.match("%u") && esc.match("%") ) {
            return decodeURIComponent(esc);
        }
    }

    return this.req.responseText;
}

// ================================================================
//  http://msdn.microsoft.com/library/en-us/xmlsdk/html/d051f7c5-e882-42e8-a5b6-d1ce67af275c.asp
// ================================================================

