var marked_row = new Array;
var changing_wait = '<img src=/resource/system/images/waiting.gif border=0>';
var system_status = '';
var	g_callback_array = new Array();	
var g_av_encrypted = false;

function MakeNewAJAXCall(in_url, in_simple_callback, in_method, in_complex_callback, in_param, in_param2, in_timeout_callback, in_timeout_delay ){
	if(!in_method){
		in_method = "GET";
	}
	if(!in_timeout_delay){
		in_timeout_delay = 90;
	}
	var callback_index = 1;	
	
	while(g_callback_array[callback_index]&&(typeof(g_callback_array[callback_index])!='undefined')){callback_index++};

	g_callback_array[callback_index] = new Array();
	g_callback_array[callback_index]['request_callback'] = in_simple_callback;
	g_callback_array[callback_index]['request_method'] = in_method;
	g_callback_array[callback_index]['request_complex_callback'] = in_complex_callback;
	g_callback_array[callback_index]['request_param'] = in_param;
	g_callback_array[callback_index]['request_param2'] = in_param2;
	g_callback_array[callback_index]['timeoutcallback'] = in_timeout_callback;

	var funcbody = 'var index='+callback_index+';';
	funcbody += 'var stage=g_callback_array[index]["request_object"].readyState;\
				var resp="";\
				if((navigator.appName!="Microsoft Internet Explorer") || (stage==4)){\
					resp=g_callback_array[index]["request_object"].responseText\
					};\
				if(g_callback_array[index]["request_complex_callback"]){\
					g_callback_array[index]["request_complex_callback"](stage, resp, g_callback_array[index]["request_param"], g_callback_array[index]["request_param2"], index)\
					};\
				if((stage==4) && g_callback_array[index]["request_callback"]){\
					if ( g_av_encrypted ) {\
						resp = av_decrypt ( resp );\
						}\
					g_callback_array[index]["request_callback"](resp, g_callback_array[index]["request_param"], g_callback_array[index]["request_param2"])\
					};\
				if(stage==4){\
					if(g_callback_array[index]["timeout_t"]){clearTimeout(g_callback_array[index]["timeout_t"])};\
					g_callback_array[index]["request_object"]=null;\
					g_callback_array[index]["request_callback"]=null;\
					g_callback_array[index]["request_method"]=null;\
					g_callback_array[index]["request_complex_callback"]=null;\
					g_callback_array[index]["request_param"]=null;\
					g_callback_array[index]["callback"]=null;\
					g_callback_array[index]["timeoutcallback"]=null;\
					g_callback_array[index]=null;\
					}';

	var funcbodytimeout = 'var index='+callback_index+';';
	funcbodytimeout += 'if(g_callback_array[index]["request_object"]){g_callback_array[index]["request_object"].onreadystatechange=null;g_callback_array[index]["request_object"].abort()};\
						if(g_callback_array[index]["timeoutcallback"]){g_callback_array[index]["timeoutcallback"](g_callback_array[index]["request_param"], g_callback_array[index]["request_param2"],index)};\
						g_callback_array[index]["request_object"]=null;\
						g_callback_array[index]["request_callback"]=null;\
						g_callback_array[index]["request_method"]=null;\
						g_callback_array[index]["request_complex_callback"]=null;\
						g_callback_array[index]["request_param"]=null;\
						g_callback_array[index]["callback"]=null;\
						g_callback_array[index]["timeoutcallback"]=null;\
						g_callback_array[index]=null;';

	g_callback_array[callback_index]['callback'] = new Function (funcbody);
	
	g_callback_array[callback_index]['timeout_t'] = setTimeout(new Function (funcbodytimeout),(in_timeout_delay * 1000));
	
	var ret = null;
	if(CallXMLHTTPObject ( in_url, in_method, g_callback_array[callback_index]['callback'], callback_index )){
		ret = callback_index;
	}
	document.getElementById(in_param).innerHTML=changing_wait;
	return ret;
};


function CallXMLHTTPObject ( in_url, in_method, in_callback, in_index ) {

	try {
		var sVars = null;
		if ( in_method == "POST" ) {
			var rmatch = /^([^\?]*)\?(.*)$/.exec ( in_url );
			in_url = rmatch[1];
			sVars = unescape ( rmatch[2] );
		}
		g_callback_array[in_index]['request_object'] = MakeNewRequestObject();
		g_callback_array[in_index]['request_object'].open(in_method, in_url, true);

		if ( in_method == "POST" ) {
			g_callback_array[in_index]['request_object'].setRequestHeader("Method", "POST "+in_url+" HTTP/1.1");
			g_callback_array[in_index]['request_object'].setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		}
		g_callback_array[in_index]['request_object'].onreadystatechange = in_callback;
		g_callback_array[in_index]['request_object'].send(sVars);
		
		return true;
	} catch ( z ) {
	}
	
	return false;
};

function MakeNewRequestObject() {
	var	ret;
	if ( typeof XMLHttpRequest != 'undefined' ) {
		ret = new XMLHttpRequest();
	} else {
		if (typeof window.XMLHttpRequest != 'undefined') {
			ret = new XMLHttpRequest();
		} else {
				if (window.ActiveXObject) {
					if ( typeof dm_xmlhttprequest_type != 'undefined' ) {
						ret = new ActiveXObject(dm_xmlhttprequest_type);
					} else {
						var versions = ["Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
						for (var i = 0; i < versions.length ; i++) {
							try {
								ret = new ActiveXObject(versions[i]);
								if (ret) {
									dm_xmlhttprequest_type = versions[i];
									break;
								}
							}
							catch (objException) {
							};
						};
					}
			}
		}
	}
	
	return ret;
};

if (typeof SupportsAjax == 'undefined'){
	function SupportsAjax ( ) {
		var test_obj = MakeNewRequestObject();
		
		if ( test_obj ) {
			test_obj = null;
			return true;
			}
		
		test_obj = null;
		
		return false;
	};
}

if ( typeof SimpleAJAXCall == 'undefined' ){

	function SimpleAJAXCall ( in_uri, in_callback, in_method, in_param ) {
		if ( (typeof in_method == 'undefined') || ((in_method != 'GET')&&(in_method != 'POST')) ) {
			in_method = 'GET';
			}
		in_method = in_method.toUpperCase();
		if ( SupportsAjax() && (typeof in_uri != 'undefined') && in_uri && (typeof in_callback == 'function') ) {
			return MakeNewAJAXCall ( in_uri, in_callback, in_method, null, in_param );
			}
		else {
			return false;
			}
	}
}
function PMA_markRowsInit() {
    // for every table row ...
    var rows = document.getElementsByTagName('tr');
    for ( var i = 0; i < rows.length; i++ ) {
        if ( navigator.appName == 'Microsoft Internet Explorer' ) {
            // but only for IE, other browsers are handled by :hover in css
            rows[i].onmouseover = function() {
                this.className += ' hover';
            }
            rows[i].onmouseout = function() {
                this.className = this.className.replace( ' hover', '' );
            }
        }
        // Do not set click events if not wanted
        if (rows[i].className.search(/noclick/) != -1) {
            continue;
        }
        // ... and to mark the row on click ...
    }
}
window.onload=PMA_markRowsInit;
function row_dbclick(RowId)
{
	var ho = "#F08080";
	var r = gel('row_'+RowId);
	var m = gel('msg_'+RowId);
	if(r.style.backgroundColor)
	{
		r.style.backgroundColor='';
		m.checked=false;
	}else
	{
		r.style.backgroundColor=ho;
		m.checked=true;
	}
	IfAll();
}
function row_click_check()
{
	var s = getElementsByClassName(document,'*','icheck');
	var ho = "#F08080";
	for (var i=0;i<s.length;i++)
	{
		if(s[i].checked==true)
		{
			var RowId = s[i].id;
			RowId = RowId.replace(/msg_/,'');
			var r = gel('row_'+RowId);
			if(r.style.backgroundColor=='')
			{
				r.style.backgroundColor=ho;
			}
		}
	}
}
function fnDisplaySplashPage(table,type,sort,cata,page,ifield,ivalue)
{
	fileName = "main.php";
	if(ivalue==""){
		if(type=="add")
		{
			writeWin=window.open();
			writeWin.location.replace(fileName + "?table=" + table + "&type=" + type);
		}else{
			location.replace(fileName + "?table=" + table + "&type=" + type + "&sort=" + sort + "&ifield=" + ifield + "&catalog=" + cata + "&page=" + page);
		}
	}else{
		writeWin=window.open();
		writeWin.location.replace(fileName + "?table=" + table + "&type=" + type + "&ifield=" + ifield + "&" + ifield + "=" + ivalue);
	}
}
function fnDisplayCategoryPage(table,type,sort,cata,page,ifield,ivalue)
{
	fileName = "main.php";
	location.replace(fileName + "?table=" + table + "&type=" + type + "&sort=" + sort + "&ifield=ID&catalog=" + cata + "&page=" + page + "&xfield=" + ifield);
}
function openwin(pagename) {
 window.open (pagename, "Inwebsite Design", "height=600, width=600, toolbar=no, menubar=no, scrollbars=Yes, resizable=Yes, location=no, status=no")
}
function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all :
        oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];     
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}
function setForm() {
	var s = getElementsByClassName(document,'*','compulsory');
	for (var i=0;i<s.length;i++)
	{
		if(string_trim(s[i].value)=='')
 		{
 			alert(tms["field_compulsory_alert"]);
		 	s[i].focus();
		 	return false;
 		}
	}
	return true;
}
function iAsset(field)
{
	fileName = "/resource/assetmanager/assetmanager.php";
	writeWin=window.open();
	writeWin.location.replace(fileName + "?field=" + field);
}
function CheckAll()
{
	 var ho = "#F08080";
	
   for (var i=0;i<document.pageform.elements.length;i++)
   {
      var e = document.pageform.elements[i];
      if (e.type == 'checkbox' && e.name != 'allbox' && e.name != 'field_ids[]' && !e.disabled)
      {
      	e.checked = document.pageform.allbox.checked;
      	var t = e.id.split("_");
      	var r = gel('row_'+t[1]);
      	if(e.checked==true)
      	{
      		r.style.backgroundColor=ho;
      	}else
      	{
      		r.style.backgroundColor='';
      	}
      }
   }
}
function IfAll()
{
 if(document.pageform.allbox.checked){
  document.pageform.allbox.checked = document.pageform.allbox.checked&0;
 }
}
function imath(cmd)
{
 var sfields=''; var sid='';
 for (var i=0;i<document.pageform.elements.length;i++)
 {
   var e = document.pageform.elements[i]; 
   if (e.type == 'checkbox' && e.name != 'allbox' && e.checked == 1 ) 
   { 
		if(e.name == 'field_ids[]')
		{
			sfields = sfields + e.id.replace(/field_/,"") + '+';
		}
		if(e.name == 'message_ids[]')
		{
			sid = sid + e.id.replace(/msg_/,"") + '+';
		}
   }
 }
 if(sid==''||sfields=='')
 {
 	alert(tms["select_compulsory_alert"]);
 }else
 {
 	var ifield=gel('ifield');
 	var table=gel('table');
 	switch (cmd)
 	{
 		case "sum":
 		{
 			loadParams = 'action.php?action=imath&cmd='+ cmd +'&sfields=' + sfields + '&sid=' + sid +'&ifield='+ifield.value + '&table='+table.value;
 			doLoad(loadParams,popupResult,'');
 			break;
 		}
 		case "set":
 		{
 			var f=sfields.split("+");
			var set_value_promote = "Please input the value for field '" + f[0] +"' on selected records.";
			var set_value   = prompt(set_value_promote, "NULL");
			if(set_value)
			{
				if(set_value=="NULL")set_value='';
				loadParams = 'action.php?action=imath&cmd='+ cmd +'&sfields=' + sfields + '&sid=' + sid +'&ifield='+ifield.value + '&table='+table.value + '&set_value='+set_value;
				doLoad(loadParams,setReload,'');
			}
 			break;
 		}
 	}

 }
}
function action(cmd)
{
   var c = document.pageform.cmd;
   var f = document.pageform;
   c.value=cmd;
   if(cmd=='delete'||cmd=='copy'||cmd=='move')
   {
   	for (var i=0;i<document.pageform.elements.length;i++)
   	{
      var e = document.pageform.elements[i];
      if (e.type == 'checkbox' && e.name != 'allbox' && e.name != 'field_ids[]' && e.checked == 1 ) 
      { 
				f.submit();
				return true;
      }
   	}
   	alert(tms["no_item_selected"]);
   }else
   {
     f.submit();
     return true;
   }
}
function email_check(eid)
{
	var email = gel(eid);
	var emailPattern = /\w+@.+\..+$/;
	if (emailPattern.test(email.value)==false)
	{	
		alert(tms["invalid_email"]); 
		email.focus(); 
		return false;
	}
	return true;
}

function group_check(field,gid)
{
	var f = gel(field);
	var g = gel(field+'_'+gid);
	if(g.checked==true)
	{
		if(f.value.indexOf(gid+'_')!=0&&f.value.indexOf('_'+gid+'_')==-1)
		{
			f.value=sort_group_check(f.value+gid+'_');
		}
	}else
	{
		if(f.value.indexOf(gid+'_')==0)
		{
			f.value=sort_group_check(f.value.replace(gid+'_', ''));
		}else
		{
			if(f.value.indexOf('_'+gid+'_'))
			{
				f.value=sort_group_check(f.value.replace('_'+gid+'_', '_'));
			}
		}
	}
}
function sort_group_check(str)
{
	var group = str.split("_");
	group.sort(function(a,b){return a - b});
	var number=1;
	var new_str="";
	while(group[number])
	{
		new_str = new_str + group[number] + '_';
		number++;
	}
	return new_str;
}
function gel(a){return document.getElementById?document.getElementById(a):null;}
function searchcheck()
{
	var search_field = gel('search_field');
	if(search_field.value=='Selection')
	{
		alert(tms["search_field_alert"]);
		search_field.focus();
		return false;
	}
	var search_option = gel('search_option');
	if(search_option.value=='Selection')
	{
		alert(tms["search_option_alert"]);
		search_option.focus();
		return false;
	}
	var keywords = gel('keywords');
	k = string_trim(keywords.value);
	if(k==''||k=='')
	{
		alert(tms["search_keyword_alert"]);
		keywords.focus();
		return false;
	}
	document.getElementById('page').value=1;
  return true;
}
function string_trim(String)
{
	return (String.replace(/^\s+|\s+$/g,""));
}
function load_parent(table)
{
	group = gel('group');
	if(group.value)
	{
		loadParams = 'action.php?action=load_parent&table=' + table + '&group=' + group.value;
		doLoad(loadParams,writeHTML,'add_parent');
	}else
	{
	 add_parent = gel('add_parent');
	 add_parent.innerHTML="<select name='parent'><option value=''>Select group first</option></select>";
	}
}
function setSelect(table,sParent,sChild,cStart)
{
	if(gel(sParent).value)
	{
		if(sChild)
		{
			var sChildren = sChild.split("_");
			var num = 0;
			var randomnumber=Math.floor(Math.random()*10001);
			while(sChildren[num])
			{
				if(document.getElementById('select_'+sChildren[num])!=null)
				{
					loadParams = 'action.php?action=load_child&table=' + table + '&parent=' + gel(sParent).value + '&palias=' + load_alias(sParent) +  '&child=' + sChildren[num];
					loadParams = loadParams + '&randomnumber=' + randomnumber;
					changeChild(loadParams,'select_'+sChildren[num]);
					setGrandchildren(sChildren[num]);
				}else
				{
					if(document.getElementById('checkbox_'+sChildren[num])!=null)
					{
						gel(sChildren[num]).value='';
						loadParams = 'action.php?action=load_child&table=' + table + '&parent=' + gel(sParent).value + '&palias=' + load_alias(sParent) + '&child=' + sChildren[num] + '&type=checkbox';
						loadParams = loadParams + '&randomnumber=' + randomnumber;
						changeChild(loadParams,'checkbox_'+sChildren[num]);
					}
				}
				num++;
			}
		}
	}else
	{
		setGrandchildren(sParent);
	}
}
function setGrandchildren(sParent)
{
	if(document.getElementById(sParent+'_children')!=null)
	{
		var sChildren = gel(sParent+'_children').value.split("_");
		var num = 0;
		while(sChildren[num])
		{
			if(document.getElementById('select_'+sChildren[num])!=null)
			{
				document.getElementById('select_'+sChildren[num]).innerHTML='Choose \''+load_alias(sParent)+'\' value first!';
				
			}else
			{
				if(document.getElementById('checkbox_'+sChildren[num])!=null)
				{
					document.getElementById('checkbox_'+sChildren[num]).innerHTML='Choose \''+load_alias(sParent)+'\' value first!';
				}
			}
			setGrandchildren(sChildren[num]);
			num++;
		}
	}
}
function load_alias(field)
{
	if(gel('alias_'+field).value!=field)
	{
		return gel('alias_'+field).value;
	}else
	{
		return field;
	}
}
function load_tms_tags(mode,oid)
{
	var loadParams = "/resource/assetmanager/tmstags.php?mode="+mode;
	if(mode=='insert')
	{
		doLoad(loadParams,returnResult,oid);
	}else
	{
		doLoad(loadParams,writeHTML,oid);
	}
}
function doLoad(loadParams,doFunc,oid) 
{
	if(oid!='')	document.getElementById(oid).innerHTML = changing_wait;
	var randomnumber=Math.floor(Math.random()*10001);
	loadParams = loadParams + '&randomnumber=' + randomnumber;
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
		req.onreadystatechange = function() { 
        if (req.readyState==4)
            if (req.status==200)
                doFunc(req, oid);
    }
		req.open("GET", loadParams, true);
		req.setRequestHeader("Content-Type","text/html;charset=utf-8");
		req.send(null);
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");		
		if (req) {
			req.onreadystatechange = function(){ 
        if (req.readyState==4)
            if (req.status==200)
                doFunc(req, oid);
    	}
			req.open("GET", loadParams, true);
			req.setRequestHeader("Content-Type","text/html;charset=utf-8");
			req.send();
		}
	}	
}
function returnResult(req, oid)
{
	return req.responseText;
}
function writeHTML(req, oid) {
    document.getElementById(oid).innerHTML = req.responseText;
}
function popupResult(req, oid)
{
	alert(req.responseText);
}
function setReload(req, oid)
{
	if(req.responseText=="1")
	{
		window.location.reload();
	}else
	{
		alert(req.responseText);
	}
}
function urlencode( str ) {                                
  var histogram = {}, histogram_r = {}, code = 0, tmp_arr = [];
  var ret = str.toString();
  var replacer = function(search, replace, str) {
      var tmp_arr = [];
      tmp_arr = str.split(search);
      return tmp_arr.join(replace);
  };
  histogram['!']   = '%21';
  histogram['%20'] = '+';
  ret = encodeURIComponent(ret);
  for (search in histogram) {
      replace = histogram[search];
      ret = replacer(search, replace, ret) 
  }
  return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2) {
      return "%"+m2.toUpperCase();
  });
  return ret;
}

function SimpleCallback(in_text, in_param, in_param2){
	var	eDate = new Date();
	document.getElementById(in_param).innerHTML = in_text;
}       
function ComplexCallback(in_stage, in_text, in_param, in_param2, in_index){
	var	eDate = new Date();
	document.getElementById(in_param).innerHTML = in_text;
}
function changeChild(loadParams,oid){
	document.getElementById(oid).innerHTML=changing_wait;
	var	eDate = new Date();
	var index = MakeNewAJAXCall(loadParams, SimpleCallback, 'GET', ComplexCallback, oid, eDate.getTime(), TimeoutCallback, 10);
}
function TimeoutCallback(in_param, in_param2, in_index){
	alert ( tms["time_out"] + " ("+in_param+")" );
}

