// *************************
// CREATE & EDIT FUNCTIONS
// *************************

function vokiEditorCancel(){
	////debug('vokiEditorCancel');
	if ($('modal_window')) {
		topWin.closeModal();
	} else {
		if ($('create_page_div')) {
			topWin.location		= cachedDomain;
		}else{
			topWin.location.reload();
		}
	}
}

function uncacheVoki(vokiID){
	var uncacheValues = readCookie('uncached');
	
	if (uncacheValues)	{
		var uncacheArray = uncacheValues.split("||");
		
		for (n=0; n < uncacheArray.length; n++)		{
			if (uncacheArray[n] == vokiID) return;
		}
		
		uncacheArray[uncacheArray.length] = vokiID;
		
		setCookie('uncached', uncacheArray.join('||'), null, null, 'voki.com');
	}else{
		setCookie('uncached', vokiID, null, null, 'voki.com');
	}	
}

function checkUncachedVoki(vokiID){	
	if (readCookie('uncached'))	{		
		var uncacheArray = readCookie('uncached').split("||");
		
		for (n=0; n < uncacheArray.length; n++)		{
			if (uncacheArray[n] == vokiID) return true;
		}		
	}
	
	return false;
}

function vokiEditorSaveDone(vokiID, gMode, action, chsm, sceneName, accountId){
	gMode	= parseInt(gMode);
	
	//if the user is not logged in, set the unregisterdCreation cookie
	if (!checkLogin())
		setCookie('unregisteredCreation', vokiID, null, null, cookieDomain);

	// set uncached player array
	if (gMode == 3 || gMode == 4)	uncacheVoki(vokiID);
	
	//debug('gMode: ' + gMode);
	// handle submission
	switch (gMode){
		// Demo mode
		case 1:
			if (action == 'save')
				window.setTimeout('Login()', 500);
				
			if (action == 'send') 
				window.setTimeout('Login()', 500);
			return true;
			break;
		// Comment
		case 2:
			//check to see if we are in a window or not and take the approiate action 
			if(window.opener.location.href.indexOf('voki') != -1) {		
				var newWin 	= window.open('','editorComment','');
				newWin.close();
			} else {		
				window.location.href 	= cachedDomain;
				window.opener.focus();
			}
			return true;
			break;
		// Message Creation
		case 4:			
			window.setTimeout('topWin.SendToFriend(' + vokiID + ')', 500);
			return true;
			break;
		default:			
			//handeled below
	}
	
	// Registered User on Homepage (redirect to My Voki) (Will depecrate with feature releases, vokis are not created on home page any more)
	if (location.pathname == "/" && gMode == 3){
		location.href = '/mywebsite.php';
		return true;
	}

	//refersh the voki content page to make sure that we have the fresh one
	if (window.frameMyVokis_content){
		var w 			= window.frameMyVokis_content;
		w.location.href	= w.location.protocol + "//" + w.location.hostname + w.location.pathname + ("?updatedVoki=" + vokiID) + ("#voki_" + vokiID);
	}
	
	//user is on the about_me page 
	if (window.frameMyVokis_aboutContent){
		window.frameMyVokis_aboutContent.location.reload();
	}
	
	// since we just edited the previewed Voki, refresh the preview		
	if (top.document.getElementById('previewVokiID') && top.document.getElementById('previewVokiID').value == vokiID){
		previewMyVoki(topWin.$('previewVokiChecksum').value, topWin.$('previewVokiID').value, topWin.$('previewVokiFullName').value, topWin.$('previewTblItem').value);			
	}
	
	//user is on the create page 
	if ($('create_page_div')) {
		//chage the create global vars 
		createGblChsm		= chsm;
		createGblSID		= vokiID;
		createGblAID		= accountId;
		$('vokiID').value 	= createGblSID;
		
		if (!checkLogin() && !readCookie('vokiBlockedReg') && !readCookie('vokiNoThanks')){
			loginTag();
		}else{
			thankSave();
		}
		
		window.setTimeout('showCreateOptions(' + vokiID + ',"' + createGblChsm + '")', 500);
		return true;
	}

	window.setTimeout('topWin.closeModal()', 500);
	
}

// ********************
// SAVE VOKI MESSAGES 
// ********************

function saveVokiScene(sceneID){
	//debug('saveVokiScene');
	
	var save_status = 1;
	var url = 'saveScene.php';
	var pars = 'sceneID=' + sceneID + '&status=' + save_status;
	var ajaxRequest = new Ajax.Request(url, {
	    parameters:   pars, 
	    asynchronous: true,
	    onComplete:   parseSaveMessages
	});
}

function saveVokiScene_M(sceneID, same){
	//debug('saveVokiScene_M');
	
	var save_status = 1;
	var url = 'saveScene.php';
	var pars = 'sceneID=' + sceneID + '&status=' + save_status + '&same=' + same;
	var ajaxRequest = new Ajax.Request(url, {
	    parameters:   pars, 
	    asynchronous: true,
	    onComplete:   parseSaveMessages
	});
}

function processSavedScene(sceneID){
	//debug('processSavedScene');
	
	if (window.frameMyVokis_content && window.frameMyVokis_content.document.getElementById('save_' + sceneID))	{
		var a = window.frameMyVokis_content.document.getElementById('save_' + sceneID);
		a.onclick = "";
		a.setAttribute('href', '#');
		a.style.cursor = 'default';
		a.getElementsByTagName('img')[0].src = "images/buttons/myvoki_icon_save_disabled.gif";
		a.blur();
	}
}

function parseSaveMessages(oReq){
	//debug('parseSaveMessages');
	response  = oReq.responseText.split("||");
	//alert(oReq.responseText);
	if(response[0] == 1){
		// Scene found and saved successfully
		processSavedScene(response[1]);	
	}
}

// ********************
// DELETE VOKI FUNCTIONS
// ********************
function confirmDeleteVoki(vokiID, deleteID, vokiName){
	//debug('confirmDeleteVoki');
	topWin.Dialog.confirm("Are you sure you want to delete <b>" + vokiName + "</b>?", 
		{windowParameters: {width:300, height:100, className: "dialog"}, okLabel: "Delete", cancelLabel: "Cancel", 
			cancel:function(win) { return false },
			ok:function(win) { 
				//its not the perfect solution but its working
				deleteVoki(vokiID, deleteID); 			
				var w 			= window.frameMyVokis_content;
				w.location.href	= w.location.protocol + "//" + w.location.hostname + w.location.pathname;
				//w.location.href	= w.location.protocol + "//" + w.location.hostname + w.location.pathname;				
			 return true }
		});
}

function confirmDeleteVoki_A(vokiID, deleteID, vokiName) {
	//debug('confirmDeleteVoki_A');
	topWin.Dialog.confirm("Are you sure you want to delete <b>" + vokiName + "</b>?", 
		{windowParameters: {width:300, height:100, className: "dialog"}, okLabel: "Delete", cancelLabel: "Cancel", 
			cancel:function(win) { return false },
			ok:function(win) { deleteVoki_A(vokiID, deleteID); return true }
		});
}
function confirmDeleteVoki_iframe(vokiID, deleteID, vokiName) {
	//debug('confirmDeleteVoki_iframe');
	topWin.Dialog.confirm("Are you sure you want to delete <b>" + vokiName + "</b>?", 
		{windowParameters: {width:300, height:100, className: "dialog"}, okLabel: "Delete", cancelLabel: "Cancel", 
			cancel:function(win) { return false },
			ok:function(win) { deleteVoki_iframe(vokiID, deleteID); return true }
		});
}

function deleteVoki(vokiID, deleteID){
	//debug('deleteVoki');
	topWin.sceneForDeletion = parseInt(deleteID);
	
	var url = 'deleteScene.php';
	var pars = 'deleteID=' + deleteID + '&vokiID=' + vokiID;
	var ajaxRequest = new Ajax.Request(url, {
		    parameters:   pars, 
		    asynchronous: true,
		    onComplete:   parseDeleteMessages
		});
}

function deleteVoki_A(vokiID, deleteID){
	//debug('deleteVoki_A');
	topWin.sceneForDeletion = parseInt(deleteID);
	
	var url = 'deleteAboutScene.php';
	var pars = 'deleteID=' + deleteID + '&vokiID=' + vokiID;
	var ajaxRequest = new Ajax.Request(url, {
		    parameters:   pars, 
		    asynchronous: true,
		    onComplete:   parseDeleteMessages
		});
}

function deleteVoki_iframe(vokiID, deleteID){
	//debug('deleteVoki_iframe');
	topWin.sceneForDeletion = parseInt(deleteID);
	
	var url = topWin.dynamicDomain + 'deleteScene.php';
	var pars = 'deleteID=' + deleteID + '&vokiID=' + vokiID;
	var ajaxRequest = new Ajax.Request(url, {
		    parameters:   pars, 
		    asynchronous: true,
		    onComplete:   parseDeleteMessages
		});
}

function confirmDeleteVoki_M(vokiID, deleteID, vokiName, same) {
	//debug('confirmDeleteVoki_M');
	topWin.Dialog.confirm("Are you sure you want to delete <b>" + vokiName + "</b>?", 
		{windowParameters: {width:300, height:100, className: "dialog"}, okLabel: "Delete", cancelLabel: "Cancel", 
			cancel:function(win) { return false },
			ok:function(win) { deleteVoki_M(vokiID, deleteID, same); return true }
		});
}

function deleteVoki_M(vokiID, deleteID, same){
	//debug('deleteVoki_M');
	topWin.sceneForDeletion = parseInt(deleteID);
	
	var url = 'deleteScene.php';
	var pars = 'deleteID=' + deleteID + '&vokiID=' + vokiID + '&same=' + same;
	var ajaxRequest = new Ajax.Request(url, {
		    parameters:   pars, 
		    asynchronous: true,
		    onComplete:   parseDeleteMessages
		});
}


function parseDeleteMessages(req) {
	//debug('parseDeleteMessages');
	
	response  = req.responseText.split(",");
		
	if (response[0] == 1)
	{
		if (window.frameMyVokis_aboutContent)
		{
			window.frameMyVokis_aboutContent.location.reload();
			return;
		}
		
		// Scene found and deleted successfully
		if ($(response[1]))
			$(response[1]).style.display = 'none';
		else if (window.frameMyVokis_content.$(response[1]))
			window.frameMyVokis_content.$(response[1]).style.display = 'none';
		
		if (top.sceneForDeletion == top.previewedScene){
			previewMyVoki(null, null);
		}
	}
}

// *************************
// orginally in vokiJs.php
// *************************
function editVokiScene(sceneId, playerAccId, target, mode, editorAccId, useAs){	
	if(!target){
		target = "modal"; // default is modal window
	}
	
	if(useAs == undefined || useAs){
		useAs = 1;
	}else{
		useAs = 0;
	}
			
	if(mode == undefined)
		mode = 1; // default is demo mode
		
	//debug('mode is: ' + mode);
	
	if(editorAccId == undefined)
		editorAccId = defaultVokiAccId;
		
	setTimeout("editVokiSceneDo("+sceneId+",'"+playerAccId+"','"+target+"',"+mode+","+editorAccId+","+useAs+")",500);
	return false;
}

function editVokiSceneDo(sceneId, playerAccId, target, mode, editorAccId, useAs){

	partnerId = readCookie('pId');

	if(partnerId == undefined || partnerId==0)
		partnerId = defaultVokiPartnerId;

	tmpEditorAccId = readChip(readCookie('vdata' + vokiEnv),'acc');
	
	loggedIn = false;
	
	if(!isNaN(parseInt(tmpEditorAccId))) editorAccId = tmpEditorAccId;
	
	if(editorAccId == defaultVokiAccId){
		loggedIn = false;
	}else{
		loggedIn = true;
		if(mode==1)	mode = 3;
	}
	
	EditorMode		= mode;
	PartnerID		= partnerId;
	AccountId		= editorAccId;
	PlayerAccId		= playerAccId;
	PlayerSceneId	= sceneId;
	
	if(mode==2){
		var tmp 	= document.location.href.split("?");
		var obj 	= new Object();
		obj.commentSceneId	= 0;
		
		SceneId			= sceneId;
		
		if(tmp.length >= 2){
			var url = tmp[1].split('&');
			for( var i = 0 ;i < url.length ; i++ ) {
				var param = url[i].split('=');
				if( param[0] == 'sc')	obj.commentSceneId = param[1];
			}
			
			if(obj.commentSceneId>0){
				SceneId = obj.commentSceneId;
			}
		}
		
	
	}else if((mode == 5 || mode == 3) && useAs == 0){
		SceneId			= sceneId;
	}else{
		SceneId			= 0;
	}
	
	curSesId = readChip(readCookie('vdata' + vokiEnv),'sid');

	if(curSesId)	ExtraQueryStr += '&PHPSESSID=' + curSesId;
	
	if(loggedIn)	ExtraQueryStr += '&loggedIn=1';

	if (target == "modal")	params['wmode']		= null;
	
	FlashToDisplay 	= createFlashObj('edit');
	
	ExtraQueryStr 	= '';
	var editorName	= '';
	switch (mode){
		case 3:
			if (useAs)
				editorName	= 'Create a Voki';
			else
				editorName	= 'Edit Your Voki';
			break;
		case 4:
			modalWin	= topWin.Windows.getWindow('modal_window');
			editorName	= modalWin.getTitle();
			break;
		case 2:
			editorName	= 'Use a voki to comment';
			break;
	}
	if (target == "modal"){
		// open in modal window
		openModalContent(FlashToDisplay, modalSizes.get('editorWin').width, modalSizes.get('editorWin').height,editorName);
	}else{
		if ($(target))
			$(target).innerHTML = FlashToDisplay;
			
		if ($("tip") && $("bushContainer")){showTip();}
	}
}

function setSessionCookie(sesVal, cookieName){
	if(cookieName == undefined)
		cookieName = 'vdata' + vokiEnv;
		
	curSesId = readChip(readCookie(cookieName),'sid');
	if(!curSesId || curSesId==''){
		curCookieValue = readCookie(cookieName);
		sesVal = (curCookieValue?curCookieValue+'|':'')+'js=1|sid='+sesVal;
		setCookie(cookieName, sesVal,null,null,cookieDomain);
	}
}

function getSessionCookie(cookieName){
	
	if(cookieName == undefined)
		cookieName = 'PHPSESSID';
		
	var cookieValue = readCookie(cookieName);
	if(!cookieValue){
		return '';
	}else{
		return cookieValue;
	}
}

function showWizard(target, gMode){
	if(gMode == undefined)
		gMode = 1; // Demo mode of editor
		
	EditorMode		= gMode;
	
	loggedIn = false;
	
	tmpEditorAccId = readChip(readCookie('vdata' + vokiEnv),'acc');

	if(isNaN(parseInt(tmpEditorAccId)) || tmpEditorAccId==defaultVokiAccId){
		loggedIn = false;
	}else{
		loggedIn = true;
	}
	if(loggedIn)	ExtraQueryStr += '&loggedIn=1';

	if (target == "modal")	params['wmode']		= null;
		
	FlashToDisplay = createFlashObj('wiz');

	ExtraQueryStr = '';
	
	if ($(target))
		$(target).innerHTML = FlashToDisplay;
	else
		openModalContent('<span id="vokiEditorBlock">' + FlashToDisplay + '</span>', 570, 450);
}
