﻿/*
=============================================
 Copyright (C) 2011 Al Jazeera Network
 All rights reserved.
 Aljazeera Software unit
 Developer: Alsherbeny Ahmed (sherbeny@gmail.com)
=============================================
*/
function g$(id) {return document.getElementById(id);}
function $$(id) {return document.getElementsByName(id);}
function showMenu(cntrl) { var TargetControl; TargetControl = g$(cntrl); if (TargetControl) { TargetControl.style.display = "" } } function hideMenu(cntrl) { var TargetControl; TargetControl = g$(cntrl); if (TargetControl) { TargetControl.style.display = "none" } } function ShowHide(cntrl) { var TargetControl; TargetControl = g$(cntrl); if (TargetControl) { if (TargetControl.style.display == "none") { TargetControl.style.display = "" } else { TargetControl.style.display = "none" } } }
function SelectChannel(PostType , TextBoxCtrl ){window.open('/Services/Templates/frmChannels.aspx?PostType=' + PostType  + '&TextCTrl=' + TextBoxCtrl ,'SelectPost' + PostType ,'menubar=0,resizable=1,width=830,height=490,scrollbars=1,status=1,top=200,left=50');}
function SelectPosting(PostType , TextBoxCtrl ){window.open('/Services/Templates/frmSelectPosting.aspx?PostType=' + PostType  + '&TextCTrl=' + TextBoxCtrl ,'SelectPost' + PostType ,'menubar=0,resizable=1,width=830,height=490,scrollbars=0,status=1,top=200,left=50');}
function MaxCount(field, maxlimit) { var charcnt = field.value.length; if (charcnt > maxlimit) { field.value = field.value.substring(0, maxlimit) } }
function textCounter(field, counter, maxlimit, linecounter) { var fieldWidth = parseInt(field.offsetWidth); var charcnt = field.value.length; if (charcnt > maxlimit) { field.value = field.value.substring(0, maxlimit) } else { var percentage = parseInt(100 - ((maxlimit - charcnt) * 100) / maxlimit); g$(counter).style.width = parseInt((fieldWidth * percentage) / 100) + "px"; g$(counter).align = "center"; setcolor(g$(counter), percentage, "background-color") } }
function setcolor(obj,percentage,prop){obj.style[prop] = "rgb(80%,"+(100-percentage)+"%,"+(100-percentage)+"%)";}
function changestyle(){g$('ctl00_TemplateStyle').href = '/Styles/PrintAble.css';}
function OpenDocWindow(url){window.open(url,"DocWindow","menubar=1,resizable=1,width=650,height=540,scrollbars=1,status=1");}
function OpenWindow(url,width,height){window.open(url,"DocWindow" + width,'menubar=1,resizable=1,width=' + width + ',height=' + height + ',scrollbars=1,status=1');}
function OpenSearch(prefix, searchText){var ctrl= g$(searchText) ; if (ctrl){window.location = prefix + "/Search/?Kw=" + ctrl.value;}}
function resizeCaller() {var dyniframe = new Array();for (i=0; i<iframeids.length; i++){if (document.getElementById)resizeIframe(iframeids[i]);if ((document.all || document.getElementById) && iframehide == "no") {var tempobj = document.all ? document.all[iframeids[i]] : g$(iframeids[i]);tempobj.style.display = "block";}}}
function resizeIframe(frameid){
    var currentfr = g$(frameid);
    var getFFVersion = navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1];
    var FFextraHeight = parseFloat(getFFVersion) >= 0.1 ? 16 : 0;  //extra height in px to add to iframe in FireFox 1.0+ browsers

    if (currentfr && !window.opera){
        currentfr.style.display = "block";
        if (currentfr.contentDocument && currentfr.contentDocument.body.offsetHeight) //ns6 syntax
            currentfr.height = currentfr.contentDocument.body.offsetHeight+FFextraHeight; 
        else if (currentfr.Document && currentfr.Document.body.scrollHeight) //ie5+ syntax
            currentfr.height = currentfr.Document.body.scrollHeight;
    }
}

function Validate_Required(e, c, m) { var field = g$(e); var target = g$(c); if (field) { if (field.value == null || field.value == "") { field.select(); target.innerHTML = m; return false } else { target.innerHTML = ''; return true } } }

function Validate_Email(e, c, m) {
    var emailfilter = /^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,4}|\d+)$/i
    var target = g$(c);
    var field = g$(e)
    if (field) {
        var returnval = emailfilter.test(field.value)
        if (returnval == false) {
            field.select();
            target.innerHTML = m;
        }
        else
            target.innerHTML = '';
        return returnval
    }
    else
        return false;
}

function Validate_Length(e, c, min, max)
{
    var field = g$(e);
	var target = g$(c);
	var uInput = field.value;
	if(uInput.length >= min && uInput.length <= max){
		target.innerHTML='';
		return true;
	}else{
	    field.select()
	    target.innerHTML='Max allowed '+max;
		return false;
	}
}

/*submit comment on a posting*/
function submitComment(btn) {
    var theform;
    var loadingImg;
    loadingImg = g$('_imgLoading');
    theform = g$("_fbForm");
    if (theform) {
        g$('_fbName').value = g$('txtfbName').value;
        g$('_fbEmail').value = g$('txtfbEmail').value;
        g$('_fbTitle').value = g$('txtfbTitle').value;
        g$('_fbBody').value = g$('txtfbComment').value;
        g$('_fbGuid').value = g$('txtfbGuid').value;
        theform.method = 'post';
        theform.target = '_blank';
        loadingImg.style.display = '';
        btn.disabled = 'disabled';

        var status = AjaxRequest.submit(
            theform
            , {
                'onSuccess': function (req) {
                    g$('_output').innerHTML = req.responseText;
                    if (g$('_cmtAddeddSucc'))
                        g$('_cmtMainTable').style.display = 'none';
                    else
                        btn.disabled = '';
                    loadingImg.style.display = 'none';

                }
            , 'onError': function (req) {
                g$('_output').innerHTML = req.responseText;
                btn.disabled = '';
                loadingImg.style.display = 'none';
            }
            , 'onTimeout': function (req) {
                g$('_output').innerHTML = "time out";
                btn.disabled = '';
                loadingImg.style.display = 'none';
            }
            }
        );
    }
    return status;
}

/*************************/
//Specify affected tags. Add or remove from list:
var tgs = new Array('div','td','span','p');
var szs = new Array('10px','11px','12px ','13px','14px','15px','16px','17px','18px','19px','20px','21px','24px','27px','35px','40px' );
var startSz = 7;
function FormSize(trgt, inc) { if (!document.getElementById) return; var d = document, cEl = null, sz = startSz, i, j, cTags; sz += inc; if (sz < 0) sz = 0; if (sz > 15) sz = 15; startSz = sz; if (!(cEl = d.getElementById(trgt))) cEl = d.getElementsByTagName(trgt)[0]; cEl.style.fontSize = szs[sz]; for (i = 0; i < tgs.length; i++) { cTags = cEl.getElementsByTagName(tgs[i]); for (j = 0; j < cTags.length; j++) cTags[j].style.fontSize = szs[sz] } }
//////////////////////////////////////
function bookMark() { var title; var url; title = document.title; url = window.location; if (window.sidebar) {window.sidebar.addPanel(title, url, ""); } else if (window.external) {window.external.AddFavorite(url, title); } else if (window.opera && window.print) {return true; } }
function showVideo(filePath, outputDiv) {showVideo3(filePath, outputDiv, 340, 220,'false');}
function showVideo2(filePath, outputDiv, fwidth, fheight) {showVideo3(filePath, outputDiv, fwidth, fheight, 'false');}
function showVideo3(filePath, outputDiv, fwidth, fheight, autoplay) {showVideo4(filePath, outputDiv, fwidth, fheight, autoplay, '1')}
function showVideo4(filePath, outputDiv, fwidth, fheight, autoplay, playerFlag) {
    var bc_params = {};
    if (playerFlag == '2')
        bc_params["playerId"] = 664965307001;
    else if (playerFlag == '3')
        bc_params["playerId"] = 664965305001;
    else
        bc_params["playerId"] = 721409102001;

    bc_params["id"] = "myExperience" + filePath; +outputDiv;
    bc_params["class"] = "BrightcoveExperience";
    bc_params["bgcolor"] = "#FFFFFF";
    bc_params["width"] = fwidth;
    bc_params["height"] = fheight;
    bc_params["@videoPlayer"] = filePath;
    bc_params["autoStart"] = autoplay;

    var pHtml = "\n\n<!-- Start Video Player -->";
    pHtml += "\n<div style=\"width:" + bc_params["width"] + "px;height:" + bc_params["height"] + " \">";
    pHtml += "\n<object id=\"" + bc_params["id"] + "\" class=\"BrightcoveExperience\">";
    pHtml += "\n<param name=\"bgcolor\" value=\"" + bc_params["bgcolor"] + "\" />";
    pHtml += "\n<param name=\"width\" value=\"" + bc_params["width"] + "\" />";
    pHtml += "\n<param name=\"height\" value=\"" + bc_params["height"] + "\" />";
    pHtml += "\n<param name=\"playerID\" value=\"" + bc_params["playerId"] + "\" />";
    pHtml += "\n<param name=\"autoStart\" value=\"" + bc_params["autoStart"] + "\" />";

    // Start Assigning Programming
    if (bc_params["@videoPlayer"] != null) {
        pHtml += "\n<param name=\"@videoPlayer\" value=\"" + bc_params["@videoPlayer"] + "\" />";
    }
    // End Assigning Programming

    pHtml += "\n<param name=\"isVid\" value=\"true\" />";
    pHtml += "\n<param name=\"isUI\" value=\"true\" />";
    pHtml += "\n</object>";
    pHtml += "\n</div>";
    pHtml += "\n<!-- End Video Player -->\n\n";
    g$(outputDiv).innerHTML = pHtml;
    brightcove.createExperiences('0', bc_params["id"]);
}

function showAudio(filePath, outputDiv) {
    var s1 = new SWFObject("/Media/Flash/Audioplayer.swf", "audiomp3", "240", "45", "9");
    s1.addParam("autostart", "no");
    s1.addParam("transparentpagebg", "yes");
    s1.addVariable("soundFile", filePath);
    s1.write(outputDiv);
}

var _lastDiv;
function ShowVideoData(ctrlid) {
    var t = g$('_divVideoTitle');
    var s = g$('_divVideoSummary');
    var currentDiv = g$(ctrlid);
    var lastDiv = g$(_lastDiv);

    if (t && g$('_dht' + ctrlid))
        t.innerHTML = g$('_dht' + ctrlid).innerHTML;
    if (s && g$('_dhs' + ctrlid))
        s.innerHTML = g$('_dhs' + ctrlid).innerHTML;

    if (currentDiv) {
        currentDiv.className = 'thumSelected';
        _lastDiv = currentDiv.id;
    }
    if (lastDiv)
        lastDiv.className = 'thum';
}

function PrintThisPage(dateCtrl, titleCtrl, content1) {
    var txtOption = 'toolbar=yes,location=no,directories=yes,menubar=no,resizable=yes,scrollbars=yes,width=900,height=600,left=100,top=25';
    var txtTitle;
    var txtBody;
    var txtDate;
    var txtFooter;
    try {
        txtTitle = g$(titleCtrl).innerHTML;
        txtBody = g$(content1).innerHTML;
        txtDate = g$(dateCtrl).innerHTML;
        txtFooter = g$('_postingFooter').innerHTML;
    }
    catch (e) {};
    var winprint = window.open('', '', txtOption);
    winprint.document.open();
    winprint.document.write('<html dir=rtl><link href=/Styles/PrintAble.css rel=stylesheet type=text/css />');
    winprint.document.write('<body><form><Table align=center width=650px border="0" cellpadding="0" cellspacing="5">');
    winprint.document.write('<tr><td><img src=/Media/Images/logo-print.jpg></td></tr>');
    winprint.document.write('<tr><td>');
    winprint.document.write(txtDate);
    winprint.document.write('</td></tr>');
    winprint.document.write('<tr><td>');
    winprint.document.write(txtTitle);
    winprint.document.write('</td></tr>');

    winprint.document.write('<tr><td>');
    winprint.document.write(txtBody);
    winprint.document.write('</td></tr></Table><br><div>');
    winprint.document.write(txtFooter);
    winprint.document.write('</div></form></body></html>');
    winprint.document.write('<script>window.print();<');
    winprint.document.write('/');
    winprint.document.write('script>');
    winprint.document.close();
    winprint.focus();
}

///////////////Scroll functions //////////////////
var gTop=0;
var gIncVal = 0;
var objEncNav;
function scrollMe(arg, scrollCnt) {
    objEncNav = g$(scrollCnt);
    // var scrollAmount define the fast and
    // the amount of scrolling pane
    var scrollAmount = 200;
    var objEncNavHeight = parseInt(objEncNav.offsetHeight);
    var objEncNavTop = objEncNav.style.top;

    // var barHeight defines the heigt of inner layer
    // it must set -10 from max height
    var barHeight = 260;

    if (!objEncNavTop)
        objEncNavTop = 0;
    else
        objEncNavTop = objEncNavTop.substring(0, objEncNavTop.length - 2);

    if (arg > 0) {
        if (objEncNavTop >= 0 || objEncNavTop > (-(objEncNavHeight - (barHeight + scrollAmount)))) {
            incrementValue = scrollAmount;
        }
        else if (objEncNavTop < (-(objEncNavHeight - (barHeight + scrollAmount)))) {
            incrementValue = (objEncNavHeight - barHeight) + parseInt(objEncNavTop);
        }
        else {
            incrementValue = 0;
        }
        encSmoothScroll("minus", parseInt(objEncNavTop), parseInt(incrementValue));
    }
    else {
        if (objEncNavTop < 0 && ((parseInt(objEncNavTop) + scrollAmount) < 0)) {
            incrementValue = scrollAmount;
        }
        else {
            incrementValue = -objEncNavTop - 0;
        }
        encSmoothScroll("plus", parseInt(objEncNavTop), parseInt(incrementValue));
    }
}
function encSmoothScroll(dir, currentVal, incValue) {
    gTop = currentVal;
    gIncVal = incValue;
    encScrollBy(dir, 0)
}
function encScrollBy(dir, val) {
    if (val < gIncVal) {
        var tmpInc;
        if ((gIncVal - val) > 1) {
            tmpInc = Math.ceil((gIncVal - val) / 10);
            if (tmpInc < 1)
                tmpInc = 1;
        }
        else {
            tmpInc = gIncVal - val;
        }

        val += tmpInc;

        //var objEncNav=g$('_encNav');
        if (dir == "plus") {
            objEncNav.style.top = gTop + val + "px";
        }
        else if (dir == "minus") {
            objEncNav.style.top = gTop - val + "px";
        }
        var t = setTimeout("encScrollBy('" + dir + "', " + val + ");", 10);
    }
    else {
        clearTimeout(t);
    }
}

function carouselNav(carousel, next, prev) {
    var n;
    var p;
    n = g$(next);
    p = g$(prev);
    if (carousel.last == carousel.options.size)
        n.className = 'jcarousel-next jcarousel-next-disabled';
    else
        n.className = 'jcarousel-next';

    if (carousel.first == 1)
        p.className = 'jcarousel-prev jcarousel-prev-disabled';
    else
        p.className = 'jcarousel-prev';
}


  /*          BrightCove Functions        */
  var API_TOKEN = "G-c4ObaOwHocNyeja9yfJATTHNANZcP6ARVIagzb-gogSN88lGNXvw..";
  var API_URL = "http://api.brightcove.com/services/library";

  function addScriptTag(id, url, callback) {
      var scriptTag = document.createElement("script");
      // Add script object attributes
      scriptTag.setAttribute("type", "text/javascript");
      scriptTag.setAttribute("charset", "utf-8");
      scriptTag.setAttribute("src", url + "&callback=" + callback);
      scriptTag.setAttribute("id", id);

      var head = document.getElementsByTagName("head").item(0);
      head.appendChild(scriptTag);
  }

  function getVideos(command, callback) {
      addScriptTag(command,
        "http://api.brightcove.com/services/library?command=find_all_videos&token=G-c4ObaOwHocNyeja9yfJATTHNANZcP6ARVIagzb-gogSN88lGNXvw..&video_fields=id,name,thumbnailURL,playsTrailingWeek&sort_by=plays_trailing_week", callback);
  }
  //find all videos in given playlistId
  function getVideosFromPlaylist(playlistId, maxNumber, callback) {
      var apiurl;
      apiurl = API_URL + "?command=find_playlist_by_id&token=" + API_TOKEN +
        "&playlist_id=" + playlistId +
        "&page_size=" + maxNumber +
        "&page_number= 1" +
        "&playlist_fields=id,name,videoIds,videos" +
        "&video_fields=id,name,shortDescription,longDescription,thumbnailURL,playsTotal" +
        "&sort_by=publish_date&sort_order=DESC";
      addScriptTag(playlistId, apiurl, callback);
  }
  function getItemHTML(video, playerskin, videoContainer ,isNewIndex) {
      var imgurl = video.thumbnailURL;
      var prefixNewImage = "";
      var s = "";
      if (isNewIndex == 'true') prefixNewImage = "<img width=25 src='/Media/Images/NewIcon.gif' />";
      if (imgurl == null)
          imgurl = "/Media/Defaultvideo.png";
      s = "<div class=\"thum\" onclick=\"showVideo4('" + video.id + "','" + videoContainer + "' ,440 ,300,'true'," + playerskin + ");ShowVideoData('_dv" + video.id + "');\" id=\"_dv" + video.id + "\">";
      s += "<table cellpadding='0' cellspacing='0' border='0' width='100%'>";
      s += "<tr><td width=\"10%\" nowrap>";
      s += "   <img src=\"" + imgurl + "\" width=\"77\" border=\"0\" class=\"padding3\" alt='Total Views: " + video.playsTotal + "' /></td>";
      s += "<td><p class=\"ntitle Hand\">" + video.name  + prefixNewImage + "</p></td></tr>";
      s += "</table></div>";
      return s;
  }
  /*          End of BrightCove Functions        */


  function searchforStories(question, fromDays, location, opContainer, templateContainer, count, pageIndex, callback) {
      getStoriesbyCommand("getfrominternalauto", question, fromDays, location, opContainer, templateContainer, count, pageIndex, callback);
  }
  function getStoriesbyCommand(command, question, fromDays, location, opContainer, templateContainer, count, pageIndex, callback) {
      //var other = "question%3D" + question + ",days%3D" + fromDays + ",channel%3D" + location + ",pageIndex%3D" + pageIndex;
      var other = "question=" + question + ",days=" + fromDays + ",channel=" + location + ",pageIndex=" + pageIndex + ",SearchIn=Title";
      other = encodeURIComponent(other);
      var url = "/services/handlers/getData.ashx?command=" + command + "&other=" + other + "&count=" + count + "&ref=" + encodeURIComponent(question);

      var template;
      var loading = "<img border=0 src='/Media/Images/loading2.gif'>";

      opContainer = '#' + opContainer
      template = $('#' + templateContainer).html();
      if (pageIndex > 1) loading += $(opContainer).html();
      $(opContainer).html(loading);
      $(opContainer).show();
      $.getJSON(url, function (data) {
          var html = "<div class=errormsg>" + data.Message + "</div>"; //Check error messages 
          if (data.Records > 0) html = formatStories(template, data.items);
          $(opContainer).html(html);
          $(opContainer).show("slow");
          if (typeof (callback) == 'function') { callback.call(this, data); }
      });
  }
 
  /// Returns posting collection as Json format and format the o/p based on the template inside the container
  function getStories(container, refKey, count, startIndex) {
      var url = "/services/handlers/getData.ashx?command=getfromlocalbuffer&ref=" + refKey + "&count=" + count + "&startIndex=" + startIndex;
      var template;
      container = '#' + container
      template = $(container).html();
      $(container).html("<img border=0 src='/Media/Images/loading2.gif'>");
      $(container).show();
      $.getJSON(url, function (data) {
          $(container).html(formatStories(template, data.items));
      });
  }

  ///Format collection of stories based on a specific template.
  function formatStories(template, items) {
      var s = "";
      var itemData = "";
      $.each(items, function (i, item) {
          itemData = template;
          itemData = itemData.replace(/{Id}/g, item.Id);
          itemData = itemData.replace(/%Id%/g, item.Id);
          itemData = itemData.replace(/{ParentId}/g, item.ParentId);
          itemData = itemData.replace(/%ParentId%/g, item.ParentId);
          itemData = itemData.replace(/{Title}/g, item.Title);
          itemData = itemData.replace(/{Summary}/g, item.Summary);
          itemData = itemData.replace(/{Url}/g, item.Url);
          itemData = itemData.replace(/%Url%/g, item.Url);
          itemData = itemData.replace(/{Date}/g, item.Date);
          itemData = itemData.replace(/{Type}/g, item.Type);
          itemData = itemData.replace(/{TypeId}/g, item.TypeId);
          itemData = itemData.replace(/%TypeId%/g, item.TypeId);
          itemData = itemData.replace(/{Tags}/g, item.Tags);
          itemData = itemData.replace(/{Image1}/g, item.Image1);
          itemData = itemData.replace(/{Image2}/g, item.Image2);
          itemData = itemData.replace(/{Image3}/g, item.Image3);
          itemData = itemData.replace(/{Image4}/g, item.Image4);
          itemData = itemData.replace(/{Image5}/g, item.Image5);

          s += itemData;
      });

      return s;
  }


