/* AJAX functions to generate video code in-place on song page
 * @version $Id: generatecode.js,v 1.2 2006/10/26 19:05:55 nomic Exp $
 * @copyright 2006 
 */

function generateCode(strFilename) {
	// Should validate form data first
	var ajaxrequest = 'http://indievideocodes.com/ajax.php?obj=generatedcode&filename='+strFilename
		+'&size='+document.generatecode.size.value
		+'&skin='+document.generatecode.skin.value
		+'&loop='+document.generatecode.loop.value
		+'&autostart='+document.generatecode.autostart.value
		+'&targetsite='+document.generatecode.targetsite.value
		+'&ipaddress='+document.generatecode.ipaddress.value;

	// Clear the div for the form
	var objFormDiv = document.getElementById('player_options');
	if (objFormDiv != false) {
		removeAllChildNodes(objFormDiv);
		var objFormParent = objFormDiv.parentNode;
		objFormParent.removeChild(objFormDiv);
	} else {
		alert('Removing child nodes FAILED '+objFormDiv);
	}
	
	// Replace div contents with textarea containing code
	var objCodeDiv = document.createElement("div");
	//objCodeDiv.innerHTML = 'Copy and paste your code:<br /><textarea id="codebox" rows="3" cols="160">&lt;embed src="http://www.blastro.com/new_videocodes/flash_vc.swf?playlist='+strFilename+'" width="350" height="290"&gt;&lt;/embed&gt;</textarea><form onSubmit="return showForm();" method="post"><input type="submit" value="Change Code Type"></form>';
	objCodeDiv.id = 'code_output';
	objFormParent.appendChild(objCodeDiv);
	getAjaxData(ajaxrequest, addGeneratedCode);
	
	_uacct = "UA-709256-4";
	urchinTracker("/songcode.html");
	
	// Stop actual submission/page load from happening
	return(false);
} // generateCode()

function addGeneratedCode(objXmlHttp){
	if (objXmlHttp.readyState == 4) {
		if (objXmlHttp.status == 200) {
			var strResponse = objXmlHttp.responseText;
			var objCodeDiv = document.getElementById('code_output');
			objCodeDiv.innerHTML = strResponse;
		} else if (objXmlHttp.status == 404){
			var strResponse = objXmlHttp.responseText;
			var objCodeDiv = document.getElementById('code_output');
			objCodeDiv.innerHTML = '<p>Error updating from server!</p>';
		}
	}
} // addGeneratedCode

function showForm(strFilename) {
	// Clear the div for the code output
	var objCodeDiv = document.getElementById('code_output');
	if (objCodeDiv != false) {
		removeAllChildNodes(objCodeDiv);
		var objCodeParent = objCodeDiv.parentNode;
		objCodeParent.removeChild(objCodeDiv);
	} else {
		alert('Removing child nodes FAILED '+objCodeDiv);
	}
	
	// Replace div contents with form
	var objFormDiv = document.createElement("div");
	objFormDiv.id = 'player_options';
	objFormDiv.innerHTML = 'Awaiting server response....';
	objCodeParent.appendChild(objFormDiv);
	getAjaxData('http://indievideocodes.com/ajax.php?obj=codegenform&filename='+strFilename, addCodeForm);
	// getAjaxData('/ajax.php?obj=codegenform', addCodeForm);
	
	// Stop actual submission/page load from happening
	return(false);
	
} // showForm()

function addCodeForm(objXmlHttp) {
	if (objXmlHttp.readyState == 4) {
		if (objXmlHttp.status == 200) {
			var strResponse = objXmlHttp.responseText;
			var objFormDiv = document.getElementById('player_options');
			objFormDiv.innerHTML = strResponse;
		} else if (objXmlHttp.status == 404){
			var strResponse = objXmlHttp.responseText;
			var objFormDiv = document.getElementById('player_options');
			objFormDiv.innerHTML = '<p>Error updating from server!</p>';
		}
	}
}

function getAjaxData(strUrl, refCallbackfunction) {
	var objXmlHttp = false;
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	try {
		objXmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			objXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e2) {
			objXmlHttp = false;
		}
	}
	@end @*/
	if (!objXmlHttp && typeof XMLHttpRequest != 'undefined') {
		objXmlHttp = new XMLHttpRequest();
	}
	
 	if (typeof(objXmlHttp) != 'object') {
		alert('Could not instantiate an xmlhttprequest object!');
	}
	
	objXmlHttp.open('GET', strUrl, true);
//	objXmlHttp.overrideMimeType('text/xml');
//	objXmlHttp.onreadystatechange = function() { addCodeForm(objXmlHttp); };
	objXmlHttp.onreadystatechange = function() { refCallbackfunction(objXmlHttp); };
	objXmlHttp.send(null);

} // getAjaxData()

function removeAllChildNodes(node) {
	if (node && node.hasChildNodes && node.removeChild) {
		while (node.hasChildNodes()) {
			node.removeChild(node.firstChild);
		}
	}
} // removeAllChildNodes()