﻿// ajax.js
// S D'Agostino
// 17 July 2008

function DoAjax(doWhat, el, div, catID)
{
    var val;
    var saveData = '';
    var page_request = false;
	var date = new Date();	var timestamp = date.getTime();
	var ajaxURL = 'ajax/ajax.aspx?';
	var cat = "X";
	
    switch (doWhat)
    {
        case 'GetCats':
            val = document.getElementById(el).value;
            if (val == 'X') { return false; }
            break;
            
        case 'SaveNew':
            val = 'NULL';  //data arr in string
            saveData = el;
            break;
            
        case 'SaveEdit':
            val = 'NULL';  //data arr in string
            saveData = el;
            break;
            
        case 'GetRes':
            val = el;
            
            //alert(el + div);//return;
            break;
            
        case 'DelRes':
            val = el;
            cat = catID;
            break;
            
        case 'EditRes':
            val = el;
            cat = catID;
            break;
            
        default:
            alert('doWhat not found!');
            return false;
            break;    
    }
        	
	var arr = {
		'dowhat' : doWhat,
		'val' : val,
		'catID' : cat,
		'time' : timestamp
	}
	document.getElementById(div).innerHTML = "please wait...";
	var data = ued_encode(arr);
	
	if (window.XMLHttpRequest) // if Mozilla, Safari etc
			page_request = new XMLHttpRequest()
	else if (window.ActiveXObject){ // if IE
		try {
			page_request = new ActiveXObject("Msxml2.XMLHTTP")
		}
		catch (e){
			try{
				page_request = new ActiveXObject("Microsoft.XMLHTTP")
			}
			catch (e){
				alert('sorry, your browser does not support ajax - please upgrade to a newer version');
			}
		}
	}else return false

	page_request.onreadystatechange=function(){
		if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
			var return_array = page_request.responseText.split(",");
			document.getElementById(div).innerHTML = return_array;
		}	
	}
	
	strUrl = ajaxURL + data + '&' + saveData;
	
	//alert(strUrl)
	//document.write(strUrl);
	page_request.open('GET', strUrl, true);
	page_request.send(null);
}
// show the text boxes etc
function ShowTextBoxes()
{
    //alert(document.getElementById("maintype").value);
    if (document.getElementById("cat").value == 'X')
    { 
        document.getElementById("admin-textboxes").style.display = 'none';
    }
    else
    {
        document.getElementById("admin-textboxes").style.display = 'block';
    }
}
//GetObject the resourve==ce list for alert given category - called in sdagALN.cs
function PopulateResource(obj)
{
    DoAjax('GetRes', obj.value, 'content-right');
    ShowTextBoxes();
}

function DelResource(catID, resID)
{
    var answer=  confirm ("This will delete this resource from the system - this action cannot be undone\n Do you wish to delete?");
    if (answer != 1 ) return false;	
    DoAjax('DelRes', resID, 'content-right', catID); 
}

/////////////////

function EditResource(catID, resID)
{
    document.getElementById("admin-textboxes").style.display = 'none';
    DoAjax('EditRes', resID, 'content-right', catID);
}
function CancelEdit(catID, resID)
{
    document.getElementById("admin-textboxes").style.display = 'block';
    DoAjax('GetRes', catID, 'content-right');
}
function SaveEdit(catID, resID, resType)
{
    var resURL = '';
    var resName = ValidateForm('editName', 'Please enter a name'); if (!resName) return false;
    var resDesc = ValidateForm('editDesc', 'Please enter a description'); if (!resDesc) return false;
    if (resType == 1) //link do check url
    {
        if (isValidURL(document.getElementById('editURL').value)) { resURL = encodeURIComponent(trim(document.getElementById('editURL').value)); }
        else { alert('Please enter a valid URL\n e.g http://ellp.net or www.ellp.net'); return false; }
    }
    var arr = {
		'resCatID' : catID,
		'resID' : resID,
		'resName' : resName,
		'resDesc' : resDesc,
		'resUrl' : resURL,
		'resType' : resType
	    }
	
    var data = ued_encode(arr);
    //alert(data);
    DoAjax('SaveEdit', data, 'content-right');
}

/////////////////

function ShowLink()
{
    var resName = ValidateForm('resName', 'Please enter a name'); if (!resName) return false;
    var resDesc = ValidateForm('resDesc', 'Please enter a description'); if (!resDesc) return false;
    document.getElementById("admin-url").style.display = 'block';
    document.getElementById("admin-browse").style.display = 'none';
}

function ShowUpload()
{
    var resName = ValidateForm('resName', 'Please enter a name'); if (!resName) return false;
    var resDesc = ValidateForm('resDesc', 'Please enter a description'); if (!resDesc) return false;
    document.getElementById("admin-url").style.display = 'none';
    document.getElementById("admin-browse").style.display = 'block';     
}

// Save a new resource
function SaveResource(resTypeID)
{
    //alert(resTypeID);return false;
    var resURL = 'x';
    var resType = resTypeID;
    var catID = document.getElementById('cat').value;
    var resName = ValidateForm('resName', 'Please enter a name'); if (!resName) return false;
    var resDesc = ValidateForm('resDesc', 'Please enter a description'); if (!resDesc) return false;
    if (!document.getElementById('resRadio').checked && !document.getElementById('upRadio').checked) { alert('Please select \'link\' or \'upload\' '); return false; }
    if (document.getElementById('resRadio').checked) //chk url
    {
        resType = 'link';
        if (isValidURL(document.getElementById('resURL').value)) { resURL = encodeURIComponent(trim(document.getElementById('resURL').value)); }
        else { alert('Please enter a valid URL\n e.g http://ellp.net or www.ellp.net'); return false; }
    }
   
    var arr = {
		'resCatID' : catID,
		'resName' : resName,
		'resDesc' : resDesc,
		'resUrl' : resURL,
		'resType' : resType
	    }
	
    var data = ued_encode(arr);
    //alert(data);
    DoAjax('SaveNew', data, 'content-right');
}


//Misc Functs

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}

function ued_encode(arr,current_index) {
	var query = ""
	if(typeof current_index=='undefined') current_index = '';

	if(typeof(arr) == 'object') {
		var params = new Array();
		for(key in arr) {
			var data = arr[key];
			var key_value = key;
			if(current_index) {
				key_value = current_index+"["+key+"]"
			}

			if(typeof(data) == 'object') {
				if(data.length) { //List
					for(var i=0;i<data.length; i++) {
						params.push(key_value+"[]="+ued_encode(data[i],key_value)); //:RECURSION:
					}
				} else { //Associative array
					params.push(ued_encode(data,key_value)); //:RECURSION:
				}
			} else { //String or Number
				params.push(key_value+"="+encodeURIComponent(data));
			}
		}
		query = params.join("&");
	} else {
		query = encodeURIComponent(arr);
	}

	return query;
}
/*Validation    */

//validation
function ValidateForm(element, errmsg, type){
	var validate = (trim(document.getElementById(element).value) != "" && document.getElementById(element).value != null) ? 
			encodeURIComponent(trim(document.getElementById(element).value)) : 'x';
	if (validate == 'x') {
		alert(errmsg);
		document.getElementById(element).focus();
		return false;
	}
	else {
		return 	validate;
	}
}
//email validation
function validate_email(field,alerttxt)
{
	with (field)
	{
		apos = value.indexOf("@");
		dotpos = value.lastIndexOf(".");
		if (apos<1||dotpos-apos<2) 
	  		{alert(alerttxt);field.focus(); return false;}
		else {return true;}
	}
}
//url validation
function isValidURL(url){
 
    var RegExp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/;
    if(RegExp.test(url)){
        return true;
    }else{
        return false;
    }
} 

//date validation - lets through 31 where not allowed!
function validateDate(fld) {
	 
    var RegExPattern = /^([1-9]|0[1-9]|[12][0-9]|3[01])\D([1-9]|0[1-9]|1[012])\D(19[0-9][0-9]|20[0-9][0-9])$/;
    var errorMessage = 'Please enter valid date as day, month, and four digit year.\nYou may use a slash, hyphen or period to separate the values.\n\nFormat dd/mm/yyyy.';
    if ((fld.value.match(RegExPattern)) && (trim(fld.value)!='')) {
        //alert('Date is OK'); 
        return true;
    } else {
        alert(errorMessage);
        fld.focus();
        return false;
    } 
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function setbg(who, color)
{
    var txtcolor = '';
    var fontcolor = '';
    switch (color)
    {
        case 'in':
            txtcolor = 'white';
            fontcolor = '#000000';
            break;
        
        case 'out':
            txtcolor = '#363839';
            fontcolor = '#ffffff';
            break;
        
        default:
            txtcolor = '#363839';
            fontcolor = '#000000';
    } 
    document.getElementById(who).style.background = txtcolor;
    document.getElementById(who).style.color = fontcolor;
}
