var iconWindow = null;

// Simulates PHP's date function
Date.prototype.format=function(format){var returnStr='';var replace=Date.replaceChars;for(var i=0;i<format.length;i++){var curChar=format.charAt(i);if(replace[curChar]){returnStr+=replace[curChar].call(this);}else{returnStr+=curChar;}}return returnStr;};Date.replaceChars={shortMonths:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],longMonths:['January','February','March','April','May','June','July','August','September','October','November','December'],shortDays:['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],longDays:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],d:function(){return(this.getDate()<10?'0':'')+this.getDate();},D:function(){return Date.replaceChars.shortDays[this.getDay()];},j:function(){return this.getDate();},l:function(){return Date.replaceChars.longDays[this.getDay()];},N:function(){return this.getDay()+1;},S:function(){return(this.getDate()%10==1&&this.getDate()!=11?'st':(this.getDate()%10==2&&this.getDate()!=12?'nd':(this.getDate()%10==3&&this.getDate()!=13?'rd':'th')));},w:function(){return this.getDay();},z:function(){return"Not Yet Supported";},W:function(){return"Not Yet Supported";},F:function(){return Date.replaceChars.longMonths[this.getMonth()];},m:function(){return(this.getMonth()<11?'0':'')+(this.getMonth()+1);},M:function(){return Date.replaceChars.shortMonths[this.getMonth()];},n:function(){return this.getMonth()+1;},t:function(){return"Not Yet Supported";},L:function(){return"Not Yet Supported";},o:function(){return"Not Supported";},Y:function(){return this.getFullYear();},y:function(){return(''+this.getFullYear()).substr(2);},a:function(){return this.getHours()<12?'am':'pm';},A:function(){return this.getHours()<12?'AM':'PM';},B:function(){return"Not Yet Supported";},g:function(){return this.getHours()%12||12;},G:function(){return this.getHours();},h:function(){return((this.getHours()%12||12)<10?'0':'')+(this.getHours()%12||12);},H:function(){return(this.getHours()<10?'0':'')+this.getHours();},i:function(){return(this.getMinutes()<10?'0':'')+this.getMinutes();},s:function(){return(this.getSeconds()<10?'0':'')+this.getSeconds();},e:function(){return"Not Yet Supported";},I:function(){return"Not Supported";},O:function(){return(this.getTimezoneOffset()<0?'-':'+')+(this.getTimezoneOffset()/60<10?'0':'')+(this.getTimezoneOffset()/60)+'00';},T:function(){return"Not Yet Supported";},Z:function(){return this.getTimezoneOffset()*60;},c:function(){return"Not Yet Supported";},r:function(){return this.toString();},U:function(){return this.getTime()/1000;}};

String.prototype.trim = function()
	{
	return this.replace(/^\s+|\s+$/g,"");
	}

String.prototype.contains = function(t)
	{
	return this.indexOf(t) >= 0 ? true : false;
	}


String.prototype.isFloat = function()
	{
	var floatValue = parseFloat(this);

	if(isNaN(floatValue))
		return false;

	return true;
	}

function checkProfile()
	{
	var f = document.getElementById("userForm");

	if(f.password.value != f.confirm.value)
		{
		alert("The passwords do not match");
		f.password.focus();
		}
	else
		f.submit();
	}


function sitesChanged()
	{
	var sites = document.getElementById("accessList");
	var defs = document.getElementById("defSite");

	// Empty existing items

	defs.options.length = 0;
	defCount = 0;

	for(count = 0; sites && (count < sites.length); count++)
		{
		if(sites[count].selected && sites[count].value != "*")
			{
			defs.options[defCount] = new Option(sites[count].value);
			defs.options[defCount].value = sites[count].value;
			defCount++;
			}
		}
	}


function populateSubCats(subcats, defaultSel, number)
	{
	var subcatlist = document.getElementById("subcat" + number);
	var selItem = 0;

	// Empty existing items

	subcatlist.options.length = 0;

	subcatlist.options[0] = new Option("Any");
	subcatlist.options[0].value = "";

	for(count = 0; subcats && (count < subcats.length); count++)
		{
		subcatlist.options[count + 1] = new Option(subcats[count]);
		subcatlist.options[count + 1].value = subcats[count];

		if(subcats[count] == defaultSel)
			selItem = count + 1;
		}

	subcatlist.options[selItem].selected = true;
	}


function catChanged(cats, defaultSel, number)
	{
	var t = document.getElementById("category" + number);
	var sel = t.selectedIndex;
	var cat = t.options[sel].value;

	populateSubCats(cats[cat], defaultSel, number);
	}


function quickPick(t)
{
	var sel = t.selectedIndex;
	var byline = document.getElementById("byline");
	var email = document.getElementById("email");
	var reporterid = document.getElementById("reporter_id");
	var reporter_img = document.getElementById("reporter_img");
	var reporter_title = document.getElementById("reporter_title");
	var reporter_img_tr = document.getElementById("reporter_img_tr");
	//var reporter_title_tr = document.getElementById("reporter_title_tr");
	
	if(t.selectedIndex == 0 || t.options[sel].value == ""){
		byline.removeAttribute('readOnly'); 
		email.removeAttribute('readOnly'); 
		byline.value = "";
		email.value = "";
		reporterid.value = "";
		reporter_img.checked = false;
		reporter_title.checked = false;
		reporter_img_tr.style.display="none";
		//reporter_title_tr.style.display="none";
		return;
	}
	var tmp = t.options[sel].value.split("|",3);
	byline.value = tmp[0];
	email.value = tmp[1];
	reporterid.value = tmp[2];
	//reporter_img.checked = true;
	//reporter_title.checked = true;
	reporter_img_tr.style.display="";
	//reporter_title_tr.style.display="";
	byline.setAttribute('readOnly','readonly'); 
	email.setAttribute('readOnly','readonly'); 
}

//added by Abdallah Mohsen 01/09/2009
function checkReporterFields()
{
	var byline = document.getElementById("byline");
	var email = document.getElementById("email");
	var reporterid = document.getElementById("reporter_id");
	var reporter_img_tr = document.getElementById("reporter_img_tr");
	//var reporter_title_tr = document.getElementById("reporter_title_tr");
	if(reporterid.value > 0){
		reporter_img_tr.style.display="";
		//reporter_title_tr.style.display="";
		byline.setAttribute('readOnly','readonly'); 
		email.setAttribute('readOnly','readonly'); 
		
	}
}

function mediaCheck(info, attach)
	{
	if(info.value == "" || attach != "" || document.storyForm.attachment.value != "")
		return;

	alert("Warning:\nYou have entered media file information without having a media file!");
	}


function trim(s)
	{
	return s.replace(/^\s+|\s+$/g, '');
	}


function dropDownCheck(t)
	{
	var sel = t.selectedIndex;

	if(t.selectedIndex != 0 && t.options[sel].value == "")
		t.selectedIndex++;
	}


function showComments(id)
	{
	if(id == "")
		alert("Comments Do Not Exist For Unsaved Stories");
	else
		location.href="/modules/comments/?pageId=" + id;
	}


function checkSearchForm(f)
	{
	var key = trim(f.key.value);

	if(key.length > 0 && key.length < 4)
		{
		alert("You can only search for keywords longer than 3 characters.");
		f.key.focus();
		return false;
		}

	return true;
	}


function unicodeToASCII(text)
	{
	var data;

	data = text.replace(/\u2013/ig,"-"); 
	data = data.replace(/\u2014/ig,"-"); 
	data = data.replace(/\u2018/ig,"'"); 
	data = data.replace(/\u2019/ig,"'"); 
	data = data.replace(/\u201B/ig,"'"); 
	data = data.replace(/\u201C/ig,'"'); 
	data = data.replace(/\u201D/ig,'"'); 
	data = data.replace(/\u201F/ig,'"'); 

	return data;
	}


function stripHTML(text)
	{
	return text.replace(/(<([^>]+)>)/ig,""); 
	}


function fixLineBreaks(text)
	{
	var data;

	data = text.replace(/<br[ ]*[\/]?>/g,"\n"); 
	data = data.replace(/<\/p>/g,"\n\n"); 

	return data;
	}


function cleanData(field)
	{
	var obj = document.getElementById(field);

	if(obj.value == "")
		return "";

	var text;

	text = unicodeToASCII(obj.value);
	text = fixLineBreaks(text);
	text = stripHTML(text);

	obj.value = text;
	}


function toggleIcons()
        {
        if(iconWindow == null || iconWindow.closed)
                {
                iconWindow = window.open("/icons.php", "Icons","width=380,height=505,status=no,toolbar=no");
                }
        else
                {
                iconWindow.close();
                iconWindow = null;
                }
        }


function calcDays()
        {
        var k = document.weatherForm.day1.selectedIndex;

        document.weatherForm.day2.options[(k + 1) % 7].selected = true;
        document.weatherForm.day3.options[(k + 2) % 7].selected = true;
        document.weatherForm.day4.options[(k + 3) % 7].selected = true;
        document.weatherForm.day5.options[(k + 4) % 7].selected = true;
        }


function okayDelete()
        {
        return confirm("Are You Sure You Wish To Delete This?");
        }


function makeFocus(obj)
	{
	var field = document.getElementById(obj);

	if(field)
		field.focus();
	}


function toggleInput(name)
	{
	var obj = document.getElementById(name);

	if(!obj)
		return;

	if(obj.disabled)
		obj.disabled = "";
	else
		obj.disabled = "true";
	}

// Added by Abdallah Mohsen 18/09/2009
function toggleCalender(checkbox, name){
	var disabled;
	if(checkbox.checked === true){
		disabled = false;
	}else{
		disabled = true;
	}
	document.getElementById(name).disabled = disabled
}

function toggleChecked(name)
	{
	var obj = document.getElementById(name);

	if(!obj)
		return;

	if(obj.checked)
		obj.checked = "";
	else
		obj.checked = "true";
	}


function toggleAdvSearch()
	{
	toggleBlock('advSearchDiv', '');
	toggleBlock('cd_calender', '');
	}


function toggleBlock(obj, img)
        {
	var obj = document.getElementById(obj);
	var img = document.getElementById(img);

        if (obj.style.display == "")
		{
                obj.style.display = "none";

		if(img)
			img.src = "/templates/images/arrow_closed.gif";
		}
        else
		{
                obj.style.display= "";

		if(img)
			img.src = "/templates/images/arrow_open.gif";
		}

        return false;
        }


function showPreview(siteurl, id, server)
{
	if(id == ""){
		alert("You must save the story first.  Set the Display on site option to \"N\" if you dont want the article to appear live on the site.");
		return;
	}
	var unity = '';
	if(server){
		unity = server+'.';
	}
	var siteurl2 = siteurl.indexOf('/');
	if(siteurl2 > 1){
		var url = siteurl;
	}else{
		var url = "http://" + siteurl + ".onset."+unity+"freedom.com/preview/onset-" + id + "-admin-preview.html";
	}
    window.open(url,"onSet","width=1050,height=700,status=no,resizable=yes,scrollbars=yes");
}


function showPic(name, graphic)
{
	w = 825;
	h = 565;
	var graph="";
	if(graphic == 1){
		graph = "&graphic="+graphic;
	}
	window.open("/templates/pictures.php?src="+name+graph, "onSet","width=" + w + ",height=" + h + ",status=no,resizable=yes,scrollbars=yes");
}
//added by Abdallah Mohsen - 13/08/2009
function showSWF(name, graphic, width, height)
{
	w = width + 100;
	h = height + 100;
	var graph="";
	if(graphic == 1){
		graph = "&graphic="+graphic;
	}
	window.open("/templates/swf.php?src="+name+graph, "onSet","width=" + w + ",height=" + h + ",status=no,resizable=yes,scrollbars=yes");
}

function showUser(name)
	{
	w = 450;
	h = 250;

        window.open("/modules/me/user.php?user=" + name, "onSet","width=" + w + ",height=" + h + ",status=no,resizable=yes");
        }


function associateBrightcove(site, id)
	{
	if(id == "")
		{
		alert("You must save the story first.  Set the Display on site option to \"N\" if you dont want the article to appear live on the site.");
		return;
		}
	var url = "/templates/bcovepicker.php?bizid=";
	window.open(url+site+"&pageid=" + id,"Brightcove","width=890,height=820,status=no,resizable=yes,scrollbars=yes");
	}


function expireBox()
	{
	if(document.storyForm.expire.checked == true)
		{
		document.storyForm.expire_day.disabled = "true";
		document.storyForm.expire_month.disabled = "true";
		document.storyForm.expire_year.disabled = "true";
		document.storyForm.expire_hour.disabled = "true";
		document.storyForm.expire_min.disabled = "true";
		document.storyForm.expire_pm.disabled = "true";
		}
	else
		{
		document.storyForm.expire_day.disabled = "";
		document.storyForm.expire_month.disabled = "";
		document.storyForm.expire_year.disabled = "";
		document.storyForm.expire_hour.disabled = "";
		document.storyForm.expire_min.disabled = "";
		document.storyForm.expire_pm.disabled = "";
		}
	}


function activateAdminExtras(s)
	{
	var xtras = s.split(",");
	var tr = null;

	for(var i = 0; i < xtras.length; i++)
		{
		if(tr = document.getElementById("xtra-" + xtras[i]))
			tr.style.display = "";
		}
	}


function verifyData() {
	var headline = document.getElementById("headline");

	if (headline.value == "" ) {
		alert('The Headline Cannot Be Empty!');
		headline.focus();
		return false;
	} else if (!checkTargetURL()) {
		return false;
	}

	// Check The Map
	return verifyMapData();
}

function verifyDataBreakingNews() {
	var headline = document.getElementById("headline");
	var storyData = document.getElementById("story");
	var tinyMCEData = tinyMCE.get('story').getContent();

	if (headline.value == "" ) {
		alert('The Headline Cannot Be Empty!');
		headline.focus();
		return false;
	} else if (!checkTargetURL()) {
		return false;
	}

	// Ensure data does not contain default 'Breaking News' value
	var defaultDataValue = false;
	if ( tinyMCEData.indexOf('/templates/images/breaking-full.jpg') >= 0 )
		defaultDataValue = true;
	if ( tinyMCEData.indexOf('/templates/images/breaking-thumb.jpg') >= 0 )
		defaultDataValue = true;
	if ( tinyMCEData.indexOf('BREAKING NEWS HEADLINE/LINK') >= 0 )
		defaultDataValue = true;
	if ( tinyMCEData.indexOf('BREAKING NEWS SUBHEAD/DECK') >= 0 )
		defaultDataValue = true;
	if ( tinyMCEData.indexOf('Lorem ipsum') >= 0 )
		defaultDataValue = true;

	if (defaultDataValue) {
		tinyMCE.get('story').setContent('');
		storyData.value = '';
	} else {
		var breakingStory = tinyMCE.get('story').getContent();

		if ( breakingStory.indexOf('breakingContent') == -1 )
			breakingStory = '<div class="breakingContent" style="width: 890px;">'+breakingStory+'</div>';

		tinyMCE.get('story').setContent(breakingStory);
		storyData.value = breakingStory;
	}
	
	saveFormNoSEOMultiCat();
}

function verifyMapData() {
	var story = document.getElementById("story");
	if(story.value == "")
	{
		alert('The Story Cannot Be Empty!');
		return false;
	}	
	
	var re = new RegExp('\\bon[^=]*=[^>]*(?=>)|<\\s*(script|link)[^>]*[\\S\\s]*?<\\/\\1>|<[^>]*include[^>]*>', 'ig');
	return(!story.value.match(re));
}


function verifyPollForm(f)
        {
	answers = 0;

	if(f.question.value == "")
		{
		alert("You must provide a question.");
		f.question.focus();
		return false;
		}

	for(var c = 1; c <= 12; c++)
		{
		var obj = document.getElementById("answer" + c);

		if(obj.value != "")
			answers++;
		}

	if(answers < 2)
		{
		alert("You must provide at least two choices");
		return false;
		}

	return true;
        }


function filename(s)
        {
        for(i = s.length; i >= 0; i--)
                {
                if(s.charAt(i) == '/' || s.charAt(i) == '\\')
                        break;
                }

        return s.substring(i + 1);
        }


function illegalCharacter(c)
        {
        var goodChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.";

        if(goodChars.indexOf(c) != -1)
                return false;

        return true;
        }


function checkFilename(s)
        {
        var fname = filename(s);

        if(fname)
                {
                for(i = 0; i < fname.length; i++)
                        {
                        if(illegalCharacter(fname.charAt(i)))
                                {
                                alert("Error:  Bad filename!");
                                return false;
                                }
                        }
                }

        return true;
        }


function saveForm(action)
{
    if(action == 3){
		document.storyForm.reset();
	}else{
		document.getElementById('formactiontype').value = action;
        var message = checkDateFields();
                
		if(verifyPrimarySection(1)){
            if(message === ''){
			if(tinyMCE_maxlength2()){
				if(verifyDataSEO()){
					document.storyForm.submit();
				}
			}
            }else{
                alert(message);
            }
		}
	}
}


function saveFormNoSEO()
	{
	if(verifyData())
		document.storyForm.submit();
	}

function saveFormNoSEOMultiCat()
	{
		if(verifyPrimarySection(1))
			document.storyForm.submit();
	}


function getEditorContent(e)
	{
	var textarea = tinyMCE.get(e);
	return textarea.getContent();
	}

function verifyPrimarySection(show)
	{
	// until i get further along, will always be true - james
	
	// start of home section validation check
	var homesections = document.getElementsByClassName('homesection_checkbox');
	var catSelect = document.getElementById('category_id1');
	var isChecked = 0;
	var errorMsg = '';
	
	for(x = 0; x < homesections.length; x++)
		if(homesections[x].checked)
		{
			isChecked = 1; 
			break;
		} 
	if(!isChecked)
	{
		errorMsg += "One primary section/category must be selected.\n";
		if(show) alert(errorMsg);
		if (catSelect)
			catSelect.focus();
		return false;
	}
	return true;
	}

function submitSlideshowForm()
	{
	var errorMsg = "";
	var errorFieldList = [];
	if($('name').value.trim().length == 0)
	{
		errorMsg += "Slideshow name is required.\n";
		errorFieldList[errorFieldList.length] = "name"; 	
	}
	if(document.getElementsByClassName('category_id_list').length == 0)
	{
		errorMsg += "At least one category is required.\n";
		errorFieldList[errorFieldList.length] = "category_id1"; 	
	}
	if($('description').value.trim().length == 0)
	{
		errorMsg += "Description is required.\n";
		errorFieldList[errorFieldList.length] = "description"; 	
	}
	
	// start of home section validation check
	var homesections = document.getElementsByClassName('homesection_checkbox');
	var isChecked = 0;
	for(x = 0; x < homesections.length; x++)
		if(homesections[x].checked)
		{
			isChecked = 1; 
			break;
		} 
	if(!isChecked)
	{
		errorMsg += "One primary section/category must be selected.\n";
		errorFieldList[errorFieldList.length] = "relationship_type_id_0"; 	
	}
		
	if(errorMsg != '')
	{
		$(errorFieldList[0]).focus();
		alert(errorMsg);
		return false;
	}
	else
		return true;
	}

function checkTargetURL() {
	var f = document.storyForm;
	var targetURL_length = f.target_url.value.length;
	var targetURL = trim(f.target_url.value.toLowerCase());
	
	if (targetURL_length > 7 && targetURL.substr(0,7) != 'http://') {
		alert("Target URL must begins with 'http://'!");
		f.target_url.focus();
		f.target_url.value = 'http://';
		return false;
	} else {
		if (targetURL_length <= 7) {
			f.target_url.value = '';
		}
		return true;
	}
}
var maxtxt="";
function tinyMCE_maxlength(){
    var EditorId = tinyMCE.activeEditor.id;
    var maxlength = document.getElementById(EditorId).getAttribute('maxlength');
    //alert(maxlength);
      if(maxlength > 0){
            txt = tinyMCE.activeEditor.getContent();
              //strip the html
              txt1 = txt.replace(/(<([^>]+)>)/ig,"");
              txt1 = html_entity_decode(txt1);
              var txtlength = maxlength ;
              //alert(txt1.length +' - '+ txtlength);
              if (txt1.length > txtlength) {
                    txt1 = txt1.substring(0,txtlength);
                    tinyMCE_timer2=setTimeout("tinyMCE.activeEditor.setContent(maxtxt)",1);
            }else{
                    maxlength1 = txtlength - txt1.length;
		    if(maxlength1 != maxlength){
		       document.getElementById(EditorId+'counter').innerHTML=maxlength1;
           	       maxtxt=txt;
		    }
            }
    }
	
}
function html_entity_decode(str) {
  var ta=document.createElement("textarea");
  ta.innerHTML=str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
  return ta.value;
}
function getStory(){
	var storyid = document.getElementById('storyid').value;
	if(storyid == '' || storyid == 0){
		alert('Please insert a valid story id.');
		return false;
	}
	window.location = "edit.php?id="+storyid;
}
function tinyMCE_maxlength2(){
	var txtlength = 500;
	var a = 0;
	var message = '';
	if(tinyMCE.get('info1')){
		var info1 = tinyMCE.get('info1').getContent();
		txt1 = info1.replace(/(<([^>]+)>)/ig,"");
        txt1 = html_entity_decode(txt1);
        if (txt1.length > txtlength) {
        	message = 'The number of characters in Info Box #1 field has exceeded the allowed limit of 500 \n';
        	a = 1;
        }
	}
	if(tinyMCE.get('info2')){
		var info2 = tinyMCE.get('info2').getContent();
		txt2 = info2.replace(/(<([^>]+)>)/ig,"");
        txt2 = html_entity_decode(txt2);
        if (txt2.length > txtlength) {
        	message += 'The number of characters in Info Box #2 field has exceeded the allowed limit of 500 \n';
        	a = 1;
        }
	}
	if(tinyMCE.get('info3')){
		var info3 = tinyMCE.get('info3').getContent();
		txt3 = info3.replace(/(<([^>]+)>)/ig,"");
        txt3 = html_entity_decode(txt3);
        if (txt3.length > txtlength) {
        	message += 'The number of characters in Info Box #3 field has exceeded the allowed limit of 500 \n';
        	a = 1;
        }
	}
	if(message){
		alert(message);
	}
	return true; 
}

/**
 * @author Not me
 * @desc used to validate date fields, and check that From date is older than To
 *       date
 * @example http://javascript.about.com/library/bldom08.htm
 * 
 * @return array
 */
/*document.getElementsByClassName = function(className) {
    var retnode = [], classes;
    var myclass = new RegExp('\\b'+className+'\\b');
    var elem = this.getElementsByTagName('*');
    for (var i = 0; i < elem.length; ++ i) {
        classes = elem[i].className;
        if (myclass.test(classes)) retnode.push(elem[i]);
    }
    return retnode;
};*/





/**
 * @author Ahmed Kamal
 * @desc used to validate date fields, and check that From date is older than To
 *       date
 * 
 * @return void
 */
function checkDateFields(){
    var inputs = document.getElementsByClassName('input_date');
    //alert(inputs.toSource());
    // Devide by 2 as there are two inputs for both start and end.
    var length = inputs.length / 2;
   
    var message = '';
    // Looping the inputs
    for(var i = 0; i < length; ++ i){
        try{
        	start_date = document.getElementById('start_date'+i).value;
        	end_date = document.getElementById('end_date'+i).value;
        	if(parseInt(Date.parse(end_date)) < parseInt(Date.parse(start_date))){
                message += 'Publish start date ' + (i + 1) + ' should be date prior to Publish end date ' + (i + 1) + '.\n';
            }
        }catch(e){
        	
        }
        
    }

    return message;
}