// web2.js
// need prototype javascript library


// verified functions
var uid=0;
var ulog='guest';
var uname='Guest';

var checkedItems=Array();

function toggleCheck(item, checked){
	if (checked) {
		checkedItems=checkedItems.without(item);
		checkedItems.push(item);
	}else {
		checkedItems=checkedItems.without(item);
	}
}

function checkAll(){
	var items=$('thisForm').getInputs('checkbox','items');
	items.each(function(item) {
		item.checked=true;
		toggleCheck(item.value,item.checked);
	});
}

function uncheckAll(){
	var items=$('thisForm').getInputs('checkbox','items');
	items.each(function(item) {
		item.checked=false;
		toggleCheck(item.value,item.checked);
	});
}

function invertCheck(){
	var items=$('thisForm').getInputs('checkbox','items');
	items.each(function(item) {
		item.checked=!item.checked;
		toggleCheck(item.value,item.checked);
	});
}

function notify(str) {
	 if($("message")) {
		$("message").innerHTML=str;
		$("message").className="message notification";
	 }
	 else 
		$("message").className="";
}

function warn(str) {
	 if($("message")) {
		$("message").innerHTML=str;
		$("message").className="message error";
	 }
	 else 
		$("message").className="";
}

// unverified functions

function sortBy(field) {
	if(!$("sortBy")) return false;
	if(!$("sortOrder")) return false;

	if($F("sortBy")==field) {
		$("sortOrder").value=($F("sortOrder")=="asc")?"desc":"asc";
	} else {
		$("sortBy").value=field;
	}
	new Ajax.Updater('message', ".", {
		method:'post',
		parameters:"sort="+field});

	loadData();
	return false;
}

function setDataSize(x) {
	if(!$("pageSize")) return false;
	
	$("pageSize").value=x;
	new Ajax.Updater('message', ".", {
		method:'post',
		parameters:"ps="+x});

	loadData();
	return false;
}

function setPageNo(page) {
	if(!$("pageNo")) return false;

	$("pageNo").value=page;
	new Ajax.Updater('message', ".", {
		method:'post',
		parameters:"pn="+page});
	return false;
}


function viewData(id) {
	loadRecord(id);
	return false;
}

function editData(id) {
	loadRecord(id);
	return false;
}


function deleteData(id) {
	new Ajax.Request("delete/", {
		method:'post',
		parameters:"id="+id,
		onLoading: function(){
				if(!$("message")) $("message").innerHTML="deleting data";
			},
		onSuccess: function(transport){
			var response = transport.responseText;
			if(response=='') {
				if(!$("message")) $("message").innerHTML="data has been deleted";
				location.replace('.');
			}
			else
				if(!$("message")) $("message").innerHTML=response;
			},
		onFailure: function() {
			if(!$("message")) $("message").innerHTML="delete data failed due to communication loss with web service";
		}
	});
	return false;
}

function nextPage() {
	if(!$("pageNo")) return false;
	if($("pageNo").value==$("numPages").innerHTML) return false;

	$("pageNo").value++;
	$("currPage").innerHTML=$F("pageNo");

	new Ajax.Updater('message', ".", {
		method:'post',
		parameters:"pn="+$F("pageNo")});
	updateDataNavigation();

	loadData();
	return false;
}

function prevPage() {
	if(!$("pageNo")) return false;
	if($("pageNo").value==1) return false;
	$("pageNo").value--;
	$("currPage").innerHTML=$F("pageNo");
	new Ajax.Updater('message', ".", {
		method:'post',
		parameters:"pn="+$F("pageNo")});
	updateDataNavigation();

	loadData();
	return false;
}

function firstPage() {
	if(!$("pageNo")) return false;
	$("pageNo").value=1;
	$("currPage").innerHTML=$F("pageNo");
	new Ajax.Updater('message', ".", {
		method:'post',
		parameters:"pn="+$F("pageNo")});
	updateDataNavigation();

	loadData();
	return false;
}

function lastPage() {
	if(!$("pageNo")) return false;
	$("pageNo").value=$("numPages").innerHTML;
	$("currPage").innerHTML=$F("pageNo");
	new Ajax.Updater('message', ".", {
		method:'post',
		parameters:"pn="+$F("pageNo")});

	updateDataNavigation();
	loadData();
	return false;
}

function updateDataNavigation(){
	if(!$("pageNo")) return false;
	if($F("pageNo")==1) {
		$("prevPage").className="disabled";
		$("firstPage").className="disabled";
	} else {
		$("prevPage").className="";
		$("firstPage").className="";
	}
	if($F("pageNo")==$("numPages").innerHTML) {
		$("nextPage").className="disabled";
		$("lastPage").className="disabled";
	} else {
		$("nextPage").className="";
		$("lastPage").className="";
	}
}



function searchRecords(q) {
   new Ajax.Request('.', {
		method:'post',
		parameter:'search='+q,
		onSuccess: function(transport) {
			// refresh data
			if($F("searchText")=="") {
				$("search").show();
				$("clear_search").hide();
			} else {
				$("clear_search").show();
			};
		},
		onFailure: function() {
			if($("message")) $("message").innerHTML="can not connect to web services";
		}
		});
}








    function goBack() {
        if(!confirm('back to main data?')) return false;
        activateForm('overview');
    }

    function viewRecord(id) {
        activateForm('view');
        loadRecord(id);
    }
    function editRecord(id) {
        activateForm('edit');
        loadRecord(id);
    }

    function activateForm(frm){
		if($("message")) {
			$("message").innerHTML="";
			$("message").className="";
		}
        switch(frm) {
            case 'add' :
                if($("frmMain")) $("frmMain").hide();
                if($("frmView")) $("frmView").hide();
                if($("frmAdd")) $("frmAdd").show();
                if($("frmEdit")) $("frmEdit").hide();
                break;
            case 'edit' :
                if($("frmMain")) $("frmMain").hide();
                if($("frmMain")) $("frmView").hide();
                if($("frmMain")) $("frmAdd").hide();
                if($("frmMain")) $("frmEdit").show();
                break;
            case 'view' :
                if($("frmMain")) $("frmMain").hide();
                if($("frmView")) $("frmView").show();
                if($("frmAdd")) $("frmAdd").hide();
                if($("frmEdit")) $("frmEdit").hide();
                break;
            default:
                loadData();
                if($("frmMain")) $("frmMain").show();
                if($("frmView")) $("frmView").hide();
                if($("frmAdd")) $("frmAdd").hide();
                if($("frmEdit")) $("frmEdit").hide();

        }
    }


// patch to handle IE problem when writing innerHTML to table or tbody
function ieTableInnerHTML(target, rowHTML) {
/* Vars */
target = $(target);

/* Remove all existing rows */
while (target.rows.length > 0) {
target.deleteRow(0);
}

/* Create temporary table */
var tempDiv = document.createElement("div");
document.body.appendChild(tempDiv);
tempDiv.innerHTML = '<table id="tempTable" style="display: none">' + rowHTML + '</table>';
var tt = $("tempTable");

/* Copy temporary table's rows to target */
for (var i = 0; i < tt.rows.length; i++) {
target.appendChild(tt.rows[i].cloneNode(true));
}

/* Remove temporary table */
Element.remove(tt);
}


