// JavaScript Document

// validation of the file


    function validate_file(form, file, extArray) {
		allowSubmit = false;
		if (!file) return;
		while (file.indexOf("\\") != -1)
		file = file.slice(file.indexOf("\\") + 1);
		ext = file.slice(file.lastIndexOf(".")).toLowerCase();
		for (var i = 0; i < extArray.length; i++) {
			if (extArray[i] == ext) { allowSubmit = true; break; }
		}
		if (allowSubmit) return true;
		else
		return false;
    }


function get_page_name() {
	var sPath = window.location.pathname;
	//var sPage = sPath.substring(sPath.lastIndexOf('\\') + 1);
	var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
	return sPage;
}

function edit_records(element, id, args) {
	url = get_page_name();
	url += '?edit=true&id='+id+args;
	//alert(url);
	showresults(url, element, 1);
}


function populate_on_edit(arr, theform, editid) {
	clear_form(theform, 1);
	var fld;
	var pre_id = theform.name.substr(2, 4);
	var textarea_val;
	//alert(pre_id);
	for(key in arr) {
		textarea_val = 0;
		eval("fld=theform."+key);
		if(fld.type == 'text') {
			fld.value = arr[key];
		}
		
		if(fld.type == 'textarea') {
			//arr[key] = arr[key].replace(/<br \/>/g, '\n');
			evaluate = 'textarea_val = '+fld.name+'_F;';
			eval(evaluate);
			if(textarea_val == 1) {
//				
				var fldname = fld.name;
				//FCKeditorAPI.GetInstance(fldname).SetHTML(arr[key]);
				tinyMCE.get(fldname).setContent(arr[key]);
			} else {
				arr[key] = arr[key].replace(/<br \/>/g, '\n');
				//fld.style.backgroundColor="#FFFFFF";
				fld.value = arr[key];
			}
		}
		
		var multiList;
		eval("multiList=theform."+key+"_mlist");
		
		if(multiList && multiList.type == 'select-multiple') {
			var to_list;
			selected_list = arr[key].split(',');
			parent_list = multiList.name.replace(/_mlist/g, '_list1');
			eval("parent_list=theform."+parent_list);
/*			parent_list[0].selected = true;
			return false;
*/			for(u=0; u < parent_list.length; u++) {
				if(selected_list.indexOf(parent_list[u].value) != -1) {
					parent_list[u].selected = true;
				}
			}
			moveSelectedOptions(parent_list, multiList,true,'');
		}
		
		if(fld.type == 'select-one') {
			//arr[key] = escape(arr[key]);
			
			if(arr[key].listing) {
				document.getElementById(pre_id+key).options.length = 0;
				add_Option(pre_id+key, '', '-- Select --');
				for(var l in arr[key].listing) {
					var selected = false;
					if(arr[key].values == l) {
						selected = true;
					}
					add_Option(pre_id+key, l, arr[key].listing[l], selected);
				}
			} else {
				var id_val = arr[key].replace(/'/g, 'SQ');
				// the below replacement is done for the single quote and double quote replave if it becomes the values of the list
				id_val = id_val.replace(/"/g, 'DBQ');
				id_val = id_val.replace(/ /g, '');
				//alert(id_val);
				if(arr[key] != 0 && document.getElementById(theform.name+'_'+fld.name+'_'+id_val)) {
					document.getElementById(theform.name+'_'+fld.name+'_'+id_val).selected=true;
				}
			}
		}
		if(fld.type == 'file') {
			if(arr[key] != '' && document.getElementById(theform.name+'_'+key)) {
				document.getElementById(theform.name+'_'+key).innerHTML = 'Existing file: <strong>'+arr[key]+'</strong>';
			}
		}
		if(document.getElementById(pre_id+key)) {
			if(document.getElementById(pre_id+key).type == 'checkbox') {
				if(arr[key] == 1) {
					document.getElementById(pre_id+key).checked = true;
				}
			}
		}
	}
	if(theform.edit_id) {
		theform.edit_id.value = editid;
		//alert (theform.edit_id.value);
	}
}


  function add_Option(selectId, val, txt, selected) {
	  var debug = 0;
	  if(debug == 1) {
		  alert(selectId);
		  alert(val);
		  alert(txt);
	  }
	  if(selected == null) {
			selected == false;  
	  }
   	 var objOption = new Option(txt, val, true, selected);
     document.getElementById(selectId).options.add(objOption);
   }

function submitonce(theform, flag){
	//if IE 4+ or NS 6+
	if (document.all||document.getElementById){
		//screen thru every element in the form, and hunt down "submit" and "reset"
		for (i=0;i<theform.length;i++){
			var tempobj=theform.elements[i]
			if(tempobj.type.toLowerCase()=="submit"||tempobj.type.toLowerCase()=="reset" ||tempobj.type.toLowerCase()=="button")
			//disable em
			tempobj.disabled=flag
		}
	}
}

function validate_special_chars(element) {
	var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
	
	for (var i = 0; i < document.getElementById(element).value.length; i++) {
		if (iChars.indexOf(document.getElementById(element).value.charAt(i)) != -1) {
			//alert ("Your username has special characters. \nThese are not allowed.\n Please remove them and try again.");
			return false;
		}
	}
	return true;
}

function IsNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
			 IsNumber = false;
         }
      }
   return IsNumber;
   
}

function check_max_length(value, len) {
	if(value.length != len) {
		return false;	
	} else {
		return true;	
	}
}

// the below functioin works only for the dropdown / list box

function get_selected_value(element) {
	var opt = document.getElementById(element).selectedIndex;					
	return document.getElementById(element).options[opt].value;	
}

	function checkEmail(email) {
		if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(document.getElementById(email).value)){
			//alert("valid E-mail Address! Please re-enter.")
			return true;
		} else {
			//alert("Invalid E-mail Address! Please re-enter.")
			return false;
		}
	}
	
//																							NOTE: THIS ACTION IS FROM WHAT TO DO FROM PHP
function form_validate(theform, element, url, updateurl, update_element, errcode, mandatory, action, error_type, args, is_ajax) {
	var i;
	var j;
	var pre_id = theform.name.substr(2, 4);
	var textarea_val;
		if(document.getElementById(element)) {
			document.getElementById(element).innerHTML = '<span style="width:200px; padding:3px; font-weight:bold" class="test1">Validating Form.. Please Wait....</span>';
		}
	if (document.all||document.getElementById){
		//submitonce(theform, true);
		var params = '';
		var flag = 0;
		var error = 0;
		var catch_code;
		var trigger_submit = 1;
		var multilist='';
		var frm_values;
		var frm_name;
		if(is_ajax) {
			trigger_submit = 0;
		}
		for(i = 0; i < theform.length; i++) {
			error = '';
			frm_values = null;
			frm_name = theform[i].name;
			if(theform[i].type != 'submit' && theform[i].type != 'reset' && theform[i].type != 'button' && theform[i].type != 'hidden' && theform[i].name.indexOf('_list1') == -1){
				if(theform[i].type.substr(0, 6) == 'select') {
					if(theform[i].size > 1) {
						frm_name = theform[i].name.replace(/_mlist/g, '');						
						for(z=0; z < theform[i].length; z++) {
							multilist = multilist+theform[i][z].value+',';
						}
						multilist = multilist.substr(0, multilist.length-1);
						frm_values = ','+multilist+',';
					} else {
						var opt = document.getElementById(theform[i].id).selectedIndex;	
						frm_values = document.getElementById(theform[i].id).options[opt].value;
					}
				}
				if(theform[i].type == 'textarea') {
					evaluate = 'textarea_val = '+theform[i].name+'_F;';
					eval(evaluate);
					if(textarea_val == 1) {
						frm_values = escape(tinyMCE.get(theform[i].name).getContent());
					}
				}
				if(theform[i].type == 'checkbox') {
					if(!theform[i].checked) {
						frm_values = 0;
					}
				}
				if(theform[i].type == 'file') {
					//trigger_submit = 1;
				}
					catch_code = -1;
					for(j=0; j < mandatory.length;j++) {
						if(frm_values == null) {
							frm_values = theform[i].value;
						}
						if(mandatory[j] == theform[i].name) {
							if(frm_values == '' && theform[i].disabled==false && error_type[j] == 1 && (theform.edit_id.value == 0 || theform[i].type != 'file' && theform[i].type != 'password')) {								
								catch_code = j;	
								break;
							} else if(error_type[j] == 4 && frm_values != '') {
								if(!checkEmail(theform[i].id)) {
									catch_code = j;	
									break;
								}
							} else if(error_type[j] == 3 && frm_values != '') {
								if(!validate_special_chars(theform[i].id)) {
									catch_code = j;	
									break;
								}
							} else if(error_type[j] == 2 && frm_values != '') {
								if(!IsNumeric(frm_values)) {
									catch_code = j;	
									break;
								}
							} else if(error_type[j] == 5 && frm_values != '') {
								if(frm_values != document.getElementById(pre_id+theform[i].name+'_compare').value) {
									catch_code =  j;
									break;
								}
							} else if(error_type[j] == 6 && frm_values != '') {
								if(!validate_file(theform, frm_values, errcode[j].split(','))) { 
									catch_code = j;
									break;
								}
							}
						}
					}
					if(catch_code != -1) {
						if(error_type[j] == 6) {
							error = 'Allowed extensions are '+errcode[catch_code];
						} else {
							error = errcode[catch_code];
						}
					}
					
					if(error != 0) {
						flag = 1;
						
						//alert(error);
						if(document.getElementById('e_'+theform.name+'_'+theform[i].name)) {
							document.getElementById('e_'+theform.name+'_'+theform[i].name).style.height = '';
							document.getElementById('e_'+theform.name+'_'+theform[i].name).innerHTML = '<font color="#FF0000">'+error+'</font>';
						}
					} else {
						//alert(theform.name+'_'+theform[i].name);
						if(document.getElementById('e_'+theform.name+'_'+theform[i].name)) {
							document.getElementById('e_'+theform.name+'_'+theform[i].name).style.height = '0px';
							document.getElementById('e_'+theform.name+'_'+theform[i].name).innerHTML = '&nbsp;';
						}
					}
					
					if(theform[frm_name].type != 'file') {
						theform[frm_name].value = frm_values;	
					}
					if(trigger_submit != 1) {						
						params += frm_name+'='+frm_values+'&';
					}
		}
	}
		if(flag == 1) {
			submitonce(theform, false);
			if(document.getElementById(element)) {
				document.getElementById(element).innerHTML = '<span style="width:200px; padding:3px; font-weight:bold" class="test1">Error During Validation</span>';
			}
			return false;
		} else {
			err_message = 'Record Added Sucessfully';
			//alert(trigger_submit);
			if(trigger_submit != 1) {
				if(theform.edit_id.value != 0 && theform.edit_id.value != '') {
					action = 'edit';	
				}
				params += 'theform='+theform.name;
				params += '&ajax=1&action='+action;
				params += '&edit_id='+theform.edit_id.value;
				params += args;
				var p = new jajax(url);
				if(!document.getElementById(element)) {
					p.show_status = false;	
				}
				p.script = true;
				p.post(params);
				return false;
				//postvalues(url, element, params, updateurl, update_element, err_message, theform);
			} else {
				theform.submit();
				return false;
			}
			form_name = theform;
			submitonce(theform, false);
			return false;
		}
}
}


function clear_form(theform, dont_focus, args) {
	var textarea_val;
	var check_lbox;
	textarea_val = 0;
	if(args != null) {
		back_to_view(args);
	}
	for(k = 0; k < theform.length; k++) {
		//alert(theform[k].type);
		if(theform[k].type != 'submit' && theform[k].type != 'reset' && theform[k].type != 'button' && theform[k].type != 'hidden'){
			if(document.getElementById('e_'+theform.name+'_'+theform[k].name)) {
				document.getElementById('e_'+theform.name+'_'+theform[k].name).innerHTML = '';
				document.getElementById('e_'+theform.name+'_'+theform[k].name).style.height = '0px';
			}
			if(theform[k].type == 'textarea') {
				evaluate = 'textarea_val = '+theform[k].name+'_F;';
				eval(evaluate);
				if(textarea_val == 1) {
					var fldname = theform[k].name;
					//FCKeditorAPI.GetInstance(fldname).Commands.GetCommand('NewPage').Execute();
					tinyMCE.get(theform[k].name).setContent('');
				}
			} else if(theform[k].type == 'checkbox') {
				theform[k].checked = false;	
			} else if(theform[k].type == 'select-multiple') {
				check_lbox = theform[k].name.indexOf('_list1');
				if(check_lbox != -1) {
					list2 = theform[k].name.replace(/_list1/g, '_mlist');
					eval("list2=theform."+list2);
					moveAllOptions(list2, theform[k],true,'');
				}
			}
			if(theform[k].type != 'checkbox') {
				theform[k].value = '';
			}
		}
	}
	theform.edit_id.value=0;
	if(dont_focus != 1) {
		//if(theform[0]) {
			//theform[0].focus();
		//}
		//document.getElementById('status_'+theform.name).innerHTML = '';
	}
	form_name = '';
}

function back_to_view(args) {
	var vals = args.split('&');
	var i;
	var params = new Array();
	for(i = 0; i < vals.length; i++) {
		temp = vals[i].split('=');
		if(temp[0] != '') {
			params[temp[0]] = temp[1];
		}
	}
	var tab_id = params['tab_id'];
	tab_id = parseInt(tab_id);
	tab_id = tab_id + 1;
	expandtab('maintab', tab_id);
}

//var mandatory = [];
//var errors = [];


// ---------------------------------------------------------------------------------- 

// AJAX

var xmlHttp;
var debug2 = 0;
function postvalues(url, element, params, updateurl, update_element, errmessage, theform) {
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  } 
  //params = unescape(params);
	xmlHttp.open("POST",url,true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", params.length);
	xmlHttp.setRequestHeader("Connection", "close");
  
/*	var url="getresults.php";
	url = url+'?id='+str;
	url = url+'&act='+act;
*/	xmlHttp.onreadystatechange=function() {
/*		if (xmlHttp.readyState==1)
		{ 
			//document.getElementById(element).innerHTML='<strong>Loading..</strong><img src="http://learntobewell.org/images/loading3.gif" width="20" height="20">';
		}
*/
if(errmessage == null) {
	errmessage = '<span style="width:200px; padding:3px;" class="test2">Record Added Successfully</span>';
}
		if (xmlHttp.readyState==4)
		{ 
			document.getElementById(element).innerHTML='<span style="width:200px; padding:3px;" class="test2">'+errmessage+'</span>';
			//document.frames['content___Frame'].FCKCommands.GetCommand('NewPage');
			if(xmlHttp.responseText != '') {
				if(debug2 == 1) {
					alert(element);
					document.getElementById(element).innerHTML='<span style="width:200px; padding:3px;" class="test2">'+xmlHttp.responseText+'</span>';
				} else {
					//alert('going to eval');
					eval(xmlHttp.responseText);
				}
			}			
			if(updateurl != null) {
				showresults(updateurl, update_element);
			}
		}
	}
	xmlHttp.send(params);
}

function showresults(url, act, iseval)
{ 
var debug = 1;
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  } 
  
  		if(iseval == null) {
			iseval = 0;	
		}

/*	var url="getresults.php";
	url = url+'?id='+str;
	url = url+'&act='+act;
*/	xmlHttp.onreadystatechange=function() {
		if (xmlHttp.readyState==1 && iseval == 0)
		{ 
			//DisableEnableForm(document.form1, true);

			document.getElementById(act).innerHTML='<span style="width:200px; padding:3px;" class="test1"><strong>Loading..</strong></span>';
		}
		
		
		if (xmlHttp.readyState==4)
		{ 
			//DisableEnableForm(document.form1, false);
			if(iseval == 0) {
				document.getElementById(act).innerHTML=xmlHttp.responseText;
			} else {
				if(debug2 == 1) {
					document.getElementById(act).innerHTML = '<span style="width:200px; padding:3px;" class="test2">'+xmlHttp.responseText+'</span>';
				} else {
					eval(xmlHttp.responseText);
					document.getElementById(act).innerHTML = '<span style="width:200px; padding:3px;" class="test2">Successful...</span>';
				}
			}
			
		}
	}
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function GetXmlHttpObject()
{
var xmlHttp=null;
try
  {
  // Firefox, Opera 8.0+, Safari
  xmlHttp=new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
  try
    {
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e)
    {
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
return xmlHttp;
}



