﻿function Left(str, n) {
    if (n <= 0)
        return "";
    else if (n > String(str).length)
        return str;
    else
        return String(str).substring(0, n);
}

function Right(str, n) {
    if (n <= 0)
        return "";
    else if (n > String(str).length)
        return str;
    else {
        var iLen = String(str).length;
        return String(str).substring(iLen, iLen - n);
    }
}

function DoBBCode(open, end) {

	//Create link
	if (open == "")	{
	
		var txt = prompt("Enter URL for the link.","http://");
	
		if (txt) {
			open = '[link="'+txt+'"]link';
		} else {
			return false;
		}
	}
	
	//Create a list
	if (open == "[list]") {
	
		var list_item = prompt("Add bullet point. Press \"Cancel\" when you are done.","");
	
		if (list_item) {
			while (list_item) {		
				open = open+"\n[item]"+list_item+"[/item]";
				list_item = prompt("Add bullet point. Press \"Cancel\" when you are done.","");
			}	
			open = open+"\n";
		} else {
			return false;
		}
	}
	
	var tArea = document.main.content_textarea;
	var isIE = (document.all)? true : false;
	var open = (open)? open : "";
	var end = (end)? end : "";
	
	if (isIE) {
		tArea.focus();
		var curSelect = document.selection.createRange();
		if (arguments[2]) {
			curSelect.text = open + arguments[2] + ">" + curSelect.text + end;
		} else {
		curSelect.text = open + curSelect.text + end;
		}
	} else if (!isIE && typeof tArea.selectionStart != "undefined") {
	
		var selStart = tArea.value.substr(0, tArea.selectionStart);
		var selEnd = tArea.value.substr(tArea.selectionEnd, tArea.value.length);
		var curSelection = tArea.value.replace(selStart, '').replace(selEnd, '');
		
		if (arguments[2]) {
			tArea.value = selStart + open + arguments[2] + ">" + curSelection + end + selEnd;
		} else {
			tArea.value = selStart + open + curSelection + end + selEnd;
		}
	} else {
		tArea.value += (arguments[2])? open + arguments[2] + ">" + end : open + end;
	}
	
	tArea.focus();
}

function DoPreview(text,changed){

	//Set save text - shows text has changed and needs to be saved
	if(changed == 'key'){
		document.getElementById('savespan').innerHTML = 'Save';
	}
	
	//Create returns
	var previewtext = text.replace(/(\r\n|\r|\n)/g, '<br/>');

	//Center
	previewtext = previewtext.replace(/[[]center]/g, "<center>");
	previewtext = previewtext.replace(/[[]\/center]/g, "</center>");	
	//Bold text tags
	previewtext = previewtext.replace(/[[]bold]/g, "<strong>");
	previewtext = previewtext.replace(/[[]\/bold]/g, "</strong>");
	//Italic text tags	
	previewtext = previewtext.replace(/[[]italic]/g, '<i>');
	previewtext = previewtext.replace(/[[]\/italic]/g, '</i>');
	//Underline text tags
	previewtext = previewtext.replace(/[[]underline]/g, '<u>');
	previewtext = previewtext.replace(/[[]\/underline]/g, '</u>');
	//Small text
	previewtext = previewtext.replace(/[[]small]/g, '<small>');
	previewtext = previewtext.replace(/[[]\/small]/g, '</small>');
	//Large text
	previewtext = previewtext.replace(/[[]large]/g, '<big>');
	previewtext = previewtext.replace(/[[]\/large]/g, '</big>');
	//List text tags
	previewtext = previewtext.replace(/[[]list]/g, '<ul>');
	previewtext = previewtext.replace(/[[]\/list]/g, '</ul>');
	previewtext = previewtext.replace(/[[]item]/g, '<li>');
	previewtext = previewtext.replace(/[[]\/item]/g, '</li>');
	//Page divider tag
	previewtext = previewtext.replace(/[[]divider]/g, '<hr/>');
	//Link tags
	previewtext = previewtext.replace(/[[]link=/g, '<a target="_new" class="page_link" href=../../');
	previewtext = previewtext.replace(/[[]\/link]/g, '</a>');
	//Image tags
	previewtext = previewtext.replace(/[[]image]/g, '<img src="../../');
	previewtext = previewtext.replace(/[[]\/image]/g, '" class="page_image" alt="image" />');
	previewtext = previewtext.replace(/[[]imageleft]/g, '<img align="left" src="../../');
	previewtext = previewtext.replace(/[[]\/imageleft]/g, '" class="page_image_left" alt="image" />');
	previewtext = previewtext.replace(/[[]imageright]/g, '<img align="right" src="../../');
	previewtext = previewtext.replace(/[[]\/imageright]/g, '" class="page_image_right" alt="image" />');
	
	//Colour tags
	previewtext = previewtext.replace(/[[]colour=black]/g, '<span style="color:black;">');
	previewtext = previewtext.replace(/[[]colour=gray]/g, '<span style="color:gray;">');
	previewtext = previewtext.replace(/[[]colour=silver]/g, '<span style="color:silver;">');
	previewtext = previewtext.replace(/[[]colour=white]/g, '<span style="color:white;">');
	previewtext = previewtext.replace(/[[]colour=navy]/g, '<span style="color:navy;">');
	previewtext = previewtext.replace(/[[]colour=blue]/g, '<span style="color:blue;">');
	previewtext = previewtext.replace(/[[]colour=aqua]/g, '<span style="color:aqua;">');
	previewtext = previewtext.replace(/[[]colour=purple]/g, '<span style="color:purple;">');
	previewtext = previewtext.replace(/[[]colour=green]/g, '<span style="color:green;">');
	previewtext = previewtext.replace(/[[]colour=lime]/g, '<span style="color:lime;">');
	previewtext = previewtext.replace(/[[]colour=teal]/g, '<span style="color:teal;">');
	previewtext = previewtext.replace(/[[]colour=olive]/g, '<span style="color:olive;">');
	previewtext = previewtext.replace(/[[]colour=maroon]/g, '<span style="color:maroon;">');
	previewtext = previewtext.replace(/[[]colour=red]/g, '<span style="color:red;">');
	previewtext = previewtext.replace(/[[]colour=orange]/g, '<span style="color:orange;">');
	previewtext = previewtext.replace(/[[]colour=yellow]/g, '<span style="color:yellow;">');
	
	previewtext = previewtext.replace(/[[]\/colour]/g, '</span>');

	//BLOG
	previewtext = previewtext.replace(/[[]blog]/g, '<hr/><center>blog will be shown here</center><hr/>');

	//MAP
	previewtext = previewtext.replace(/[[]map directions=true]/g, '<hr/><center>map will be shown here<!--');
	previewtext = previewtext.replace(/[[]map]/g, '<hr/><center>map will be shown here<!--');
	previewtext = previewtext.replace(/[[]\/map]/g, '--></center><hr/>');

	//EMBEDDED SWF
	//previewtext = previewtext.replace(/[[]embed]/g, '<embed loop=false src="../../');
	//previewtext = previewtext.replace(/[[]\/embed]/g, '" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type=application/x-shockwave-flash></embed>'); 

    /*previewtext = previewtext.replace(/[[]embed1]/g, '<p><object style="margin-bottom:0px;" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" id="');
    previewtext = previewtext.replace(/[[]embed2]/g, '" align=""><param name=movie value="../../');
    previewtext = previewtext.replace(/[[]embed3]/g, '.swf"><param name=quality value=high><param name="AutoStart" value="false"><param name="ShowControls" value="true"><param name=bgcolor value=#000000><embed src="../../');
    previewtext = previewtext.replace(/[[]embed4]/g, '.swf" swliveconnect="true" quality=high autostart="false" bgcolor=#000000  name="');
    previewtext = previewtext.replace(/[[]embed5]/g, '" align="" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></object><div class="flashbuttons"><input type="button" value="Play" name="Play" onClick="javascript:PlayFlashMovie(\'');
    previewtext = previewtext.replace(/[[]embed6]/g, '\');" class="playbutton" /><input type="button" value="Stop" name="Stop" onClick="javascript:StopFlashMovie(\'');
    previewtext = previewtext.replace(/[[]\/embed]/g, '\');" class="stopbutton" /></div></div>');*/
    
    
    previewtext = previewtext.replace(/[[]embed]/g, '<p class="flash"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"><param name="flashvars" value="file=../');
    previewtext = previewtext.replace(/[[]embed1]/g, '.flv" /><param name="movie" value="../../shared/flvplayer.swf" /><param name="wmode" value="transparent" /><embed src="../../shared/flvplayer.swf" wmode="transparent" bgcolor="#FFFFFF" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="file=../');
    previewtext = previewtext.replace(/[[]\/embed]/g, '.flv" /></object></p>');

	//END TAG
	previewtext = previewtext.replace(/]/g, '>');
	
	//LARGE SPACES
	previewtext = previewtext.replace(/\s\s/g, '&nbsp; ');

    //alert(previewtext);

	document.getElementById('previewpane').innerHTML = previewtext;
}

function DoMM(position){
	if(document.getElementById('mediadiv').style.display == 'none'){
		
		if(position == 'left'){
			window.frames['mediaiframe'].location.href = '../shared/mediamanager_iframe.asp?position=left';
		}else if(position == 'right'){
			window.frames['mediaiframe'].location.href = '../shared/mediamanager_iframe.asp?position=right';
		}else{
			window.frames['mediaiframe'].location.href = '../shared/mediamanager_iframe.asp?position=';
		}
	
		document.getElementById('mediadiv').style.display = 'block';		
	}else{
		document.getElementById('mediadiv').style.display = 'none';
	}
}

function DoColourPicker(){
	if(document.getElementById('colourpicker').style.display == 'none'){
		document.getElementById('colourpicker').style.display = 'block';
	}else{
		document.getElementById('colourpicker').style.display = 'none';
	}
}

function DoMap(){
	if(document.getElementById('mapdiv').style.display == 'none'){
		document.getElementById('mapdiv').style.display = 'block';
	}else{
		document.getElementById('mapdiv').style.display = 'none';
	}
}

/*Functions for the side menu*/

function DoSideMenu(id, location, items, additionalurl){
    //show hide menus
    if(document.getElementById(location + id).style.display == 'block'){
    
        document.getElementById(location + id).style.display = 'none';
        
        //if plus/minus icon change
        if(document.getElementById(location + id + 'plusminus')){
            document.getElementById(location + id + 'plusminus').innerHTML = "+";  //.src = additionalurl + "media/site/menu_plus.gif";
        } 
        
    }else{
        
        for( var n = 0; n <= items; n++){
        
            if(document.getElementById(location + n)){
            
                if(n == id){
                    document.getElementById(location + n).style.display = 'block';
                   
                    //if plus/minus icon change
                    if(document.getElementById(location + n + 'plusminus')){
                        document.getElementById(location + n + 'plusminus').innerHTML = "<strong>&minus;</strong>";  //.src = additionalurl + "media/site/menu_minus.gif";
                    }                    
                }else{
                    document.getElementById(location + n).style.display = 'none';
                    
                    //if plus/minus icon change
                    if(document.getElementById(location + n + 'plusminus')){
                        document.getElementById(location + n + 'plusminus').innerHTML = "+";  //.src = additionalurl + "media/site/menu_plus.gif";
                    } 
                }
            }
        }
    }
}

/*Functions for the top menu*/

var menuOpenedId;

function DoMenu(id, location){
    //show menu
    if(document.getElementById(location + id).style.display != 'block'){

        document.getElementById(location + id).style.display = 'block';
        
        //if other menu open then close
        if(menuOpenedId != (location + '' + id)){
            if(menuOpenedId != undefined) document.getElementById(menuOpenedId).style.display = 'none';
        }
        
        //Set id of opened menu
        menuOpenedId = location + '' + id;
    }
}

var sto;

function DoTimeOutCancel(){
    //cancel time out
    if(sto) clearTimeout(sto);
}

function closeMenu(id, location, status){

    //check mouse is not over the iSAMSDDL div
    if(status != 'checkcomplete'){    
        sto = setTimeout("closeMenu('" + id + "','" + location + "','checkcomplete');",200);
        return;
    }
        
    //Hide Drop Down Menu
    document.getElementById(location + id).style.display = 'none';
}

/*##################################################################/
/##                                                               ##/
/##                       CHECK DATE TIME                         ##/
/##                                                               ##/
/##    if(!DoCheckDateTime(document.formName)) return false;      ##/
/##                                                               ##/
/##################################################################*/

function DoCheckDateTime(formname){
    // regular expression to match required date format 
    var re = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;
    
    //Check - Start Date
    if(formname.startdate.value != ''){
        if(regs = formname.startdate.value.match(re)){            
            if(regs[1] < 1 || regs[1] > 31){
                alert('Invalid Entry: The day from \'' + regs[1] + '\' is incorrect.');
                return false;
            }                
            if(regs[2] < 1 || regs[2] > 12){
                alert('Invalid Entry: The month from \'' + regs[2] + '\' is incorrect.');
                return false;
            }                
            if(regs[3] < 1902){
                alert('Invalid Entry: The year from \'' + regs[3] + '\' is incorrect.');
                return false;
            }                
        }else{
            //Start date does not match format
            alert('Invalid Entry: The from date format \'' + formname.startdate.value + '\' is incorrect.');
            return false;
        }
    }
    //Check - End Date
    if(formname.enddate.value != ''){
        if(regs = formname.enddate.value.match(re)){                
            if(regs[1] < 1 || regs[1] > 31){
                alert('Invalid Entry: The day to \'' + regs[1] + '\' is incorrect.');
                return false;
            }                
            if(regs[2] < 1 || regs[2] > 12){
                alert('Invalid Entry: The month to \'' + regs[2] + '\' is incorrect.');
                return false;
            }                
            if(regs[3] < 1902){
                alert('Invalid Entry: The year to \'' + regs[3] + '\' is incorrect.');
                return false;
            }            
        }else{
            //End date does not match format
            alert('Invalid Entry: The to date format \'' + formname.enddate.value + '\' is incorrect.');
            return false;
        }
    }        

    // regular expression to match required time format 
    re = /^(\d{1,2}):(\d{2})([ap]m)?$/;
    
    //Check - Start Time
    if(formname.starttime.value != ''){
        if(regs = formname.starttime.value.match(re)){                
            if(regs[3]){                    
                if(regs[1] < 1 || regs[1] > 12){
                    alert('Invalid Entry: The from hours \'' + regs[1] + '\' are incorrect.');
                    return false;
                }                    
            }else{                
                if(regs[1] > 23){
                    alert('Invalid Entry: The from hours \'' + regs[1] + '\' are incorrect.');
                    return false;
                }
            }                
            if(regs[2] > 59){
                alert('Invalid Entry: The from minutes \'' + regs[2] + '\' are incorrect.');
                return false;
            }                
        }else{
            alert('Invalid Entry: The from time format \'' + formname.starttime.value + '\' is incorrect.');
            return false;
        }
    }        
    //Check - End Time
    if(formname.endtime.value != ''){
        if(regs = formname.endtime.value.match(re)){                
            if(regs[3]){                    
                if(regs[1] < 1 || regs[1] > 12){
                    alert('Invalid Entry: The to hours \'' + regs[1] + '\' are incorrect.');
                    return false;
                }                    
            }else{                
                if(regs[1] > 23){
                    alert('Invalid Entry: The to hours \'' + regs[1] + '\' are incorrect.');
                    return false;
                }
            }                
            if(regs[2] > 59){
                alert('Invalid Entry: The to minutes \'' + regs[2] + '\' are incorrect.');
                return false;
            }                
        }else{
            alert('Invalid Entry: The to time format \'' + formname.endtimetime.value + '\' is incorrect.');
            return false;
        }
    }
    
    //Check START date is greater than or equal to END date
    var dtStartDate = formname.startdate.value.split("/");
    if(parseInt(dtStartDate[2]) < 10) dtStartDate[2] = '0' + dtStartDate[2];
    if(parseInt(dtStartDate[1]) < 10) dtStartDate[1] = '0' + dtStartDate[1];
    if(parseInt(dtStartDate[0]) < 10) dtStartDate[0] = '0' + dtStartDate[0];
    
    var dtEndDate = formname.enddate.value.split("/");
    if(parseInt(dtEndDate[2]) < 10) dtEndDate[2] = '0' + dtEndDate[2];
    if(parseInt(dtEndDate[1]) < 10) dtEndDate[1] = '0' + dtEndDate[1];
    if(parseInt(dtEndDate[0]) < 10) dtEndDate[0] = '0' + dtEndDate[0];

    //Get time as a number
    var dtStartTime = formname.starttime.value.replace(":", "");
    var dtEndTime = formname.endtime.value.replace(":", "");
    
    //Calculate date difference
    var dateDifference = ((parseInt(dtStartDate[2] + dtStartDate[1] + dtStartDate[0]) - parseInt(dtEndDate[2] + dtEndDate[1] + dtEndDate[0])) / (24*60*60*1000));

    //Check - date
    if(dateDifference > 0){
        alert('Invalid Entry: Start date \'' + formname.startdate.value + '\' is greater than end date \'' + formname.enddate.value + '\'.');
        return false;
    }
    
    //Calculate time difference
    var timeDifference = (parseInt(dtStartTime) - parseInt(dtEndTime));
    
    //Check - time if dates are the same day
    if(dateDifference == 0){
        if(timeDifference > 0){
            alert('Invalid Entry: Start time \'' + formname.starttime.value + '\' is greater than end time \'' + formname.endtime.value + '\'.');
            return false;
        }
    }

    //All checks completed ok      
    return true;
}

var blnTimerRunning = false;
var intFlash = 0;
var txtHoldColour1;
var txtHoldColour2;

function DoFlash(id,times,colour){
    //Start flashing info
    if(blnTimerRunning != true) DoFlashRunning(id,times,colour);
}

function DoFlashRunning(id,times,colour){

    //Set as running
    blnTimerRunning = true;

    //Get original colour
    if(intFlash == 0) txtHoldColour1 = document.getElementById(id).style.backgroundColor;
    if(intFlash == 0) txtHoldColour2 = document.getElementById(id).style.color;

    //Flash colour
    if(!(intFlash % 2)){
        document.getElementById(id).style.backgroundColor = colour;
        document.getElementById(id).style.color = '#FFFFFF';
    }else{
        document.getElementById(id).style.backgroundColor = txtHoldColour1;
        document.getElementById(id).style.color = txtHoldColour2;
    }
    intFlash++;

    //Loop function
    if(intFlash < times){
        setTimeout('DoFlashRunning(\'' + id + '\',' + times + ',\'' + colour + '\');', 200);
    }else{
        intFlash = 0;
        blnTimerRunning = false;
    }
}

function DoTextCount(id,countid,iLetters){

    //Check entered characters length
    var intLeft = iLetters - document.getElementById(id).value.length;

    if (intLeft > 0) {
        //Charaters not yet at maximum
        document.getElementById(countid).innerHTML = intLeft;
    } else {
        //Trim string
        document.getElementById(id).value = Left(document.getElementById(id).value, iLetters)
        document.getElementById(countid).innerHTML = 'No';
    }
}