﻿// JScript File
var MIN_COMMENT_ALLOWED = 20;
var MAX_COMMENT_ALLOWED = 2000;
var MIN_NEWS_TITLE_ALLOWED = 10;
var MAX_NEWS_TITLE_ALLOWED = 100;
var MIN_REPORT_ALLOWED = 10;
var MAX_REPORT_ALLOWED = 1000;
var ID_REPORT_INDICATOR = "reportIndicator";
var ID_DIV_BURY_OPTION = 'divBuryOption';
var ID_REPORT_PANEL = 'ReportPanel';
var ID_TOOL_TOGGLE = 'tooltoggle';
var COOKIE_LAST_LOGIN_DATE_KEY = "LastLoginDate";
var APP_COOKIE_NAME = "CoFieu";
var MINUTE_TO_SAVE_COOKIE = 5;


Type.registerNamespace('DataDesign.PMW.News');
DataDesign.PMW.News.FiltertType = function() 
{
    throw Error.notImplemented();
}
DataDesign.PMW.News.FiltertType.prototype = 
{
    HotNews: 1,
    NewestNews: 2,
    MostCommentNews: 3
}
DataDesign.PMW.News.FiltertType.registerEnum('DataDesign.PMW.News.FiltertType');
var TAGGROUPS = new Array("html", "head", "body", "div", "span", 
                             "DOCTYPE", "title", "link", "meta", "style",
                             "p", "h.", "strong", "em", "abbr", "acronym", "address", "bdo", "blockquote", "cite", "q", "code", "ins", "del", "dfn", "kbd", "pre", "samp", "var", "br",   
                             "a", "base",
                             "img", "area", "map", "object", "param",
                             "ul", "ol", "li", "dl", "dt", "dd",
                             "table", "tr", "td", "th", "tbody", "thead", "tfoot", "col", "colgroup", "caption",
                             "form", "input", "textarea", "select", "option", "label", "fieldset", "legend",
                             "script", "noscript",
                             "b", "i", "tt", "sub", "big", "small", "hr"                           
                            );//http://www.htmldog.com/reference/htmltags/
/*************************************************************************************/    
function HideObjectById(objId)
{
    var obj = $get(objId); 
    if (obj == null)
        return;    
    obj.style.display = "none";      
}
function ShowHideObject(objId)
{    
    var obj = $get(objId);
    if (obj == null)
        return;
    if (obj.style.display != "block")        
        obj.style.display = "block";                        
    else
        obj.style.display = "none";                               
}
function ValidateString(inputString, minLength, maxLength)
{    
    if (minLength > 0  && maxLength > minLength && (inputString.length < minLength || inputString.length > maxLength))
    {     
        alert(String.format(RES_COMMENT_LENGTH_WARNING, minLength, maxLength));              
        return false;
    }    
    return true;
}
function ValidateText(inputFieldId, minLength, maxLength)
{    
    var inputField = $get(inputFieldId);
    if (inputField == null)
        return true;
    var htmlValue = inputField.value;    
    
    if (!ValidateString(htmlValue, minLength, maxLength))
    {
        inputField.focus();
        return false;
    }    

//    var re, m;
//    for(var i=0; i< TAGGROUPS.length; i++)
//    {
//        re = new RegExp("<[\\s/]?" + TAGGROUPS[i], "igm");        
//        m = htmlValue.match(re);
//        if (m != null) 
//        {          
//            alert(RES_HACKER_WARNING);     
//            inputField.focus();
//            return false;
//        }        
//    }   
    return true;
}
function ReplaceHTML(value)
{
    var re, m;
    for(var i=0; i< TAGGROUPS.length; i++)
    {        
        re = new RegExp("<[\\s/]?" + TAGGROUPS[i], "igm");        
        value = value.replace(re, "< " +  TAGGROUPS[i]);             
    }   
    value = value.replace(/  /g, " &nbsp;");
    return value;
}
function CheckLengthExceed(inputFieldId,  maxLength, message)
{	
	var inputField = $get(inputFieldId);
	if (inputField == null)
	{        
		return true;
    }
	var htmlValue = inputField.value;    
	if (htmlValue.length > maxLength)
	{
		alert(message + " " + maxLength);
		inputField.value =  htmlValue.substring(0,maxLength);
		return false;
	}
	return true;
}

function buryHover(id, st, isUserAuthenticated)
{
    if (!isUserAuthenticated)
        return;
    var obj = $get(ID_DIV_BURY_OPTION+id);
    if (obj == null)
        return;
    if(obj.style.display == 'none')
    {
        $get(ID_TOOL_TOGGLE+id).style.display = st;
    }
}

function handleHover()
{    
    var wrapper = $get("Wrapper");
    if (wrapper == null)
        return;
    if(Sys.Browser.agent == Sys.Browser.InternetExplorer)     
        wrapper.onclick = handleClickIE;    
    else    
    {        
        wrapper.onclick = handleClickFF;    
    }
}
function getDateFromString(stringDate)
{
    //month, day, year, hour, minute, second
    if (stringDate == null)
        return null;
    var item = stringDate.split(' ');
    var itemDate = item[0].split('/');
    var itemTime = item[1].split(':');
    var result = new Date();    
    result.setFullYear(itemDate[2], itemDate[0] -1 , itemDate[1]);
    result.setHours(itemTime[0], itemTime[1], itemTime[2], 0);    
    return result;
    
}
function handleSaveLastActivity()
{    
    var lastSaveDate = readCookieKey(APP_COOKIE_NAME, COOKIE_LAST_LOGIN_DATE_KEY);
    var lastDate = getDateFromString(lastSaveDate);    
    var currentTime = new Date();           
    if (lastDate != null &&  (currentTime.getTime() - lastDate.getTime() )  / (1000 * 60) <= MINUTE_TO_SAVE_COOKIE ) // 5 minutes
        return;
    var month = currentTime.getMonth() + 1;    
    var day = currentTime.getDate();
    var year = currentTime.getFullYear();
    
    var hour = currentTime.getHours();
    var minute = currentTime.getMinutes();
    var second = currentTime.getSeconds();    
    var timeString;    
    timeString = String.format("{0}/{1}/{2} {3}:{4}:{5}", month, day, year, hour, minute, second);        
    window.onunload = function(evt)
    {       
        appendCookie(APP_COOKIE_NAME, COOKIE_LAST_LOGIN_DATE_KEY, timeString, 15);                
    };
}
function handleClickIE(evt) 
{    
    var e = (window.event != null) ? window.event : evt;            
    if (e.srcElement.title != TITLE_BURY_OPT && 
        e.srcElement.parentElement.title != TITLE_BURY_OPT &&
        e.srcElement.id.substring(0,10) != ID_TOOL_TOGGLE)
    {
        hideBuryMenus(-1);        
    }
    
    if (e.srcElement.id.substring(0,10) == ID_TOOL_TOGGLE)
    {
        var id = e.srcElement.id;
        var id = id.substring(10,id.length);
        hideBuryMenus(parseInt(id,10));
    }
}
function handleClickFF(evt) 
{       
    var e = (window.event != null) ? window.event : evt;                
    if (!e.target.title ||
        e.target.id == 'DdBuryNews' ||        
        e.target.title != TITLE_BURY_OPT &&         
        e.target.id.substring(0,10) != ID_TOOL_TOGGLE)
    {
        hideBuryMenus(-1);                
    }    
    
    if (e.target.id.substring(0,10) == ID_TOOL_TOGGLE)
    {
        var id = e.target.id;
        var id = id.substring(10,id.length);
        hideBuryMenus(parseInt(id,10));
    }
}
function hideBuryMenus(exceptId)
{
    for(var i=0;i<10;i++)
    {
        if (i == exceptId)
            continue;
        if ($get(ID_DIV_BURY_OPTION+i) != null)
            $get(ID_DIV_BURY_OPTION+i).style.display = 'none';
        if ($get(ID_TOOL_TOGGLE+i) != null)            
            $get(ID_TOOL_TOGGLE+i).style.display = 'none';
    }
}
function hideBuryOptions(id)
{    
    return;
    if ($get(ID_DIV_BURY_OPTION+id).style.display != 'none')    
        $get(ID_DIV_BURY_OPTION+id).style.display = 'none';    
}

function toggleBury(id)
{
    var objBuryOpt = $get(ID_DIV_BURY_OPTION+id);
    if (objBuryOpt == null)
        return;
    var objToolToggle = $get(ID_TOOL_TOGGLE+id);
    if(objBuryOpt.style.display =='none')
    {
        objBuryOpt.style.display = 'block';        
        objToolToggle.style.display='block';
    }
    else
    {
        objBuryOpt.style.display='none';
        objToolToggle.style.display='none';
    }
    return false;
}
function toggleCustomReport(id)
{
    var objReportPanel = $get(ID_REPORT_PANEL+id);
    if (objReportPanel == null)
        return;
    if(objReportPanel.style.display =='none')
    {
        objReportPanel.style.display='block';
    }
    else
    {
        objReportPanel.style.display='none';
    }
    return false;
}   

function UserReport(newsId, commentId, reportType, content, indicatorId, objectListToHide, controlId, commandArgument)
{        
    var indicator = ID_REPORT_INDICATOR + indicatorId;
    ShowHideObject(indicator);        
    var myServiceProxy = new NewsWebService();
    var userContext = new Array(newsId, commentId, indicator, objectListToHide, controlId, commandArgument);    
     
    myServiceProxy.set_defaultSucceededCallback(onCreateReportSuccess);
    myServiceProxy.set_defaultFailedCallback(onCreateReportFailed);        
    myServiceProxy.set_defaultUserContext(userContext);
    myServiceProxy.CreateReport(newsId, commentId, reportType, content);      
}
function onCreateReportSuccess(result, userContext)
{       
    ShowHideObject(userContext[2]);               
    alert(RES_REPORT_SUCCESS);    
    if (userContext[4] != null && userContext[4] != '')
    {
        var controlId = userContext[4];
        var commandArg = userContext[5];                
        __doPostBack(controlId, commandArg);
    }
    else
    {    
        var decodeString = Base64.decode(userContext[3]);        
        var objectsToHide = decodeString.split(',');
        var objId;
        for(var i=0; i< objectsToHide.length; i++)        
            HideObjectById(objectsToHide[i]);        
    }
}
function onCreateReportFailed(error, userContext)
{    
    ShowHideObject(userContext[2]);                   
    alert(RES_REPORT_FAILED);
}
function GoToLoginPage(isAuthenticated)
{
    if (isAuthenticated)
        return true;
    var url = window.location.href;
    var index = url.indexOf("/news/");    
    if (index > -1)
    {
        var returnUrl = url.substring(index, url.length);
        var link = Application_Path + "/anonymous/login.aspx?ReturnURL=" + Application_Path + returnUrl;    
        window.location = link;
    }
    return false;
}




//------------------------------------------------------------------------------------
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}
function appendCookie(name, key, value, days) {
	var oldCookieValue = readCookie(name);
	if (oldCookieValue == null)
	    return;
    
	var pos = oldCookieValue.indexOf("&"+COOKIE_LAST_LOGIN_DATE_KEY);	
	if (pos > 0)
	    oldCookieValue = oldCookieValue.substring(0, pos);
    
	oldCookieValue += "&" + key + "=" + value;	
	createCookie(name,oldCookieValue,days);	
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}
function readCookieKey(name, key)
{
    var cookieString = readCookie(name);    
    if (cookieString == null)
        return null;
    var cookieKeyValues = cookieString.split('&');        
    var i;
    for(i=0; i< cookieKeyValues.length && cookieKeyValues[i].indexOf(key + "=") <0 ; i++);    
    if (i>= cookieKeyValues.length || cookieKeyValues[i] == null)        
        return null;    
    var pos = cookieKeyValues[i].indexOf(key + "=");    
    return cookieKeyValues[i].substring((key + "=").length, cookieKeyValues[i].length);        
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}
//------------------------------------------------------------------------------------
handleHover();
handleSaveLastActivity();

