var loadcntr = 0;
var arr_obj = Array();
var tplonload = function() {}
var _startID;

function getURLVar(urlVarName) {
	var urlHalves = String(document.location).split('?');
	var urlVarValue = '';
	if(urlHalves[1]) {
		var urlVars = urlHalves[1].split('&');
		for (i=0; i<=(urlVars.length); i++) {
			if (urlVars[i]) {
				var urlVarPair = urlVars[i].split('=');
				if (urlVarPair[0] && urlVarPair[0] == urlVarName) {
					urlVarValue = urlVarPair[1];
				}
			}
		}
	}
	return urlVarValue;
}

function filldiv(phpaction, targetdiv, isasync) {
	$.ajax({
		type: "GET",
		url: phpaction,
		async: isasync,
		success: function(datastr) {
            if (datastr!='') {
                codesplit = datastr.split("\n@JAVASCRIPT_HTML_DELIMETER@\n");
                $(targetdiv).html(codesplit[1]);
                var clickFunc = function(event) {
                    event.preventDefault();
                    //var newurl = $(this).attr("href")+"&mode=ajax";
                    //filldiv(newurl, targetdiv, false);
                    topContainer = findTopContainer(this, "tpl_module");
                    var newurl = $(this).attr("href")+"&mode=ajax";
                    filldiv(newurl, "#"+topContainer.attr("id"), false);
                    this.blur();
                }
                $(targetdiv+" a.ajaxlink").click(clickFunc);
                for (i=0; i<$(targetdiv+" form.ajaxform").length; i++) {
                    var targetForm = $(targetdiv+" form.ajaxform:eq("+i+")");
                    var newurl = targetForm.attr("action")+"&mode=ajax";
                    targetForm.attr("action", newurl);
                    topContainer = findTopContainer(targetForm, "tpl_module");
                    prepare_ajax_formpost(targetForm, "#"+topContainer.attr("id"));
                }
                for (i=0; i<$(targetdiv+" form:not('.ajaxform')").length; i++) {
                    var newurl = $(targetdiv+" form:not('.ajaxform'):eq("+i+")").attr("action")+"&mode=normal";
                    if ($(targetdiv+" form:not('.ajaxform'):eq("+i+")").hasClass("cmstabaware")) newurl = newurl + "#tab="+currentTab;
                    $(targetdiv+" form:not('.ajaxform'):eq("+i+")").attr("action", newurl);
                }
                //prepare_ajax_formpost(targetdiv+" form.ajaxform", targetdiv);
                if (typeof(qtip_start)=='function') qtip_start();
                if (typeof(datepicker_start)=='function') datepicker_start();
                eval(codesplit[0]);
                /*
                for (i=0; i<$(targetdiv+" form:not('.ajaxform')").length; i++) {
                    var newurl = $(targetdiv+" form:not('.ajaxform'):eq("+i+")").attr("action")+"&mode=ajax";
                    $(targetdiv+" form:not('.ajaxform'):eq("+i+")").attr("action", newurl);
                }
                */
            }
		}
	});
}

function findTopContainer(childObj, containerClass) {
	var parentTag = childObj;
	do {
		parentTag = $(parentTag).parent();
	} while ((!(parentTag.hasClass(containerClass))) && (parentTag.tagName!="body"));
	return parentTag;
}

function prepare_ajax_formpost(formtosend, targetdiv) {
	var fdtr = function(vara, varb) {
	
	}
	var options = { 
		//target: formtosend,
		success: function(datastr) {
            if (datastr!='') {
                codesplit = datastr.split("\n@JAVASCRIPT_HTML_DELIMETER@\n");
                $(targetdiv).html(codesplit[1]);
                var clickFunc = function(event) {
                    event.preventDefault();
                    //var newurl = $(this).attr("href")+"&mode=ajax";
                    //filldiv(newurl, targetdiv, false);
                    topContainer = findTopContainer(this, "tpl_module");
                    var newurl = $(this).attr("href")+"&mode=ajax";
                    filldiv(newurl, "#"+topContainer.attr("id"), false);
                    this.blur();
                }
//                var clickFunc = function(event) {
//                    event.preventDefault();
//                    filldiv($(this).attr("href")+"&mode=ajax", targetdiv, false);
//                    this.blur();
//                }
                $(targetdiv+" a.ajaxlink").click(clickFunc);
                for (i=0; i<$(targetdiv+" form.ajaxform").length; i++) {
                    //var newurl = $(targetdiv+" form.ajaxform:eq("+i+")").attr("action")+"&mode=ajax";
                    //$(targetdiv+" form.ajaxform:eq("+i+")").attr("action", newurl);
                    var targetForm = $(targetdiv+" form.ajaxform:eq("+i+")");
                    var newurl = targetForm.attr("action")+"&mode=ajax";
                    targetForm.attr("action", newurl);
                    topContainer = findTopContainer(targetForm, "tpl_module");
                    prepare_ajax_formpost(targetForm, "#"+topContainer.attr("id"));
                }
                for (i=0; i<$(targetdiv+" form:not('.ajaxform')").length; i++) {
                    var newurl = $(targetdiv+" form:not('.ajaxform'):eq("+i+")").attr("action")+"&mode=normal";
                    if ($(targetdiv+" form:not('.ajaxform'):eq("+i+")").hasClass("cmstabaware")) newurl = newurl + "#tab="+currentTab;
                    $(targetdiv+" form:not('.ajaxform'):eq("+i+")").attr("action", newurl);
                }
                //prepare_ajax_formpost(targetdiv+" form.ajaxform", targetdiv);
                if (typeof(qtip_start)=='function') qtip_start();
                if (typeof(datepicker_start)=='function') datepicker_start();
                eval(codesplit[0]);
            }
		}
	};
	$(formtosend).ajaxForm(options);
}

function ajaxstartlinks() {
	var clickFunc = function(event) {
		event.preventDefault();
		topContainer = findTopContainer(this, "tpl_module");
		var newurl = $(this).attr("href")+"&mode=ajax";
		filldiv(newurl, "#"+topContainer.attr("id"), false);
		this.blur();
	}
	$("div.tpl_module a.ajaxlink").click(clickFunc);
	for (i=0; i<$("form.ajaxform").length; i++) {
		var newurl = $("form.ajaxform:eq("+i+")").attr("action")+"&mode=ajax";
 		$("form.ajaxform:eq("+i+")").attr("action", newurl);
 		topContainer = findTopContainer("form.ajaxform:eq("+i+")", "tpl_module");
 		prepare_ajax_formpost("#"+topContainer.attr("id")+" form.ajaxform", "#"+topContainer.attr("id"));
	}
}

function loadjs(actionscr) {
	var arr2str = arr_obj.toString();
	if (arr2str.search(actionscr)==-1) {
		loadcntr++;
		$.getScript(actionscr, function () {
			arr_obj.push(actionscr);
			loadcntr--;
			if (loadcntr == 0) if (typeof(tplonload)!="undefined") tplonload();
		});
	}
}

function dhtmlLoadCss(url) {
	var arr2str = arr_obj.toString();
	if (arr2str.search(url)==-1) {
		var e = document.createElement("link");
		e.rel = "stylesheet";
		e.href = url;
		e.type="text/css";
		document.getElementsByTagName("head")[0].appendChild(e);
		arr_obj.push(url);
	}
}

function dhtmlLoadScript(url) {
	var arr2str = arr_obj.toString();
	if (arr2str.search(url)==-1) {
		var e = document.createElement("script");
		e.src = url;
		e.type="text/javascript";
		document.getElementsByTagName("head")[0].appendChild(e);
		arr_obj.push(url);
	}
}

function submitPagingForm(pageid, formid, page) {
	$("input#"+pageid).val(page);
	$("#"+formid).submit();
}

/* ADDITIONAL UNIVERSAL FUNCTIONS */

function echeck(str) {
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	
	if (str.indexOf(at)==-1){
		return false;
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		return false;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		return false;
	}

	if (str.indexOf(at,(lat+1))!=-1){
		return false;
	}

	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		return false;
	}

	if (str.indexOf(dot,(lat+2))==-1){
		return false;
	}
		
	if (str.indexOf(" ")!=-1){
		return false;
	}
	return true;					
}

/* ************************** */


