function isEmpty( inputStr ) 
{ 	
	if ( null == inputStr || "" == inputStr.replace(/^\s+|\s+$/g, '') ) 
	{ 
		return true; 
	} 
	return false; 
}

function getFieldVal(selObjId)
{
	var recObj = document.getElementById(selObjId);
	var recVal = recObj.value;	

	return recVal;
}

function cleanForm(formId)
{
	var formObj = document.getElementById(formId);
	for(i=0; i<formObj.elements.length; i++)
	{
		if (formObj.elements.elements[i].type == 'text' ||
			formObj.elements.elements[i].type == 'textarea')
			formObj.elements.elements[i].value = '';
	}	
}

function setSelectedVal(selObjId,val)
{
	var selObj = document.getElementById(selObjId);
	var isFound=false;
	for (var i=0; i<selObj.length; i++){
		if (selObj.options[i].value==val){
			selObj.selectedIndex = i;
		}
	}
}
function checkMailForm(mail)
{
	var mailVal = getFieldVal(mail);
	var isOk = true;
	// validate mail format
	if (!isEmpty(mailVal)) {
		if (!checkMailFormat(mailVal)) {
			alert('המייל שסופק אינו תקין');
			isOk = false;
		}
	}
	return isOk;
}

function checkMailFormat(mailVal)
{
    //var pattern=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
    var pattern=/^[a-zA-Z0-9.][a-zA-Z0-9-_\s]+@[a-zA-Z0-9-\s].+\.[a-zA-Z]{2,5}$/;
    return pattern.test(mailVal);

}
function setLen(field, maxsize) {
	//alert(field.value.length);
	if (field.value.length > maxsize) {
		field.value = field.value.substring(0, maxsize);
	}
}
function swapImg(imgId,newSrc)
{	
	if (myTypes[0] != imgId.substring(4) || myTypes.length==1) {
		imgObj = document.getElementById(imgId);	
		document.MM_sr = imgObj.src;
		imgObj.src = newSrc;
	}
}
function restoreImg(imgId)
{	
	if (myTypes[0] != imgId.substring(4) || myTypes.length==1) {
		imgObj = document.getElementById(imgId);
		imgObj.src = document.MM_sr;	
	}
}
function setTypeImg(typeId)
{
	for (x in myTypes)
	{	
		if (x>0) {
			typeImgObj = document.getElementById('pimg'+x);
			typeImgObj.src ='images/'+
				myTypes[x].imgFile + (x == typeId ? '' : '_h') + '.jpg';			
		}
	}		
}
// constructor
function type(imgFile,color,firstProj)
{
	this.imgFile=imgFile;
	this.color=color;
	this.firstProj=firstProj;	
}
/******************
	AJAX
*****************/

var FAIL = 0;
var SUCC = 1;
var EXISTS = 2;
var NO_ACT = 3;
var NO_DATA = 4;

var httpobject;
function GetHttpObject()
{
	if (window.ActiveXObject) 
		return new ActiveXObject("Microsoft.XMLHTTP");
	else if (window.XMLHttpRequest) 
		return new XMLHttpRequest();
	else 
	{
		alert("Your browser does not support AJAX.");
		return null;
	}
}
function getInfo(params,formId,resObjId,url)
{
	if(params.length != 0)
	{
		httpobject=GetHttpObject();
		if (httpobject !=null)
		{
			// show wait msg=
			document.getElementById(resObjId).innerHTML=
			'<img src=\"imgs/loading_16.gif\"/ border=\"0\">';
			//var url="ajax_res.php";
			//var params="str="+str+"&length="+length+"&comp="+compType;
			if (arguments.length==3)
				url = 'ajax_res.php';
			httpobject.open("POST",url,true); //input vars: sMethod, sUrl [, bAsync].			
			httpobject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			httpobject.setRequestHeader("Content-length", params.length);
			httpobject.setRequestHeader("Connection", "close");
			httpobject.onreadystatechange=function()
			{
				if (httpobject.readyState==4)
				{		
					//document.getElementById(resObjId).innerText=httpobject.responseText;
					if (url == 'ajax_res.php')
						setResByObj(resObjId,formId,params);					
					else
						adminResByObj(resObjId,formId,params);									
				}			
			};
			httpobject.send(params);
		}
	}
	else
	{
		document.getElementById(resObjId).innerText="";
	}
}

function adminResByObj(objId,formId,params)
{
	//alert('res='+httpobject.responseText+'\nobjId='+objId);
	switch(objId)
	{
		case 'addTypeRes':
		// edit type form
		case 'editForm':
		case 'addProjRes':		
			reloadLinkOnAjaxRes(
				httpobject.responseText,objId);
		break;
		case 'propTable':	
			setPageOnResult(objId,formId);
		break;	
		case 'projSelDiv':
		case 'prjBtn':		
			document.getElementById(objId).innerHTML =
				getMsgByID(httpobject.responseText);	
		break;
		default:
			document.getElementById(objId).innerHTML =
				getMsgByID(FAIL);	
	}
}
function setResByObj(objId,formId,params)
{
	switch(objId)
	{
	case 'projSelect':
		setProjSelectList(objId);
		break;
	case 'projSeq':
		setProjSeqNum(objId);
		break;
	case 'projButtons':
		setTypeProjs(objId);
		// element 0 of myTypes is the selected type (I know it is bad)
		projId=myTypes[myTypes[0]].firstProj;
		setSelectedProj(projId,myTypes[0],currProj);
		break;
	}
}

function setPageOnResult(objId,formId)
{
	switch (httpobject.responseText) 
	{
		case SUCC:
			document.getElementById(objId).innerHTML =
				"הפעולה הסתיימה בהצלחה";
			cleanForm(formId);
			break;
		case EXISTS:
			document.getElementById(objId).innerHTML =
				"לפחות אחד השדות כבר קיים במערכת.<br>הפעולה לא נשמרה";			
			break;			
		default:	
			document.getElementById(objId).innerHTML = httpobject.responseText;
				//"אירעה תקלה. הפעולה לא נשמרה";
	}
}

function setProjSelectList(objId)
{
	var sel = httpobject.responseText;			
	if (sel == FAIL)
		document.getElementById(objId).innerHTML =
			"אירעה תקלה בגישה למסד הנתונים";
	else if (sel == NO_DATA)
		document.getElementById(objId).innerHTML =
			"אין פרוייקטים בקטגוריה";				
	else
		document.getElementById(objId).innerHTML = sel;

}

var prevProp = "0";
function setTypeProjs(objId)
{
	//alert(httpobject.responseText);
	document.getElementById(objId).innerHTML = httpobject.responseText;		
}
function setProjSeqNum(objId)
{
	// proj set nums -
	document.getElementById(objId).innerHTML = 
		httpobject.responseText;
	// proj description -
	document.getElementById('projText').innerHTML = 
		document.getElementById('projDesc').value;	
	// proj first image -
	prevProp = document.getElementById('firstProp').value;	
	setImgSrc(prevProp,'');	
	// set selected proj button - 
}

function setImgSrc(pId,pTitle)
{
	// clear style from previously selected seq num:
	if (prevProp != "0")
		document.getElementById(prevProp).style.textDecoration='none';
	document.getElementById(pId).style.textDecoration='underline';
	prevProp = pId;
	
	imgSrc = 'img.php?p_id='+pId;
	imgCellObj = document.getElementById('mainImg');
	imgCellObj.innerHTML = 
		"<a href='"+imgSrc+"' rel='lightbox' title=''>"+
			"<img src='"+imgSrc+"&h=245&sm=1' height='245' border='0' class='img' />"+
		"</a>";	
	//alert(imgCellObj.innerHTML);
}

function setSelectedType(typeId)
{
	// horrible programming: 
	// I set the selected type as the first element of the array
	myTypes[0] = typeId;
	color = myTypes[typeId].color;
	getInfo('action=setTypeProjs&typeId='+typeId+'&tColor='+color,'','projButtons');	
	for (x in myTypes)
	{	
		typeImgObj = document.getElementById('pimg'+String(x));
		if (typeImgObj)
			typeImgObj.src ='images/'+
				myTypes[x].imgFile + (x == typeId ? '' : '_h') + '.jpg';			
	}		
}

function setSelectedProj(projId,typeId,currProjs)
{
	// set proj button selected:
	for (x in currProjs)
	{	
		projButtObj = document.getElementById('butt'+currProjs[x]);
		if (projButtObj) {
			if (currProjs[x]==projId) {
				myColor ='#333333';
			} else {
				if (myTypes[typeId])
					myColor = myTypes[typeId].color;
				else
					myColor = '';
			}
			projButtObj.style.background = myColor;			
		}
	}			
	// set img links:
	getInfo('action=setProjsSeqNum&projId='+projId,'','projSeq');	
}
function reloadLinkOnAjaxRes(resText,objId)
{
	if (resText == SUCC) {
		document.getElementById(objId).innerHTML =
		"השינוי נשמר. לחץ <a href='ad_addItems.php?res="+httpobject.responseText+"'>כאן</a> לעדכון הרשימה";
	} else {
		document.getElementById(objId).innerHTML =
		getMsgByID(resText);
	}	
}
function getMsgByID(an_id)
{
	if (an_id.length == 1)
	{
		code = Number(an_id);
		switch(code)
		{
			case FAIL:
				msg = "הפעולה נכשלה";
			break;
			case SUCC:
				msg = "הפעולה הסתיימה בהצלחה";
			break;
			case EXISTS:
				msg = "קיים אובייקט בשם זה";				
			break;
			case NO_ACT:
				msg = "לא הוגדרה פעולה";
			break;
			case NO_DATA:
				msg = "לא קיימים נתונים";
			break;
		}
	}
	else
	{
		msg = an_id;
	}
	return msg;
}

