// Anonymous function wrapper to keep namespace safe.
(function() {

var Survey = {};

var old_domain = document.domain;

/** Static method to create a survey.
 */
Survey.open = function(survey_id, user_token, return_page) {
	Survey.add_page_mask();
	var survey_url = "http://youtube-survey.appspot.com/answer?s=" + survey_id + "&session_id=" + user_token + "&next=" + return_page;
	Survey.create_survey_frame(survey_url);
	window.scroll(0, 0);
	if (window.location.href.indexOf('youtube.com') > -1) {
		document.domain = 'youtube.com';
	} else {
		document.domain = 'google.com';
	}
};

var mask_frame = null;

/** Cover the page with a partially-transparent iframe.
 */
Survey.add_page_mask = function() {
	mask_frame = document.createElement('iframe');
	mask_frame.setAttribute('id', 'mask_frame');
	mask_frame.setAttribute('name', 'mask_frame');
	mask_frame.frameBorder = '0';
	mask_frame.allowTransparency = true;
	mask_frame.style.border = '0px';
	mask_frame.style.width = '100%';
	var height = document.body.clientHeight || document.documentElement.scrollHeight;
	// hackery
	height++;
	mask_frame.style.height = height ? height + "px" : '100%';
	mask_frame.style.zIndex = '1000';
	mask_frame.style.background = '#333';
	mask_frame.style.opacity = '0.4';
	mask_frame.style.filter = 'alpha(opacity=40)';
	mask_frame.style.position = 'absolute';
	mask_frame.style.top = '0';
	mask_frame.style.left = '0';
	document.body.appendChild(mask_frame);
	mask_frame.contentWindow.document.write('<body style="background:transparent"></body>');
	mask_frame.contentWindow.document.close();
};

var survey_frame = null;

/** Opens a centered iframe with the given url
 */
Survey.create_survey_frame = function(url) {
	survey_frame = document.createElement('iframe');
	survey_frame.src = url;
	survey_frame.frameBorder = '0';
	survey_frame.allowTransparency = true;
	survey_frame.style.border = '0';
	survey_frame.style.zIndex = '1001';
	survey_frame.style.position = 'absolute';
	survey_frame.style.left = (document.body.clientWidth - 620) / 2 + 'px';
	survey_frame.style.top = '100px';
	survey_frame.style.width = '640px';
	survey_frame.style.backgroundColor = 'transparent';
	var windowHeight = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight;
	survey_frame.style.height = (windowHeight - 200) + 'px';
	document.body.appendChild(survey_frame);
};

/** Closes the survey (when completed)
 */
Survey.close_survey = function() {
	mask_frame.style.display = "none";
	survey_frame.style.display = "none";
	if (document.getElementById('survey_link')) {
		document.getElementById('survey_link').style.display = 'none';
	}
	document.domain = old_domain;
};

window.Survey = Survey;

})();
