/*
*	Todo
*	===========================
*	1) Learn Javascript
*/

/*
*	SHARED VARS
*/
var LI = document.getElementsByTagName('li');
var DIV = document.getElementsByTagName('div');
var SPAN = document.getElementsByTagName('span');
var blurTabs = true;
var targetElement;
var targ;
var okdtarg;
var tabclicked;
var ufcount = 4;
var wbcount = 4;
var efcount;
var bleh = new Array();
var bluh = new Array();
var Ajax;
var livecommenting = false;

/*
*	ON PAGE LOAD
*/
function onPageLoad() {
	// detect if any onclick happened
	document.onclick = onClick;

	// load default ajax sections on pageload
	loadDefaultAjax();
	loadSearchForm();
	loadLatestLogger();

	// grab default stuff
	notify_ajax('get_messages', 'getPMCount', '', 'noload', 'get_messages_alt');
	notify_ajax('get_friendrequests', 'getFriendRequests', '', 'noload', 'get_friendrequests_alt');
	ajax('shoutbox', 'getShoutbox', '', 'noload');
	
	var myinterval = window.setInterval('liveCommenting()',10000); // check msg every x seconds
	if(window.grabcomments) grabcomments(true);	// on every page loaded check if grab comments is true

	// preload loading.gif
	loadImage = new Image();
	loadImage.src = '/common/images/loading.gif';
}

function dospinner() {
	if(document.getElementById('spinner')) {
		toggleMsg('spinner', '<div class="loader"><img src="http://geng.murai.com.my/common/images/loading.gif" alt="" class="loading" /> Sila tunggu sebentar, kami sedang memuat naikkan fail anda. Sila jangan tutup laman ini. Untuk melayari laman lain, sila klik <a href="/" target="_blank">disini</a> untuk membuka laman baru.</div>');
	}
	return true;
}

function closeWizard() {
	document.getElementById('whider').style.opacity = '1';
	document.getElementById('wizard').style.display = 'none';
}

/*
*	DEFAULT AJAX LOADS
*/
function loadDefaultAjax() {
	// loop through each one to find the ajax loaders
	for (var i = 0; i < LI.length; ++i) {
		// check if the tab is default
		splat = LI[i].id.split('_');

		// if default is true, then load ajax for this tab
		if(splat[4] == 'd') {
			// get proper vars from the ID
			if(splat[2]) var3 = splat[2];

			// since this is the initial load, only do ajax when the div is empty
			if(document.getElementById(var3).innerHTML == '') {
				// set the target ID
				targ = LI[i].id;
				// simulate onClick
				onClick();
			}
		}
	}
}
function loadSearchForm() {
	// set search form's channel value
	if(document.getElementById('sechannel')) {
		targ = 'sechannel';
		onClick();
	}
}

/*
*	SET NOFOCUS TO TABS (only if blurTabs flag value is true)
*/
function setNoFocus() {
	var browser = navigator.appName;

	// to hell with IE
	if(browser != 'Microsoft Internet Explorer') {
		if(blurTabs == true) {
			for (var i = 0; i < LI.length; ++i) {
				splat = LI[i].id.split('_');

				// set nofocus
				if(splat[0] == 'tab') if(LI[i].childNodes[0]) LI[i].childNodes[0].onfocus = blurLink;
				if(splat[0] == 'nav') if(LI[i].childNodes[1]) LI[i].childNodes[1].onfocus = blurLink;
			}
			for (var i = 0; i < SPAN.length; ++i) {
				splater = SPAN[i].id.split('_');

				// set nofocus
				if(splater[0] == 'link') if(SPAN[i].childNodes[0]) SPAN[i].childNodes[0].onfocus = blurLink;
			}
		}
	}
}
// Utility to help setNoFocus()
function blurLink() {
	if(this.blur) this.blur();
}

/*
*	ONCLICK EVENTS MANAGER (will be triggered whenever clicking happens)
*/
function onClick(e) {
	// get the ID of affected element
	if(!targ) {
		if (!e) var e = window.event;
		if (e.target) targ = e.target.parentNode.id;
		else if (e.srcElement) targ = e.srcElement.parentNode.id;
		if(targ) if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode.id;
		tabclicked = true;
	}
	else tabclicked = false;

	// get the element of targeted ID
	if(targ) targetElement = document.getElementById(targ);

	// check if element exists (hence valid request)
	if(targetElement != '') {

		// implode the ID to get some values
		splat = targ.split('_');

		// get proper vars from the ID
		if(splat[0]) var var1 = splat[0];
		if(splat[1]) var var2 = splat[1];
		if(splat[2]) var var3 = splat[2];
		if(splat[3]) var var4 = splat[3];
		if(splat[4]) var var5 = splat[4];
		if(splat[5]) var var6 = splat[5];

		// set page value if available
		if(var5 == 'page') var page = var6;

		// action = var3 + var4
		if(var3 && var4) var action = var3 + '_' + var4;

		// unset targ (not being used after this line), targ is only useful for initial ajax loads
		if(targ) targ = '';

		// if element is tab, then do the necessary tabbing
		if(var1 == 'tab') {
			// untoggle each of the list that's in the same var3 as clicked item
			for (var i = 0; i < LI.length; ++i) {
				// check if the list is same var3 as the clicked tab
				splat = LI[i].id.split('_');
				// if same var3, untoggle the tabs
				if(splat[2] == var3) LI[i].className = "";
			}

			// set the style of targetted element to toggled
			targetElement.className = "toggled";
		}

		if(var1 == 'sechannel') {
			if(document.searchentriesform.sechannel.value == 'mylifelog_titledesc') {
				show('searchmylifelog');
			}
			else if(document.searchentriesform.sechannel.value == 'lifelogger_tags' || document.searchentriesform.sechannel.value == 'mylifelog_tags') {
				hide('searchmylifelog');
			}
		}

		if(var1 == 'action') {
			if(document.listform.action.value != '') {
				cond = '&selected=' + document.listform.action.value;
				show(var2);
				ajax(var2, 'confirmation', cond);

				// hide
				hide(var3);
				if(document.listform.action2) document.listform.action2.value = '';
				if(document.getElementById(var3)) document.getElementById(var3).innerHTML = '';
			}
			else if(document.forms['listform2']) {
				if(document.listform2.action.value != '') {
					cond = '&selected=' + document.listform2.action.value;
					show(var2);
					ajax(var2, 'confirmation', cond);

					// hide
					hide(var3);
					if(document.listform.action2) document.listform.action2.value = '';
					if(document.getElementById(var3)) document.getElementById(var3).innerHTML = '';
				}
			}
			else {
				hide(var2);
			}
		}

		if(var1 == 'action2') {
			if(document.listform.action2.value != '') {
				cond = '&selected=' + document.listform.action2.value;
				show(var2);
				ajax(var2, 'confirmation', cond);

				// hide
				hide(var3);
				if(document.listform.action) document.listform.action.value = '';
				if(document.getElementById(var3)) document.getElementById(var3).innerHTML = '';
			}
			else if(document.forms['listform2']) {
				if(document.listform2.action.value != '') {
					cond = '&selected=' + document.listform.action.value;
					show(var2);
					ajax(var2, 'confirmation', cond);

					// hide
					hide(var3);
					if(document.listform.action) document.listform.action.value = '';
					if(document.getElementById(var3)) document.getElementById(var3).innerHTML = '';
				}
			}
			else {
				hide(var2);
			}
		}

		if(var1 == 'dowat') {
			if(document.listform.dowat.value != '') {
				cond = '&selected=' + document.listform.dowat.value;
				show(var2);
				ajax(var2, 'confirmation', cond);
			}
			else {
				hide(var2);
			}
		}

		if(var1 == 'iedit') {
			var id = 'entry_id'+ var4;
					
			if(var2 == 'titlebox'){
				if(!document.forms['form'].elements[id] ){	
					divbox = var2 + var4;
					thetext = document.getElementById(divbox).innerHTML;
				
					thetext = replacestring(thetext, '<BR>', '');
                
					bleh[var4] = thetext;
					bluh[var4] = replacestring(thetext, '"', '');
				}
			}
			else{
				// grab the text
				thetext = document.getElementById(var2).innerHTML;
			}
			
			// assign the text to class var
			if(bleh[var2] == null) bleh[var2] = thetext;
			if(bluh[var2] == null) bluh[var2] = replacestring(thetext, '"', '');
			
			if(var2 == 'titlebox'){
				// assign the text to class var
				if(bleh[var4] == null) bleh[var4] = thetext;
				if(bluh[var4] == null) bluh[var4] = replacestring(thetext, '"', '');
			}
			
			// create edit action
			editaction = var2 + '_' + var3;

			// display form
			if(var2 == 'shoutbox') {
				document.getElementById(var2).innerHTML = '<form name="edittable" onsubmit="saveEdit(\'' + var2 + '\', \'' + editaction + '\'); return false;"><input type="text" name="' + var2 + '" value="' + bluh[var2] + '" class="formfield" style="width: 210px" maxlength="100" /> <input type="submit" value="Simpan" class="formbutton" /> <input type="submit" value="Batal" onclick="closeEdit(\'' + var2 + '\'); return false;" class="formbutton" /></form>';
			}
			else if(var2 == 'titlebox'){
				if(!document.forms['form'].elements[id] ){
					divbox = var2 + var4;
					document.getElementById(divbox).innerHTML = '<input type="hidden" name="entry_id'+ var4 +'" value="' + var4 + '" id="entry_id" /><input type="text" name="' + divbox + '" value="' + bluh[var4] + '" class="formfield" style="width: 210px" maxlength="100" onKeyPress="checkEnter(event)" /> <input type="button" value="Simpan" onclick="savetitleEdit(\'' + var4 + '\', \'' + editaction + '\'); return false;" class="formbutton" /> <input type="submit" value="Batal" onclick="closetitleEdit(\'' + divbox + '\',\'' + var4 + '\'); return false;" class="formbutton" />';
				}
			}
			else if(var4 == 'field') {
				document.getElementById(var2).innerHTML = '<form name="edittable" onsubmit="saveEdit(\'' + var2 + '\', \'' + editaction + '\'); return false;"><input type="text" name="' + var2 + '" value="' + bluh[var2] + '" class="formfield" /> <input type="submit" value="Simpan" class="formbutton" /> <input type="submit" value="Batal" onclick="closeEdit(\'' + var2 + '\'); return false;" class="formbutton" /></form>';
			}

			else {
				document.getElementById(var2).innerHTML = '<div style="text-align: center;"><form name="edittable" onsubmit="saveEdit(\'' + var2 + '\', \'' + editaction + '\'); return false;"><textarea name="' + var2 + '" class="formtextarea">' + bluh[var2] + '</textarea><small>Untuk WYSIWYG penuh guna <a href="/entries/edit' + page_path + '">Mod Kemaskini</a>.</small> <div class="fieldsep"><input type="submit" value="Simpan" class="formbutton" /> <input type="submit" value="Batal" onclick="closeEdit(\'' + var2 + '\'); return false;" class="formbutton" /></div></form></div>';
			}

			// select all
			field = 'edittable.' + var2;
			//selectAll(field);
			return false;
			
		}

		if(var2 == 'togglelc') {
			if(livecommenting == false) {
				livecommenting = true;
				document.getElementById('link_togglelc').className = 'lcon';
				document.getElementById('link_togglelc').innerHTML = '<a href="#" onfocus="this.blur();" title="Klik untuk memadamkan komen langsung">Komen Langsung Sedia</a>';
			}
			else {
				livecommenting = false;
				document.getElementById('link_togglelc').className = 'lcoff';
				document.getElementById('link_togglelc').innerHTML = '<a href="#" onfocus="this.blur();" title="Klik untuk memulakan komen langsung">Komen Langsung Tutup</a>';
			}
			return false;
		}

		if(var2 == 'transform') {
			if(document.forms['phototransform'].elements['transformsteps'].value != '') {
				document.forms['phototransform'].elements['transformsteps'].value += ',' + var3;
			}
			else {
				document.forms['phototransform'].elements['transformsteps'].value = var3;
			}
			file = document.forms['phototransform'].elements['file'].value;

			params = '&method=' + var3 + '&file=' + file;
			ajax('transformimg', 'transform_process', params, 'Diproses...');
			return false;
		}

		// check if it's an ajax request, run ajax if true
		if(var2 == 'ajax') {
			// check if page value available, and pass as condition
			if(page) {
				cond = '&page=' + page;
				ajax(var3, action, cond);
			}
			else ajax(var3, action);
			return false;
		}

		// close message box
		if(var2 == 'closebox') {
			Effect.DropOut('postresult',{duration:0.5});
			return false;
		}

		// close help box
		if(var2 == 'closehelp') {
			Effect.DropOut('tophelp',{duration:0.5});
			return false;
		}

		// insert into form
		if(var2 == 'insert') {
			targetfield = var3;
			tbi = 'tbi' + var3 + var4;

			if(document.getElementById(targetfield).value == '') document.getElementById(targetfield).value = document.getElementById(tbi).innerHTML;
			else document.getElementById(targetfield).value = document.getElementById(targetfield).value + ', ' + document.getElementById(tbi).innerHTML;
			return false;
		}

		// add upload fields
		if(var2 == 'addfields') {



			extrafield = 'extrafield' + ufcount;
			var from1 = 'videotag_d' + ufcount;
			var from2 = 'phototag_d' + ufcount;
			var from3 = 'audiotag_d' + ufcount;
			efcount = ufcount + 1;

			// get photo select options
			params = 'var1=ajax&var2=uploadphototags_list&phpself=' + self;
			if(self != '/') actionURL = self + '/';
			else actionURL = self;
			
			// do the ajax thing
			new Ajax.Updater('', actionURL, {
				asynchronous:false,
				method:'post',
				parameters: params,
				onComplete: function(t) {
					if(t.responseText != '') {
						var somestuff = t.responseText;
						document.getElementById('photome').value = somestuff;
					}
				}
			})
			// end ajax

			var photome = document.getElementById('photome').value;

			// get photo select options
			params = 'var1=ajax&var2=uploadaudiotags_list&phpself=' + self;
			if(self != '/') actionURL = self + '/';
			else actionURL = self;
			
			// do the ajax thing
			new Ajax.Updater('', actionURL, {
				asynchronous:false,
				method:'post',
				parameters: params,
				onComplete: function(t) {
					if(t.responseText != '') {
						var somestuff = t.responseText;
						document.getElementById('audiome').value = somestuff;
					}
				}
			})
			// end ajax

			var audiome = document.getElementById('audiome').value;

			// get photo select options
			params = 'var1=ajax&var2=uploadvideotags_list&phpself=' + self;
			if(self != '/') actionURL = self + '/';
			else actionURL = self;
			
			// do the ajax thing
			new Ajax.Updater('', actionURL, {
				asynchronous:false,
				method:'post',
				parameters: params,
				onComplete: function(t) {
					if(t.responseText != '') {
						var somestuff = t.responseText;
						document.getElementById('videome').value = somestuff;
					}
				}
			})
			// end ajax

			var videome = document.getElementById('videome').value;

			//document.getElementById(extrafield).innerHTML += '<div class="upload"><div class="fieldsep"><label for="file' + ufcount + '" class="top" id="label' + ufcount + '">Fail ' + ufcount + '</label><input type="file" name="file' + ufcount + '" id="file1" size="50" /><small><span id="link_stoggle_meta_meta' + ufcount + '"><a href="#" onfocus="this.blur();">Butiran Upload</a></span></small><div class="hidden" id="meta' + ufcount + '"><div class="fieldsep"><label for="title' + ufcount + '">Tajuk</label><input type="text" name="title' + ufcount + '" id="title' + ufcount + '" class="formfield" /><small>Kosongkan untuk mengunakan nama fail sebagai tajuk.</small></div><div class="fieldsep"><label for="desc' + ufcount + '">Isi-isi</label><textarea name="desc' + ufcount + '" id="desc' + ufcount + '" class="formtextarea"></textarea><small>HTML boleh digunakan</small></div><div class="fieldsep"><label for="tags' + ufcount + '">Penanda</label>	<ul class="tabs"><li id="tab_videotags"><a href="javascript:void(0)" onClick="switchuploadtag(1,' + ufcount + ');">Penanda Video</a></li><li id="tab_phototags"><a href="javascript:void(0)" onClick="switchuploadtag(2,' + ufcount + ');" >Penanda Gambar</a></li><li id="tab_audiotags"><a href="javascript:void(0)" onclick="switchuploadtag(3,' + ufcount + ');">Penanda Audio</a></li>	</ul>	<br />	<div id="videotag' + ufcount + '" class="fieldsep" style="display: none;"><label for="lbl_videotags">Penanda Video</label><select id="videotag_d' + ufcount +'" onchange="appendSelected_tag(document.editors_here.' + from1 + '.options[document.editors_here.' + from1 + '.selectedIndex].value, ' + ufcount + ');" class="formselect"><option value="">-------</option> ' + videome + '</select></div>	<div id="phototag' + ufcount + '" class="fieldsep" style="display: none;"><label for="lbl_phototags">Penanda Gambar</label><select onchange="appendSelected_tag(document.editors_here.' + from2 + '.options[document.editors_here.' + from2 + '.selectedIndex].value, ' + ufcount + ');" id="phototag_d' + ufcount +'" class="formselect"><option value="">-------</option>' + photome + '</select>	</div>	<div id="audiotag' + ufcount + '" class="fieldsep" style="display: none;"><label for="lbl_audiotags">Penanda Audio</label><select onchange="appendSelected_tag(document.editors_here.' + from3 + '.options[document.editors_here.' + from3 + '.selectedIndex].value, ' + ufcount + ');" id="audiotag_d' + ufcount +'" class="formselect">	<option value="">-------</option> ' + audiome + '</select></div></div><div class="fieldsep"><label for="tags' + ufcount + '">Penanda</label><input type="text" name="tags' + ufcount + '" id="tags' + ufcount + '" class="formfield" /><small>Asingkan penanda dengan tanda koma. Maksimum sebanyak 10 penanda untuk setiap entri.</small></div></div></div></div>';

			document.getElementById(extrafield).innerHTML += '<div class="upload"><div class="fieldsep"><label for="file' + ufcount + '" class="top" id="label' + ufcount + '">Fail ' + ufcount + '</label><input type="file" name="file' + ufcount + '" id="file1" size="50" /><small><span id="link_stoggle_meta_meta' + ufcount + '"><a href="#" onfocus="this.blur();">Butiran Upload</a></span></small><div class="hidden" id="meta' + ufcount + '"><div class="fieldsep"><label for="title' + ufcount + '">Tajuk</label><input type="text" name="title' + ufcount + '" id="title' + ufcount + '" class="formfield" /><small>Kosongkan untuk mengunakan nama fail sebagai tajuk.</small></div><div class="fieldsep"><label for="desc' + ufcount + '">Huraian</label><textarea name="desc' + ufcount + '" id="desc' + ufcount + '" class="formtextarea"></textarea><small>HTML boleh digunakan</small></div></div></div></div>';

			// create new div for next insert
			var newdiv = document.createElement('div');
			newdiv.id = 'extrafield' + efcount;
			newdiv.style.display = 'none';
			document.getElementById('uploadfields').appendChild(newdiv);

			Effect.Appear(extrafield);
			ufcount = ufcount + 1;
			return false;
		}

		// toggle objects
		if(var2 == 'toggle') {
			if(document.getElementById(var4)) proToggler(var4, var3);
			return false;
		}

		// toggle objects
		if(var2 == 'stoggle') {
			if(document.getElementById(var4)) proStoggler(var4, var3);
			return false;
		}

		// unset vars and return false
		if(var1) {
			// unset them!
			var1 = '';
			var2 = '';
			var3 = '';
			var4 = '';
			var5 = '';
			var6 = '';
			action = '';
			targetElement = '';
		}

		if(var2) {
			return false;
		}

		targetElement = '';
	}
}

// This is to fix FF close post result box bug.
function closebox(){
	Effect.DropOut('postresult',{duration:0.5});
	return false;
}

function transform_save() {
	file = document.forms['phototransform'].elements['file'].value;
	steps = document.forms['phototransform'].elements['transformsteps'].value;

	// clear steps
	document.forms['phototransform'].elements['transformsteps'].value = '';

	params = '&steps=' + steps + '&file=' + file + '&method=save';

	// save the image
	ajax('transformimg', 'transform_process', params, 'Sedang disimpan...');

	return false;
}

function reportAbuse() {
	type = document.forms['abuseform'].elements['abusetype'].value;
	entry_id = document.forms['abuseform'].elements['entry_id'].value;
	remarks = document.forms['abuseform'].elements['abuseremarks'].value;
	remarks = replacestring(remarks, '&', '%26');
	remarks = replacestring(remarks, '+', '%2B');
	
	params = '&abusetype=' + type + '&abuseremarks=' + remarks + '&entry_id=' + entry_id;

	ajax('abusereport', 'report_abuse', params, '<div class="status">Sendang dihantar...</div>');
}

function reportAbuseEntry() {
	type = document.forms['abuseform'].elements['abusetype'].value;
	entry_id = document.forms['abuseform'].elements['entry_id'].value;
	remarks = document.forms['abuseform'].elements['abuseremarks'].value;
	remarks = replacestring(remarks, '&', '%26');
	remarks = replacestring(remarks, '+', '%2B');
	
	params = '&abusetype=' + type + '&abuseremarks=' + remarks + '&entry_id=' + entry_id;

	ajax('abusereporttop', 'report_abuse', params, '<div class="status">Sendang dihantar...</div>');
}

// insert select from dropdown
function insertSelected(from, to) {
	tbi = document.getElementById(from).value;
	document.getElementById(to).value = tbi;
	return false;
}

// append select from dropdown
function appendSelected_tag(from, to) {
	var to1 = 'tags' + to;
	if(document.getElementById(to1).value == '') {
		document.getElementById(to1).value = from;
	}
	else {
	document.getElementById(to1).value += ',' + from;
	}
	return false;
}

// append select from dropdown
function appendSelected(from, to) {
	tbi = document.getElementById(from).value;
	if(document.getElementById(to).value == '') {
		document.getElementById(to).value = tbi;
	}
	else {
	document.getElementById(to).value += ',' + tbi;
	}
	return false;
}

function switchlifeposter() {
	if(document.getElementById('source').value == 1) {
		hide('tags');
		hide('albums');
	}
	else if(document.getElementById('source').value == 2) {
		show('tags');
		hide('albums');
	}
	else if(document.getElementById('source').value == 3) {
		show('albums');
		hide('tags');
	}
}

function switchuploadtag(tagvalue, iter){
	var atag = 'audiotag' + iter;
	var vtag = 'videotag' + iter;
	var ptag = 'phototag' + iter;
	if(tagvalue == 1) {
		hide(atag);
		show(vtag);
		hide(ptag);
	}
	else if(tagvalue == 2) {
		hide(atag);
		hide(vtag);
		show(ptag);
	}
	else if(tagvalue == 3) {
		show(atag);
		hide(vtag);
		hide(ptag);
	}
}


// insert smilie
function insertSmilie(smilie) {
	document.forms['commentform'].elements['comment'].value += smilie + ' ';
	return false;
}

/* Form's dropdown actions */
function loadAction(action) {
	targ = action;
	onClick();
}

function saveEdit(div, editaction) {
	bluh[div] = null;
	bleh[div] = null;

	tosave = document.forms['edittable'].elements[div].value;
	tosave = replacestring(tosave, '&', '%26');
	tosave = replacestring(tosave, '%', '%25');
	tosave = replacestring(tosave, '?', '%3F');
	tosave = replacestring(tosave, '#', '%23');
	params = '&tosave=' + tosave;
	
	if(div == 'titlebox'){
	params = params + '&entryid=' + document.forms['edittable'].elements['entry_id'].value;
	div = div + document.forms['edittable'].elements['entry_id'].value;
	}
	
	ajax(div, editaction, params, 'Tunggu Sebentar...');
}

function savetitleEdit(div, editaction) {
	bluh[div] = null;
	bleh[div] = null;

	var id = 'entry_id' + div;
	div = 'titlebox' + div;
	//var elt = document.forms['form'].elements;
	//var len = document.forms['form'].elements.length;
	//alert(len);
	//for(i=0; i<len; i++) {
	//	alert(typeof elt[i]);
	//}
	tosave = document.forms['form'].elements[div].value;

	tosave = replacestring(tosave, '&', '%26');
	tosave = replacestring(tosave, '%', '%25');
	tosave = replacestring(tosave, '?', '%3F');
	tosave = replacestring(tosave, '#', '%23');
	params = '&tosave=' + tosave;
	
	params = params + '&entryid=' + document.forms['form'].elements[id].value;
	//div = div + document.form.elements['entry_id'].value;

	ajax(div, editaction, params, 'Tunggu Sebentar...');
}
function closeEdit(div) {
	document.getElementById(div).innerHTML = bleh[div];
	bluh[div] = null;
	bleh[div] = null;
}

function closetitleEdit(div,var4) {
	var len,text,j;
	text = '';	
	len = bleh[var4].length;
	j = 20;
	
	for(i = 0; i <=  len; i = i + 20){
			if(bleh[var4].substring(i,j)){
				text = text + bleh[var4].substring(i,j) + '<br>';			
			}
			
		j = j+20;
		
	
	}
	
	document.getElementById(div).innerHTML = text;
	bluh[var4] = null;
	bleh[var4] = null;
}
/*
*	Sets titles on upload page
*/
function setUploadTitle() {
	if(document.getElementById('title1')) {
		for (var i = 1; i < ufcount ; ++i) {
			filetitle = 'label' + i;
			typedtitle = 'title' + i;
			defaulttitle = 'File ' + i;
			if((document.getElementById(typedtitle)) && (document.getElementById(typedtitle).value != document.getElementById(filetitle).innerHTML)) {
				if(document.getElementById(typedtitle).value != '') {
					document.getElementById(filetitle).innerHTML = document.getElementById(typedtitle).value;
				}
			}
		}
	}
}


/*
*	HIDE/SHOW LAYERS
*/
function proToggler(id, defaultClassName) {
	obj = document.getElementById(id);

	// if layer is hidden, open it
	if(obj.className != defaultClassName) {

		// close all other layers in the same var3
		for (var i = 0; i < LI.length; ++i) {
			splat = LI[i].id.split('_');
			if(splat[2] == defaultClassName) {
				objabc = document.getElementById(splat[3]);
				if(objabc) objabc.className = 'hidden';
			}
		}
		for (var i = 0; i < DIV.length; ++i) {
			splat = DIV[i].id.split('_');
			if(splat[2] == defaultClassName) {
				objdef = document.getElementById(splat[3]);
				if(objdef) objdef.className = 'hidden';
			}
		}
		for (var i = 0; i < SPAN.length; ++i) {
			splat = SPAN[i].id.split('_');
			if(splat[2] == defaultClassName) {
				objghi = document.getElementById(splat[3]);
				if(objghi) objghi.className = 'hidden';
			}
		}

		// open the current requested layer
		obj.className = defaultClassName;
	}
	// if layer is open, set hide
	else obj.className = 'hidden';
}



/*
*	DISABLE ADD PEOPLE FORM
*/
function toggleDisabledForm() {
	function toggleDisabled(status) {
		document.addpeople.friendship.disabled=status;
		document.addpeople.physical.disabled=status;
		document.addpeople.isCoworker.disabled=status;
		document.addpeople.isColleague.disabled=status;
		document.addpeople.geographical.disabled=status;
		document.addpeople.family.disabled=status;
		document.addpeople.isMuse.disabled=status;
		document.addpeople.isCrush.disabled=status;
		document.addpeople.isDate.disabled=status;
		document.addpeople.isSweetheart.disabled=status;
	}
	if (document.addpeople.isMe.checked==1) toggleDisabled(true);
	else toggleDisabled(false);
}


/*
*	GRAB COMMENTS
*/
// check if it's turned on
function liveCommenting() {
	if(livecommenting == true) {
		grabcomments();
	}
}
function grabcomments(firstload) {
	if(document.getElementById('entrycomments')) {
		if(document.getElementById('entrycomments').innerHTML == '') {
			toggleMsg('entrycomments', '<div class="loader"><img src="/common/images/loading.gif" alt="" class="loading" /></div>');
		}

		lastcomment = '';
		for (var i = 0; i < DIV.length; ++i) {
			splat = DIV[i].id.split('_');
			if(splat[0] == 'commentid' && splat[1] != '') {
				lastcomment = splat[1];
			}
		}

		extraparam = '&lastcomment=' + lastcomment;

		params = 'var1=ajax&var2=entrycomments_list&phpself=' + self + extraparam;
		displayBlock = document.getElementById('entrycomments');

		if(self != '/') actionURL = self + '/';
		else actionURL = self;

		// do the ajax thing
		new Ajax.Updater('', actionURL, {
			asynchronous:true,
			method:'post',
			parameters: params,
			onSuccess: function(t) {
				if(t.responseText != '') {
					displayBlock.innerHTML = t.responseText;
					// blink new messages
					if(firstload != true) {
						for (var i = 0; i < DIV.length; ++i) {
							splat = DIV[i].id.split('_');
							if(splat[0] == 'commentid' && splat[1] != '') {
								if(splat[1] > lastcomment) {
									theid = 'commentid_' + splat[1];
									Effect.Pulsate(theid);
								}
							}
						}
						// end blink
						document.getElementById('indicator').innerHTML = '';
						document.getElementById('commentserror').innerHTML = '';
					}
				}
			}
		})
		// end ajax
	}
	return true;
}


/*
*	ADD COMMENT
*/
function addcomment() {
	document.getElementById('indicator').innerHTML = '<div class="loader"><img src="http://geng.murai.com.my/common/images/loading.gif" alt="" class="loading" /></div>';
	comment = document.forms['commentform'].elements['comment'].value;
	comment = replacestring(comment, '&', '%26');
	comment = replacestring(comment, '+', '%2B');
	comment = replacestring(comment, '?', '%3F');
	params = 'var1=ajax&var2=entrycomments_add&phpself=' + self + '&comment=' + comment;
	displayBlock = document.getElementById('entrycomments');
	// check if addtofav is checked
	//if(document.forms['commentform'].elements['addtofav'].checked == true) params += '&addtofav=1';

	if(self != '/') actionURL = self + '/';
	else actionURL = self;

	// do the ajax thing
	new Ajax.Updater('', actionURL, {
		asynchronous:true,
		method:'post',
		parameters: params,
		onSuccess: function(t) {
			if(t.responseText != '') {
				if(t.responseText == '50000') {
					document.getElementById('commentserror').innerHTML = '<div class="commentserror">Komen tidak boleh dihantar kosong. Sila cuba lagi.</div>';
					document.getElementById('indicator').innerHTML = '';
				}
				else if(t.responseText == '50001') {
					document.getElementById('commentserror').innerHTML = '<div class="commentserror">Komen tidak boleh dihantar sekali gus. Sila cuba sebentar lagi.</div>';
					document.getElementById('indicator').innerHTML = '';
				}
				else if(t.responseText == '50002') {
					document.getElementById('commentserror').innerHTML = '<div class="commentserror">Ada masalah semasa komen anda sedang dihantar. Sila cuba lagi.</div>';
					document.getElementById('indicator').innerHTML = '';
				}
				else {
					grabcomments();
					document.forms['commentform'].elements['comment'].value = '';
				}
			}
			else {
				displayBlock.innerHTML = 'Proses tidak boleh ditamatkan.';
				document.getElementById('indicator').innerHTML = '';
			}
		}
	})
}


/*
*	INSERT CSS
*/
function insertCSS() {
	color = document.forms['cssform'].elements['color'].value;
	if(color == 'pink') document.forms['cssform'].elements['css'].value = '';
	else if(document.getElementById(color)) {
		document.forms['cssform'].elements['css'].value = document.getElementById(color).innerHTML;
	}
}


/*
*	HIDE/SHOW LAYERS SPECIAL
*/
function proStoggler(id, defaultClassName) {
	obj = document.getElementById(id);

	// if layer is hidden, open it
	if(obj.className != defaultClassName) {

		// close all other layers in the same var3
		for (var i = 0; i < LI.length; ++i) {
			splat = LI[i].id.split('_');
			if(splat[2] == defaultClassName) {
				objabc = document.getElementById(splat[3]);
				if(objabc) {
					objabc.style.display = 'none';
					objabc.className = 'dummy';
				}
			}
		}
		for (var i = 0; i < DIV.length; ++i) {
			splat = DIV[i].id.split('_');
			if(splat[2] == defaultClassName) {
				objdef = document.getElementById(splat[3]);
				if(objdef) {
					objdef.style.display = 'none';
					objdef.className = 'dummy';
				}
			}
		}
		for (var i = 0; i < SPAN.length; ++i) {
			splat = SPAN[i].id.split('_');
			if(splat[2] == defaultClassName) {
				objghi = document.getElementById(splat[3]);
				if(objghi) {
					objghi.style.display = 'none';
					objghi.className = 'dummy';
				}
			}
		}

		// open the current requested layer
		obj.className = defaultClassName;
		Effect.Appear(id, {duration: 1});
	}
	// if layer is open, set hide
	else {
		obj.style.display = 'none';
		obj.className = 'dummy';
	}
}
function hide(id) {
	if(document.getElementById(id)) {
		obj = document.getElementById(id);
		obj.style.display = "none";
	}
}
function show(id) {
	if(document.getElementById(id)) {
		obj = document.getElementById(id);
		obj.style.display = "";
	}
}


/*
*	AJAX LOADER (loads all ajax functions)
*/
function ajax(div, func, cond, toggle) {
	// check if any empty parameter
	if(div != '' && func != '') {
		// set params (if condition is passed, then add it)
		if(cond) params = 'var1=ajax&var2=' + func + cond + '&phpself=' + self;
		else params = 'var1=ajax&var2=' + func + '&phpself=' + self;

		if(self != '/') actionURL = self + '/';
		else actionURL = self;

		// show loading sign
		if(toggle == 'noload') {
			// do nothing
		}
		else if(toggle) {
			msg = '<div class="saving">' + toggle  + '</div>';
			toggleMsg(div, msg);
		}
		else {
			toggleMsg(div, '<div class="loader"><img src="/common/images/loading.gif" alt="" class="loading" /></div>');
		}

		// do the ajax thing
		new Ajax.Updater(div, actionURL, {
			asynchronous:true,
			method:'post',
			parameters: params,
			onSuccess: function(t) {
				/* if there's response, insert into display block
				if(t.responseText != '') {
				if(displayBlock) displayBlock.innerHTML = t.responseText;
				}
				else displayBlock.innerHTML = 'Failed to process your request at this moment.';*/
			}
		})
	}
	return false;
}

/*
*	AJAX LOADER (only loads the pm & friend count)
*/
function notify_ajax(div, func, cond, toggle, altdiv) {
	// check if any empty parameter
	if(div != '' && func != '') {
		// set params (if condition is passed, then add it)
		if(cond) params = 'var1=ajax&var2=' + func + cond + '&phpself=' + self;
		else params = 'var1=ajax&var2=' + func + '&phpself=' + self;

		if(self != '/') actionURL = self + '/';
		else actionURL = self;

		// show loading sign
		if(toggle == 'noload') {
			// do nothing
		}
		else if(toggle) {
			msg = '<div class="saving">' + toggle  + '</div>';
			toggleMsg(div, msg);
		}
		else {
			toggleMsg(div, '<div class="loader"><img src="/common/images/loading.gif" alt="" class="loading" /></div>');
		}

		// do the ajax thing
		new Ajax.Updater(div, actionURL, {
			asynchronous:true,
			method:'post',
			parameters: params,
			onSuccess: function(t) {
				if (t.responseText!='0')
				{
					if(altdiv=='get_friendrequests_alt'){
						document.getElementById('get_friendrequests_alt').innerHTML = "<a href='/friends/requests/' class='newfriend'><img src='/common/images/icons/NewFriendRequest.gif' border='0'>&nbsp;" + t.responseText + " Permintaan Kawan</a>";
					}else{
						document.getElementById('get_messages_alt').innerHTML = "<a href='/messages/inbox' class='newmsg'><img src='/common/images/icons/NewMsg.gif' border='0'>&nbsp;" + t.responseText + " Mesej Baru</a>";
					}
				}
			}
		})
	}
	return false;
}

/*
*	FUNCTION TO REPLACE STRING
*/
function replacestring(inputString, badString, goodString, caseSensitive) {
	fixedReplace = "";
	UI = inputString;
	UB = badString;
	if ((caseSensitive != 1) && (caseSensitive != true)) {
		UI = inputString.toUpperCase();
		UB = badString.toUpperCase();
	}
	badEnd = -1;
	badLoc = UI.indexOf(UB);
	if (badLoc != -1) {
		for (x=1; (badLoc != -1); x++) {
			fixedReplace = fixedReplace +
			inputString.substring((badEnd +
			1), badLoc) + goodString
			badEnd = badLoc + UB.length - 1;
			badLoc = UI.indexOf(UB, (badLoc + 1)); }
			fixedReplace = fixedReplace +
			inputString.substring((badEnd + 1),
			inputString.length); }
			else { fixedReplace = inputString;    }
			return fixedReplace;
};

/*
*	SHOW/HIDE LOADING MSG
*/
function toggleMsg(block, msg) {
	// the needed vars
	if(document.getElementById(block))
	var block = document.getElementById(block);

	// show loading sign
	if(msg) block.innerHTML = msg;
	// unset the loading msg
	else block.innerHTML = '';
}

/*
*	SET CHECKED
*/
var checked=0;
function setChecked(targetForm,targetCheckbox) {

	if (checked==0) {
		dml=document.forms[targetForm];
		dml.checker.checked=1;
		len = dml.elements.length;
		var i=0;
		for( i=0 ; i<len ; i++)
		{
			if (dml.elements[i].name==targetCheckbox)
			{
				dml.elements[i].checked=1;
			}
		}
		checked=1;

	} else if (checked==1) {

		dml=document.forms[targetForm];
		dml.checker.checked=0;
		len = dml.elements.length;
		var i=0;
		for( i=0 ; i<len ; i++)
		{
			if (dml.elements[i].name==targetCheckbox)
			{
				dml.elements[i].checked=0;
			}
		}
		checked=0;
	}

}

/*
*	WIZARD
*/
function wizard() {
	if(document.forms['wizardform'].elements['showagain'].checked == true) {
		ajax('dummy', 'set_wizard', '&showagain=10', 'Sila tunggu sebentar sementara proses persimpanan dilakukan.');
	}
	else {
		ajax('dummy', 'set_wizard', '&showagain=20', 'Sila tunggu sebentar sementara proses persimpanan dilakukan.');
	}
}

/*
*	COMMENT CHAR COUNT
*/
function charcount(maxchar, formname, fieldname) {
	if(document.forms[formname].elements[fieldname].value.length > maxchar) {
		document.forms[formname].elements[fieldname].value = document.forms[formname].elements[fieldname].value.substring(0,maxchar);
	}
	textlength = document.forms[formname].elements[fieldname].value.length;
	textremain = maxchar - textlength;
	document.getElementById('charcount').innerHTML = textremain;
}

/*
*	SELECT ALL
*/
function selectAll(theField) {
	sup = "document."+theField
	if(eval(sup)) {
		var tempval=eval(sup);
		tempval.focus();
		tempval.select();
	}
}

/*
*	GET IMAGE LIST
*/
var pagenumber = 1;
function getImageList(div, field, page) {
	cond = '&page=' + page + '&field=' + field;
	xinha_ajax(div, 'xinha_imagelist', cond);
	pagenumber = page;
}
function loadPrev() {
	if(pagenumber != 1) prevpage = (pagenumber-1);
	else return false;

	getImageList(prevpage);
}
function loadNext() {
	nextpage = pagenumber + 1;
	getImageList(nextpage);
}
function xinha_ajax(div, func, cond) {
	// check if any empty parameter
	if(div != '' && func != '') {
		// set params (if condition is passed, then add it)
		if(cond) params = 'var1=ajax&var2=' + func + cond + '&phpself=' + self;
		else params = 'var1=ajax&var2=' + func + '&phpself=' + self;

		actionURL = '/';

		// grab element of the display div, to show content in this layer
		if(document.getElementById(div)) displayBlock = document.getElementById(div);

		// show loading sign
		msg = 'Loading...';
		toggleMsg(div, msg);

		// do the ajax thing
		new Ajax.Updater('', actionURL, {
			asynchronous:true,
			method:'post',
			parameters: params,
			onSuccess: function(t) {
				// if there's response, insert into display block
				if(t.responseText != '') displayBlock.innerHTML = t.responseText;
				else displayBlock.innerHTML = 'Maaf, tiada respons yang didapatkan.';
			}
		})
	}
	return false;
}

function insertLink(link, target) {
	size = 'ori';
	link = link + '_' + size + '.jpg';
	document.forms['cssform'].elements[target].value = link;
}


function loadLatestLogger(){

if(document.getElementById('latestlogger')) {	

		if(document.getElementById('latestlogger').innerHTML) {
			document.getElementById('latestlogger').innerHTML ='';
			toggleMsg('latestlogger', '<div class="loader"><img src="/common/images/loading.gif" alt="" class="loading" /></div>');
		}

		params = 'var1=ajax&var2=latest_logger&phpself=' + self;
		displayBlock = document.getElementById('latestlogger');

		if(self != '/') actionURL = self + '/';
		else actionURL = self;
	
		// do the ajax thing
		new Ajax.Updater('', actionURL, {
			asynchronous:true,
			method:'post',
			parameters: params,
			onSuccess: function(t) {
				if(t.responseText != '') {
					displayBlock.innerHTML = t.responseText;
				}
			}
		})
		// end ajax
	}
	return true;

}

/*
*	WINDOWS ONLOAD
*/
window.onload = function() {
	if(window.onPageLoad) onPageLoad();
	if(window.setNoFocus) setNoFocus();
	if(window.xinha_init) xinha_init();
	if(window.ss) ss.update();
	var myinterval = window.setInterval('setUploadTitle()',50); // check msg every x seconds
}


