var ew = 425;
var eh = 355;
var ytcode1 = "http://www.youtube.com/v/{id}&rel=0";
var sspath = "http://static.slideshare.net/swf/";
var sscode = "ssplayer2.swf?doc={id}";
var slideno = 0;
var sspid = 0;
var duration = 0;
var dataBack = 0;
var ivid = 0;
var title = "";
var shortdescription = "";
var ssGeted = true;
var hmsA = new Array();
var embedcode = '<object width="850" height="360"><param name="movie" value="http://www.vcasmo.com/swf/instantvm/instantvm.swf"></param><param name="flashvars" value="{flashvars}"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.vcasmo.com/swf/instantvm/instantvm.swf" flashvars="{flashvars}" allowFullScreen="true" allowScriptAccess="always" type="application/x-shockwave-flash" width="850" height="360"></embed></object>';
function init() {
	slidenotxt = $("slideno").innerHTML;
	loadingtxt = $("ivLoadingDiv").innerHTML;
	displayObj("editBtn", false);
	if (stepNo == 1) {
		displayObj("editNewBtn", false);
	}
	common_init();
}
function getVideoSlide(_ytid, _ssid) {
	if (_ytid && _ssid) {
		pass = true;
	} else {
		pass = validateForm('ivForm1');
	}
	if (pass) {
		if (!_ytid && !_ssid) {
			ytid = getID('src=\"http:\/\/www.youtube.com\/v\/(.+)\"', document.ivForm1.yt.value, "ytFail");
			ssid = getID('[src|value]=\"http:\/\/.+?.+doc=(.+)\"', document.ivForm1.ss.value, "ssFail");
		} else {
			ytid = _ytid;
			ssid = _ssid;
		}
		if (pass) {
			dataBack = 0;
			//ssGeted = false;
			displayObj("ivTimeline", true);
			displayObj("ivButtonForm", false);
			//alert("YouTube: "+ytid+", SlideShare: "+ssid);
			so1 = new SWFObject(ytcode1.replace(/\{id\}/g, ytid), "ytvm", ew, eh, 8, '#ffffff', "high");
			so2a = new SWFObject("/swf/instantvm/slideLoader.swf", "slvm", 1, 1, 8, '#ffffff', "high");
			so2a.addVariable("doc", ssid);
			so2a.write("sl_td");
			so2 = new SWFObject("/swf/instantvm/ssplayer2.swf", "ssvm", ew, eh, 8, '#ffffff', "high");
			so2.addVariable("doc", ssid);
			so2.write("ss_td");
			so3 = new SWFObject("/swf/instantvm/instantvm.swf", "vm", 850, 360, 8, '#ffffff', "high");
			so3.addVariable("ytid", ytid);
			so3.addVariable("ssid", ssid);
			so3.addParam("allowScriptAccess", "always");
			so3.addParam("allowFullScreen", "true");
			doPreview(false);
			$("ivTimeline").innerHTML = loadingtxt;
			var params = "x=1&q="+ytid;
			xmlLoad(params, "post", "../../util_youtubeProxy.php", ytOnLoaded);
			restartGif();
		}
		fixFooter();
	}
	return false;
}
function ytOnLoaded(xmlObj) {
	if (window.ActiveXObject) {
		var dA = xmlObj.responseXML.getElementsByTagName("yt:duration");
	} else {
		var dA = xmlObj.responseXML.getElementsByTagName("duration");
		if (dA.length==0) {
			dA = xmlObj.responseXML.getElementsByTagName("yt:duration");
		}
	}
	if (dA.length>0) {
		duration = parseInt(dA[0].getAttribute("seconds"));
		dataBack++;
		checkGetDataDone();
	} else {
		alert($("ytFail").innerHTML);
	}
}
function getID(pattern, str, errorname) {
	var id = str.match(new RegExp(pattern));
	if (id) {
		if (id.length>1) {
			id = id[1];
			if (id.indexOf('"')>0) {
				id = id.substring(0, id.indexOf('"'));
			}
			if (id.indexOf('&')>0) {
				id = id.substring(0, id.indexOf('&'));
			}
			if (id.length>0) {
				return id;
			}
		}
	}
	alert($(errorname).innerHTML);
	pass = false;
}
function loadDataForSlide(sno) {
	// for slideshare to call to prevent JS error.
}
function getTotalSlide(sno, _sspid) {
	// call by Flash
	slideno = sno;
	sspid = _sspid;
	$("sl_td").innerHTML = "";
	dataBack++;
	checkGetDataDone();
}
function ssOnLoaded(xmlObj) {
	ssGeted = true;
	title = xmlObj.responseXML.getElementsByTagName("Title")[0].childNodes[0].nodeValue;
	shortdescription= xmlObj.responseXML.getElementsByTagName("Description")[0].childNodes[0].nodeValue;	
}
function checkGetDataDone() {
	if (dataBack>1) {
		displayObj("ivButtonForm", true);
		$("editBtn").disabled = false;
		$("previewBtn").disabled = false;
		$("nextBtn").disabled = false;
		so3.addVariable("duration", duration);
		so3.addVariable("slideno", slideno);
		so3.addVariable("sspid", sspid);
		var sec = duration/slideno;
		//alert("duration: "+duration+", slideno: "+slideno+", sec: "+sec);
		var str = "<table width='100%'><tr>";
		var gensec = (hmsA.length > 0) ? false : true;
		for (var i = 0; i<slideno; i++) {
			var tsec = (gensec) ? secToHMS(Math.round(i*sec)) : hmsA[i];
			str += "<td nowrap='nowrap'>"+slidenotxt.replace(/1/, (i+1))+"<br/><input type='text' name='cp"+i+"' value='"+tsec+"' oldvalue='"+tsec+"'  maxlength='8' onchange='formatTime(this)' /></td>";
		}
		str += "</tr></table>";
		var ivForm2 = createForm("ivForm2");
		ivForm2.innerHTML = str;
		$("ivTimeline").innerHTML = "";
		$("ivTimeline").appendChild(ivForm2);
		fixFooter();
		scroll(0, 360);
	}
}
function doPreview(bool) {
	displayObj("editBtn", bool);
	displayObj("previewBtn", !bool);
	showHideObj("ivEdit", !bool);
	if (!bool) {
		so1.write("yt_td");
		so2.write("ss_td");
		$("ivPreview").innerHTML = "";
	} else {
		doGenCode();
		so3.write("ivPreview");
		$("yt_td").innerHTML = "";
		$("ss_td").innerHTML = "<img src='../../images/blank.gif' width='"+ew+"' height='"+eh+"'/>";
	}
	fixFooter();
}
function doGenCode() {
	var seqA = new Array();
	var form = document.ivForm2;
	var x = form.elements;
	for (var i = 0; i<x.length; i++) {
		seqA.push(HMSToSec(x[i].value));
	}
	var seqStr = seqA.join(",");
	so3.addVariable("seq", seqStr);
	document.ivForm4.ivCode_tf.value = embedcode.replace(/\{flashvars\}/g, so3.getVariablePairs().join("&"));
	return seqStr;
}
function insertSeq() {
	var form = document.ivForm2;
	var x = form.elements;
	for (var i = 0; i<x.length; i++) {
		x[i].value = hmsA[i];
	}
}
function goStep1() {
	displayObj("ivStep0", false);
	displayObj("ivStep1", true, "block");
	displayObj("ivStep2", false);
	displayObj("ivStep3", false);
	scroll(0, 0);
	setTimeout(insertSeq, 500);	
	fixFooter();
	return false;
}
function goStep2() {
	hmsA = new Array();
	var form = document.ivForm2;
	var x = form.elements;
	for (var i = 0; i<x.length; i++) {
		hmsA.push(x[i].value);
	}
	doPreview(false);
	displayObj("ivStep1", false);
	displayObj("ivStep2", true, "block");
	if (!document.ivForm3) {
		var ivForm3 = createForm("ivForm3");
		ivForm3.onsubmit = function() {return goStep3();}
		ivForm3.appendChild($("ivForm3_tb"));
		$("ivStep2").appendChild(ivForm3);
		formEnabled("ivForm3", true);
	}
	if (title != "") {
		document.ivForm3.title.value = title;
		title = "";
	}
	if (shortdescription != "") {
		document.ivForm3.shortdescription.value = shortdescription;
		shortdescription = "";
	}
	scroll(0, 0);
	fixFooter();
}
function goStep3() {
	var pass = validateForm("ivForm3");
	if (pass) {
		formEnabled("ivForm3", false);
		showHideObj("step2Loading", true);
		var form3 = document.ivForm3;		
		var seqStr = doGenCode();
		var params = "ytid="+ytid+"&ssid="+ssid+"&sspid="+sspid+"&duration="+secToHMS(duration)+"&slideno="+slideno+"&seq="+seqStr+"&title="+form3.title.value+"&shortdescription="+form3.shortdescription.value+"&ivid="+ivid;
		xmlLoad(params, "post", "../../util_ivSave.php", onSaved);
		restartGif();
	}
	return false;
}
function onSaved(xmlObj) {
	formEnabled("ivForm3", true);
	showHideObj("step2Loading", false);
	if (xmlObj.responseText != "failed") {
		displayObj("ivStep2", false);
		displayObj("ivStep3", true, "block");
		so3.addVariable("ivid", xmlObj.responseText);
		doGenCode();
		scroll(0, 0);
		fixFooter();
	} else {
		alert($("ivSaveFail").innerHTML);
	}
}
function doLoad() {
	var str = document.ivForm0.ivCode.value;
	if (str != "") {
		var ivCode = str.match(/ flashvars=\"(.+)\"/i);
		if (ivCode) {
			ivCode = ivCode+"";
			ivCode = ivCode.substring(ivCode.indexOf('"')+1);
			ivCode = ivCode.substring(0, ivCode.indexOf('"'));
			ivCode = ivCode.split("&");
			if (ivCode.length > 0) {
				formEnabled("ivForm0", false);
				showHideObj("step0Loading", true);
				var pairObj = new Object();
				for (var i in ivCode) {
					var pa = ivCode[i].split("=");
					pairObj[pa[0]] = pa[1];
				}
				hmsA = pairObj.seq.split(",");
				for (var i in hmsA) {
					hmsA[i] = secToHMS(hmsA[i]);
				}
				ytid = pairObj.ytid;
				ssid = pairObj.ssid;
				ivid = pairObj.ivid;
				if (ivid) {
					ssGeted = true;
					xmlLoad("ivid="+pairObj.ivid, "post", "../../util_ivLoad.php", onLoaded);
				} else {
					ivid = 0;
					step0ToStep1();
				}
				restartGif();
			} else {
				alert($("ivCodeFail").innerHTML);
			}
		} else {
			alert($("ivCodeFail").innerHTML);
		}
	}
}
function onLoaded(xmlObj) {
	if (xmlObj.responseText == "failed") {
		// even no record in database, just let it go,
		// then treat it as a new one
		ivid = 0;
	}
	step0ToStep1();
	title = xmlObj.responseXML.getElementsByTagName("title")[0].childNodes[0].nodeValue;
	shortdescription= xmlObj.responseXML.getElementsByTagName("shortdescription")[0].childNodes[0].nodeValue;
}
function step0ToStep1(){
	displayObj("ivStep0", false);
	getVideoSlide(ytid, ssid);
}
function createForm(formName) {
	if (window.ActiveXObject) {
		var form = document.createElement("<form name='"+formName+"'>");
	} else {
		var form = document.createElement("form");
		form.name = formName;
	}
	return form;
}
function formatTime(tf) {
	var v = tf.value;
	var sec = HMSToSec(v);
	if (sec>duration || isNaN(sec)) {
		tf.value = tf.getAttribute("oldvalue");
	} else {
		tf.value = secToHMS(sec);
		tf.setAttribute("oldvalue", tf.value);
	}
}
function NumberToDoubleNumber(n) {
	n = Number(n);
	if (n<10) {
		n = "0"+n;
	}
	return n;
}
function secToHMS(n) {
	n = Number(n);
	var hr = Math.floor(n/3600);
	var min = n%3600;
	var sec = min%60;
	min = Math.floor(min/60);
	return NumberToDoubleNumber(hr)+":"+NumberToDoubleNumber(min)+":"+NumberToDoubleNumber(sec);
}
function HMSToSec(s) {
	var t = s.split(":");
	return Number(t[0])*3600+Number(t[1])*60+Number(t[2]);
}
function xmlLoad(params, method, path, handler) {
	var xmlObj = createXMLHttpRequest();
	xmlObj.onreadystatechange = function() {
		if (xmlObj.readyState == 4 && xmlObj.status == 200) {
			handler(xmlObj);
		}
	};
	xmlObj.open(method, path, true);
	xmlObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlObj.setRequestHeader("Content-length", params.length);
	xmlObj.setRequestHeader("Connection", "close");
	xmlObj.send(params);	
}