/*
* Hannibal CMS 2008
* www.bgsvetionik.com
* agvozden@gmail.com
* latest update 2008-03-25
*/
function include(file){
	//this function includes all necessary js files for the application
	var script  = document.createElement('script');
	script.src  = file;
	script.type = 'text/javascript';
	script.defer = true;
	document.getElementsByTagName('head').item(0).appendChild(script);
}
function checkTextField(field,message){
	if (field.value.length==0){
		field.focus();
		write_dump(message);
		return false;}
	return true;
}
function checkPasswordField(field,message,min_len,message_mlen){
	if (field.value.length==0){
		field.focus();
		write_dump(message);
		return false;}
	if (field.value.length<min_len){
		field.focus();
		write_dump(message_mlen);
		return false;}
	return true;
}
function checkConfirm(field,field2,message){
	if (field.value!=field2.value){
		field.focus();
		write_dump(message);
		return false;}
	return true;
}
function checkEmailField(field,message,message_valid){
	if (field.value.length==0 && message !==''){
		field.focus();
		write_dump(message);
		return false;}
	if (!checkEmailFieldValid(field, message_valid)) return false;
	return true;
}
function checkEmailFieldValid(field, message_valid){
	if (field.value.indexOf("@")<1 || field.value.indexOf(".")<1){
		write_dump(message_valid, field);
		return false;
	}
	return true;
}
function checkCheckField(field,message){
	if (!field.checked){
		write_dump(message, field);
		return false;}
	return true;
}
function checkSelectField(field,message){
	if (field.options[field.selectedIndex].value == ""){
		write_dump(message, field);
		return false;}
	return true;
}
function checkRadioField(field,message){
	var radioOption = -1;
	for (counter=0; counter<field.length; counter++) {
		if (field[counter].checked) radioOption = counter;}
	if (radioOption == -1){
		write_dump(message);
		return false;
	}
	return true;
}
// -- common
function write_dump(message, field){
	if(message.length<1) return false;
	alert(message);
	if (field) field.focus();
	return true;
}
function writeDump(dumpDiv, message){
	var t = document.createTextNode(message);
	var p = document.getElementById(dumpDiv);
	if (c = p.firstChild){
		p.removeChild(c);}
		p.appendChild(t);
}
function clearDump(dumpDiv){
	var p = document.getElementById(dumpDiv);
	if (c = p.firstChild){
		p.removeChild(c);}
	return true;
}
// --
function initXMLHttp(){
	var req = false;
	// branch for native XMLHttpRequest object
	if(window.XMLHttpRequest) {
		try {
			req = new XMLHttpRequest();
		} catch(e) {
			req = false;
		}
		// branch for IE/Windows ActiveX version
	} else if(window.ActiveXObject) {
		try {
			req = new ActiveXObject('Msxml2.XMLHTTP');
		} catch(e) {
			try {
				req = new ActiveXObject('Microsoft.XMLHTTP');
			} catch(e) {
				req = false;
			}
		}
	}
	return req;
}
function startAsync(sURL,fCallBack,elementId) {
	var req = initXMLHttp();
	req.onreadystatechange=function(){
		fCallBack(req, elementId);
	};
	req.open("GET",sURL,true);
	req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
	req.send(null);
}
function asyncComplete(oAsync) {
	if (oAsync.readyState == 4 && (oAsync.status==200 || window.location.href.indexOf("http")==-1)) {
		return true;
	} 
	return false;
}
function loadElement(oAsync,elementId){
	if(asyncComplete(oAsync)){
		var results = oAsync.responseText;
		if (results.indexOf("<script")>=0){
			// use reg: /<script[^>]*>([\s\S]*?)<\/script>/gi
			var jscript = results.substring(results.indexOf("<script"), results.indexOf("</script"));			
			jscript = jscript.substr(jscript.indexOf(">")+1);
			eval(jscript);
		}
		document.getElementById(elementId).innerHTML = results;
	}
}
// --
function setInnerText(obj, text){
	if (obj.textContent){
		obj.textContent = text;}
	else if (obj.innerText){
		obj.innerText = text;}
}
function innerHTML_select(object,innerHTML,selected){
	if(document.all) {
		if (selected) innerHTML = object.innerHTML + innerHTML;
		object.innerHTML = '';
		object.outerHTML = object.outerHTML.replace("</SELECT>",innerHTML + "</SELECT>");
	} else 
	innerHTML_select_full(object,innerHTML);
	if (selected) selectSetByValue(object,selected);
}
function innerHTML_select_full(object,innerHTML){
	object.innerHTML = "";
	var selTemp = document.createElement("test_select");
	var opt;
	selTemp.id="test_select1";
	document.body.appendChild(selTemp);
	selTemp = document.getElementById("test_select1");
	selTemp.style.display="none";
	if(innerHTML.toLowerCase().indexOf("<option")<0){
		innerHTML = "<option>" + innerHTML + "</option>";
	}
	innerHTML = innerHTML.replace(/<option/g,"<span").replace(/<\/option/g,"</span");
	selTemp.innerHTML = innerHTML;
	var selTempLength = selTemp.childNodes.length;
	for(var i=0;i<selTempLength;i++){
		if(selTemp.childNodes[i].tagName){
			opt = document.createElement("OPTION");
			for(var j=0;j<selTemp.childNodes[i].attributes.length;j++){
				opt.setAttributeNode(selTemp.childNodes[i].attributes[j].cloneNode(true));
			}
			opt.value = selTemp.childNodes[i].getAttribute("value");
			opt.text = selTemp.childNodes[i].innerHTML;
			opt.text = opt.text.replace(/&amp;/g,"&");
			if(document.all){
				object.add(opt);
			}else{
				object.appendChild(opt);
			}
		}
	}
	document.body.removeChild(selTemp);
	selTemp = null;
}
function selectSetByValue(field, value){
	field.disabled = true;
	for(index = 0; index < field.childNodes.length; index++){
		if(field[index].value == value){
			field.selectedIndex = index;
		}
	}
	field.disabled = false;
}
// --
/*Limit the number of characters per textarea */
function textCounter(field,cntfield,maxlimit) {
	if (field.value.length > maxlimit) // if too long...trim it!
	field.value = field.value.substring(0, maxlimit);
	// otherwise, update 'characters left' counter
	else
	cntfield.value = maxlimit - field.value.length;
}
// Flag for whether or not to automatically call the print function
var gAutoPrint = true;
function printSpecial(){
	if (document.getElementById != null){
		var html = '<HTML>\n<HEAD>\n';
		if (document.getElementsByTagName != null){
			var headTags = document.getElementsByTagName("head");
			if (headTags.length > 0)
			html += headTags[0].innerHTML;
		}
		html += '\n</HE' + 'AD>\n<BODY>\n';
		var printReadyElem = document.getElementById("printReady");
		if (printReadyElem != null){
			html += printReadyElem.innerHTML;
		}else{
			alert("Could not find the printReady section in the HTML");
			return;
		}
		html += '\n</BO' + 'DY>\n</HT' + 'ML>';
		var printWin = window.open("","printSpecial");
		printWin.document.open();
		printWin.document.write(html);
		printWin.document.close();
		if (gAutoPrint)
		printWin.print();
	}else{
		alert("Sorry, the print ready feature is only available in modern browsers.");
	}
}
//<div id="printReady">

/*toogle  show or hide element by id*/
function show_hide(elem, visible){
	var elem_id = document.getElementById(elem);
	if (visible == null){
		visible = elem_id.style.display;
		if (visible == 'none')
		elem_id.style.display = 'block';
		else
		elem_id.style.display = 'none';
	} else {
		elem_id.style.display = visible;
	}
}

function confirm_action(field, actionFn) {
	if (field.value=='delete'){
		return confirm_delete(false, actionFn);
	}else {
		return true;
	}
	return false;
}
function confirm_delete(message, actionFn){
	if (!message) var message = 'Are you sure you want to delete this?';
	var cf = false;
	if (actionFn) 
	try {customConfirm(message, actionFn);} catch(err) {cf = confirm(message);}
	else cf = confirm(message);
	return cf;
}

function trim(str){
	s = str.replace(/^(\s)*/, '');
	s = s.replace(/(\s)*$/, '');
	return s;
}

function mailto(account, domain){
	window.location.href = 'mailto:' + account + '@' + domain;
	return false
}

function checkAll(field) {
	if (field.length>0) {
		for (i = 0; i < field.length; i++)
		field[i].checked = true;
	} else {
		field.checked = true;
	}
}
function uncheckAll(field) {
	if (field.length>0) {
		for (i = 0; i < field.length; i++)
		field[i].checked = false;
	} else {
		field.checked = false;
	}
}
function radioValue(radio) {
	var selection=null;
	for(var i=0; i < radio.length; i++) {
		if(radio[i].checked) {
			selection=radio[i].value;
			return selection;
		}
	} return selection;
}
function pause(numberMillis) {
	var now = new Date();
	var exitTime = now.getTime() + numberMillis;
	while (true) {
		now = new Date();
		if (now.getTime() > exitTime)
		return;
	}
}
function writeHTML(id,S) {
	var elem = (document.getElementById ? document.getElementById(id) : (document.all ? document.all[id] : undefined));
	if (!elem) { document.write(S); return false; }
	elem.innerHTML = S;
return true;
}