var ua_vers   = parseInt(navigator.appVersion);
var uagent    = navigator.userAgent.toLowerCase();
var is_safari = ( (uagent.indexOf('safari') != -1) || (navigator.vendor == "Apple Computer, Inc.") );
var is_ie     = ( (uagent.indexOf('msie') != -1) && (!is_opera) && (!is_safari) && (!is_webtv) );
var is_ie4    = ( (is_ie) && (uagent.indexOf("msie 4.") != -1) );
var is_moz    = (navigator.product == 'Gecko');
var is_ns     = ( (uagent.indexOf('compatible') == -1) && (uagent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_safari) );
var is_ns4    = ( (is_ns) && (parseInt(navigator.appVersion) == 4) );
var is_opera  = (uagent.indexOf('opera') != -1);
var is_kon    = (uagent.indexOf('konqueror') != -1);
var is_webtv  = (uagent.indexOf('webtv') != -1);
var is_win    =  ( (uagent.indexOf("win") != -1) || (uagent.indexOf("16bit") !=- 1) );
var is_mac    = ( (uagent.indexOf("mac") != -1) || (navigator.vendor == "Apple Computer, Inc.") );
var WINLOADED = 0;

addLoadEvent(function(){ WINLOADED = 1 } );

function toggleview(id , diary)
{
	if ( ! id ) return;

	if ( itm = my_getbyid(id) )
	{
		if (itm.style.display == "none")
		{
			my_show_div(itm);
		}
		else
		{
			my_hide_div(itm);
		}
	}
}

function togglecategory( fid, add )
{
	if ( add )
	{
		my_show_div( my_getbyid( 'fc_'+fid  ) );
		my_hide_div( my_getbyid( 'fo_'+fid  ) );
	}
	else
	{
		my_show_div( my_getbyid( 'fo_'+fid  ) );
		my_hide_div( my_getbyid( 'fc_'+fid  ) );
	}
}

function my_getbyid(id)
{
	itm = null;

	if (document.getElementById)
	{
		itm = document.getElementById(id);
	}
	else if (document.all)
	{
		itm = document.all[id];
	}
	else if (document.layers)
	{
		itm = document.layers[id];
	}

	return itm;
}

function my_hide_div(itm)
{
	if ( ! itm ) return;

	itm.style.display = "none";
}

function my_show_div(itm)
{
	if ( ! itm ) return;

	itm.style.display = "";
}

function PopUp(url, name, width,height,center,resize,scroll,posleft,postop)
{
	showx = "";
	showy = "";

	if (posleft != 0) { X = posleft }
	if (postop  != 0) { Y = postop  }

	if (!scroll) { scroll = 1 }
	if (!resize) { resize = 1 }

	if ((parseInt (navigator.appVersion) >= 4 ) && (center))
	{
		X = (screen.width  - width ) / 2;
		Y = (screen.height - height) / 2;
	}

	if ( X > 0 )
	{
		showx = ',left='+X;
	}

	if ( Y > 0 )
	{
		showy = ',top='+Y;
	}

	if (scroll != 0) { scroll = 1 }

	var Win = window.open( url, name, 'width='+width+',height='+height+ showx + showy + ',resizable='+resize+',scrollbars='+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no');
}

function get_obj_left_pot( obj )
{
	var curleft = 0;

	if( obj.offsetParent )
	{
		while( obj.offsetParent )
		{
			curleft += obj.offsetLeft;
			obj      = obj.offsetParent;
		}
	}
	else if( obj.x )
	{
		curleft += obj.x;
	}

	return curleft;
}

function get_obj_top_pot( obj )
{
	var curtop = 0;

	if( obj.offsetParent )
	{
		while( obj.offsetParent )
		{
			curtop += obj.offsetTop;
			obj     = obj.offsetParent;
		}
	}
	else if( obj.y )
	{
		curtop += obj.y;
	}

	return curtop;
}

function jump_to_page( pageformid, pageurl )
{
	var page = '';
	var pageformobj = my_getbyid( pageformid + '_form' );

	if( Number( pageformobj.value ) > 0 )
	{
		window.location = pageurl + '/page' + Number( pageformobj.value );
	}
}

function setCheckboxes( the_form, the_tag, do_check )
{
    var elts      = document.forms[the_form].elements[the_tag + '[]'];
    var elts_cnt  = (typeof(elts.length) != 'undefined') ? elts.length : 0;

	if (elts_cnt)
	{
        for (var i = 0; i < elts_cnt; i++)
		{
            elts[i].checked = do_check;
        }
    }
	else
	{
        elts.checked        = do_check;
    }
}

function getMousePosition(e)
{
    e = e || window.event;

    var cursor = {x:0, y:0};

    if( e.pageX || e.pageY )
    {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    }
    else
    {
    	var iebody = (document.compatMode == 'CSS1Compat') ? document.documentElement : document.body;

        cursor.x = e.clientX + iebody.scrollLeft - iebody.clientLeft;
        cursor.y = e.clientY + iebody.scrollTop  - iebody.clientTop;
    }

    return cursor;
}

function getBrowseSize()
{
	var iebody = (document.compatMode == 'CSS1Compat') ? document.documentElement : document.body;

	return {w:iebody.offsetWidth,h:iebody.offsetHeight};
}

function move_to_center(obj)
{
	var iebody = document.compatMode == 'CSS1Compat' ? document.documentElement : document.body;
    var stop   = is_ie ? iebody.scrollTop   : window.pageYOffset;
    var doch   = is_ie ? iebody.clientHeight: window.innerHeight;
    var docw   = is_ie ? iebody.clientWidth : window.innerWidth;
    var objh   = obj.offsetHeight;
    var objw   = obj.offsetWidth;

    x = docw/2-objw/2;
    y = stop+doch/2-objh/2;

    with(obj)
    {
    	style.left  = x + 'px';
    	style.top   = y + 'px';
    }
}

function display(html)
{
	var obj = my_getbyid('scene');
	obj.innerHTML = html;
	obj.style.display = '';
	execute_js(html);
	move_to_center(obj);
}

function clearScene()
{
	var obj = my_getbyid('scene');
	obj.innerHTML = '';
	obj.style.display = 'none';
}

function execute_js(source_code)
{
    var i             = 0;
    var max_iteration = 50;
    var text_blocks   = new Array();

    while( _match = source_code.match( new RegExp( "<script\\s+?type=['\"]text/javascript['\"]>([^`]+?)</script>", "i" ) ) )
    {
    	i ++;

    	if( i >= max_iteration )
    	{
    		break;
    	}
    	else
    	{
    		text_blocks[text_blocks.length] = _match[1];
    		source_code                     = source_code.replace( _match[0], '' );
    	}
    }

    try
    {
    	if( text_blocks.length )
    	{
    		for( i = 0; i < text_blocks.length; i++ )
    		{
    			eval(text_blocks[i]);
    		}
    	}
    }
    catch(e)
    {
    	//Do nothing
    }
}

function validateEmail(email)
{
   	if( email.length < 1 )
   	{
   		return false;
   	}

   	var patt = new RegExp( /^@|^\.|[^a-zA-Z0-9_\-@\.]|\.\.|@@|--|-@|@-|-\.|\.-|\.@|@\.|\.$|@$/g );

	if( patt.test(email) )
	{
		return false;
	}

	patt = new RegExp( /.+@.+\.[a-zA-Z]{2,4}/g );

	if( ! patt.test(email) )
	{
		return false;
	}

	if( email.indexOf('@') != email.lastIndexOf('@') )
	{
		return false;
	}

	return true;
}

function signout()
{
	xmlobj = new ajax_request();

	xmlobj.loading_message = "Please wait for signing out...";

	var do_request_function = function()
	{
		if( ! xmlobj.readystate_ready_and_ok() )
		{
			xmlobj.show_loading();

			return false;
		}

		xmlobj.hide_loading();

		if( xmlobj.xmlhttp.responseText == 1 )
		{
			window.location.reload();
			return true;
		}

		display(xmlobj.xmlhttp.responseText);
		return false;
	}

	xmlobj.onreadystatechange( do_request_function );

	xmlobj.process( basic_url + '/index.php?module=signin' );
}

function confirm_action(message,url)
{
	var confirmVar = confirm(message);

	if( typeof url == 'undefined' )
	{
		return confirmVar;
	}

	if( confirmVar )
	{
		window.location = url;
	}
}

function do_sort( name, url )
{
	var sortkeyobj = my_getbyid( name + '_sort_key' );
	var sortbyobj = my_getbyid( name + '_sort_by' );

	window.location = url + '&sortkey=' + sortkeyobj.options[ sortkeyobj.selectedIndex ].value + '&sortby=' + sortbyobj.options[ sortbyobj.selectedIndex ].value;
}

function starover( i, pip, name )
{
	for( var x = 1; x <= 5; x ++ )
	{
		my_getbyid( name + '_star_' + x ).className = 'star' + ( x <= i ? '5' : ( x <= pip ? '4' : '3' ) );
	}
}

function starout( pip, name )
{
	for( var x = 1; x <= 5; x ++ )
	{
		my_getbyid( name + '_star_' + x ).className = 'star' + ( x <= pip ? '2' : '1' );
	}
}

function rating( point, name, link )
{
	var _html = my_getbyid( name + '_rate_form' ).innerHTML
	do_request_function = function()
	{
		if ( ! xmlobj.readystate_ready_and_ok() )
		{
			my_getbyid( name + '_rate_form' ).innerHTML = "<img src=\"" + image_path + "/loading.gif\">";
			return;
		}

		if( xmlobj.xmlhttp.responseText == '' )
		{
			my_getbyid( name + '_rate_form' ).innerHTML = _html;
			return false;
		}

		var html = '';

		for( var i = 1; i <= 5; i ++ )
		{
			html += "<img src=\"images/null.gif\" class=\"star" + ( i <= xmlobj.xmlhttp.responseText ? '2' : '1' ) + "\">";
		}

		my_getbyid( name + '_rate_form' ).innerHTML = html;
	}

	xmlobj = new ajax_request();

    xmlobj.onreadystatechange( do_request_function );

	xmlobj.process( link + '&star=' + point );
}

function round( num, dec )
{
	if( typeof dec == 'undefined' )
	{
		dec = 0
	}
	else
	{
		dec = Math.floor(dec);
	}

	if( isNaN( num + dec ) || dec < 0 || dec > 12 )
	{
		return Math.round(num);
	}

	var n = Math.pow( 10, dec );

	return Math.round( num * n ) / n;
}

function createElement( tag, attribs, styles, parent )
{
    	var el = document.createElement(tag);

    	if( attribs )
    	{
    		setAttribs( el, attribs );
    	}

    	if( styles )
    	{
    		setStyles( el, styles );
    	}

    	if( parent )
    	{
    		parent.appendChild(el);
    	}

    	return el;
}

function setAttribs( el, attribs )
{
	for( var x in attribs )
	{
		el[x] = attribs[x];
	}
}

function setStyles( el, styles )
{
	for( var x in styles )
	{
		try
		{
			el.style[x] = styles[x];
		}
		catch(e)
		{
			// Do nothing
		}
	}
}

function findtags( parentobj, tag )
{
	if( typeof parentobj.getElementsByTagName != 'undefined' )
	{
		return parentobj.getElementsByTagName(tag);
	}
	else if( parentobj.all && parentobj.all.tags )
	{
		return parentobj.all.tags(tag);
	}
	else
	{
		return null;
	}
}

function doane(eventobj)
{
	if( ! eventobj || is_ie )
	{
		window.event.returnValue  = false;
		window.event.cancelBubble = true;

		return window.event;
	}
	else
	{
		eventobj.stopPropagation();
		eventobj.preventDefault();
		return eventobj;
	}
}

function mb_strlen(str)
{
	return ( is_ie && str.indexOf('\n') != -1 ) ? str.replace(/\r?\n/g, '_').length : str.length;
}

function trim(str)
{
	return ( str.replace(/(\s+)$/g, '') ).replace(/^\s+/g, '');
}

function str_pad( text, length, padstring )
{
	text      = new String(text);
	padstring = new String(padstring);

	if( text.length < length )
	{
		padtext = new String(padstring);

		while( padtext.length < ( length - text.length ) )
		{
			padtext += padstring;
		}

		text = padtext.substr( 0, length - text.length ) + text;
	}

	return text;
}

function htmlspecialchars(str)
{
	var f = new Array(
		              is_mac && is_ie ? new RegExp('&', 'g') : new RegExp('&(?!#[0-9]+;)', 'g'),
		              new RegExp('<', 'g'),
		              new RegExp('>', 'g'),
		              new RegExp('"', 'g')
	                 );

	var r = new Array(
	                  '&amp;',
	                  '&lt;',
	                  '&gt;',
	                  '&quot;'
                     );

	for( var i = 0; i < f.length; i++ )
	{
		str = str.replace( f[i], r[i] );
	}

	return str;
}

function checkDate( m, d, y, maxy, miny )
{
	m    = parseInt(m);
	d    = parseInt(d);
	y    = parseInt(y);
	maxy = parseInt(maxy);
	miny = parseInt(miny);

	if( isNaN(d) || isNaN(m) || isNaN(y) )
	{
		return false;
	}

	if( d < 1 || d > 31 )
	{
		return false;
	}

	if( m < 1 || m > 12 )
	{
		return false;
	}

	if( ( y % 4 == 0 ) && ( d > 29 ) && ( m == 2 ) )
	{
		return false;
	}

	if( ( y % 4 != 0 ) && ( d > 28 ) && ( m == 2 ) )
	{
		return false;
	}

	if( ( d > 30 ) && ( m == 4 || m == 6 || m == 0 || m == 11 ) )
	{
		return false;
	}

	return true;
}

function randRange(min, max)
{
    var randomNum = Math.floor(Math.random() * (max - min + 1)) + min;
    return randomNum;
}

function digitGrouping(data)
{
	data = String(data);

	data = data.split('.');

	if( data.length > 2 )
	{
		return false;
	}

	var dataFormated = new Array();

	for( var i in data )
	{
		var counter = data[i].length;

		dataFormated[i] = '';

		while( counter > 3 )
		{
			counter -= 3;
			dataFormated[i] = digit_grouping_symbol + data[i].substr(counter, 3 ) + dataFormated[i];
		}

		dataFormated[i] = data[i].substr(0, counter ) + dataFormated[i];
	}

	dataFormated = dataFormated.join(decimal_symbol);

	return dataFormated;
}

function getHeight(obj)
{
	if(obj.offsetHeight)
	{
		return obj.offsetHeight;
	}
	else if(obj.clientHeight)
	{
		return obj.clientHeight;
	}
	else if(obj.style.height)
	{
		return parseInt(obj.style.height);
	}
}

function lang_build_string()
{
	if ( ! arguments.length || ! arguments )
	{
		return;
	}

	var string = arguments[0];

	for( var i = 1 ; i < arguments.length ; i++ )
	{
		var match  = new RegExp('<%' + i + '>', 'gi');
		string = string.replace( match, arguments[i] );
	}

	return string;
}

function _make_form_safe( t )
{
	t = t + '';
	t = t.replace( /'/g, '&#039;' );
	t = t.replace( /"/g, '&quot;' );

	return t;
}

function addLoadEvent(fn)
{
	if( WINLOADED )
	{
		fn();
		return;
	}

	if( typeof window.addEventListener != "undefined" )
	{
		window.addEventListener("load", fn, false);
	}
	else if( typeof document.addEventListener != "undefined" )
	{
		document.addEventListener("load", fn, false);
	}
	else if( typeof window.attachEvent != "undefined" )
	{
		addListener(window, "onload", fn);
	}
	else if( typeof window.onload == "function" )
	{
		var fnOld = window.onload;

		window.onload = function()
		{
			fnOld();
			fn();
		};
	}
	else
	{
		window.onload = fn;
	}
}

function addListener(target, eventType, fn)
{
	target.attachEvent(eventType, fn);
}

function doInsert( Tag, ClsTag, formobj )
{
	if ( (ua_vers >= 4) && is_ie && is_win)
	{
		if( formobj.isTextEdit )
		{
			formobj.focus();
			var sel = document.selection;
			var rng = sel.createRange();
			rng.colapse;
			if( ( sel.type == "Text" || sel.type == "None" ) && rng != null )
			{
				if( ClsTag != "" && rng.text.length > 0 )
				{
					Tag += rng.text + ClsTag;
				}
				else
				{
					Tag += ClsTag;
				}
	
				rng.text = Tag ;
			}
		}
		else
		{			
			formobj.value += Tag + ClsTag;
		}
	}
	else if ( formobj.selectionEnd )
	{ 
		var ss = formobj.selectionStart;
		var st = formobj.scrollTop;
		var es = formobj.selectionEnd;
		
		if (es <= 2)
		{
			es = formobj.textLength;
		}
		
		var start  = (formobj.value).substring(0, ss);
		var middle = (formobj.value).substring(ss, es);
		var end    = (formobj.value).substring(es, formobj.textLength);
		
		middle = Tag + middle + ClsTag;
		
		formobj.value = start + middle + end;
		
		var cpos = ss + (middle.length);
		
		formobj.selectionStart = cpos;
		formobj.selectionEnd   = cpos;
		formobj.scrollTop      = st;
	}
	else
	{		
		formobj.value += Tag + ClsTag;
	}
	
	formobj.focus();
}

function tag_url(formid)
{
    var FoundErrors = '';
    var enterURL   = prompt("Điền đường dẫn", "http://");
    var enterTITLE = prompt("Điền tiêu đề cho đường dẫn", "My Webpage");

    if ( !enterTITLE ) 
	{
        enterTITLE = enterURL;
    }
    
    if ( enterURL != '' ) 
	{
        doInsert( "[url=" + enterURL + "]" + enterTITLE + "[/url]" , "", my_getbyid(formid) );
    }
}

function tag_img( formid )
{
    var FoundErrors = '';
    var enterIMG    = prompt("Điền đường dẫn tới file ảnh", "");
    
    if (enterIMG != '') 
	{
        doInsert( "[img]" +enterIMG+ "[/img]", "", my_getbyid(formid) );
    }
}