

//-----ULITIES-----

function displayStore(url)
   {
      storeWindow = window.open(url, 'storeWindow');
      storeWindow.focus();
   }
   function display(link){
	window.open(link,'Windowblank');
	}  
function label()
 {			
		lable_name = lable_name[lable_name.length];   
}
 //------------------------------------------------------------------
function Trim(str)
{
    while((str.length > 0) && (str.charAt(0) == ' '))
	    str = str.substring(1,str.length);
    while((str.length > 0) && (str.charAt(str.length-1) == ' '))
	    str = str.substring(0,str.length-1);
    return str;
}
function displaylink(url)
{
    storeWindow = window.open(url, 'storeWindow');
    storeWindow.focus();
}
    
function Split(str, delim)
{
    var res = new Array();
	while(str.length > 0)
	{
	    var pos = (str+delim).indexOf(delim);
	    res[res.length] = str.substring(0, pos);
	    str = (pos == str.length)?"":str.substring(pos+delim.length);
	}
	return res;
}

function Merge(array, br)
{
	var s = "";
	for(var i=0;i<array.length;i++)
		s += ((i==0)?"":br)+array[i];
	return s;
}
	
function Replace(str, sold, snew)
{
	var pos = 0;
	while( (pos = str.indexOf(sold, pos)) >= 0)
	{
	    str = str.substring(0, pos)+snew+str.substring(pos+sold.length);
	    pos += snew.length;
	}
	return str;
}

function StartsWith(str, s)
{
	return (str.indexOf(s) == 0);
}
    
function EndsWith(str, s)
{
	return (str.indexOf(s)+s.length == str.length);
}

function IndexOf(array, elem)
{
	for(var i=0;i<array.length;i++)
		if(elem == array[i])return i;
	return -1;
}

//-----COOKIES-----//

function GetCookie(name, init)
{
		var pairs = Split(document.cookie, ";");
		for(var i=0;i<pairs.length;i++)
			if(StartsWith(Trim(pairs[i]), name+"="))
				return unescape(Trim(pairs[i]).substring(1+name.length));
		return init;
}

function SetCookie(name, value, expires) 
{
	var date = new Date();date.setYear(10+date.getYear());
	expires = ((expires == null)?date:expires);
	
    document.cookie = name + "=" + escape(value) + "; path=/; expires=" + expires.toGMTString();
}

function DelCookie(name) 
{
    	document.cookie = name + "=; expires=Thu, 01-Jan-70 00:00:01 GMT; path=/";
}

//-----IMAGES-----//

function SetImage(name, image_variable_name)
{
	var ojbImg = eval(image_variable_name);
	if( document.images[name] != null && ojbImg != null )
		document.images[name].src = ojbImg.src;
}

function LoadImages(image_urls)
{
	var image_array = new Array();
	for(var i=0;i<image_urls.length;i++)
		image_array[i] = GetImage(image_urls[i]);
	return image_array;
}

function GetImage(src)
{
	var img = new Image();
	for(var i=0;i<document.images.length;i++)
	{
		if(EndsWith(document.images[i].src, src))
		{
			img.src = document.images[i].src;
			return img;
		}
	}
	img.src = src;
	return img;
}

//----FORM SECURITY----//

function IsEmpty(field)
{
    field.value = Trim(field.value);
    return(field.value.length == 0);
}

function IsRequire(field)
{
	if(field.length)
	{	//select, checkbox group or radio group
		var i = 0;
		if(field.type)
		{	//select
			for(;(i < field.length)&&(!(field.options[i].selected && field.options[i].value.length) );i++);
		}
		else
			for(;(i < field.length)&&(!field[i].checked);i++);
		if(i < field.length)return true;
	}
	else
	{
		if( (field.type == 'checkbox')||(field.type == 'radio') )
		{
			if(field.checked) return true;
		}
		else if( (field.type == 'hidden') || (!IsEmpty(field)))return true;
	}
	return Warn((field.type)?field:field[0], "This is required field !");
}

function IsNumber(field)
{
	if(IsEmpty(field))return true;
	
    return (!isNaN(field.value))?true:Warn(field,"Value of this field must be a number !");
}

function IsEmail(field)
{
	if(IsEmpty(field))return true;
	
	var err = "Invalid email !\r\n\r\nThe email format is user@domain (Ex. john@yahoo.com)";
	var chars = ".@-_0123456789abcdefghijklmnopqrstuvxywz";
    for(var i=0;i<field.value.length;i++)
		if(chars.indexOf(field.value.toLowerCase().charAt(i)) < 0)return Warn(field, err);
	if( (field.value.indexOf(".") <= 0)||(field.value.indexOf("@") <= 0) )return Warn(field, err);
    return true;
}

function IsFile(field, file_types)
{
	if(IsEmpty(field))return true;
	
	var types = Split(file_types, ",");
	for(var i=0;(file_types != "*")&&(i<types.length);i++)
	{
		if(EndsWith(field.value, Trim(types[i])))break;
		if(i == types.length-1)
//			return Warn(field, "Accept file types, (*."+Replace(file_types, ",", ", *.")+") only !");
			 return Warn(field, "Chi chap thuan cac kieu file: (*."+Replace(file_types, ",", ", *.")+") !");

	}
    return (field.value.indexOf(":\\") == 1)?true:Warn(field,"Please click 'Browse...' button and choose a file for uploading.");
}    

function IsOverLength(field, max_chars)
{
	if(field.value.length > max_chars)
	{
		field.value = field.value.substring(0, max_chars);
		return (!Warn(field, 'Number of characters in this field must be less than '+max_chars));
	}
	return false;
}

function Warn(field, desc)
{
    alert(desc);
    field.focus();
    return false;
}

function IsEquals(field1, field2)
{
	return(Trim(field1.value) == Trim(field2.value))?true:Warn(field2,"Value of "+field1.name+" and value of "+field2.name+" must be equal !");
}

function IsRequires(form, fnames)
{
	var names = Split(fnames,",");
	for(var i=0;i<names.length;i++)
	{
		var field = eval("form."+Trim(names[i]));
		if(!IsRequire(field))return false;
	}
	return true;
}

function IsNumbers(form, fnames)
{
	var names = Split(fnames,",");
	for(var i=0;i<names.length;i++)
	{
		var field = eval("form."+Trim(names[i]));
		if(!IsNumber(field))return false;
	}
	return true;
}

function IsEmails(form, fnames)
{
	var names = Split(fnames,",");
	for(var i=0;i<names.length;i++)
	{
		var field = eval("form."+Trim(names[i]));
		if(!IsEmail(field))return false;
	}
	return true;
}

function IsFiles(form, fnames, file_types)
{
	var names = Split(fnames,",");
	for(var i=0;i<names.length;i++)
	{
		var field = eval("form."+Trim(names[i]));
		if(!IsFile(field, file_types))return false;
	}
	return true;
}

//-----SET FORM ELEMENTS-----//

VALUES_BREAK = ",";

function SetValue(field, values)
{
	if(field.length)
	{	//select, checkbox group or radio group
		if(field.type)
		{	//select
			SetSelect(field, values);
		}
		else
		{
			if(field[0].type == 'checkbox') SetCheckbox(field, values);
			else SetRadio(field, values);
		}
	}
	else
	{
		if( (field.type == 'checkbox')||(field.type == 'radio') ) field.checked = 1;
		else field.value = values;			
	}
}

function SetValues(form, names, values)
{
	for(var i=0;i<names.length;i++)
		SetValue(eval("form."+Trim(names[i])), values[i]);
}

function SetSelect(field, values)
{
	var array = Split(values, VALUES_BREAK);
    for(var i=0;i<field.length;i++)
	{
		field.options[i].selected = (IndexOf(array, field.options[i].value) != -1);
	}
}

function SetCheckbox(field, values)
{
    var array = Split(values, VALUES_BREAK);
    for(var i=0;i<field.length;i++)
		field[i].checked = (IndexOf(array, field[i].value) != -1);
}

function SetRadio(field, value)
{
    SetCheckbox(field, value);
}

//-----PROCESSING LIST OF CHECKBOXES-----//

function SelectItems(form, field_name, is_checked)
{
	var field = eval("form."+field_name);
	if(field != null)
	{
		if(field.length == null)
		{
			field.checked = is_checked;
		}
		else
		{
			for(var i=0;i < field.length;i++)
				field[i].checked = is_checked;
		}
	}
}

function PostItems(form, field_name, msg)
{
	var field = eval("form."+field_name);
	if(field != null)
	{
		var checked = false;
		if(field.length == null)
			checked = field.checked;
		else
			for(var i=0;(!checked) && (i < field.length);i++)checked = field[i].checked;
//		if(!checked)alert("No items selected. Please select one or more !");
		if(!checked)alert("Khong co muc nao duoc chon. Vui long chon it nhat mot muc!");
		else if( confirm(msg) )form.submit();
	}
} 

function NavigatorBar(page_no, page_count, submit_url)
{	//Use for subpaging data on multi pages
	if(page_count > 1)
	{
		document.writeln(
			"<font face='arial' color='#0000CC' size=2>",
			"	[<a href='"+submit_url+"&PageNo=0'><font face='Webdings' size=3>9</font></a>]",
			"	[<a href='"+submit_url+"&PageNo="+((page_no < 1)?0:page_no-1)+"'><font face='Webdings' size=3>7</font></a>]",
			"	[<font color='#FF0000'>"+(1+page_no)+"/"+page_count+"</font>]",
			"	[<a href='"+submit_url+"&PageNo="+((page_no+1>page_count-1)?(page_count-1):(page_no+1))+"'><font face='Webdings' size=3>8</font></a>]",
			"	[<a href='"+submit_url+"&PageNo="+(page_count-1)+"'><font face='Webdings' size=3>:</font></a>]",
			"</font>"
			);
	}
}

//-----WINDOW FUNCTIONS-----//

function OpenWindow(url, width, height)
{   
	win = ( (width == null || height == null)?window.open(url,"win","resizable=yes,scrollbars=auto"):
											  window.open(url,"win","resizable=yes,width="+width+",height="+height+",scrollbars=auto") ); 
	win.focus();
}

function CloseWindow() 
{
    opener.location.reload();
    window.close();
}

//-----DATE FUNCTIONS-----//

/*
* ShowDates(month, year [,from_year, to_year]) allow you display dates in (month, year)
* OnSelectDate(month, date, year) will be called when you select a date on the board.
* 
* The follow event handler all you to fill a date in text box.
* onlick="DATE_FIELD=this;ShowDates(month, date [,from_year, to_year]);"
*
*/

function wdate(d, m, y, color)
{
	if(d.length == 0)
		DATE_WIN.document.write("<td bgcolor=white><font color=white size=2>00</font></td>");
	else
		DATE_WIN.document.write("<td bgcolor=white><a href='javascript:opener.OnSelectDate("+m+", "+d+", "+y+");'><font color="+color+" size=2>"+((d.length == 1)?"0"+d:d)+"</font></a></td>");
}

function board(month, year)
{	
	var mm = month-1;
	var d = new Date();d.setMonth(mm);d.setDate(1);d.setYear((d.getYear() >= 1900)?year:(year+1900));
	var day = d.getDay();
	
	DATE_WIN.document.writeln("<table cellspacing=1 cellpadding=3>");
	for(var i=0;i<6;i++){
		DATE_WIN.document.writeln("<tr>");
		for(var j=0;j<7;j++){
			if((i == 0)&&(j < day))wdate("", month, year, 0);
			else{
				wdate((d.getMonth() == mm)?""+d.getDate():"", month, year, (j==0)?"red":(j==6)?"green":"blue");
				d.setDate(1+d.getDate());
			}
		}
		DATE_WIN.document.writeln("</tr>");
	}
	DATE_WIN.document.writeln("</table>");
}

function ShowDates(month, year, from_year, to_year)
{
	DATE_WIN = window.open("", "DATE_WIN", "width=150,height=165,scrollbars=no");
	DATE_WIN.document.close();
	DATE_WIN.document.write("<title>dates</title><body leftmargin=0 topmargin=0>");
	from_year = (from_year==null)?1900:from_year;
	to_year = (to_year==null)?2099:to_year;
	
	DATE_WIN.document.write("<form><table border=1 cellspacing=1 cellpadding=2 bordercolor=gray><tr><td bgcolor=#3366FF align=center><select name=month onchange='opener.ShowDates(this.value, "+year+", "+from_year+", "+to_year+")'>");
	for(var i=1;i<=12;i++)DATE_WIN.document.write("<option value="+i+" "+((i==month)?"selected":"")+">"+i);
	DATE_WIN.document.write("</select><select name=year onchange='opener.ShowDates("+month+", this.value, "+from_year+", "+to_year+")'>");
	for(var i=from_year;i<=to_year;i++)DATE_WIN.document.write("<option value="+i+" "+((i==year)?"selected":"")+">"+i);
	DATE_WIN.document.write("</select></td></tr><tr><td>");
	board(month, year);
	DATE_WIN.document.write("</td></tr></table></form>");
	DATE_WIN.focus();
}

DATE_FIELD = null;
function OnSelectDate(month, date, year)
{
	if(DATE_FIELD != null)DATE_FIELD.value = month+"/"+date+"/"+year;
	DATE_WIN.close();
}

//-----Row High Light-----//


var SELECTED_ROW = null;
var SELECTED_LOLOR = "#CACACA";

var PREVIOUS_ROW = null;
var PREVIOUS_LOLOR = null;

var SELECTED_COLORS = new Array(  "D1EFFF");

function getRandColor()
{
	setTimeout("getRandColor()", 5000);
	SELECTED_LOLOR = SELECTED_COLORS[Math.round(SELECTED_COLORS.length*Math.random())];
}
getRandColor();

function MouseOver(objRow)
{
	HighLightRow(objRow);
}

function MouseOut(objRow)
{
	if(SELECTED_ROW)
		MouseOver(SELECTED_ROW);
	else
		objRow.style.backgroundColor = PREVIOUS_LOLOR;
}

function MouseClick(objRow)
{
	MouseOver(objRow);
	SELECTED_ROW = objRow;
}

function HighLightRow(objRow)
{
	if(objRow)
	{
		PREVIOUS_LOLOR = objRow.style.backgroundColor;
		objRow.style.backgroundColor = SELECTED_LOLOR;
		if(PREVIOUS_ROW)PREVIOUS_ROW.style.backgroundColor = PREVIOUS_LOLOR;
		PREVIOUS_ROW = objRow;
	}
}
