function addRow(modelPrefix)
{
//modelPrefix is the prefix of all ids in this datamodel.
//we 'll find the new row fields (they start with modelPrefix plus ".0."
//and append them to the model rows container
//

newRowId = modelPrefix + ".0";
modelContainer = document.getElementById(modelPrefix);

modelRows = document.getElementsByName(modelPrefix + ".Row");
newKey = -1;
//new rows get negative keys
//find the new row key
for (i=0 ; i< modelRows.length ; i++)
    {
       id = modelRows[i].id ;
       key = id.split('.')[2];
       key = parseInt(key);

       if (key <= newKey)
        {newKey -= 1;}
    }
newRow =  document.getElementById(newRowId);
row = document.importNode(newRow ,true);
rowId = modelPrefix + "." + newKey.toString();
row.setAttribute('id', rowId);
inputElemTags = ['select' , 'input' , 'textarea'];
for (j=0 ; j < inputElemTags.length ; j++)
    {
       tagName = inputElemTags[j];
       elems =  row.getElementsByTagName(tagName);
       for (i=0 ; i < elems.length ; i++)
	    {
	       elem = elems[i];
	       parts = elem.name.split('.');
	       previousName = elem.name ;
	       elem.name = modelPrefix + "." + newKey.toString() + "." + parts[3] ;
	       if (tagName == 'select')
	       {//get and set selectedIndex
	           newRowSelect = document.getElementsByName(previousName)[0];
               elem.selectedIndex = newRowSelect.selectedIndex;
	       }
	    }
    }


aHref = row.getElementsByTagName('a')[0];
aHref.innerHTML = 'Delete';
aHref.setAttribute('onclick' , "deleteRow('" + rowId + "');return false");

modelContainer.appendChild(row);
rowStateInp = document.getElementsByName(modelPrefix + "." + newKey.toString() + ".rowstate")[0];
rowStateInp.value = "added";
setTableVisibility(modelPrefix);

}


function deleteRow(rowId)
{

row = document.getElementById(rowId);
modelContainerId = dotSlice(rowId,2);
key = rowId.split('.')[2];
if (parseInt(key) > 0)
	{row.style.display = "none";
	rowStateInp = document.getElementsByName(rowId + ".rowstate")[0];
	rowStateInp.value = "deleted";}
else
    {
      modelContainer = document.getElementById(modelContainerId);
      modelContainer.removeChild(row);
    }

setTableVisibility(modelContainerId);

}


function dotSlice(key , count)
{//splits the key string with  "." delimiter
// and returns count parts
//e.g. abc.def.rts , 2 --> abc.def
parts = key.split('.');
i=0;
outStr = '';
	while ((i < count) && (parts.length > i))
	{
	   outStr += parts[i] + ".";
	   i += 1;
	}
	//slurp the last "."
	outStr = outStr.substring(0 , outStr.length -1);
	return outStr;

}


function setTableVisibility(tbodyid)
{
tbod = document.getElementById(tbodyid);
rows = tbod.getElementsByTagName('tr');
tabl = document.getElementById(tbodyid + '_table');
if (rows.length <= 0)
{
tabl.style.display = "none";
}
else
{
tabl.style.display = "block";
}
}

function updateLocation(glatlng){
document.getElementById(lat_hidden_id).value = glatlng.lat();
document.getElementById(lng_hidden_id).value = glatlng.lng();
//alert( glatlng.lat());

}


function mapPin(mp) {

if (marker == null){
	marker= new GMarker(mp.getCenter(),{'draggable':true});
	mp.addOverlay(marker);
	GEvent.addListener(marker, "dragend", updateLocation);
	alert('hi');
	}
else
	{
		marker.setLatLng(mp.getCenter());

	}
	updateLocation( mp.getCenter());
}

var resGrips=new Array();

function resGrip( elemId,resizeFunc, mouUpFunction ){
el= document.getElementById(elemId);
if (el){
	x = el.offsetLeft;
	y= el.offsetTop;
	w= el.offsetWidth;
	h= el.offsetHeight;
	resGrA = document.createElement('a');
	pel = el.parentNode;
	resGrImg = document.createElement('img');
	resGrImg.setAttribute('src','/media/styles/images/pcSizeGrip1.png');
	resGrA.setAttribute('href','#');
	myId = "resGrip_" +elemId;
	resGrA.setAttribute('id',myId);
	resGrA.setAttribute('onmousedown',"resizeGrippedElemDown('"+ elemId + "',event ," + resizeFunc + ",'" + mouUpFunction +  "');");
	resGrA.setAttribute('ondragstart','return false');
	resGrA.appendChild(resGrImg);
	pel.appendChild(resGrA);
	resGrA.style.position = "absolute";
	resGrA.style.left = (x + w -16) + "px";
	resGrA.style.top = (y + h -16) + "px";
	resGrA.className = "resize_grip";
	}

}



var startX;
var startY;
var elWidth;
var elHeight;

function resizeGrippedElemDown(elid,e, resizeFunc ,mUpFunction){
if (!e) e = window.event;
elm=document.getElementById(elid);
elWidth=elm.offsetWidth;
elHeight= elm.offsetHeight;
startX =e.clientX;
startY = e.clientY;
//document.getElementById('infow').innerHTML='el = '+ elm.id + ' , elWidth=' + elWidth+ " , elHeight= " +  elHeight + " , startX = " + startX + " , startY = " + startY;
document.body.setAttribute('onmousemove', "resizeGrippedElemMove(event , " + resizeFunc +" )");
document.body.setAttribute('onmouseup',mUpFunction );

}

function resizeGrippedElemUp(){

document.body.setAttribute('onmousemove' , null);
document.body.setAttribute('onmouseup' , null);

map.idleGmap.checkResize();
map.gmap.checkResize();
}

function resizeGrippedElemUpSimple(){

	document.body.setAttribute('onmousemove' , null);
	document.body.setAttribute('onmouseup' , null);

	map.checkResize();

	}

function rgMouseUp(){

document.body.setAttribute('onmousemove' ,null);
document.body.setAttribute('onmouseup' , null);

}

function resizeGrippedElemMove(e,resizeFunc){
if (!e) e = window.event;
resizeFunc(e.clientX , e.clientY );
}

function resizeMapControls(x,y){

if (map.idle)
{el= map.idleMapDiv;
iel=map.mapDiv;}
else
{el= map.mapDiv;
iel=map.idleMapDiv;}


cel=document.getElementById("mapcontrol" );
gripEl= document.getElementById("resGrip_mapcontrol" );
var diffWidth  = x - startX;
var diffHeight = y - startY;
var newWidth   = elWidth  + diffWidth;
var newHeight  = elHeight + diffHeight;

el.style.width  = newWidth + "px";
el.style.height = ( newHeight -120 ) + "px";
iel.style.width  = newWidth + "px";
iel.style.height = ( newHeight-120) + "px";
cel.style.width  = newWidth + "px";
cel.style.height = ( newHeight  ) + "px";
gripEl.style.left = (cel.offsetLeft + newWidth) + "px";
gripEl.style.top = (cel.offsetTop + newHeight) + "px";
mapToolbar = document.getElementById("maptoolbar");
mapToolbar.style.width =newWidth + "px";

}

function resizeMapControlsSimple(x,y){


	el= document.getElementById("map_canvas");
	gripEl= document.getElementById("resGrip_map_canvas" );
	var diffWidth  = x - startX;
	var diffHeight = y - startY;
	var newWidth   = elWidth  + diffWidth;
	var newHeight  = elHeight + diffHeight;

	el.style.width  = newWidth + "px";
	el.style.height = ( newHeight) + "px";
	gripEl.style.left = (el.offsetLeft + newWidth-16) + "px";
	gripEl.style.top = (el.offsetTop + newHeight-16) + "px";
	mapToolbar = document.getElementById("maptoolbar");
	mapToolbar.style.width =newWidth + "px";

	}


var madataChangesMade=false;

function askConfirm(){ if (madataChangesMade){
            return "You have unsaved changes. Press the SAVE button on the bottom of the page.";
     		}

}

function filterSelectList(elem , attrName , otherSelId)
{

idParts= elem.id.split('.');
idParts= idParts.slice(0,3);
selId=idParts.join('.');
selId += "." + otherSelId;
otherSelect = document.getElementById(selId);

for (i=0;i< otherSelect.options.length;i++){

	{  v = otherSelect.options[i].getAttribute(attrName);
	   if ( (v.toString() != elem.value.toString()) && (v.length > 0))
	   {otherSelect.options[i].style.display="none";
	   //alert(otherSelect.options[i].innerHTML);
	   }
	   else
	   {otherSelect.options[i].style.display="block";}


	}
}
}




function UploadFile(waitAnimationId,messageId,uploadButtonId,message,patientMessage)
{

uploadClicks += 1;
messageElem = document.getElementById(messageId);
if (uploadClicks > 1){
messageElem.innerHTML = patientMessage ;
return false;
}
else
{

waitElem = document.getElementById(waitAnimationId);
messageElem = document.getElementById(messageId);
waitElem.style.display = "inline";
messageElem.innerHTML = message ;
//uploadButtonElem = document.getElementById(uploadButtonId);
//browseFileInput = document.getElementById(fileInputId);
//disableAttr = document.createAttribute('disabled');
//uploadButtonElem.setAttributeNode(disableAttr);
//madForm.submit();
return true;
}
//browseFileInput.setAttributeNode(disableAttr);

}



function Youtube2mp3(waitAnimationId,messageId,uploadButtonId,message,patientMessage)
{

uploadClicks += 1;
messageElem = document.getElementById(messageId);
	if (uploadClicks > 1){
	messageElem.innerHTML = patientMessage ;
	return false;
	}
	else
	{

	waitElem = document.getElementById(waitAnimationId);
	messageElem = document.getElementById(messageId);
	waitElem.style.display = "inline";
	messageElem.innerHTML = message ;
	//uploadButtonElem = document.getElementById(uploadButtonId);
	//browseFileInput = document.getElementById(fileInputId);
	//disableAttr = document.createAttribute('disabled');
	//uploadButtonElem.setAttributeNode(disableAttr);
	//madForm.submit();
	return true;
	}
//browseFileInput.setAttributeNode(disableAttr);

}


function incdecNumeric(elid,step){
el=document.getElementById(elid);
if (el){
	val=el.value;
	if (!val){
	val=0;
	}
	val=parseInt(val);
	val+=step;
	start = el.getAttribute('start')
	if (start != ''){
		start=parseInt(start);
		if (val < start)
			return false;
	}

	endv = el.getAttribute('end')
	if (endv != ''){
		endv=parseInt(endv);
		if (val > endv)
			return false;
	}
	el.value=val;

}
return false;
}


function adjustToCal(fromcal){
	var d = new Date();
	var fd = fromcal.date;
	d.setFullYear(fd.getFullYear());
	d.setMonth(fd.getMonth());
	d.setDate(fd.getDate()+7);


	to_date_CalVar1.setSelDate( d);
}

