var $overlay_wrapper;
var $overlay_panel;
var suggestvid_xhr;

function show_suggest_overlay() {
    if ( !$overlay_wrapper ) append_suggest_overlay();
    $overlay_wrapper.fadeIn(700);
}

function hide_suggest_overlay() {
	document.getElementById('overlay-panel').innerHTML = '<br /><p>Submit A Video</p><form action="blocks/suggest_video.php" method="post" onsubmit="suggest_video(); return false;" target="submit_frame"><div id="suggestvid_error" style="color:red"></div><h3>Enter You Tube Video Url</h3><input type="text" name="url" id="url" value="" /><br /><br />Type the Text from the image below.<br /><img id="suggestvideo_capt" src="/images/captcha/suggestvideo.jpg" onclick="return new_captcha()" /><br /><input type="text" name="code" id="code" /><input type="hidden" name="captcha_form" id="captcha_form" value="suggestvideo" /><br /><br /><input type="submit" value="Submit Video" id="suggest_but" /><br /><p><a href="#" class="hide-overlay">Close Form</a></p><br />';
    attach_overlay_events();
    $overlay_wrapper.fadeOut(500);
	new_captcha();
}

function append_suggest_overlay() {
    $overlay_wrapper = $('<div id="overlay"></div>').appendTo( $('BODY') );
    $overlay_panel = $('<div id="overlay-panel"></div>').appendTo( $overlay_wrapper );

	$overlay_panel.html( '<br /><p>Submit A Video</p><form action="blocks/suggest_video.php" method="post" onsubmit="suggest_video(); return false;" target="submit_frame"><div id="suggestvid_error" style="color:red"></div><h3>Enter You Tube Video Url</h3><input type="text" name="url" id="url" value="" /><br /><br />Type the Text from the image below.<br /><img id="suggestvideo_capt" src="/images/captcha/suggestvideo.jpg" onclick="return new_captcha()" /><br /><input type="text" name="code" id="code" /><input type="hidden" name="captcha_form" id="captcha_form" value="suggestvideo" /><br /><br /><input type="submit" value="Submit Video" id="suggest_but" /><br /><p><a href="#" class="hide-overlay">Close Form</a></p><br />' );

    attach_overlay_events();
}

function attach_overlay_events() {
    $('A.hide-overlay', $overlay_wrapper).click( function(ev) {
        ev.preventDefault();
        hide_suggest_overlay();
    });
}

$(function() {
    $('A.show-overlay').click( function(ev) {
        ev.preventDefault();
        show_suggest_overlay();
    });
});

function suggest_video()
{
	var errStr = '';
	var url = document.getElementById('url').value;
	var c = document.getElementById('code').value;
	var f = document.getElementById('captcha_form').value;
	
	var u = validate_youtube_url(url);
	
	if (u[0] == false)
	{
		errStr += u[1]+'<br />';
	}
	
	if (c.length != 6)
	{
		errStr += 'Please enter all 6 characteres from the image<br />';
	}
	
	if (errStr != '')
	{
		var ajaxDisplay = document.getElementById('suggestvid_error');
		ajaxDisplay.innerHTML = errStr;
		return false;
	}
	
	var readyFunc = function()
	{
		if(suggestvid_xhr.readyState == 4)
		{
			var ajaxDisplay = document.getElementById('suggestvid_error');
			var response = eval("(" + suggestvid_xhr.responseText + ")");
			if (response.errors)
			{
				ajaxDisplay.innerHTML = response.html;
				new_captcha();
				document.getElementById('suggest_but').disabled =false;
			}
			else
			{
				document.getElementById('overlay-panel').innerHTML = response.html;
			}
		}
	};
	document.getElementById('suggest_but').disabled =true;
	suggestvid_xhr = get_ajax_client(readyFunc);
	var queryString = "blocks/suggest_video.php?url="+escape(url)+'&code='+escape(c)+'&captcha_form='+escape(f);
	suggestvid_xhr.open("GET", queryString, true);
	suggestvid_xhr.send(null);
	
	return true;
}

function new_captcha()
{
	var url = 'images/captcha/'+ document.getElementById('captcha_form').value + '.jpg?busit=' + rand(6733,999999) ;
	document.getElementById('suggestvideo_capt').src = url;
	document.getElementById('code').value = '';
	return false;
}

function get_ajax_client(readyFunc)
{

	try{
		
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				
				alert("Your browser broke!");
				return false;
			}
		}
	}
	ajaxRequest.onreadystatechange = readyFunc;
	return ajaxRequest;
}

function validate_youtube_url(str, protocol)
{
	if(!protocol && protocol != '')
	{
		protocol = '(http://)|(http://www.)|(www.)';
	}
	if (str=='')
	{
		return Array(false, 'You Tube Url Required', false);
	}
	protocol = protocol.replace(/\//g, '\/', protocol).replace(/\./g, '\.');
	protocol = (protocol != '') ? '^(' + protocol + ')' : protocol;
	match_exp = new RegExp(protocol + 'youtube\.com\/(.+)(v=.+)', 'gi');
	var matches = match_exp.exec(str);
	try
	{
	   if(matches.length < 3)
	   {
			return Array(false, 'Invalid URI', matches);
	   }
	   else
	   {
		   var qs = matches[matches.length-1].split('&');
		   var vid = false;
		   for(i=0; i<qs.length; i++)
		   {
			   var x = qs[i].split('=');
			   if(x[0] == 'v' && x[1])
			   {
				   vid = x[1];
				   return Array(true, vid, matches);
			   }
			   else
			   {
				   return Array(false, 'Missing ID', matches);
			   }
		   }
		   return Array(false, 'You Tube URL Error', false);
	   }
	}
	catch (e)
	{
	   return Array(false, 'You Tube URL Invalid', false);
	}
}

function rand( min, max ) 
{
    var argc = arguments.length;
    if (argc === 0) {
        min = 0;
        max = 2147483647;
    } else if (argc === 1) {
        throw new Error('Warning: rand() expects exactly 2 parameters, 1 given');
    }
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

