var sel_val=""; 

function getElementByName(name,type) {
	var name_arr=document.getElementsByName(name);
        for (p=0;p<=name_arr.length - 1;p++) {
		if (name_arr.item(p).nodeName == type) {
                	return (name_arr.item(p).id);
		}
	}
}

function getAbsoluteLeft(obj_name,by,type) {
	if (by == "id") {
        	var obj=document.getElementById(obj_name);
	}
	else {
		var obj=document.getElementById(getElementByName(obj_name,type));
	}
	var left=obj.offsetLeft;
	while ((obj=obj.offsetParent) != null) { left += obj.offsetLeft; }
		return left;
}

function getAbsoluteTop(obj_name,by,type) {
	if (by == "id") {
		var obj=document.getElementById(obj_name);
	}
	else {
		var obj=document.getElementById(getElementByName(obj_name,type));
	}
	var top=obj.offsetTop;
	while ((obj=obj.offsetParent) != null) { top += obj.offsetTop; }
	return top;
}

function showHide(divObject) {
    var object = document.getElementById(divObject);
    if (object.style.visibility == 'visible') {
        object.style.visibility = 'hidden';
        object.style.heigth = '0px';
        object.style.width = '0px';
        object.style.top ='0px';
        object.style.left ='0px';
    }
    else {
        object.style.visibility = 'visible';
        w=window.innerWidth - 200;
        h=window.innerHeight - 200;
        object.style.height = "85%";
        object.style.width = '85%';
        object.style.zIndex = 150;
        // palcing the div tag at the center of the screen !! 
        object.style.top = Math.abs((document.body.offsetHeight-object.offsetHeight)/2) + 'px';
        object.style.left = Math.abs((document.body.offsetWidth-object.offsetWidth)/2) + 'px';
    }
}

function hide(divObject) {
    var object = document.getElementById(divObject);
    object.style.visibility = 'hidden';
    object.style.heigth = '0px';
    object.style.width = '0px';
    object.style.top ='0px';
    object.style.left ='0px';
}

function closeAllPickers() {
    var divObject=document.getElementsByTagName("div")
    if (document.getElementById("add_image_div")) {
        document.getElementById("add_image_div").style.visibility="hidden";
    }
    var pattern=new RegExp ("^Objectpicker_");
    
    for (i=0; i<divObject.length; i++) {
        id=divObject[i].id;
        if (id.match(pattern) != null) {
            selection_id = "select_"+id;
            if (document.getElementById(selection_id).clicked) {} else {
                hide(id);
            }
            document.getElementById(selection_id).clicked=0;
        }
    }
}

function setValue(divObject, selectedObject) {
        collection=divObject.replace(/[^_]*_/,"");
        selected_collection="select_"+divObject;
        value_collection="values_"+divObject;
        valuesarr=selectedObject.id.split("___");
        document.getElementById(value_collection).innerHTML+="<input type='hidden' value='"+ valuesarr[0] +"' name='"+ collection +"'>"
        if (document.getElementById(selected_collection).innerHTML=="") {
            document.getElementById(selected_collection).innerHTML=valuesarr[1];
        }
        else
        {
            document.getElementById(selected_collection).innerHTML+=","+valuesarr[1];
        }
}

function imgExists(selField,id) {
    str_arr=document.getElementById(selField).value.split(",");
    for (i=0;i<str_arr.length;i++) {
        if (str_arr[i] == id) {
            return 1;
        }
    }
    return 0;
} 

function addBorderStyle(n) {
    if (n.id) {
        if (n.nodeName == 'IMG') {
            document.getElementById(n.id).style.borderWidth="1px";
            document.getElementById(n.id).style.borderColor="red";
        }
    }
    
    var children = n.childNodes;
    for(var i=0; i < children.length; i++) {
        addBorderStyle(children[i]);
    }

            
}

function changeImage(object,selField,outerdiv,task) {
    id=object.getAttribute("imgid")
    sel_images = "values_" + outerdiv; 
    sel_images_show = "select_" + outerdiv;
        
    if (!imgExists(selField,id)) {
        if (task != 'pick_single') {
            document.getElementById(sel_images).innerHTML+="<input type='hidden' name='" + outerdiv.replace(/^Objectpicker_/,"") + "' value='"+ id  +"' id='" + outerdiv.replace(/^Objectpicker_/,"") + "'> "
        }
        else
        {
            document.getElementById(sel_images).innerHTML="<input type='hidden' name='" + outerdiv.replace(/^Objectpicker_/,"") + "' value='"+ id  +"' id='" + outerdiv.replace(/^Objectpicker_/,"") + "'> "
        }
    }
    alert(document.getElementById(sel_images).innerHTML);
}


function removeImage(imgName,divObject,toUpdate,outerdiv,id,task) {
    sel_images = "values_" + outerdiv; 
    sel_images_show = "select_" + outerdiv;

    node=document.getElementById(divObject).childNodes;
    sel_images_node=document.getElementById(sel_images).childNodes;
    
    img=imgName.replace(/selected_/,"");
    document.getElementById(toUpdate).innerHTML="<img id='selection' src='cache/"+img+"' style='border: 2px solid #909090;padding: 5px' style='opacity:0;filter:alpha(opacity=0); -moz-opacity: 0'>";
    animate('selection',0,100,30);

    var hidden_tag_val="";
    for (i=0;i<sel_images_node.length;i++) {
        if (typeof (sel_images_node[i].value) != "undefined") {
            if (sel_images_node[i].value != id) {
                if (task == 'pick_single') {
                    hidden_tag_val="<input type='hidden' name='" + outerdiv.replace(/^Objectpicker_/,"") + "' value='"+ sel_images_node[i].value +"' id='" + outerdiv.replace(/^Objectpicker_/,"") + "'> ";
                }
                else {
                    hidden_tag_val+="<input type='hidden' name='" + outerdiv.replace(/^Objectpicker_/,"") + "' value='"+ sel_images_node[i].value +"' id='" + outerdiv.replace(/^Objectpicker_/,"") + "'> ";
                }
            }
        }
    }
    document.getElementById(sel_images).innerHTML=hidden_tag_val;

    var expression=new RegExp(".*"+imgName.replace(/^picker_small_/,"")+".*");
    var selarr=document.getElementById(sel_images_show).innerHTML.split(",");
    var newstr="";
    for(i=0;i<selarr.length;i++) {
        if (!selarr[i].match(expression)) {
            if (task != 'pick_single') {
                newstr+=selarr[i]+", ";
            }
            else {
                newstr=selarr[i];
            }
        }
    }
    newstr=newstr.replace(/,\s*$/,"")
    if (newstr == "")
    {
        newstr="select";
    }
    
    document.getElementById(sel_images_show).innerHTML=newstr;

    
    

    var newtag_val="";
    for (i=0;i<node.length;i++) {
        if (typeof(node[i].id)!="undefined") {
            if (node[i].id != "selected_"+imgName) {
                img=node[i].id.replace(/selected_/,"");
                event_val=node[i].getAttribute('onclick');
                if (task == 'pick_single') {
                    newtag_val="<img id=\"selected_"+img+"\" src=\"cache/"+img+"\" border=\"1\" style=\"border-color: red;cursor: pointer\" height=\"24\" width=\"24\" onclick=\""+ event_val +"\">&nbsp;&nbsp;";
                }
                else
                {
                    newtag_val+="<img id=\"selected_"+img+"\" src=\"cache/"+img+"\" border=\"1\" style=\"border-color: red;cursor: pointer\" height=\"24\" width=\"24\" onclick=\""+ event_val +"\">&nbsp;&nbsp;";
                }
            }
        }
    }
    document.getElementById(divObject).innerHTML=newtag_val;
}

function animate(id, opacStart, opacEnd, sec) {
    var speed = sec;
    var timer = 0;
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            var fname = "changeOpacityById('" + id + "'," + i +")";
            setTimeout( fname, (timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            var fname = "changeOpacityById('" + id + "'," + i +")";
            setTimeout( fname, (timer * speed));
            timer++;
        }
    }
}

function changeOpacityById(imageId, opacity) {
    var object = document.getElementById(imageId).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}

function changeOpacity(imageobject, opacity) {
    var object = imageobject.style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}

function getStyleProperty(object, property){
    var strValue = "";
    if(document.defaultView && document.defaultView.getComputedStyle){
        strValue = document.defaultView.getComputedStyle(object, "").getPropertyValue(property);
    }
    else if(object.currentStyle){
        property = property.replace(/\-(\w)/g, function (strMatch, p1){
            return p1.toUpperCase();
        });
        strValue = object.currentStyle[property];
    }
    return strValue;
}


function getNewPage(page,url_str) {
    hiddenFrame=frames["hiddenFrame"];
    hiddenFrame.location=url_str +"&page_no=" + page;
}

function loadComplete(collection_id, page_id) {
    hiddenFrame=frames["hiddenFrame"];
    document.getElementById(collection_id).innerHTML=hiddenFrame.document.getElementById(collection_id).innerHTML;
    document.getElementById(page_id).innerHTML=hiddenFrame.document.getElementById(page_id).innerHTML;
}


function getQueryVariable(variable) {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return pair[1];
    }
  } 
}

function displayImage(imgObject, div) {
    imgPath=imgObject.getAttribute("src");

    document.getElementById(div).innerHTML="<img src=\""+imgPath+"\" style=\"border: 2px solid #404040;padding: 5px\">";
}

function updateList(element,value,action) {
    object=document.getElementById(element);
    if (action == 's') {
        object.value=value;
    }
    else {
        if (object.value != "")
        {
            id_arr=object.value.split(",");
            
            object.value="";
            for(i=0;i<id_arr.length;i++)
            {
                // remove the value if exists this will avoid duplication of values.
                if (id_arr[i]!=value) {
                    object.value += id_arr[i]+",";
                }
            }
            if (action == 'a') { object.value += value; }
        }
        else 
        {
            if (action == 'a') { object.value = value ;}
        }
    }
    object.value = object.value.replace(/,$/,""); 

    if (object.value == "0") { object.value = ""; }
}

function checkSelected(imgObject,field) {
    if (document.getElementById("selected_images")) {
        str=document.getElementById(field).value;
        str_arr=str.split(",");
    
        for(i=0;i<str_arr.length;i++) {
            if (str_arr[i]==imgObject.getAttribute("imgid")) {
                imgObject.border="3px";         
                imgObject.clicked = true;
                imgObject.style.borderColor="blue";
            }
        }
    }
}

function updateCSV (obj,value,row,count) {
    if (document.getElementById(obj)) {
        str=","+document.getElementById(obj).value + ",";
        var re=new RegExp(","+value+",");
        if (str.match(re)) {
                str=str.replace(re, ",");
                if (count == 0) {
                    row.bgColor="#f1f1f1";
                    row.onmouseout=function() {row.bgColor="#f1f1f1"};
                } else {
                   row.bgColor="#fdfdfd";
                    row.onmouseout=function() {row.bgColor="#fdfdfd"};
                }
        } else {
               str+=value+",";
               row.bgColor="yellow";
               row.onmouseout=function() {row.bgColor="yellow"};
        }
        
        str=str.replace(/,*$/,"");
        str=str.replace(/^,*/,"");
        document.getElementById(obj).value=str;
    }
}

function update_recipients(field) { 
       userlist=field;
       while(document.getElementById(field).parentNode.nodeName != "BODY") {
              if (document.getElementById(field).parentNode.nodeName == "FORM") {
                  form=document.getElementById(field).parentNode.id;
		  break;
              }
	      else {
                  field=document.getElementById(field).parentNode.nodeName.id;
              }
       }
       
       str_arr=document.getElementById(userlist).value.split(",");
       a=document.createElement('div');
       for(i=0;i<str_arr.length;i++) {
           a.innerHTML+="<input type='hidden' name='public.newsletter_recipients.user_id' value='"+str_arr[i]+"'>"
       }

       set_action('add');
       document.getElementById(form).appendChild(a);
       
}
/*function updateCSV(obj_name,newval,action) {
    if (document.getElementById(obj_name)) {
        str=document.getElementById(obj_name).value;
        imgstr=document.getElementById(obj_name+"_name").value;
        if (action=='a') {
            if (str == "") {
                str=newval;
                str_arr=str.split(",");
                for(i=0;i<str_arr.length;i++){
                    imgstr+=getImageName(str_arr[i])+",";
                }
                imgstr=imgstr.replace(/,$/,"");
            }
            else {
                str_arr=str.split(",");
                imgstr_arr=imgstr.split(",");
                newval_arr=newval.split(",");
                for (i=0;i<newval_arr.length;i++) {
                    found=0;
                    val="";
                    imgval="";
                    for(j=0;j<str_arr.length;j++) {
                       if (newval_arr[i]==str_arr[j]) {
                            found=1;
                        }
                        else {
                            val=newval_arr[i];
                            imgval=getImageName(newval_arr[i]);
                        }
                    }
                    if (found == 0) {
                        str_arr.push(val);
                        imgstr_arr.push(imgval);
                    }
                }
                str=str_arr.toString().replace(/,$/,"");
                imgstr=imgstr_arr.toString().replace(/,$/,"");
            }
        }
    
        if (action=='d') {
            newval_arr=newval.split(",");
            for (i=0;i<newval_arr.length;i++) {
                str_arr=str.split(",");
                imgstr_arr=imgstr.split(",");
                str="";
                imgstr="";
                for(j=0;j<str_arr.length;j++) {
                    if (newval_arr[i]!=str_arr[j]) {
                        str+=str_arr[j]+",";
                        if (getImageName(str_arr[j])) {
                            imgstr+=getImageName(str_arr[j])+",";
                        }
                        else {
                            imgstr+=imgstr_arr[j]+",";
                        }
                    }
                }
                str=str.replace(/,$/,"");
                imgstr=imgstr.replace(/,$/,"");
            }
            str=str.replace(/,$/,"");
            imgstr=imgstr.replace(/,$/,"");
        }
        document.getElementById(obj_name).value=str;
        document.getElementById(obj_name+"_name").value=imgstr;
    }
}*/

function setvalues(valueDiv,displayDiv,task,values) {
    image_field=valueDiv.replace(/^values_Objectpicker_/,"");
    hideDiv=valueDiv.replace(/^values_/,"");
    id_arr=document.getElementById(values).value.split(",");
    name_arr=document.getElementById(values+"_name").value.split(",");
    document.getElementById(valueDiv).innerHTML="";
    document.getElementById(displayDiv).innerHTML="";
    if (task == 'pick_single') {
        id=id_arr.pop();
        name=name_arr.pop();
        
        document.getElementById(valueDiv).innerHTML="<input type=\"hidden\" name=\""+image_field+"\" id=\""+image_field+"\" value=\""+id+"\">";
        document.getElementById(displayDiv).innerHTML=name;
    }
    else {
        for (x=0;x<id_arr.length;x++) { 
            document.getElementById(valueDiv).innerHTML+="<input type=\"hidden\" name=\""+image_field+"\" id=\""+image_field+"\" value=\""+id_arr[x]+"\">";
            document.getElementById(displayDiv).innerHTML+=name_arr[x]+",";
        }
        document.getElementById(displayDiv).innerHTML=document.getElementById(displayDiv).innerHTML.replace(/,$/,"");
    }
    showHide(hideDiv);
}

function getImageName(id) {
    img=document.getElementsByTagName("IMG");
    for (k=0;k<img.length;k++) {
        if (img[k].getAttribute("imgid")) {
            if (img[k].getAttribute("imgid") == id) {
                return img[k].getAttribute("src").replace(/^cache\/picker_small_/,"");
            }
        }
    }
    return false;
}

function setBorder(imgObject,event,task) {
// event values are as follows:
// 1 : onclick
// 2 : onmouseover
// 3 : onmouseout
// upateList acts upon the local image list of this page, and supports selectAll and invertSelection
// updateCSV acts upon the corresponding string vector which drives the UI, it has information
// on which images are selected overall and of those which ones to show on this page

// task values are as follows
// pick_single : only one image can be selected at a time
// pick_mutiple : allow multiple images to be selected 

    var event_onclick = 1;
    var event_onmouseover = 2;
    var event_onmouseout = 3;

    if ((event == event_onclick)||(event == event_onmouseover)) {
        imgObject.border="3px";
        if (event == event_onclick) {
            if (imgObject.clicked) {
                imgObject.clicked = false;
                imgObject.border="1px";
                imgObject.style.borderColor="red";
                updateList('selection',imgObject.getAttribute("imgid"),'d');
                updateCSV('selected_images',imgObject.getAttribute("imgid"),'d');
            }
            else {
                if (task == 'pick_single') {
                    img = document.getElementsByTagName("IMG");
                    for (x=0; x<img.length; x++) {
                        if (img[x].getAttribute("imgid")) {
                            img[x].clicked = false;
                            img[x].border="1px";
                            img[x].style.borderColor="red";
                            updateCSV('selected_images',img[x].getAttribute("imgid"),'d');
                        }
                    }
                    imgObject.border="3px";
                }
                imgObject.clicked = true;
                imgObject.style.borderColor="blue";
                updateList('selection',imgObject.getAttribute("imgid"),'a');
                updateCSV('selected_images',imgObject.getAttribute("imgid"),'a');
            }
        }
    }
    
    if ((event == event_onmouseout) && (!imgObject.clicked)){
        imgObject.border="1px";
        imgObject.style.borderColor="red";
    }
}

function selectAll(n, level) {
    if (level == 0) {
        sel_val="";
    }
    if (n.id) {
        if (n.nodeName == 'IMG') {
            document.getElementById(n.id).border="3px";
            document.getElementById(n.id).style.borderColor="blue";
            document.getElementById(n.id).clicked=true;
            sel_val += document.getElementById(n.id).getAttribute("imgid")+",";
        }
    }

    var children = n.childNodes;
    for(var i=0; i < children.length; i++) {
        selectAll(children[i], level+1);
    }
    if (level == 0) {
        sel_val = sel_val.replace(/,$/,"");
        updateList('selection',sel_val,'s');
        updateCSV('selected_images',sel_val,'a');
    }
}

function invertSelection(n, level) {
    if (level == 0) {
        sel_val="";
        to_del="";
    }
    if (n.id) {
        if (n.nodeName == 'IMG') {
            if (document.getElementById(n.id).clicked) {
                document.getElementById(n.id).border="1px";
                document.getElementById(n.id).style.borderColor="red";
                document.getElementById(n.id).clicked=false;
                to_del+=document.getElementById(n.id).getAttribute("imgid")+",";
            }
            else {
                document.getElementById(n.id).border="3px";
                document.getElementById(n.id).style.borderColor="blue";
                document.getElementById(n.id).clicked=true;
                sel_val += document.getElementById(n.id).getAttribute("imgid")+",";
            }
        }
    }

    var children = n.childNodes;
    for(var i=0; i < children.length; i++) {
        invertSelection(children[i]);
    }
    if (level == 0) {
        sel_val = sel_val.replace(/,$/,"");
        to_del = to_del.replace(/,$/,"");
        updateList('selection',sel_val,'s');
        updateCSV('selected_images',to_del,'d');
        updateCSV('selected_images',sel_val,'a');
    }
}

function delete_images(target_url,page_no) {
    page=document.getElementById(page_no).value;
    id_str="";
    id_arr=document.getElementById('selection').value.split(",")
    for(i=0;i<id_arr.length;i++) {
        if (id_arr[i]!="") { id_str += "&id=" + parseInt(id_arr[i]); }
    }
    if (id_str == "") {
        alert("Nothing to Delete");
        return;
    }
    target_url+="&on_success=redraw_page(" + page + ")" + id_str;
    quietly_invoke_url(target_url);
}

function redraw_page(page_no) {
    url=location.href + "&collection_id=image_collection&page_id=page_value&called_from=iframe";
    getNewPage(page_no,url)
    
}

function add_images(target_url,page_no,divobject) {
    frame=divobject.replace(/_div$/,"");
    addFrame=frames[frame];
    setTimeout("showHideFrame('"+divobject+"','"+page_no+"')",30);
    target_url+="&page_no="+page_no;
    addFrame.location=target_url;


}

function loadCompleteAdd(iframe,page_no) {
    frame=iframe.replace(/_div$/,"");
    page=document.getElementById(page_no).value;
    hiddenAddFrame=frames[frame];
    hiddenAddFrame.document.getElementById("on_success").value="hideAddImage('"+iframe+"',"+ page +")";
    hiddenAddFrame.document.getElementById("on_failure").value="popupError('"+iframe+"')";
}

function showHideFrame(frame) {
    iframe=frame.replace(/_div$/,"");
    object = document.getElementById(frame);
    object.style.visibility = 'visible';
    object.style.zIndex = 1500;

    // palcing the div tag at the center of the screen !!
    object.style.top = Math.abs((document.body.offsetHeight-object.offsetHeight)/2) + 'px';
    object.style.left = Math.abs((document.body.offsetWidth-object.offsetWidth)/2) + 'px';

}

function hideAddImage(iframe,page) {
    var object = parent.document.getElementById(iframe);
    object.style.visibility="hidden";
    object.style.zIndex = 0;
 
    // palcing the div tag at the center of the screen !!
    object.style.top = '0px';
    object.style.left = '0px';
    alert("Image(s) Added Successfully !!");

    url=parent.location.href + "&collection_id=image_collection&page_id=page_value&called_from=iframe";
    getNewPageFromParent(page,url)


}

function popupError(iframe) { 
    var object = parent.document.getElementById(iframe);
    object.style.visibility="hidden";
    object.style.zIndex = 0;

    // palcing the div tag at the center of the screen !!
    object.style.top = '0px';
    object.style.left = '0px';

    alert("Server Error !! Please try again")
}

function addImage(url) {
    hiddenFrame=frames["hiddenFrame"];
    hiddenFrame.location=url;
    
}

function get_name_from_path(s) {
    var i = s.lastIndexOf("\\");
    if (!(i > 0)) {
        i = s.lastIndexOf("index.html");
    }
    if (i > 0) {
        return s.substr(i+1);
    }
}

function getNewPageFromParent(page,url_str) {
    hiddenFrame=parent.frames["hiddenFrame"];
    hiddenFrame.location=url_str +"&page_no=" + page;
}


function addRowToTable(tblname)
{
  var tbl = document.getElementById(tblname);
  var lastRow = tbl.rows.length;

  // if theres no header row in the table, then iteration = lastRow + 1
  var iteration = lastRow;
  var row = tbl.insertRow(lastRow);

  // column list have format :a:b:c:d:e:
  var columns_list=document.getElementById('columns_list').value;
  var columns=columns_list.split(":");

 
  // left cell
  row.innerHTML=row.innerHTML + '<td></td>';

  // json start
  var new_json="{";

  // adding columns data into table 
  var lastcell=0;
  for(var i=lastcell;i<columns.length-1;i++) {
   
      // getting value of the column 
      var column=document.getElementById(columns[i]);
      var column_value;
      if (column != null && column != ''  ) {
          // getting value of the column
          column_value=column.value;
         
          row.innerHTML=row.innerHTML + '<td>'+ column_value +'</td>';

         // creating json node
         new_json=new_json+"\""+columns[i]+"\""+" : "+"\""+column_value+"\"";
         if (i < (columns.length-1)) {
            new_json=new_json+",";
         }

      } else {
          column_value="";
      }

   
      lastcell=i;
  }

   new_json=new_json.replace(/,$/,"");

   // json end
   new_json=new_json+"}";

   // creating recordset hidden textbox in last cell in the row
   row.innerHTML=row.innerHTML + "<td><input id='recordset' name='recordset' type='hidden' value='"+ new_json +"' ></td>";


   if (columns.length>2) document.getElementById(columns[2]).focus();

}

function removeRowFromTable(tblname)
{
   var tbl = document.getElementById(tblname);
   var lastRow = tbl.rows.length;
   if (lastRow > 2)  {
      // deleting row
      tbl.deleteRow(lastRow - 1);
   }

   // column list have format :a:b:c:d:e:
   var columns_list=document.getElementById('columns_list').value;
   var columns=columns_list.split(":");

   if (columns.length>2) document.getElementById(columns[2]).focus();

}



