
PageClass={};
PageClass.location = '';
PageClass.areas = Array;
PageClass.CONFIG_URL = '';
PageClass.requestMethod = 'GET';
PageClass.postParams = null;
PageClass.getParam = '';
PageClass.loadingHTML = '<center><img src="images/loading.gif" alt="" class="vam" /> Palaukite...</center>';

PageClass.init = function() {
	
	//PageClass.rewriteLinks(document);
		
}

PageClass.rewriteLinks = function(obj) {
	
	var arr = obj.getElementsByTagName('a');
	for(var i=0; i<arr.length; i++){
		if(arr[i].target != '_blank' && arr[i].className !='') {
			tmp_href = arr[i].href;
			arr[i].href = "javascript: void(PageClass.getPageContent('" + arr[i].href + "', '" + arr[i].className + "'));";
			arr[i].onmouseover = function(){
				window.status=tmp_href; return true;			
			}
			arr[i].onmouseout = function(){
				window.status=''; return true;			
			}
		}
	}
	/*
	var arr = obj.getElementsByTagName('form');
	for(var i=0; i<arr.length; i++){
		if(arr[i].target != '_blank' && arr[i].className !='') {
			arr[i].action = "javascript: void(PageClass.getPageContent('" + arr[i].action + "', '" + arr[i].className + "'));";
		}
	}*/
	
}

PageClass.getPageContent_ = function(location, areas){
	
	PageClass.getParam = '';
	PageClass.getPageContent(location, areas);
	PageClass.getParam = '?ajax=1';
	
}

PageClass.getPageContent = function(location, areas){

	PageClass.location = location;
	PageClass.areas = areas.split(' ');
	
	PageClass.startRequest();
	
	url = PageClass.location + PageClass.getParam;

	 if (window.XMLHttpRequest) {
	     req = new XMLHttpRequest();
	     req.onreadystatechange = PageClass.processLoadPage;
	     req.open(PageClass.requestMethod, url, true);
		 if(PageClass.requestMethod == 'POST'){
			req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			req.setRequestHeader("Content-length", PageClass.postParams.length);
			req.setRequestHeader("Connection", "close");	     
		 }
	     req.send(PageClass.postParams);
	 } else if (window.ActiveXObject) {
	     isIE = true;
	     req = new ActiveXObject("Microsoft.XMLHTTP");
	     if (req) {
	         req.onreadystatechange = PageClass.processLoadPage;
	         req.open(PageClass.requestMethod, url, true);
			 if(PageClass.requestMethod == 'POST'){
				req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				req.setRequestHeader("Content-length", PageClass.postParams.length);
				req.setRequestHeader("Connection", "close");	     
			 }
	         req.send(PageClass.postParams);
	     }
	 }	
	
}


PageClass.formData2QueryString = function(docForm) {

        var strSubmit       = '';
        var formElem;
        var strLastElemName = '';
        
        for (i = 0; i < docForm.elements.length; i++) {
                formElem = docForm.elements[i];
                switch (formElem.type) {
                        // Text, select, hidden, password, textarea elements
                        case 'text':
                        case 'hidden':
                        case 'password':
                        case 'textarea':
				formElem.value = formElem.value.replace(/&/g, '%26');
				formElem.value = formElem.value.replace(/\+/g, '%2B');
				strSubmit += formElem.name + '=' + formElem.value + '&';
                        break;
                        case 'select-one':
                        	strSubmit += formElem.name + '=' + escape(formElem.options[formElem.selectedIndex].value) + '&';
                        break;
                        case 'checkbox':
                        	if(formElem.checked == true) strSubmit += formElem.name + '=' + escape(formElem.value) + '&';
                        break;
                        case 'radio':
	                        if(formElem.checked == true) strSubmit += formElem.name + '=' + escape(formElem.value) + '&';
                }
        }
        return strSubmit;
}


PageClass.submitForm_ = function(location, areas, form){

	PageClass.getParam = '';
	PageClass.submitForm(location, areas, form);
	PageClass.getParam = '?ajax=1';
	
}

PageClass.submitForm = function (location, areas, form){
	
	PageClass.postParams = PageClass.formData2QueryString(form);
	PageClass.requestMethod = 'POST';
	PageClass.getPageContent(location, areas);
	PageClass.requestMethod = 'GET';
	PageClass.postParams = null;
	
}

PageClass.showTopBar = function (location, areas, id, obj){
	
	$(id).style.display = 'block';
	var arr = findPos(obj);
	$(id).style.left = arr[0] - 250 + 10 + 'px';
	$(id).style.top = arr[1] + 25 + 'px';
	
	PageClass.getPageContent(location, areas);
	
}

PageClass.closeTopBar = function (id){
	$(id).style.display = 'none';
}

PageClass.processLoadPage = function (){
	
	 if (req.readyState == 4) {

	     if (req.status == 200) {
	
			var html_arr = req.responseText.split(':::::::::::::::');
			for(i=0; i<PageClass.areas.length; i++){
				document.getElementById(PageClass.areas[i]).innerHTML = html_arr[i];
				//PageClass.rewriteLinks($(PageClass.areas[i]));
				evalScripts(html_arr[i]);
			}
			PageClass.endRequest();
			
	      } else {

	         alert("Serverio klaida:\n" + req.statusText);
	         PageClass.endRequest();

	      }
	 }	
	
}


PageClass.startRequest = function (){
	/*$('PAGE_overlay').style.display = 'block';
	window.scrollTo(0,0);
	try{
		document.getElementsByTagName("html")[0].style.overflow = "hidden";
	}catch(e){}*/
	
	for(i=0; i<PageClass.areas.length; i++){
		document.getElementById(PageClass.areas[i]).innerHTML = PageClass.loadingHTML;
	}
	
}

PageClass.endRequest = function (){
	/*$('PAGE_overlay').style.display = 'none';
	try{
		document.getElementsByTagName("html")[0].style.overflow = "";
	}catch(e){}*/
}

PageClass.init();


function evalScripts(html){
	
	var script_fragment = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
	//replace(/<\/?[^>]+>/gi, '');
	var re = new RegExp(script_fragment, "g");
	var scripts = html.match(re);
	if(scripts){
		for(var i=0; i<scripts.length; i++){
			eval(scripts[i].replace(/<\/?[^>]+>/gi, ''));
		}
	}
	
}

