﻿/*********************************************************************/
/* Preload images */
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
/* Swap images restore */
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
/* Find objects */
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
/* Swap images */
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
/*********************************************************************/
/* Go to URL */
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

/* Top menu rollover effect */
function menuRollover(id) {
	var x = document.getElementById(id);
	x.className = "rollOver";
}

function menuRollout(id) {
	var x = document.getElementById(id);
	x.className = "";
}

// Function for toggeling hover effect on Single Page Promotion
function secEnter(id, state) {
	if(state == 1) {
		document.getElementById(id).className = 'secEnterContentRollOver';
	}
	else if(state == 0) {
		document.getElementById(id).className = 'secEnterContent';
	}
}

function openList(id) {
	var e = document.getElementById(id);
	if(e.style.display == 'none')
		e.style.display = 'block';
	else
		e.style.display = 'none';
}

// Functions to validate fields in Tip A Friend
function eMailCheck(str) {

	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
	   return false
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	    return false
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    return false
	}

    if (str.indexOf(at,(lat+1))!=-1){
        return false
    }

    if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
        return false
    }

    if (str.indexOf(dot,(lat+2))==-1){
        return false
    }

    if (str.indexOf(" ")!=-1){
        return false
    }

    return true					
}

function ValidateFields(emailElementName, labelEmailElement, elementName, labelNameElement){
	var bName = ValidateName(elementName,labelNameElement); 
	var bEmail = ValidateEmail(emailElementName, labelEmailElement);
	if(bName==false || bEmail==false)	{	
		return false;
	}
	return true;
}

function ValidateName(elementName, labelElementName){
	var nameID = document.getElementById(elementName);
	var label = document.getElementById(labelElementName);
	label.style.display='none';

	if ((nameID.value==null)||(nameID.value=="")){
		label.style.display='block';
		nameID.focus()
		return false
	}	
	return true
}

function ValidateEmail(emailElementName, labelElementName){
	var emailID = document.getElementById(emailElementName);
	var label = document.getElementById(labelElementName);
	label.style.display='none';

	if ((emailID.value==null)||(emailID.value=="")){
		label.style.display='block';
		emailID.focus()
		return false
	}
	if (eMailCheck(emailID.value)==false){
		label.style.display='block';
		emailID.focus()
		return false
	}
	
	// Functions for TraceWorks conversion scripts
	AddParam(1660, emailID.value);
    CreateConversion('1ab2124b-3ff1-41da-bc7f-68c258e79812', 'NOK', '0');
	return true
}

function ExecSearch(k, page, key, scopeParam)
{
    //   return "window.location='"+_searchPage + "?k='+ document.getElementById('" + searchInputBox.ID + "').value + '&key=" + _key + scopeParam + "';";
    var kRep = ReplaceSearchChars(k);
    window.location=page + "?k=" + kRep + "&key=" + key + "&s=" + scopeParam;
}

function ReplaceSearchChars(k)
{
    var ret = k.replace(/\&/g,"").replace(/\%/g,"").replace(/\^/g,"%5E").replace(/\[/g,"%5B").replace(/\]/g,"%5D").replace(/\ /g,"%20").replace(/\?/g,"%3F");
    ret = ret.replace(/\\/g,"%5C").replace(/\//g,"%2F").replace(/\+/g,"%2B").replace(/\-/g,"%2D").replace(/\$/g,"").replace(/\,/g,"%2C").replace(/\:/g,"");
    ret = ret.replace(/\</g,"%3C").replace(/\>/g,"%3E").replace(/\#/g,"%23").replace(/\./g,"%2E").replace(/\!/g,"%21").replace(/\"/g,"%22");
    ret = ret.replace(/\''/g,"%27").replace(/\@/g,"%40").replace(/\=/g,"%3D").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\;/g,"%3B");
    ret = ret.replace(/\|/g,"%7C").replace(/\{/g,"%7B").replace(/\}/g,"%7D").replace(/\~/g,"%7E").replace(/\)/g,"%29").replace(/\\/g,"%5C");
    return ret;
}

function GetWeekDayEN(dateString)
{
    var dArr = dateString.split("/");
    var dMonth = dArr[0];
    var dDay = dArr[1];
    var dYear = dArr[2];
    var dateVar = new Date(dYear,dMonth-1,dDay);
    var weekday = dateVar.getDay();
    var dayString = "";
    switch(weekday)
    {
        case 0: {dayString = "Sunday"; break}
        case 1: {dayString = "Monday"; break}
        case 2: {dayString = "Tuesday"; break}
        case 3: {dayString = "Wednesday"; break}
        case 4: {dayString = "Thursday"; break}
        case 5: {dayString = "Friday"; break}
        case 6: {dayString = "Saturday"; break}
        default: {dayString = ""; break}
    }
    return dayString;
}

function GetWeekDayNO(dateString)
{
    var dArr = dateString.split(".");
    var dMonth = dArr[0];
    var dDay = dArr[1];
    var dYear = dArr[2];
    var dateVar = new Date(dYear,dMonth-1,dDay);
    var weekday = dateVar.getDay();
    var dayString = "";
    switch(weekday)
    {
        case 0: {dayString = "S&oslash;ndag"; break}
        case 1: {dayString = "Mandag"; break}
        case 2: {dayString = "Tirsdag"; break}
        case 3: {dayString = "Onsdag"; break}
        case 4: {dayString = "Torsdag"; break}
        case 5: {dayString = "Fredag"; break}
        case 6: {dayString = "L&oslash;rdag"; break}
        default: {dayString = ""; break}
    }
    return dayString;
}

function GetWeekDayRU(dateString)
{
    var dArr = dateString.split(".");
    var dMonth = dArr[0];
    var dDay = dArr[1];
    var dYear = dArr[2];
    var dateVar = new Date(dYear,dMonth-1,dDay);
    var weekday = dateVar.getDay();
    var dayString = "";
    switch(weekday)
    {
        case 0: {dayString = "Воскресенье"; break}
        case 1: {dayString = "Понедельник"; break}
        case 2: {dayString = "Вторник"; break}
        case 3: {dayString = "Среда"; break}
        case 4: {dayString = "Четверг"; break}
        case 5: {dayString = "Пятница"; break}
        case 6: {dayString = "Суббота"; break}
        default: {dayString = ""; break}
    }
    return dayString;
    
}
function GetWeekDayDE(dateString)
{
    var dArr = dateString.split(".");
    var dMonth = dArr[0];
    var dDay = dArr[1];
    var dYear = dArr[2];
    var dateVar = new Date(dYear,dMonth-1,dDay);
    var weekday = dateVar.getDay();
    var dayString = "";
    switch(weekday)
    {
    
        case 0: {dayString = "Sonntag"; break}
        case 1: {dayString = "Montag"; break}
        case 2: {dayString = "Dienstag"; break}
        case 3: {dayString = "Mittwoch"; break}
        case 4: {dayString = "Donnerstag"; break}
        case 5: {dayString = "Freitag"; break}
        case 6: {dayString = "Samstag"; break}
        default: {dayString = ""; break}
    }
    return dayString;

}
function GetEventExpired(lang,dateString)
{
    var dArr
    if(lang == 'no') dArr = dateString.split(".");
    if(lang == 'ru') dArr = dateString.split(".");
    if(lang == 'de') dArr = dateString.split(".");
    if(lang == 'en') dArr = dateString.split("/");
    var dMonth = dArr[0];
    var dDay = dArr[1];
    var dYear = dArr[2];
    var dateVar = new Date(dYear,dMonth-1,dDay);
    var today = new Date();
    var todayDate = new Date(today.getFullYear(),today.getMonth(),today.getDate());
    if(dateVar < todayDate)
    {
        if(lang == 'no')
            return "[UTL&Oslash;PT]";
        else if (lang == 'ru')
            return "[Мероприятие закончилось]";
        else if (lang == 'de')
            return "[Die Frist ist abgelaufen]";
        else
            return "[EXPIRED]";
    }
    else
    {
        return "";
    }
}

// Open the dialog for image upload and finding
function OpenWCWImagePickerDialog(url)
{
    var HeightVindu = screen.availHeight - 90;
    var WidthVindu = screen.availWidth;
    var xVindu = WidthVindu/2-500;
    var retVal = window.showModalDialog(url,'','resizable:yes;scroll:yes;dialogWidth:1000px;dialogHeight: ' + HeightVindu + 'px;dialogLeft:'+ xVindu +'; dialogTop=0');
    return retVal;
}

 //***** START Functions used by the  WCW - ImagefieldControl ***********

// Function that starts the wcwImagePickerDialog and write values to the fields in the 
//
// url - Url to call the pickerdialog with
// imageID - ClientID for the image to write the picked images url to
// HiddenFieldID - ClientIDfor the image to write the picked images url to
 //clearButtonID  - ClientID for the clearbutton
function StartWCWImagePickerDialogFromPageLayoutAndWriteValues(url,imageID,hiddenFieldID,clearButtonID)
{
    var retVal = OpenWCWImagePickerDialog(url);
    if(retVal != '' && retVal != null)
    {
        var image = document.getElementById(imageID);
        image.src = retVal;              
        var hiddenField = document.getElementById(hiddenFieldID);
        hiddenField.value = retVal;
        var clearButton = document.getElementById(clearButtonID);
        clearButton.disabled = false;  
    }
}

// Function that clears the wcwimagefieldcontrol 
//
// url            - Url to call the pickerdialog with
// imageID        - ClientID for the image to write the picked images url to
// HiddenFieldID  - ClientIDfor the image to write the picked images url to    
// clearButtonID  - ClientID for the clearbutton
// altTextID      - ClientID for the alternate text box
function ClearWCWImagePickerValues(imageID,previewImageUrl, hiddenFieldID,clearButtonID,altTextID)
{
    var image = document.getElementById(imageID);
    image.src = previewImageUrl;              
    var hiddenField = document.getElementById(hiddenFieldID);
    hiddenField.value = '';
    var altText = document.getElementById(altTextID);
    altText.value = '';              
    var clearButton = document.getElementById(clearButtonID);
    clearButton.disabled = true;     
}

//***** END Functions used by the  WCW - ImagefieldControl ***********
  
//Gets the relative URL for a web based on the current document
function GetRelativeWebUrl()
{
	var relativeUrl = document.URL.toLowerCase();
	relativeUrl = relativeUrl.substring(0, relativeUrl.indexOf("/pages/"));
	relativeUrl = relativeUrl.substring(relativeUrl.indexOf("//") + 2);
	relativeUrl = relativeUrl.substring(relativeUrl.indexOf("/"));

	return relativeUrl;  
}

function GetImageUrl()
{
	var relativeWebUrl = GetRelativeWebUrl();
	var imagePickerUrl = relativeWebUrl + "/_layouts/wcw/WCWImagePicker.aspx?ListUrl=" + relativeWebUrl + "/PublishingImages";
    var imageUrl = OpenWCWImagePickerDialog(imagePickerUrl);
	
	return imageUrl;
}

function GetImageUrlAndSize()
{
	var relativeWebUrl = GetRelativeWebUrl();
	var imagePickerUrl = relativeWebUrl + "/_layouts/wcw/WCWImagePicker.aspx?ListUrl=" + relativeWebUrl + "/PublishingImages&GetSize=1";
    var imageUrlAndSize = OpenWCWImagePickerDialog(imagePickerUrl);
	
	return imageUrlAndSize;
}

function SplitImageUrlAndSize(imageUrlAndSize, imageUrl, imageSize)
{
    var items = imageUrlAndSize.split("|");
    imageUrl = items[0];
    
    if (items.length > 1)
        imageSize = items[0];
}

//Determines if the radEditor spans 3 columns
function isContentWide()
{
    // another hack to enable editor to be used as webpart. Greater minds can come up with how to determine size
    if (document.getElementById("RadEWrapperctl00_PlaceHolderMain_Content_ctl00") == null)
        return false;
        
    return (document.getElementById("RadEWrapperctl00_PlaceHolderMain_Content_ctl00").style.width == "711px"); //TODO Hardcoded size
}

//Returns true if an image is "big" by inspecting the class of the surrounding div
function isImageDivBig(divElement)
{
    return (divElement.className.indexOf("artImgWide") >= 0 || divElement.className.indexOf("artImgBig") >= 0);
}

//Returns true if an image size is "big" (468 x 195)
function isImageSizeBig(sizeStr)
{
    return (sizeStr == "468 x 195"); //TODO Hardcoded size
}

//Registers custom commands for handling images in the radEditor
function RegisterWCWRadEditorCommands()
{
    //Adjusts the class of the div surrounding the image to align the image left
    //Big images should only be changed if the radeditor spans 3 columns
    RadEditorCommandList["WCWImageLeft"] = function(commandName, editor, oTool)
    {
        var selection = editor.GetSelection();
        var selectedElement = selection.GetParentElement();

        if (selectedElement != null && selectedElement.tagName == "IMG")
        {
            var divElement = selectedElement.parentElement;
            
            if (divElement != null && divElement.tagName == "DIV")
            {
            	if (isImageDivBig(divElement))
                {
					if (isContentWide())
					{
                        divElement.className = "artImgInline artImgWideLeft";
                    }
                }
                else
                {
                    divElement.className = "artImgInlineLeft";
                }
            }
        }
     };

    //Adjusts the class of the div surrounding the image to align the image right
    //Big images should only be changed if the radeditor spans 3 columns
    RadEditorCommandList["WCWImageRight"] = function(commandName, editor, oTool)
    {
        var selection = editor.GetSelection();
        var selectedElement = selection.GetParentElement();

        if (selectedElement.tagName == "IMG")
        {
            var divElement = selectedElement.parentElement;
            
            if (divElement.tagName == "DIV")
            {
            	if (isImageDivBig(divElement))
                {
					if (isContentWide())
					{
                        divElement.className = "artImgInline artImgWide floatRight";
                    }
                }
                else
                {
                    divElement.className = "artImgInline";
                }
            }
        }
    };

    //Inserts an image with a surrounding div, and a dummy image caption and photographer text
    //If image is big other classes are used
    RadEditorCommandList["WCWInsertImage"] = function(commandName, editor, oTool)
    {
    	var imageUrlAndSize = GetImageUrlAndSize();

        var items = imageUrlAndSize.split("|");
        var imageUrl = items[0];
        
        if (items.length > 1)
            var imageSize = items[1];

        if (imageUrl != null && imageUrl.length > 0)
        {
            var className = "artImgInline";

            if (isImageSizeBig(imageSize))
            {
				if (isContentWide())
				{
                    className = "artImgInline artImgWide floatRight";
				}
				else
				{
            	    className = "artImgInline artImgBig";
            	}
            }

            var imageText = "Lorem ipsum dolor sit amet.";
            var photographer = "(Foto: Lorem Ipsum)";

			var html = "<div class='{className}'><img alt='Bilde' src='{imageUrl}'><p class='artImgtext'>{imageText}</p><p class='artImgPhotographer'>{photographer}</p></div>";
			html = html.replace("{className}", className);
			html = html.replace("{imageUrl}", imageUrl)
			html = html.replace("{imageText}", imageText)
			html = html.replace("{photographer}", photographer);
            	
            editor.PasteHtml(html);
        }
    };

    //Replaces the image by letting the user selected a new image in the image picker dialog
    RadEditorCommandList["WCWReplaceImage"] = function(commandName, editor, oTool)
    {      
        var selection = editor.GetSelection();
        var selectedElement = selection.GetParentElement();

        if (selectedElement.tagName == "IMG")
        {
        	var imageUrl = GetImageUrl();

            if (imageUrl != null && imageUrl.length > 0)
            {
                selectedElement.src = imageUrl;
            }
        }
    };

    //Removes an image and its surroundings from the editor
    RadEditorCommandList["WCWRemoveImage"] = function(commandName, editor, oTool)
    {      
        var selection = editor.GetSelection();
        var selectedElement = selection.GetParentElement();

        if (selectedElement.tagName == "IMG")
        {
            var divElement = selectedElement.parentElement;
            
            if (divElement.tagName == "DIV")
            {
                divElement.removeNode(true);
            }
        }
	};

    //Prompts the user for a new alt text for an image, and applies it to the image
    RadEditorCommandList["WCWEditAlternateText"] = function(commandName, editor, oTool)
    {      
        var selection = editor.GetSelection();
        var selectedElement = selection.GetParentElement();

        if (selectedElement.tagName == "IMG")
        {
            var existingAltText = selectedElement.alt;
            var newAltText = prompt("Alternate Text", existingAltText);
            
            if (newAltText != null)
            {
                selectedElement.alt = newAltText;
            }
        }
	};
}
    
/* function for switching classes in general*/
/* specifically in use on the multilang switch*/
function switchClass(id, myClass) {
	var x = document.getElementById(id);
	x.className = myClass;
}


/* Vacant Positions (uses prototype/scriptaculous)*/
function expandVacantPositionDetail(target, parent){
	Effect.toggle(target,'blind',{duration:0.5});
	$(parent).toggleClassName('expanded');
}

